📄 可控交通.c
字号:
#include"reg51.h"
#include"absacc.h"
#define CA XBYTE[0x7100]
#define PA XBYTE[0x7101]
#define PB XBYTE[0x7102]
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
unsigned char i=30;
unsigned char j=25;
unsigned char c;
unsigned char c1;
unsigned char c2;
unsigned char x;
unsigned char y;
unsigned char flag0=0;
unsigned char flag1=0;
unsigned char restart=0;
void jishu(i);
void display(y,x);
void xs(x);
void xun();
int0() interrupt 0
{
switch(flag0)
{
case 0:flag0=1;break;//暂停
case 1:flag0=0;break;//继续
}
}//判断是否停止
int1() interrupt 2
{
switch(flag1)
{
case 0:flag1=1;break;//减1
case 1:flag1=0;break;//加1
}
}
void main()
{
CA=0x03;
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
TMOD=0x51;
xun();
}
void xun1()
{
c1=i;
jishu(i);
TF1=0;
c2=j;
jishu(j);
TF1=0;
if(i!=c1||j!=c2)
xun();
c=i-j;
for(;i>5;)
{
for(;j>0;)
{
PA=0x08;
display(i,j);
if(flag0==0)
j--;
break;
}
if(flag0==0)
i--;
}
}//绿-红
void xun2()
{
i=c;
jishu(i);
TF1=0;
j=c;
jishu(j);
TF1=0;
if(i!=c||j!=c)
xun();
for(;i>0;)
{
for(;j>0;)
{
PA=0x08;
display(i,j);
if(flag0==0)
j--;
break;
}
if(flag0==0)
i--;
}
}//黄-红
void xun3()
{
i=c2;
jishu(i);
TF1=0;
j=c1;
jishu(j);
TF1=0;
if(i!=c2||j!=c1)
xun();
for(;i>0;)
{
for(;j>5;)
{
PA=0x08;
display(i,j);
if(flag0==0)
j--;
break;
}
if(flag0==0)
i--;
}
}//红-绿
void xun4()
{
i=c;
jishu(i);
TF1=0;
j=c;
jishu(j);
TF1=0;
if(i!=c||j!=c)
xun();
for(;i>0;)
{
for(;j>0;)
{
PA=0x08;
display(i,j);
if(flag0==0)
j--;
break;
}
if(flag0==0)
i--;
}
}//红-黄
void xun()
{
P1=0xd7;
xun1();
P1=0xb7;
xun2();
P1=0x7d;
xun3();
P1=0x7b;
xun4();
}
void display(y,x)
{
int k,b;
unsigned char m;
unsigned char n;
unsigned char x1;
unsigned char x2;
for(k=0;k<20;k++)
{
TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(!TF0)
{
PA=0x08;
m=y/10;
xs(m);
for(b=0;b<500;b++);
PA=PA/2;
n=y%10;
xs(n);
for(b=0;b<500;b++);
PA=PA/2;
x1=x/10;
xs(x1);
for(b=0;b<500;b++);
PA=PA/2;
x2=x%10;
xs(x2);
for(b=0;b<500;b++);
}
TF0=0;
}
}
void xs(x)
{
int tab[10]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
PB=tab[x];
}
void jishu(i)
{
TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(!TF1)
{
if(flag1==0)
{
i++;
TF1=1;
flag1=1;
}
else
{
i--;
TF1=1;
flag1=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -