找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1107|回复: 2
打印 上一主题 下一主题
收起左侧

问一个关于单片机中断的问题,两个方向的交通灯

[复制链接]
跳转到指定楼层
楼主
ID:510031 发表于 2019-4-13 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想做一个两个方向的交通灯,红绿(0xed)——黄黄(0xf3)——绿红(0xde),用定时器和中断来做
但是结果是:一直只有2个灯亮,没有变化。
调试发现不会进入子程序。

单片机代码如下:
#include<reg52.h>

void Init_Timer(void)    //初始化
{    TMOD|=0x01;
    TH0=0x00;
    TL0=0x00;
    EA=1;         //总中断//
    ET0=1;        //定时器0允许//
    TR0=1;        //T0启停控制//
}
void display()
{    static unsigned char i;
   
    if(0<=i<=99)
    {
      P1=0xed;
     }
    else if(100<=i<=139)
     {   
         P1=0xf3;
     }
    else if(140<=i<=239)
     {   
         P1=0xde;
     }
       else if(i>239)
     {   
         i=0;
     }
     i++;
}
void Timer_isr(void) interrupt 1
{   
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        display();
}
void main()
{
    Init_Timer();
    while(1);
}
请问哪位能帮我看一下



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2019-4-14 08:03 | 只看该作者
if 括号内表达式错误。因为在任何时间都能满足 if(0<=i<=99) 的判断条件,不可能进入下一条判断语句。
正常表达式应该这样写 if(0<=i && i<=99),原来 if(0<=i<=99)的写法相当于 if(0<=i || i<=99)。

#include<reg52.h>

void Init_Timer(void)    //初始化
{
    TMOD|=0x01;
    TH0=0x00;
    TL0=0x00;
    EA=1;         //总中断//
    ET0=1;        //定时器0允许//
    TR0=1;        //T0启停控制//
}
void display()
{
    static unsigned char i;
   
        if(0<=i && i<=99)
        {
                P1=0xed;
        }
        else if(100<=i && i<=139)
        {   
                P1=0xf3;
        }
        else if(140<=i && i<=239)
        {   
                P1=0xde;
        }
        else if(i>239)
        {   
                i=0;
        }
        i++;
}
void Timer_isr(void) interrupt 1
{   
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        display();
}
void main()
{
    Init_Timer();
    while(1);
}
回复

使用道具 举报

板凳
ID:510031 发表于 2019-4-14 10:37 | 只看该作者
wulin 发表于 2019-4-14 08:03
if 括号内表达式错误。因为在任何时间都能满足 if(0

嗯嗯!太感谢老师了,看来还是基础不扎实,谢谢老师指出错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表