#include <reg52.h>
sbit led = P3^7;
void main(){
int count = 0;
led = 0;
TMOD = 0x01; //置定时器工作模式
TH0 = 0xDC;
TL0 = 0x03; //给初值,从哪里开始计数
//此处定义 10 ms
//16位定时器可以跳65536次,每次1.085 us
//10 ms/1.085 us = 9216,10ms需要跳9216下
//65536-9216 =56323,所以从56323开始到65536就是10 ms
//将56323化为16进制是:0xDC03,高八位给TH0,低八位给TL0
TF0 = 0; //清空中断标志位
TR0 = 1; //开始计数
while(1){
if(TF0 == 1){ //溢出后
TF0 = 0; //将溢出标志位清零
count++; //每跳9216下就是10 ms,跳完10 ms累加次数
TH0 = 0xDC;
TL0 = 0x03; //将跳为65536的定时器设置为56323
//使每次计数都是10 ms
if(count == 100){ //累加到100后就是1 s
led = !led; //每到1 s 翻转灯的状态
count = 0; //计数到100后清零,开始下一次计数
}
}
}
}
定时器每秒翻转灯状态
最新推荐文章于 2024-09-15 11:53:27 发布