#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--;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
求教:我现在是两个中断只执行int0,请问为什么会这样?
TR0=1;//启动定时器0
if(b==0)
{
一周热门 更多>