1.思路:
1.1给定时器TMOD 初值
给初值定一个10ms
TR0 =1 开始计时 ;TF0 = 0 计算爆表
ET0 = 1 打开定时器0中断 ; EA = 1 打开总中断EA
1.2.main()函数里面的软件定时消掉,用定时器定时 ;定义一个中断函数,写入爆表100次,led翻转
#include "reg52.h"
#include <intrins.h>
sbit led = P3^6;
sbit led1 = P3^7;
int cnt = 0;
void Time0Init()
{
TMOD = 0x01;
TL0 = 0x00;
TH0 = 0xDC;
TR0 = 1;
TF0 = 0;
ET0 = 1;
EA = 1;
}
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
led = 1;
Time0Init();
while(1)
{
led1 = 0;
Delay500ms();
led1 = 1;
Delay500ms();
}
}
void Time0Handler() interrupt 1
{
cnt++;
TL0 = 0x00;
TH0 = 0xDC;
if(cnt == 100){
cnt = 0;
led = !led;
}
}