MCS-51单片机定时器中断编程实例与解析
需积分: 33 112 浏览量
更新于2024-08-22
收藏 856KB PPT 举报
"MCS-51系列单片机的定时器/计数器使用中断法编程示例"
本文将详细解析MCS-51单片机中的定时器/计数器工作原理及其编程方法,重点围绕中断法编程展开。MCS-51系列单片机内置了两个可编程定时器/计数器——T0和T1,它们可以通过用户程序选择不同的工作模式,设定相应的工作参数和条件。
### 定时器/计数器的结构
MCS-51单片机的定时器/计数器由THx(高8位)和TLx(低8位)两个8位寄存器组成,其中x表示定时器编号(0或1)。此外,还有两个专用寄存器TMOD(定时器工作方式寄存器)和TCON(控制寄存器)。TMOD用于设置定时器的工作模式,TCON则包含控制位,如启动/停止控制位(TRx)和中断标志位(TFx)。
### 工作原理
定时器/计数器的核心是加1计数器。计数脉冲可以来源于两个途径:一是机器周期的12分频信号,用于定时工作模式;二是外部脉冲,通过T0(P3.4)或T1(P3.5)引脚输入,用于计数工作模式。在定时模式下,计数器每接收到一个机器周期的信号,计数值增加1,直到达到最大值后溢出,触发中断标志位TFx并申请中断。在计数模式下,外部脉冲的下降沿使计数值增加1。
### 中断法编程示例
以下是一个简单的中断法编程例子,使用T0定时器:
```assembly
ORG 0000H
SJMP STAR ;程序开始跳转至STAR
ORG 000BH ;定义T0服务程序入口
AJMP DVT0
ORG 0030H
STAR: MOV TMOD,#01H ;设置TMOD为定时器工作方式1
MOV TH0,#0D8H ;设置TH0为计数初值
MOV TL0,#0F9H ;设置TL0为计数初值
SETB ET0 ;启用T0中断
SETB EA ; 开放CPU全局中断
SETB TR0 ; 启动T0定时器
SJMP $ ; 等待中断
DVT0: MOV TH0,#0D8H ; 重装计数初值
MOV TL0,#0F0H ; 重装TL0
CPL P1.7 ; 翻转P1.7引脚状态
RETI ; 中断返回
```
在这个示例中,程序首先设置TMOD寄存器,让T0工作在方式1,然后装载计数初值,并开启中断和定时器。当T0溢出中断发生时,执行中断服务程序DVT0,重新装载计数初值,并改变P1.7引脚的状态。
### 控制与设定
- **定时器/计数器设定**:通过TMOD寄存器设置工作模式。四位D3-D0用于设定T0,四位D7-D4用于设定T1,每个定时器有四种工作模式(0-1)。
- **启动/停止**:使用TCON寄存器的TRx位来启动或停止定时器。TR0用于T0,TR1用于T1,置1为启动,清0为停止。
- **计数器值设定**:THx和TLx寄存器用于存储计数值,可以通过指令直接写入。
总结,MCS-51单片机的定时器/计数器功能强大且灵活,能够实现精确的定时和计数任务,通过中断法编程可以高效地响应定时事件,广泛应用于各种实时控制系统和定时操作中。
2013-03-30 上传
2010-11-11 上传
2012-07-04 上传
2023-03-09 上传
2022-01-18 上传
2024-04-26 上传
2022-01-12 上传
2020-02-19 上传
2020-02-19 上传
雪蔻
- 粉丝: 30
- 资源: 2万+
最新资源
- conjonction-sitev3
- work-nexgen-codings
- 屋面工程安全技术交底.zip
- PathFindingVisualizer
- stitch-blockchain:MongoDB针脚作为区块链存储的演示
- contacts-manager:Voxie评估项目
- 摄影行业网站模版
- Statistical-Thinking-for-Problem-Solving:这是资料库,其中包含我在SAS JMP提供的Coursera的“工业问题解决的统计思考”课程的笔记和练习
- ANNOgesic-0.7.0-py3-none-any.whl.zip
- 杭华股份2020年年度报告.rar
- 松弛机器人游戏:Node.js + Typescript
- nhsui-docs
- dotnet C# 基于 INotifyPropertyChanged 实现一个 CLR 属性绑定辅助类.rar
- 用来点云配准的斯坦福兔子和房间的pcd文件.zip
- 基于QT的文件分割与合并程序源码file_split.zip
- 回归:机器学习方法