各位大神帮帮忙 啊~
时间:10-02
整理:3721RD
点击:
#include<reg51.h>
unsigned int i;
unsigned int j;
unsigned int b;
unsigned int m;
unsigned int n;
unsigned int flag;
sbit gewei=P0^6;
sbit shiwei=P0^7;
unsigned char code table[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x40};
void delay(unsigned int i)
{ for(i;i>0;i--)
for(j=500;j>0;j--);
}
void zhengchang()
{ EA=1;
EX1=1;
IT1=1;
}
void INT_1() interrupt 2
{
m=30;
n=10;
}
void gaofeng()
{ EA=1;
EX0=1;
IT0=1;
}
void INT_0() interrupt 0
{
m=5;
n=5;
EX0=0;
}
void shumaguanhongdeng() // 数码管计数 红灯
{
gaofeng();
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TMOD=0X01;
ET0=1;
TR0=1;
while(m>0)
{ if(b==1)
{ m--;
b=0;
}
gewei=1;
P1=table[m/10];
delay(2);
gewei=0;
shiwei=1;
P1=table[m%10];
delay(2);
shiwei=0;
}
}
void time0() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(flag++<20) return ;
flag=0;
b=1;
}
void shumaguanhuangdeng() // 数码管计数 黄灯
{
gaofeng();
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TMOD=0X01;
ET0=1;
TR0=1;
while(n>0)
{ if(b==1)
{ n--;
b=0;
}
gewei=1;
P1=table[n/10];
delay(2);
gewei=0;
shiwei=1;
P1=table[n%10];
delay(2);
shiwei=0;
}
}
void time1() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(flag++<20) return ;
flag=0;
b=1;
}
void traffic()
{ while(1)
{
P0=0X35; // 东西绿灯,南北红灯
shumaguanhongdeng();
P0=0Xf3; // 东西黄灯
shumaguanhuangdeng();
P0=0X2E; // 南北绿灯,东西红灯
shumaguanhongdeng();
P0=0X1E; // 东西黄灯
shumaguanhuangdeng();
}
}
void main()
{
traffic();
}
为什么进入几次中断之后就进不去了,数码管显示几次之后就不显示了。
unsigned int i;
unsigned int j;
unsigned int b;
unsigned int m;
unsigned int n;
unsigned int flag;
sbit gewei=P0^6;
sbit shiwei=P0^7;
unsigned char code table[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x40};
void delay(unsigned int i)
{ for(i;i>0;i--)
for(j=500;j>0;j--);
}
void zhengchang()
{ EA=1;
EX1=1;
IT1=1;
}
void INT_1() interrupt 2
{
m=30;
n=10;
}
void gaofeng()
{ EA=1;
EX0=1;
IT0=1;
}
void INT_0() interrupt 0
{
m=5;
n=5;
EX0=0;
}
void shumaguanhongdeng() // 数码管计数 红灯
{
gaofeng();
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TMOD=0X01;
ET0=1;
TR0=1;
while(m>0)
{ if(b==1)
{ m--;
b=0;
}
gewei=1;
P1=table[m/10];
delay(2);
gewei=0;
shiwei=1;
P1=table[m%10];
delay(2);
shiwei=0;
}
}
void time0() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(flag++<20) return ;
flag=0;
b=1;
}
void shumaguanhuangdeng() // 数码管计数 黄灯
{
gaofeng();
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TMOD=0X01;
ET0=1;
TR0=1;
while(n>0)
{ if(b==1)
{ n--;
b=0;
}
gewei=1;
P1=table[n/10];
delay(2);
gewei=0;
shiwei=1;
P1=table[n%10];
delay(2);
shiwei=0;
}
}
void time1() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(flag++<20) return ;
flag=0;
b=1;
}
void traffic()
{ while(1)
{
P0=0X35; // 东西绿灯,南北红灯
shumaguanhongdeng();
P0=0Xf3; // 东西黄灯
shumaguanhuangdeng();
P0=0X2E; // 南北绿灯,东西红灯
shumaguanhongdeng();
P0=0X1E; // 东西黄灯
shumaguanhuangdeng();
}
}
void main()
{
traffic();
}
为什么进入几次中断之后就进不去了,数码管显示几次之后就不显示了。
