做了个流水灯,通过一个按键切换流水灯的样式,用switch case语句,switch中调用子程序,
在子程序中有for循环,然后这个就不跳转了
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar keyval,led1,led,i;
sbit key=P1^5;
void delay(uchar a) //延迟函数
{
while(a--)for(i=0;i<120;i++);
}
void run1() //子程序1
{
int b;
uchar code seg[] = {0xFE,0xFB,0xEF,0xBF,0x7F,0xDF,0xF7,0xFD,0xAA, 0x55,0xE7, 0xDB, 0xBD, 0x7E,0x3C, 0x18, 0x00 };
for(b=0;b<17;b++)
{
P0=seg[b];
delay(200);
P0=0xff;
delay(100);
}
}
void run2()//子程序2
{
led=0xfe;
P0=led;
led=_cror_(led,1),delay(200);
}
main() //主循环
{
//led=0xfe;
led1=0x55;
while(1)
{
if(key==0) //当按键为0电位
{
delay(5);
keyval++;
keyval%=3;
}
switch(keyval)
{
case 0:run1();break;
case 1:run2();break;
case 2:P0=led1;led1=~led1;delay(200);break; // 按位取反led1=~led1 若led1=0x01则led1=~led1就为0xfe
default:break;
}
}
}