要求:
上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下灯闪烁更快,
再按一下灯灭...。
如此循环。
链接:http://zhidao.baidu.com/question/1639123949796505340.html
做而论道分析:要求有四种不同的显示,通过一个按键进行切换。
为此,编程如下。
//----------------------------------------------
#include<reg51.h>
unsigned char n = 0;
sbit key = P3^4;
sbit led = P0^0;
void delay()
{
unsigned int i, j;
for(i = 0; i < 100; i++) for(j = 0; j < 500; j++);
}
void readkey(void)
{
unsigned char i, j;
if(!key) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++); //延时消抖
if(!key) {
while(!key); //等待按键释放
n++;
n %= 4; //n = 0~3
}
}
}
main()
{
while(1) {
switch(n) {
case 0: led = 1; readkey(); break; //熄灭
case 1: led = 0; readkey(); break; //长亮
case 2: delay(); readkey(); //慢速闪烁
case 3: delay(); readkey(); led = ~led; //快速闪烁
}
}
}
//----------------------------------------------
本程序经过了实践验证,可以满足题目的要求。
提问者选择了一个错误的程序,并不能实现【闪烁】变换到【闪烁更快】。