سلام
من یه کد نوشتم ، تو پروتئوس جواب داد
ولی وقتی مدار رو بستم ، هیچی درست کار نمی کرد ! تو اینجا با فشار دادن هر کلیدی باید lcd یه متنی نشون بده ( واسه چک کردن اینکه کی پد سالمه )
ولی اصلا کار نمی کنه !
کی پد هم سالمه و چکش کردم ، فقط موقعی عمل می کنه که دستم رو به یکی از پایه ها بزنم !
میشه بگین مشکل کدم چیه ؟
int key=0;
int keypad(){
DDRF=0b11110000;
PORTF=0b00001111;
PORTF=0b11101111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 0;}
if (avr(PINF).P1==0){ _delay_ms(10); return 1;}
if (avr(PINF).P2==0){ _delay_ms(10); return 2;}
if (avr(PINF).P3==0){ _delay_ms(10); return 3;}
PORTF=0b11011111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 4;}
if (avr(PINF).P1==0){ _delay_ms(10); return 5;}
if (avr(PINF).P2==0){ _delay_ms(10); return 6;}
if (avr(PINF).P3==0){ _delay_ms(10); return 7;}
PORTF=0b10111111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 8;}
if (avr(PINF).P1==0){ _delay_ms(10); return 9;}
if (avr(PINF).P2==0){ _delay_ms(10); return 10;}
if (avr(PINF).P3==0){ _delay_ms(10); return 11;}
PORTF=0b01111111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 12;}
if (avr(PINF).P1==0){ _delay_ms(10); return 13;}
if (avr(PINF).P2==0){ _delay_ms(10); return 14;}
if (avr(PINF).P3==0){ _delay_ms(10); return 15;}
return -1;
}
int main()
{
DDRB=0b11111111;
PORTB=0b00000000;
DDRF=0b11110000;
PORTF=0b00001111;
PORTD=0b10000000;
DDRD=0b01111111;
lcdInit();
int x;
lcdClear();
while(1){
if ((avr(PINF).P0==0)||(avr(PINF).P1==0)||(avr(PINF). P2==0)||(avr(PINF).P3==0)){
x=keypad();
x=x*10;
lcdGotoXY(0,1);
lcdPrintData("avrlololo", 7);
}
}
}
ممنون از شمایی که کمک می کنین @};-
من یه کد نوشتم ، تو پروتئوس جواب داد
ولی وقتی مدار رو بستم ، هیچی درست کار نمی کرد ! تو اینجا با فشار دادن هر کلیدی باید lcd یه متنی نشون بده ( واسه چک کردن اینکه کی پد سالمه )
ولی اصلا کار نمی کنه !
کی پد هم سالمه و چکش کردم ، فقط موقعی عمل می کنه که دستم رو به یکی از پایه ها بزنم !
میشه بگین مشکل کدم چیه ؟
int key=0;
int keypad(){
DDRF=0b11110000;
PORTF=0b00001111;
PORTF=0b11101111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 0;}
if (avr(PINF).P1==0){ _delay_ms(10); return 1;}
if (avr(PINF).P2==0){ _delay_ms(10); return 2;}
if (avr(PINF).P3==0){ _delay_ms(10); return 3;}
PORTF=0b11011111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 4;}
if (avr(PINF).P1==0){ _delay_ms(10); return 5;}
if (avr(PINF).P2==0){ _delay_ms(10); return 6;}
if (avr(PINF).P3==0){ _delay_ms(10); return 7;}
PORTF=0b10111111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 8;}
if (avr(PINF).P1==0){ _delay_ms(10); return 9;}
if (avr(PINF).P2==0){ _delay_ms(10); return 10;}
if (avr(PINF).P3==0){ _delay_ms(10); return 11;}
PORTF=0b01111111;
_delay_ms(10);
if (avr(PINF).P0==0){ _delay_ms(10); return 12;}
if (avr(PINF).P1==0){ _delay_ms(10); return 13;}
if (avr(PINF).P2==0){ _delay_ms(10); return 14;}
if (avr(PINF).P3==0){ _delay_ms(10); return 15;}
return -1;
}
int main()
{
DDRB=0b11111111;
PORTB=0b00000000;
DDRF=0b11110000;
PORTF=0b00001111;
PORTD=0b10000000;
DDRD=0b01111111;
lcdInit();
int x;
lcdClear();
while(1){
if ((avr(PINF).P0==0)||(avr(PINF).P1==0)||(avr(PINF). P2==0)||(avr(PINF).P3==0)){
x=keypad();
x=x*10;
lcdGotoXY(0,1);
lcdPrintData("avrlololo", 7);
}
}
}
ممنون از شمایی که کمک می کنین @};-
دیدگاه