新手请教大家这个if语句放在外部中断1中怎么不执行?

2020-02-04 09:25发布

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
volatile unsigned char a,b,tt;
uchar code table[]={
0x01,0x79,0x12,0x30,
0xe8,0xa4,0x04,0xf1,
0x0,0x20};
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
void main()
{
        a=0;
        b=0;
        tt=0;
        TMOD=0x01;//设置定时器0为工作方式1
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        P0=0xff;
        P1=0xff;
        P2=0xff;
        P3=0xff;
        EA=1;//开总中断
        ET0=1;//开定时器0中断
        EX0=1;//开外中断0
        IT0=1;//外中断0下降沿
        EX1=1;
        IT1=1;
        while(1)
{
        P1=table;//档位显示
        P0=table[a];//定时显示
        if(a==1)
{
        led3=1;//一档
        led2=1;//二档
        led1=0;//三档
}
        if(a==2)
{
        led3=1;
        led1=1;
        led2=0;
}
        if(a==3)
{
        led1=1;
        led2=1;
        led3=0;
}
        if(a==4)
{
        P2=0xff;
        a=0;
}
}
}
void exter0() interrupt 0
{
        a++;
}
void exter1() interrupt 2
{
        b++;
        TR0=1;//启动定时器0
        if(b==0)
{
        TR0=0;//停止定时器0
        a=0;
        P2=0xff;
        b=0;
}
}
void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        tt++;
        if(tt==20)
{
        b--;
       
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
4758866
1楼-- · 2020-02-04 10:25
就当我没问过.刚想明白了
daila
2楼-- · 2020-02-04 12:11
4758866 发表于 2009-12-25 00:11
就当我没问过.刚想明白了

求教:我现在是两个中断只执行int0,请问为什么会这样?
hy8649241
3楼-- · 2020-02-04 18:02
    b++;
        TR0=1;//启动定时器0
        if(b==0)
{
hy8649241
4楼-- · 2020-02-04 18:44
进来就B++,B会行于0吗

一周热门 更多>