C51单片机流水灯处理问题

2024-04-26 00:07:26
推荐回答(4个)
回答1:

因为你把判断K1和K2的语句放在for语句前面,所以当程序在运行for语句时,按下K1和K2的茄搭值相当于是无效的。程序要在运行完for语句后再能去判断K1和K2值,而且你这样写,如果按下K1或者K2的时间把握不对的话,就算有按下,但运行完一个循环后灯也会继续亮的,如果你信纳举想能随时停止滑碧,可以把K1和K2语句话在for语句里面检测,一检测到K1或者K2有按下,就进行相应的操作,又或者用外部中断来执行。

回答2:

一般我们桥含不清雹这样写,一般写成
while(1)
{
}

这样的形敏正笑式。
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
if(K1==1 && K2==1) //放到里面来就行了
{
P0 = ~(0x01< }
DelayMs(250);

}
}
}

回答3:

#include //氏穗闹 这歼罩族唯样试试
sbit K1 = P1^4;
sbit K2 = P1^5;
void DelayMs(unsigned char count)
{
unsigned char i,j;
for(i=0;i for(j=0;j<240;j++);
}
void main(void)
{
unsigned char i;
while(1)
{
if(K1==1 && K2==1)
{
i++;
if(i==8)i=0;
P0 = ~(0x01< DelayMs(250);
}
}
}

回答4:

用他的wdc_0501方法也行。你也可以用中断。