MCS--51中断系统
来源:互联网 发布:mac 极点五笔输入法 编辑:程序博客网 时间:2024/05/01 19:16
MCS-51系列单片机的中断系统及定时器/计数器
1中断源
通常,计算机的中断源有下列几种:
(1)一般输入/输出设备。当外设准备就绪时可以向CPU发出中断请求,从而实现外设与CPU的通信。如键盘、打印机等。
(2)实时时钟或计数信号。如定时时间或计数次数一到,则向CPU发出中断请求,要求CPU予以处理0
(3)故障源。当采样或运算结果出现超出范围或系统停电时,可以通过报警、掉电等信号向CPU发出中断请求,要求CPU加以处理。
(4)为调试程序而设置的中断源。为了便于控制程序的调试,及时检查中间结果可以在程序中设置一些断点或单步执行等。
2. MCS-51系列单片机的中断系统
图3.2 MCS一51系列单片机8051的中断系统内部结构图
3.定时器/计数器控制寄存器TCON
TCON为定时器/计数器控制寄存器,
TFl
TRl
TF0
TRO
IEl
ITl
IEO
IT0
TCON寄存器各位的含义如下:
IT0:外部中断INTO的中断触发方式选择位。
当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期采样INTO(P3.2)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位IE0为1,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P3.2引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。
外部中断电平触发方式为低电平有效,所以为了保证CPU能正确采样电平状态,要求外部中断源INT0(interrupt)有效的低电平信号至少维持一个周期,因为它一个周期一采集嘛,
当IT0位置为1时,外部中断INT0为边沿触发方式。在这种触发方式中,CPU在每个机器周期采样INTO(P3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。
IE0:外部中断:当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。
1T1:外部中断INTO的中断触发方式选择位。功能与IT0相同。
IEl:外部中断INTO的中断请求标志位。功能与IE0相同。
TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。
TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出
TRl:定时器/计数器Tl的启动标志位。功能与TR0相同。
TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相同。
4.串行口控制寄存器SCON(serial)
SM0
SMl
SM2
REN
TB8
RB8
TI
RI
SCON寄存器各位的含义如下:
R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。
T1:串口发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。
写程序时要注意注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。
5中断允许控制
MCS一51系列单片机的5个中断源都是可屏蔽中断。也就是说用户则可以通过软件方法来控制它们是否允许CPU去响应由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。
通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下.
EA
----
-----
ES
ET1
EX1
ETO
EX0
IE寄存器各位的含义为:
EA:总中断允许控制位。当EA位为l时,开放所有的中断。
ES:串口中断允许控制位。当ES位为l且EA位也为1时,开放串口中断。
ETl:定时器/计数器Tl的中断允许控制位。当ETl位为l且EA位也为1时,开放Tl的溢出中断。
EXl:INT1的中断允许控制位。当EXl位为l且EA位也为1时,开放INT1。
ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。
EX0:INT0的中断允许控制位。功能与EXl相同。
6中断优先权管理
在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在MCS一51内部提供了一个中断优先级寄存器IP
—
-------
--------
PS
PTl
PXl
PT0
PXO
IP寄存器各位的含义如下:
PX0、PT0、PXl、PTl和PS分别为INTO、TO、INT1、Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。
7.定时器/计数器T0、Tl的方式寄存器TMOD
特殊功能寄存器TMOD为T0、Tl的工作方式寄存器,其格式如下:
TMOD的低4位为T0的方式字段,高4位为Tl的方式字段,它们的含义是完全相同的。
M1 M0:T0/Tl的工作方式选择位,其对应关系如表3.1所示。
表3.1 T0/T1工作方式选择位的意义
M1 M2
工作方式
功能说明
0 0
方式0
13位定时器/计数器工作方式
0 1
方式1
16位定时器/计数器工作方式
1 0
方式2
自动再装入的8位定时器/计数器工作方式
1 1
方式3
T0:分为两个8位定时器肘数器,Tl:停止计数
C/T:定时器或计数器方式选择位。当C/T位为0时,选择定时器方式。在定时器方式中,以时钟信号的l2分频信号作为计数信号,也就是每一个机器周期定时器加1。当系统的时钟信号频率确定后,定时器从初值开始加1,到定时器溢出所需要的时间是固定的,所以称为定时器方式。
当C/T位置为1时,选择计数器方式。在计数器方式中,对外部引脚(T0为P3.4,Tl为P3.5)上的输入脉冲信号进行计数
GATE:T0/Tl的门控位。当GATE位为0时,定时器计数器T0、Tl的运行仅受TR0、TRl的控制,不受外部引脚电平的状态的影响。当GATE位置为l时,定时器/计数器T0、Tl的运行不仅受TR0、TRl的控制,而且还受到外部引脚电平状态的控制(INT0控制T0,INT1控制Tl)。即只有当INT0(INTl)引脚为高电平且TRO(TRl)位为l时才启动TO(T1)计数,当INTO(INTl)引脚为低电平或TR0(TRl)位为0时均使T0(T1)停止计数。
8 定时器/计数器T0、Tl的工作方式
1.方式0
方式0为13位定时器/计数器工作方式,方式0的内部结构如图3.5所示。
方式0由TL0/TLl的低5位和TH0/THl的8位组成。当TL0/TLl的低5位产生溢出进位时向TH0/THl进位,TH0/THl计数溢出时置溢出中断请求标志位TF0/TFl为1,向CPU请求中断。
由图3.5可知,在方式0的T0/Tl计数脉冲控制电路中,有一个方式电子开关和允许计数控制电子开关。当C/T位为0时,方式电子开关与上面接通,以时钟频率的l2分频信号作为T0/Tl的计数信号;当C/T位为l时,方式电子开关与下面接通,此时以TO(P3.4)/Tl(P3.5)引脚上的输入脉冲作为T0/Tl的计数脉冲。当GATE位为0时,由TR0/TRl控制定时器工作,当GATE位为l时,定时器不仅受TR0/TRl的控制,而且还受INT0/INT1引脚上的电平控制。
2.方式1
方式l为16位定时器/计数器工作方式,方式1的内部结构如图3.6所示。
方式l由TL0/TLl的8位和TH0/THl的8位组成。当TL0/TLl的8位产生溢出进位时向TH0/THl进位,TH0/THl计数溢出时置溢出中断请求标志位TF0/TFl为1,向CPU请求中断。
图3.6方式l的内部结构图
由图3.6可知,方式1的T0/Tl计数脉冲控制电路与它们方式0的情况相似,仅仅是计数器的位数不同而已。
3.方式2
方式2为自动恢复计数初值的8位定时器/计数器工作方式。T0/Tl工作于方式0或方式1时,若需要重复计数,就需要用户用指令重新填充初值;而方式2在计数器溢出时会自动地装入新的计数初值,开始新一轮的计数。由于方式0或方式1是通过指令装入计数初值的,而执行指令需要时问,因此,在方式2的定时时间比较准确。方式2的内部结构如图3.7所示。
图3.7方式2的内部结构图
在方式2时,TL0/TLl作为8位计数器,TH0/THl为自动恢复初值的8位计数器。当TL0/TLl计数发生溢出时,一方面置溢出中断请求标志TF0/TFl为1,向CPU请求中断,同时又将T0/THl的内容送入TL0/TLl,使T0/Tl从初值开始重新加l计数。因此T0/Tl工作于方式2时,定时精度高,但定时时间范围小。
由图3.7可知,方式2的TO/T1计数控制与方式0和方式1完全相同,不同之处在于当CPU响应T0/Tl的溢出中断后会自动将TH0/THl的内容填充到TL0/TLl。
4.方式3
方式3为两个8位定时器肘数器工作方式,它只适用于定时器/计数器T0,若将Tl设置为方式3,则Tl将停止计数。方式3内部逻辑结构如图3.8所示。
由图3.8可知,方式3是将T0拆分为两个8位定时器/计数器。其中8位计数器TL0,使用原来T0的控制位(C/T、GATE、TR0、IN T0)形成一个8位的定时器/计数器,它既可以定时(对时钟频率的l2分频信号进行计数),也可以实现计数;而8位计数器TH0,占用原来Tl的控制位(TRl、TFl),它只能对内部计数脉冲进行计数,其运行仅受TRl位的控制,而与外部引脚INTl的电平状态无关。
定时器/计数器T0工作于方式3时,定时器/计数器Tl仍可设置为方式0、方式1、方式2。但由于TRl、TFl已被定时器TH0占用,此时定时器/计数器仅由控制位C/T设置其定时或计数方式,当计数器计满发生溢出时,只能将输出送往串行口。在这种情况下,Tl一般用做串行口波特率发生器,或不需要中断的场合。
- MCS-51中断系统
- MCS--51中断系统
- MCS-51单片机中断测试系统设计
- MCS-51指令系统概述
- MCS-51指令系统概述
- MCS-51指令系统
- MCS-51单片机机器码
- MCS-51单片机
- [MCS-51] 指令系统
- MCS-51单片机基础
- MCS-51汇编指令
- 51单片机中断系统
- 51的中断系统
- MCS-51单片机存储器结构
- MCS-51控制转移指令
- MCS-51单片机的串行口
- MCS-51单片机存储器结构
- MCS-51的定时/计数器
- Spring整合Hibernate
- 查看他人bug解决方案整理-控制工具栏按钮的显示隐藏-from ember
- IOS下利用ziparchive解压缩zip文件
- 采用MQTT协议实现Android消息推送
- soj 1704. Pencils from the Nineteenth Century
- MCS--51中断系统
- 从学生到程序员
- GC陷阱
- mysql 启动 错误1053:服务没有及时响应启动或者控制请求
- C语言 结构体的应用 查询结构体中的信息 结构体与指针操作
- hdu 2833 floyd+简单dp
- 拥抱变化——持续集成(CI)实践心得
- 在Debian中玩转MySql
- centos的mysql的密码修改方法