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

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;不会灭  哪里出现问题了  具体怎么改
这里的闪烁程序怎么写  都想爆大脑了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
木途单行道
1楼-- · 2019-07-15 19:35
sbit dxl = P1^4;   // 东西绿
这句定义反了吧。应该sbit P1^4=dxl;  
Aidaohuakai
2楼-- · 2019-07-15 20:46
没见过这样的判断if( nbh = 0,dxl = 0) ,建议先理清思路再写
Aidaohuakai
3楼-- · 2019-07-16 02:00
木途单行道 发表于 2015-5-13 11:28
sbit dxl = P1^4;   // 东西绿
这句定义反了吧。应该sbit P1^4=dxl;

是这样定义的!建议你多看看单片机C语言基础!
夏至198811
4楼-- · 2019-07-16 02:39
 精彩回答 2  元偷偷看……

一周热门 更多>