#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define FOSC 12000000L
#define T1MS (65536-FOSC/12/1000) //定时一秒
sbit led= P2^0;
u16 count=0; //计数初始化为0
void main(void)
{
TH0 = T1MS>>8; //赋初值
TL0 = T1MS; //赋初值
TMOD = 0x01; //设置定时器0用十六位定时器方式
TR0 = 1; //启动定时器0
ET0 = 1; //打开定时器0的中断
EA = 1; //打开总终端
while(1)
{
}
}
//定时器0的中断服务函数
//已经设置了1ms一次中断了,说明每1ms会进入1次中断服务函数
//其他时间不会进入
void tm0_isr() interrupt 1
{
TH0 = T1MS>>8; //每次中断都要赋初值
TL0 = T1MS; // 每次中断都要赋初值
count++; //计数相当于1ms加1次
if(count>=500) //判断是否加到500,相当于判断是否累加了500ms
{
count=0; //软件清零溢出标志位
led=~led;
}
}