在写定时器中断时,想每隔20ms就中断一次,结果怎么都返回不了
原程序
#include<reg51.h>
unsigned char i;
//定时器0初始化
void IT0_INIT()
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA =1;//先开总中断
ET0=1;//后开定时器中断
TR0=1;
}
//中断不会返回
void main(){
IT0_INIT();
while(1)
P0=0x0ff;//数码管全亮
}
void IT0PROC() interrupt 1
{
i++;
if(i=10)//20ms到
P0=0x00;
else
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
}
}
修改后程序
#include<reg51.h>
unsigned char i;
//定时器0初始化
void IT0_INIT()
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
ET0=1;//先开定时器中断
EA =1;//后开总中断
TR0=1;
}
//中断会返回
void main(){
IT0_INIT();
while(1)
P0=0x0ff;//数码管全亮
}
void IT0PROC() interrupt 1
{
i++;
if(i=10)//20ms到
P0=0x00;
else
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
}
}