#include<reg51.h>
sbit LED=P1^7;
sbit KEY=P3^7;
void delay(unsigned int a);
main(){
int b=0;
while(1){
if(KEY==0){
switch(b){
case 0:{
delay(20);
while(KEY==0){
LED=~LED;
b=1;
while(KEY==0);}}
break;
case 1:{
delay(20);
while(1){
LED=~LED;
delay(20);
if(KEY==0)
break;}
b=2;
while(KEY==0);}
break;
case 2:{
delay(20);
LED=0;
b=0;
while(KEY==0);}
break;}}}}
void delay(unsigned int a){
unsigned int i;
while(--a!=0)
for(i=600;i>0;i--);}
这个程序,我的设想是第一次按微动开关,LED常亮,第二次按开关,LED闪烁,第三次按开关,LED再次常亮,第四次按开关,LED灭。但是不知道为什么,LED的切换状态很乱,没有达到预想效果。请高人指点,谢谢 |