C51_C语言编程控制流水灯
硬件电路 p0 接 led 8 个,P33 接按键使用中断2
开机灯按1~8逐位闪烁,并循环
按键后改为 两灯亮 的流水灯
下面写了个程序
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar ucTemp,ucTimes,ucShift=0;
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
ucTemp=0x0FE;
IT1=1;
EX1=1;
EA=1;
while(!ucShift)
{
for (ucTimes=0;ucTimes<7;ucTimes++)
{
P0=ucTemp;
DelayMS(250);
P0=0x0FF;
DelayMS(250);
}
ucTemp=_cror_(ucTemp,1);
}
//BESHIFT:
while (ucShift)
{
P0=ucTemp;
DelayMS(500);
ucTemp=_cror_(ucTemp,1);
}
// goto BESHIFT;
}
void P33_INT1() interrupt 2
{
ucTemp=0x0FD;
ucShift=1;
//可否在此程序内加入如下语句(事实上试过会报错)使得循环结束
//goto BESHIFT;
//return break;
//return goto BESHIFT;
}
问题是有什么办法可以在调用中断函数之后使得第一个while循环提前结束,
当然可以在里面加多个IF,但这样就不好玩了。