سلام
من یه صفحه کلید 4*4 رو خواستم به پورت A میکرو وصل کنم، خواستم از رو یه برنامه اینو بنویسم که اون برنامه رو پورت C نوشته شده، اینطور واسه پورت A تصحیحش کردم اما کار نمیکنه!
میشه کمکم کنین اشکالش رو پیدا کنم؟! :cry:
من یه صفحه کلید 4*4 رو خواستم به پورت A میکرو وصل کنم، خواستم از رو یه برنامه اینو بنویسم که اون برنامه رو پورت C نوشته شده، اینطور واسه پورت A تصحیحش کردم اما کار نمیکنه!
میشه کمکم کنین اشکالش رو پیدا کنم؟! :cry:
کد:
unsigned char scan_key(void); unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}}; char buffer_lcd[10]; void main(void) { unsigned char key ; PORTC=0x00; DDRC=0xf0; while(1) { key=scan_key(); if(key!=0xff) { lcd_clear(); lcd_gotoxy(0,0); sprintf(buffer_lcd,"key=%d",key); lcd_puts(buffer_lcd); } unsigned char scan_key(void) { unsigned char i,data, num_key, temp; num_key=0xff; temp=0x70; for(i=0;i<4;i++) { PORTC=temp; delay_ms(5); data=PINC & 0x0f; if (data==0x07) num_key=code[0][i]; if (data==0x0B) num_key=code[1][i]; if (data==0x0D) num_key=code[2][i]; if (data==0x0E) num_key=code[3][i]; temp=((temp>>=1) | 0x80) & 0xF0; } return num_key; } }
کد:
unsigned char scan_key(void); unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}}; char buffer_lcd[10]; void main(void) { unsigned char key ; PORTA=0x00; DDRA=0xf0; while(1) { key=scan_key(); if(key!=0xff) { lcd_clear(); lcd_gotoxy(0,0); sprintf(buffer_lcd,"key=%d",key); lcd_puts(buffer_lcd); } unsigned char scan_key(void) { unsigned char i,data, num_key, temp; num_key=0xff; temp=0x70; for(i=0;i<4;i++) { PORTA=temp; delay_ms(5); data=PINA & 0x0f; if (data==0x07) num_key=code[0][i]; if (data==0x0B) num_key=code[1][i]; if (data==0x0D) num_key=code[2][i]; if (data==0x0E) num_key=code[3][i]; temp=((temp>>=1) | 0x80) & 0xF0; } return num_key; } }
دیدگاه