پاسخ : مشکل با keypad
با سلام
مطالبی که گفتید خیلی مفید بود.
فقط یه سوال...
چرا وقتی درون تابع،برنامه خودم رو مینویسم جواب نمیده؟
علت اینکه میخوام اینکارو بکنم اینه که روش کد گزاریتون رو توی تابع نمیفهمم(از اونجایی که شما DDRD =0x0F کردید پس نباید ورودی رو در حالات مختلف چک کنید؟)
یعنی به جای
نباید اینجوری بنویسم(؟):
البته کدی که من نوشتم توی proteus جواب نمیده.وقتی RUN میکنم.پورت D که به KEYPAD وصله رو همشو 1 میکنه و دیگه تغییری نمیکنه پس برنامه تو خط اول تابع من گیر میکنه.چرا؟
با تشکر
با سلام
مطالبی که گفتید خیلی مفید بود.
فقط یه سوال...
چرا وقتی درون تابع،برنامه خودم رو مینویسم جواب نمیده؟
علت اینکه میخوام اینکارو بکنم اینه که روش کد گزاریتون رو توی تابع نمیفهمم(از اونجایی که شما DDRD =0x0F کردید پس نباید ورودی رو در حالات مختلف چک کنید؟)
یعنی به جای
کد:
DDRD =0x0F; PORTD=0xF0; char key (void) { PORTD=0xF0; if(PIND == 0xF0)return 'v'; else delay_ms(10); PORTD=0xFE; if(PIND.4==0)return '+'; if(PIND.5==0)return '-'; if(PIND.6==0)return '*'; if(PIND.7==0)return '/'; PORTD=0xFD; if(PIND.4==0)return 'e'; if(PIND.5==0)return '3'; if(PIND.6==0)return '6'; if(PIND.7==0)return '9'; PORTD=0xFB; if(PIND.4==0)return '0'; if(PIND.5==0)return '2'; if(PIND.6==0)return '5'; if(PIND.7==0)return '8'; PORTD=0xF7; if(PIND.4==0)return '.'; if(PIND.5==0)return '1'; if(PIND.6==0)return '4'; if(PIND.7==0)return '7'; return 'v';
کد:
char key(void){ DDRD=0x0f; PORTD=0xff; if(PORTD == 0xFF)return 'v'; else delay_ms(10); PORTD.0=0; if(PIND.4==0)return '+'; if(PIND.5==0)return '-'; if(PIND.6==0)return '*'; if(PIND.7==0)return '/'; delay_ms(2); PORTD.1=0; if(PIND.4==0)return 'e'; if(PIND.5==0)return '3'; if(PIND.6==0)return '6'; if(PIND.7==0)return '9'; delay_ms(2); PORTD.2=0; if(PIND.4==0)return '0'; if(PIND.5==0)return '2'; if(PIND.6==0)return '5'; if(PIND.7==0)return '8'; delay_ms(2); PORTD.3=0; if(PIND.4==0)return '.'; if(PIND.5==0)return '1'; if(PIND.6==0)return '4'; if(PIND.7==0)return '7'; return 'v'; delay_ms(2);
با تشکر
دیدگاه