2019-07-15 09:15发布
勇哥-lzu 发表于 2017-11-29 18:25 你这判断有问题,应该先检测按键key和key1,然后再操作P1口
人中狼 发表于 2017-11-29 18:52 你这个是单键对应多个动作的问题,这种情况需要记录按键按下的次数,根据按键按下的次数进行对应的动作。
人中狼 发表于 2017-11-30 09:48 你现在的程序要求需要设置一个定时器,通过定时器来进行闪烁操作的启动和关闭。按键部分通过按键按下的次数来决定启动或关闭闪烁。 程序改动比较多,要增加一个定时器的中断程序
最多设置5个标签!
具体代码怎么改?
那我怎么改了,能写出代码来,注释下,
程序改动比较多,要增加一个定时器的中断程序
{
uchar a;
uchar u8Key = 0, u8Key1 = 0;
P1=0Xff;
while(1)
{
u8Key = 1;
u8Key1 = 1;
if(key==0) //按键0检测
{
Delay10ms();
if(key==0)
{
u8Key = 0;
}
}
if(key1==0) //按键1检测
{
Delay10ms();
if(key1==0)
{
u8Key1 = 0;
}
}
if(u8Key1 == 0)
{
P1=0X00;
Delay40ms();
P1=0Xff;
Delay10ms();
}
else
{
if(u8Key == 0)
{
a++;
a %= 10;
switch(a)
{
case 1:P1=0X00; Delay200ms();break; //灯全亮
case 2:P1=0X7f; Delay200ms();break; //第一亮
case 3:P1=0Xbf; Delay200ms();break; //第二个亮
case 4:P1=0Xdf; Delay200ms();break;
case 5:P1=0Xef; Delay200ms();break;
case 6:P1=0Xf7; Delay200ms();break;
case 7:P1=0Xfb; Delay200ms();break;
case 8:P1=0Xfd; Delay200ms();break;
case 0:P1=0Xfe; Delay200ms();break; //第8个亮
}
}
}
}
}
把main函数替换了试试是不是你想要的
中断程序还不会写,所以用中断和定时,写不出来,麻烦写一下给我看看,再跟据书理解中断用法和定时器用法
一周热门 更多>