麻烦高手给我看看我的是怎么回事,这是一个交通灯的程序和
仿真图都是用的网上的一片论文,但是为什么我的加入程序后仿真是这样的,LED灯和数码管都不显示,程序运行没有错误, 程序如下 #include<reg52.h>#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RED_A=P0^0;
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P1^0;
sbit YELLOW_B=P1^1;
sbit GREEN_B=P1^2;
sbit DIN=P3^0;
sbit LOAD=P3^1;
sbit CLK=P3^2;
uchar Flash_Count=0,Opera
tion_Type=1,Time_Count=0,hh=1,i=80,mm=1,tt=9;
//写数据
void Write(uchar Addr,uchar Dat)
{
uchar i;
LOAD=0;
for(i=0;i<8;i++)
{
CLK=0;Addr<<=1;DIN=CY;
CLK=1;_nop_();_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
CLK=0;Dat<<=1;DIN=CY;
CLK=1;_nop_();_nop_();
CLK=0;
}
LOAD=1;
}
//MAX7219初始化
void Initialise()
{
Write(0x09,0x3f);//编码模式地址
Write(0x0a,0x07);//亮度地址
Write(0x0b,0x01);// 扫描数码管个数地址
Write(0x0c,0x01);// 工作模式地址
}
//T0中断程序
void T0_time() interrupt 1
{
TH0=50000/256; //设定10ms定时初值
TL0=50000%256;
if(tt--==0) //50ms*10=500ms
{
tt=9;
if(hh--==0) //500ms*2=1s
{
hh=1;
Write(1,i/0x0a); //数码管写数据
Write(2,i%0x0a);
if(i--==0)
{
if(i--==0) //初始化时定义i=80
{
if(mm==0) //判断语句
{
mm=1;
i=80;
}
else
{
mm=0;
i=60;
}
}
}
}
switch(Operation_Type)
{
case1://东西向绿灯,南北向红灯
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
if(++Time_Count!=155)return;//500ms*(2*77)=77s
Time_Count=0;
Operation_Type=2;//下一操作
break;
case2://东西向绿灯转黄灯,黄灯闪烁,南北向红灯
YELLOW_A=!YELLOW_A;GREEN_A=1;
if(++Flash_Count!=7)return;//500ms*(2*3)=3s
Flash_Count=0;
Operation_Type=3;//下一操作
break;
case3://南北向绿灯,东西向红灯
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
if(++Time_Count!=155)return;//500ms*(2*57)=57s
Time_Count=0;
Operation_Type=4;//下一操作
break;
case4://南北向绿灯转黄灯,黄灯闪烁,东西向红灯
YELLOW_B=!YELLOW_B;GREEN_B=1;
if(++Flash_Count!=7)return;//500ms*(2*3)=3s
Flash_Count=0;
Operation_Type=1;//下一操作
break;
}
}
}
//主程序
void main()
{
Initialise();//初始化
TMOD=0x01;//定时器0工作方式1
IE=0x82;//允许定时器0中断
TR0=1;//启动定时器0
while(1);
}
我的问题还没有解决呢,你能解决吗
一周热门 更多>