欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 問一個關于單片機中斷的問題,兩個方向的交通燈 [打印本頁]

作者: 954807022    時間: 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);
}
請問哪位能幫我看一下




作者: wulin    時間: 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);
}
作者: 954807022    時間: 2019-4-14 10:37
wulin 發表于 2019-4-14 08:03
if 括號內表達式錯誤。因為在任何時間都能滿足 if(0

嗯嗯!太感謝老師了,看來還是基礎不扎實,謝謝老師指出錯誤




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1