#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag = 0;
uint IntNumber = 200;
uchar k, i, j;
void Int_T0() interrupt 1 // 定时器0中断服务程序
{
IntNumber -= 1;
if (IntNumber == 0x00)
{
IntNumber = 200;
flag = 1;
}
}
void delay(void)
{
uint a,b;
for (a=0;a<100;a++)
for (b=0;b<256;b++);
}
void blink(void) //LED闪烁次数
{
TR0 = 0;//停止定时器0
for (j=0;j<20;j++)
{
P0 ^= 0xFF; // 翻转P0端口的所有位
P1 ^= 0xFF; //翻转P1端口的所有位
P2 ^= 0xFF; //翻转P2端口的所有位
P3 ^= 0xFF; //翻转P3端口的所有位
delay();
}
TR0 = 1; // 启动定时器0
}
void main(void)
{
TMOD = 0x01; // 设置定时器0为模式1
TH0 = (65535-50000)/256;//高八位赋初值
TL0 = (65535-50000)%256;//低八位赋初值
EA = 1; // 开启全局中断
ET0 = 1; // 使能定时器0中断
TR0 = 1; // 启动定时器0
TF0 = 0; // 清除定时器0的中断标志位
while (1)
{
if (flag)
{
flag = 0; // 清除标志位
// 执行需要周期性执行的任务
blink();
}
}
}