89C51单片机T0定时/计数器详解及操作
81 浏览量
更新于2024-09-02
收藏 232KB PDF 举报
89C51单片机是一款广泛应用的微控制器,它具有强大的定时/计数功能,通过特殊功能寄存器TMOD和TCON共同实现这一功能。TMOD是一个8位寄存器,但它不具备位地址,这意味着不能直接进行位操作,而是通过控制位来控制定时器的工作模式。
TMOD寄存器的每一位有特定含义:
- GATEC/T1M1M0: 这一组位用于选择定时器1(T1)和定时器0(T0)的工作模式。当GATE=0时,T0的状态决定了定时或计数,而TR0控制计数的开始与停止。如果GATE=1,T0的状态和INT0(中断请求)同时影响计数启动。
- M1M0: 是计数方式选择位,决定了计数器的位宽。00代表方式0,13位二进制计数器;01为方式1,16位计数器;10为方式2,8位计数器且TH0作为初值,溢出后自动回写;11则为方式3,TH0和HL0两个独立的8位计数器。
- T1和T0共享相似的控制逻辑,尽管它们各自有各自的寄存器和控制位。
TCON寄存器则是位操作型的,它的位地址包括8FH至89H。TCON包含了多个位:
- TF1和TR1: 分别对应定时器1的溢出标志和计数开关;
- TF0和TR0: 对应定时器0的溢出标志和计数开关。TF0在计数溢出时置1,计数结束后自动清零,而TR0在GATE=0时控制计数开始,GATE=1时则与INT0共同决定是否计数。
- IE1、IT1、IE0和IT0: 分别为中断控制位,用于设置定时器的中断请求和中断触发条件。
举例来说,若要实现定时器0定时50ms,计数20次达到1秒,可能使用方式0的13位计数器。首先设置TH0和TL0的初始值,然后启动计数。在查询模式下,每当计数溢出时,TF0会被置1,软件可通过检测这个标志来知道定时是否结束,计数到60次即为一个完整的1分钟计时。
89C51单片机的定时/计数器0提供了灵活的工作模式选择和中断处理机制,是开发各种时序控制和计数应用的重要工具。理解和掌握这些基础设置和工作原理对于使用该单片机进行实际项目至关重要。
2021-01-20 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38678773
- 粉丝: 4
- 资源: 963
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建