51单片机-定时器

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.youkuaiyun.com/woshixingaaa/archive/2010/09/19/5893970.aspx

定时/计数器的结构和工作原理

定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。80C51片机定时/计数器的工作是由两个特殊功能寄存器控制的。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能,低四位用于T0,高四位用于T1。TCON是控制寄存器,控制T0和T1的启动和停止及溢出标志,高四位与定时器有关,低四位与外部中断有关。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。

image

image

image

中断允许控制。CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器

IE控制的。

image

#include <reg52.h> unsigned int t; sbit p3_4 = P3^4; void init_timer(){ TH0 = (65535 - 50000) / 256; //求取高8位 TL0 = (65535 - 50000) % 256; //求取低8位 EA = 1; //CPU总中断允许位 ET0 = 1; //定时/计数器中断允许位 IT0 = 1; //下降沿有效 TR0 = 1; //定时器启动 TMOD = 0x01; //使用定时器T0,16位计数器 p3_4 = 1; } void main(){ init_timer(); t = 0; while(1){ if(t == 20){ p3_4 = ~p3_4; //响一秒,停一秒 t = 0; } } } void bell() interrupt 1{ TH0 = (65535 - 50000) / 256; //从15535开始计时,共50000us,50ms TL0 = (65535 - 50000) % 256; //20*50 = 1000ms = 1s 即1s响停一次 t++; }
### 关于51单片机定时器的应用实例 在蓝桥杯竞赛中,对于51单片机定时器的操作是一个重要的考点。下面提供一段基于51单片机的简单定时器应用示例代码,该例子展示了如何配置并启动一个定时器以实现特定时间间隔的任务执行。 #### 定时器初始化与使用案例 ```c #include <reg52.h> // 设置全局变量用于存储计数值 unsigned int count = 0; void Timer_Init(void){ TMOD = 0x01; // 设置T0为模式1 (16位定时器)[^4] TH0 = (65536-50000)/256; // 计算高字节初值, 假设系统频率为12MHz,则此设定可得到约5ms的时间延迟 TL0 = (65536-50000)%256; // 计算低字节初值 ET0 = 1; // 开启T0中断允许 EA = 1; // 总中断使能 } void main(){ Timer_Init(); // 初始化定时器 while(1){ // 主循环等待中断触发事件发生 if(count >= 200){ // 如果已经过了大约1秒(每20次中断代表一次完整的5ms*20=100ms) P1 = ~P1; // 切换P1端口状态作为LED闪烁信号输出 count = 0; // 清零计数器重新开始下一轮计时 } } } // 中断服务子程序定义 void Timer_ISR(void) interrupt 1{ TH0 = (65536-50000)/256; // 重载高字节初值 TL0 = (65536-50000)%256; // 重载低字节初值 TR0 = 1; // 启动定时器继续运行 count++; // 每当中断被调用则增计数 } ``` 这段代码实现了利用51单片机内部定时器产生固定周期性的脉冲序列,并通过改变外部硬件连接可以很容易地观察到实际效果,比如让LED灯按照一定规律亮灭。这里采用的是最基础的方式来进行编程,在更复杂的情况下还可以考虑入更多特性如PWM波形生成等功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值