欧美极品高清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