51 單片機(jī):按鍵控制燈亮滅和閃爍
要求:
上電燈不亮,按一下按鍵燈亮,再按一下燈閃爍,再按一下燈閃爍更快,
再按一下燈滅...。
如此循環(huán)。
為此,編程如下。
//----------------------------------------------
#include
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++); //延時(shí)消抖
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; //長(zhǎng)亮
case 2: delay(); readkey(); //慢速閃爍
case 3: delay(); readkey(); led = ~led; //快速閃爍
}
}
}
//----------------------------------------------
本程序經(jīng)過(guò)了實(shí)踐驗(yàn)證,可以滿足題目的要求。