麻烦高手给我看看我的是怎么回事,这是一个交通灯的程序和仿真图,LED灯不亮,数码管不运行

2019-07-15 15:47发布

麻烦高手给我看看我的是怎么回事,这是一个交通灯的程序和仿真图都是用的网上的一片论文,但是为什么我的加入程序后仿真是这样的,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,Operation_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);

                           }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。