根据开发板例程修改定时器中断时间
#define D1 P00 // 指示灯 D1
/*Timer0定时器定时20ms TIMER0_VALUE=26666
Timer0定时器定时10ms TIMER0_VALUE=13333
Timer0定时器定时5ms TIMER0_VALUE=6666
Timer0定时器定时1ms TIMER0_VALUE=1333
*/
#define TIMER0_VALUE 13333 //10ms时的取值
uint16_t count_ms=0; //软件计数变量Tms计数+1
uint16_t count_s=0; //软件计数变量1s计数+1
void IO_Init(void)
{
P0DIR &= ~0x01;//配置 P0.0 为输出
D1 = 1;//设置 D1 初始状态为熄灭
}
void Timer0Init(void)
{
TMOD = 0x01; //16位定时器
TH0 = (65536-TIMER0_VALUE)/256; //写入初值
TL0 = (65536-TIMER0_VALUE)%256;
ET0 = 1; //使能Timer0溢出中断
EA = 1; //使能全局中断
TR0 = 1; //启动Timer0
}
void main(void)
{
IO_Init();//配置 IO
Timer0Init();//Timer0 初始化
while(1);//死循环,等待 Timer0 溢出中断
}
void Timer0_irq() interrupt INTERRUPT_T0
{
TH0=(65536-TIMER0_VALUE)/256; //写入初值
TL0=(65536-TIMER0_VALUE)%256;
count_ms++; //软件计数器加1
if(count_ms%100==0)
//1s定时 :20ms时为50,10ms:100,5ms:200;1ms:1000
{
count_s++;
}
if(count_s==2) //2S定时
{
count_s=0;
count_ms=0; //软件计数器清零
D1 = ~D1; //D1 指示灯状态取反
}
}