سلام
من یه صفحه کلید 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;
} }




دیدگاه