6.c
来自「上传一些」· C语言 代码 · 共 167 行
C
167 行
#include<reg52.h>
#include<intrins.h>
sbit m=P2^5;
sbit jian=P1^7;
unsigned char flag,flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8;
unsigned int x,y,t0,t1,t2,t3,t4,t5,t6,t7,x,y;
void delay() //1s
{
for(x=0;x<400;x++)
for(y=0;y<400;y++);
}
void init()
{
t0=0xfe; //分别为1个2个3个。。。灯
t1=0xfc; // 亮时的初始状态
t2=0xf8;
t3=0xf0;
t4=0xe0;
t5=0xc0;
t6=0x80;
t7=0x00;
P1=0xfe;
}
void main()
{
flag1=1;
m=1;
t0=0xfe;
t1=0xfc;
t2=0xf8;
t3=0xf0;
t4=0xe0;
t5=0xc0;
t6=0x80;
t7=0x00;
P1=0xfe;
TMOD=0x01;
EA=1;
ET0=1;
TH0=0x4c;
TL0=0x00;
TR0=1;
while(1) //启动大循环
{
if(flag8==1) //保证每隔1s运行一次
{ flag8=0;
if(flag1==1) //进入一个灯的循环
{
P1=_crol_(t0,1);
t0=P1;
if(jian==0) //判断最高位P1^7是否为0,如果是则先让其显示1s,在进入下一个状态
{
TR0=0;
delay();
flag1=0;
flag2=1;
P1=t1;
delay();
TR0=1;
}
}
if(flag2==1) //进入二个灯的循环
{
P1=_crol_(t1,1);
t1=P1;
if(jian==0)
{
TR0=0;
delay();
flag2=0;
flag3=1;
P1=t2;
delay();TR0=1;
}
}
if(flag3==1) //进入三个灯的循环
{
P1=_crol_(t2,1);
t2=P1;
if(jian==0)
{
TR0=0;
delay();
flag3=0;
flag4=1;
P1=t3;
delay();TR0=1;
}
}
if(flag4==1) //进入四个灯的循环
{
P1=_crol_(t3,1);
t3=P1;
if(jian==0)
{
TR0=0;
delay();
flag4=0;
flag5=1;
P1=t4;
delay();TR0=1;
}
}
if(flag5==1) //进入五个灯的循环
{
P1=_crol_(t4,1);
t4=P1;
if(jian==0)
{
TR0=0;
delay();
flag5=0;
flag6=1;
P1=t5;
delay();TR0=1;
}
}
if(flag6==1) //进入六个灯的循环
{
P1=_crol_(t5,1);
t5=P1;
if(jian==0)
{
TR0=0;
delay();
flag6=0;
flag7=1;
P1=t6;
delay();TR0=1;
}
}
if(flag7==1) //进入七个灯的循环
{
P1=_crol_(t6,1);
t6=P1;
if(jian==0)
{ delay();
flag7=0;
flag1=1;
init(); //在一次循环过后必须再次初始化,否则由于P1^7的预留值,造成下一轮的混乱
}
}
}
}
}
void inter(void) interrupt 1 using 1
{
TH0=0x4c;
TL0=0x00;
flag++;
if(flag==20)
{
flag=0;
flag8=1;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?