|
當(dāng)按某個(gè) 按鍵后,對(duì)應(yīng) mode 運(yùn)行,但接著按 其它按鍵時(shí),不能立刻跳出循環(huán)。例:按 S3 后執(zhí)行 mode3();, 再按 S1 不會(huì)立刻執(zhí)行 mode。#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit s1 = P1^0;
sbit s2 = P1^1;
sbit s3 = P1^2;
sbit led1 = P0^0;
sbit led2 = P0^1;
sbit led3 = P0^2;
void delay (uint x) // 延時(shí) 1ms (晶振 12M)
{
unsigned char a,b,c;
for(c=x; c>0; c--)
for(b=142; b>0; b--)
for(a=2; a>0; a--);
}
void mode1()
{
while(1)
{
led1 = ~led1;
delay(200);
if((s1==0)||(s2==0)||(s3==0))break;
}
}
void mode2()
{
while(1)
{
led1 = 0;
delay(500);
led2 = 0;
delay(500);
led1 = 1;
led2 = 1;
delay(500);
if((s1==0)||(s2==0)||(s3==0))break;
}
}
void mode3()
{
while(1)
{
led1 = 0;
delay(500);
led2 = 0;
delay(500);
led3 = 0;
delay(500);
led1 = 1;
led2 = 1;
led3 = 1;
delay(500);
if((s1==0)||(s2==0)||(s3==0))break;
}
}
void mian(void)
{
P1 = 0xff;
P0 = 0xff;
while(1)
{
if (s1 == 0)
{
delay(5);
if (s1 == 0)
mode1();
}
if (s2 == 0)
{
delay(5);
if (s2 == 0)
mode2();
}
if (s3 == 0)
{
delay(5);
if (s3 == 0)
mode3();
}
}
}
|
|