微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 闪烁程序怎么写 都想爆大脑了,不知道错在哪里

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

时间:10-02 整理:3721RD 点击:
/*
实现的功能:   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;不会灭  哪里出现问题了  具体怎么改
这里的闪烁程序怎么写  都想爆大脑了

sbit dxl = P1^4;   // 东西绿
这句定义反了吧。应该sbit P1^4=dxl;  

没见过这样的判断if( nbh = 0,dxl = 0) ,建议先理清思路再写

是这样定义的!建议你多看看单片机C语言基础!

  if( nbh = 0,dxl = 0)    //东西绿灯亮 ,南北红灯亮
=是赋值,改为==才是判断

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top