1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
單片機交通燈不能觸發外部中斷0
[打印本頁]
作者:
cbsakcbd
時間:
2020-3-24 21:52
標題:
單片機交通燈不能觸發外部中斷0
要求的是按按鍵之后,需要將支路變黃干路為紅1秒 之后支路變紅干路變綠 也就是led8紅,led3綠 。采用的是外部中斷和定時器中斷,外部中斷函數是按鍵變化。但是在仿真和板子上都不能實現這個要求,是中斷優先級的問題還是程序其他地方有問題,求大佬看一下.
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^0;
uchar num;
uchar num1=0;
uint times=0;
uint flag;
uint i;
uint num2;
sbit nr=P2^0;
sbit ny=P2^1;
sbit ng=P2^2;
sbit wg=P2^5;
sbit wy=P2^6;
sbit wr=P2^7;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=250;j>0;j--);
}
/****外部中斷*****/
void Int0Init()
{
IT0=1;
EX0=1;
EA=1;
}
/***定時器中斷***///
void Int1Init()
{
TMOD=0x10;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
PT0 = 1;
}
void Int0() interrupt 0 //外部中斷函數
{
delay(50); //消抖
if(k1==0)
{
delay(50);
if(k1==0)
{
num=16;
while(num>=1)//干路亮16秒綠燈
{
ng=0;ny=1;nr=1;wr=0;wy=1;wg=1;
num--;
}
}
}
}
void Int1() interrupt 3//定時器函數
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num1++;
if(num1==20)
{
num1=0;
num--;
}
}
void main()
{
Int0Init();
Int1Init();
while(1)
{
num=21;
while(num>=1)//干綠支紅
{
if(num>=5)
{
ng=0;ny=1;nr=1;wr=0;wy=1;wg=1;
}
if(num<=4)//黃燈閃爍
{
if(num%2==1)
{
ng=1;ny=0;nr=1;wr=0;wy=1;wg=1;
}
else
ng=1;ny=1;nr=1;wr=0;wy=1;wg=1;
}
}
num=21;
while(num>=1)//干紅支綠
{
if(num>=5)
{
ng=1;ny=1;nr=0;wr=1;wy=1;wg=0;
}
if(num<=4)//黃燈閃爍
{
if(num%2==1)
{
ng=1;ny=1;nr=1;wr=1;wy=0;wg=1;
}
else
ng=1;ny=1;nr=0;wr=1;wy=1;wg=1;
}
}
}
}
復制代碼
51hei截圖20200324215102.jpg
(74.13 KB, 下載次數: 158)
下載附件
2020-3-24 21:51 上傳
作者:
cbsakcbd
時間:
2020-3-25 00:08
已解決
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1