基本描述:PA0接按键1,按一下按键1,执行一次“下一步”;
PA1接按键2,按一下按键2,执行一次“上一步”;
PA2、PA3、PA4分别接个LED灯
问题描述:我无论怎么按PA0,就只有PA2的灯灭,PA3、4没反应。“上一步”程序也无法执行。我感觉程序卡在了i==1处,不知怎么回事
程序如下:
#include <iom128v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
uchar i=0; // 设置个全局变量i
void xiayibu() //子程序:下一步。
{
i++;
if(i==1){PORTA|=BIT(PA2);} //让PA2的灯灭
if(i==2){PORTA|=BIT(PA3);
PORTA|=BIT(PA4);} //让PA3、4的灯灭
if(i==3){PORTA&=~BIT(PA3);} //让PA3的灯亮
if(i==4){PORTA&=~BIT(PA4);} //让PA4的灯亮
if(i==5){PORTA&=~BIT(PA2);i=0;}//让PA2的灯亮
}
void shangyibu() //子程序:上一步。这个子程序的作用是让程序向上回一步
{
i--;
if(i==0){PORTA&=~BIT(PA2);}
if(i==1){PORTA&=~BIT(PA3);
PORTA&=~BIT(PA4);}
if(i==2){PORTA|=BIT(PA3);}
if(i==3){PORTA|=BIT(PA4);}
if(i==4){PORTA|=BIT(PA2);}
}
main()
{uchar j;
DDRA=0X1C;//0001 1100
PORTA=0X03;//0000 0011
while(1)
{
if((PINA&BIT(PA0))==0)
{
for(j=0;j<11400;j++)
if((PINA&BIT(PA0))==0) //延时消抖,延时10MS
xiayibu(); //子程序:下一步
}
if((PINA&BIT(PA1))==0)
{
for(j=0;j<11400;j++)
if((PINA&BIT(PA1))==0)
shangyibu(); //子程序:上一步
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我的想法是先按“下一步”,才能执行“上一步”。我可以加个判断在“上一步”之前。但我现在的问题是它“下一步”都执行不了
大哥,能说详细点吗?我还不是很理解。
话说回来,我没有一点高兴,这一周挣扎的时间让我的血都冷了
不过还是感谢各位的帮助。
问题已找到,谢谢了
问题已找到,谢谢了
一周热门 更多>