一、案例要求:
运用定时器T0实现8个LED亮1s、灭1s不断循环,要求T0使用工作方式0,并且要用到定时器0的中断。
二、案例代码:
#include <reg51.h> //包含89C51相关的头文件
unsigned int count ; //定义全局变量count记录溢出次数
//主函数
void main()
{
TMOD=0x00; //模式为13位计数器
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
TR0=1; //打开定时器0
ET0=1; //允许定时器0中断
EA=1; //打开总中断
while(1);
}
//定时器0的中断服务函数
void Timer0() interrupt 1
{
TH0=(8192-5000)/32;
TL0=(8192-5000)%32; //重新装载计数器的初值
count++; //每中断1次,count值加1
if(count==200) //中断200次说明定时了1S
{
P1=~P1; //P1端口电平翻转
count=0; //计数归零重新开始计数
}
}