闪烁程序怎么写 都想爆大脑了,不知道错在哪里

2019-07-15 17:12发布

/*
实现的功能:   1、东西向绿灯亮5秒后,2、黄灯闪烁,3、闪烁2次后亮红灯,
               4、红灯亮后,南北向由红灯变为绿灯,5、5秒后南北向黄灯闪烁,
               6、闪烁5次后亮红灯,7、东西向绿灯亮,如此重复。
*/
#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
uint i=0;
sbit nbu = P1^0;   // 南北黄
sbit nbl = P1^1;   // 南北绿
sbit nbh = P1^2;   // 南北红
sbit dxu = P1^3;   // 东西黄
sbit dxl = P1^4;   // 东西绿
sbit dxh = P1^5;   // 东西黄
void main()
{
  TMOD = 0x01;
   TH0 = (65336 - 50000)/256;
   TL0 = (65536 - 50000)%256;
   TH1 = (65336 - 50000)/256;
   TL1 = (65536 - 50000)%256;
   EA  = 1;
   ET0 = 1;
  while(1)
  {
      
        if( nbh = 0,dxl = 0)    //东西绿灯亮 ,南北红灯亮
         {
        TR0 = 1;      //启动定时器
           if(i == 100)
            {
              i = 0;         //清零
              dxu = 0;     //东西绿
           TR0 = 0;     //关闭定时器
          dxl = 1;             //东西绿灭
  
            }
         }
   
        }   
}
void terr () interrupt 1
{
   TH0 = (65336 - 50000)/256;
   TL0 = (65536 - 50000)%256;
   i++;
}



为什么dxl = 1;不会灭  哪里出现问题了  具体怎么改
这里的闪烁程序怎么写  都想爆大脑了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。