1、定时器0的控制寄存器
AUXR |= 0x80;//定时器时钟为1T模式
TMOD &= 0xF0;//定时器T0工作在模式0 16位自动重载模式
TF0 = 0;
TR0 = 1;//开启定时器T0
ET0 = 1;//打开定时器0中断。
中断号为1
2、程序代码
#include "stc8g.h"
#include "intrins.h"
sbit LED_R = P0^5;//红色LED
sbit LED_Y = P0^6;//黄色LED
sbit LED_G = P0^7;//绿色LED
unsigned int cnt = 0;
void Delay1us()
{
unsigned char i;
_nop_();
_nop_();
i = 9;
while(--i);
}
void Delay1ms()
{
unsigned char i,j;
_nop_();
_nop_();
i = 46;
j = 113;
do{
while(--j);
}while(--i);
}
void Delay_ms(unsigned int ms)
{
while(ms--)
{
Delay1ms();
}
}
void TM0_Isr(void) interrupt 1
{
cnt++;
if(cnt == 1000)
{
LED_R = !LED_R;
cnt = 0;
}
}
void Time0_Init()
{
AUXR |= 0x80;//定时器时钟为1T模式
TMOD &= 0xF0;//定时器T0工作在模式0 16位自动重载模式
TL0 = 0x48;
TH0 = 0x77;//定时器1ms
TF0 = 0;//中断标志清0
TR0 = 1;//打开定时器T0
ET0 = 1;//打开定时器T0中断
EA = 1;//打开总中断
}
void main()
{
P0M0 = 0x00;//设置P0口为准双向口
P0M1 = 0x00;
Time0_Init();
while(1)
{
}
}