نوشته اصلی توسط
mstkmn
سلام
اگه ایراد سخت افزاری نداشته باشی تا زمانی که کلیدی رو نزنی با توجه به DDRB=0xF0,PORTB=0x0F شرط اول برقراره
و باید مقدار 0x10 روی پورت D باشه یعنی PORTD.4=1 و بقیه پین های پورت D صفر باشه و پین های PINB.0 تا PINB.3 هم یک باشه. همینطوره؟
راستی از چه کامپایلری استفاده میکنی؟
PINB0 درسته یا PINB.0؟
به نظر من هم منطق برنامه همین رو میگه.یعنی وقتی در پورت یا پینی مقاومت های Pull up فعال باشن و پورت یا پین مورد نظر در حالت ورودی باشن (DDRx=0x00,Portx=0xFF) ، وقتی بهشون چیزی وصل نباشه ، یا وصل باشه ولی مثل دکمه ای که فشار داده نشده High Impedance باشه ، باید میکرو یک بخونه.
در این برنامه هم وقتی دکمه ای هنوز فشار داده نشده باشه برنامه از
A:
DDRB = 0xF0;
PORTB = 0x0F;
if ( (PINB0 == 1) && (PINB1 == 1) && (PINB2 == 1) && (PINB3 == 1) )
{ DDRD=0xFF ; PORTD=0x10; goto A; }
خارج نمیشه.
از کامپایلر AVR Studio 6 استفاده میکنم.تو AVR Studio 6 پین B0 اینجوری نوشته میشه : PINB0.
به نظر شما آیا منطق و کدهای برنامه مشکلی دارن؟