290 likes | 416 Views
第五章 MCS-51 的中断系统. 5.1 I/O 接口的作用 / 功能 / 定义 5.2 数据的输入 / 输出传送方式 5.3 单片机的中断系统 5.4 中断的举例. 5.1 I/O 接口的作用 / 功能 / 定义. 一、作用. 计算机 / 单片机与外设 之间 起 桥梁 的 电路或部件 —— 接口 (interface) 。 协调 两者间的 差异 。. 速度 不一致. 数据 性质 不同. 数据 协议 / 格式 不同. 所需 功率 / 电平 不匹配. 所需 测控点数量 不匹配. 二、接口与端口.
E N D
第五章 MCS-51的中断系统 5.1 I/O接口的作用/功能/定义 5.2 数据的输入/输出传送方式 5.3 单片机的中断系统 5.4 中断的举例
5.1 I/O接口的作用/功能/定义 一、作用 计算机/单片机与外设之间起桥梁的 电路或部件——接口(interface)。 协调两者间的差异。 速度不一致 数据性质不同 数据协议/格式不同 所需功率/电平不匹配 所需测控点数量不匹配
二、接口与端口 本课程中讲到的接口可以是→器件→电路板卡 →设备/装置→ …… 口地址→ 可寻址的寄存器/端口 地址由选用的地址线条数与地址线名决定 地址线条数n决定:寻址范围 = 2n MCS-51寻址范围 = 216 = 65536 = 64K字节 地址线在地址总线中的序名决定具体地址 一个端口可能有多个口地址; 一个口地址只能唯一地指向某个端口。
接口地址的编址/译码/寻址概念: 通过适当的地址线(或控制线,或I/O线), 物理上形成某个或某些片选/使能等信号, 实现与接口对象的一一对应的过程。 站在单片机/计算机一侧来看待上述过程叫编址。 站在单片机/计算机外侧来看待上述过程叫译码。 通过软件与译码电路硬件实现对外设的片选或使能控制过程叫寻址。
三、编址方式 编址是设计过程(在先) 译码和寻址是应用过程(在后) 对I/O与存储器编址通常有两种方式: 独立编址方式: I/O与存储器分别编址 (例如IBM-PC) 统一编址方式: I/O与存储器合在一起编址(单片机应用系统)
单片机对外部器件实现一一对应的“片选”通常要用单片机的地址总线A15—A0中的部分或全部,甚至也可以用某些I/O线。单片机对外部器件实现一一对应的“片选”通常要用单片机的地址总线A15—A0中的部分或全部,甚至也可以用某些I/O线。 P0口是低8位地址与数据复用口 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 A7/D7A6/D6A5/D5A4/D4A3/D3A2/D2A1/D1A0/D0 P2口是高8位地址口 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A15 A14 A13 A12 A11 A10 A9 A8
1、线选寻址:用一条或几条地址线对外寻址 MCS-51单片机 P2.7 P2.5 P0口 P2.2-2.0 P2.6 Q7-0 D7-0 /CE /CE /CE AD7-0 A10 A9 A8 Q7-0 RAM(2K) D7-0 P2.5 做RAM 片选线 (0000H—07FFH) P2.2,P2.1,P2.0与P0口共同寻址2K字节存储单元 地址范围:XX0X X0000000 0000 XX0X X1111111 1111
MCS-51单片机 P2.7 P2.5 P0口 P2.2-2.0 P2.6 D7-0 /CE /CE /CE AD7-0 A10 A9 A8 Q7-0 RAM (2K) D7-0 缓冲器 锁存器 P2.7 做输出锁存器的片选线 地址范围:0XXX XXXX XXXX XXXX (例:7FFFH) P2.6 做输入缓冲器的片选线 地址范围:X0XX XXXX XXXX XXXX (例:0BFFFH)
2、译码寻址:用地址线加译码器件对外寻址 +5V P0.7-P0.0 74LS138 0# 1# 2# G G2A G2B MCS-51 /CE /CE /CE /CE Y0 Y1 P2.5 A Y2 P2.6 B C P2.7 Y7 常用译码器件:74LS138:3-8译码器 74LS139:双2-4译码器
5.2 数据的输入/输出传送方式 一、数据的输入/输出传送方式 无条件传送方式: 一方对另一方来说总是准备好的 查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待 中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送 直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转
二、中断传送方式特点 数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。 中断功能强弱是计算机性能优劣的重要标志 提高CPU效率解决速度矛盾实现并行工作应付突发事件……
中断涉及的几个环节 (前面提到的甲方) (甲方发出信号提出申请) (乙方同意传送) (安排好当前的工作) (响应乙方的要求) (完事后,回去……) (继续做打断前的工作) ①中断源 ②中断申请 ③开放中断 ④保护现场 ⑤中断服务 ⑥恢复现场 ⑦中断返回
5.3单片机的中断系统 5.3.1单片机的中断源 一、51子系列允许5个(52子系列6个)中断源 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF2——52子系列有T2) 1个串行口中断请求:TI/RI 二、CPU识别中断申请的依据: CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。
Tc=1/fosc Ts=6Tc Tm=12Tc=6Ts Tc S2 S3 S4 S5 S6 S1 S2 S3 S4 S6 S5 Ts Tm Tm ——此图见P.40 CPU识别中断申请的依据: CPU 在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。
TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断)TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断) TCON TF1TR1 TF0TR0IE1IT1IE0IT0 TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。 TR0/TR1:定时器运行启停控制位: =0:定时器停止运行; =1:定时器启动运行。
TCON:Timer控制寄存器,低4位管理外部中断 TCON TF1TR1TF0TR0IE1IT1IE0IT0 IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。 IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效.
5.3.2外部中断(INT0,INT1)申请过程 在CPU已经开放了外部中断允许的前提下: 在INT0/INT1引脚输入一个负脉冲或低电平, TCON寄存器中的IE0/IE1标志位自动变“1”, 检测到IE0/IE1变“1”后,将产生指令: LCALL 0003H(/0013H)执行中断服务程序, 并将IE0/IE1标志位自动清“0”,以备下次申请。
中 断 源 申请标志 中断矢量 中断优先级 外部中断0( INT0) IE0 0003H 定时/计数器0(T0) TF0 000BH 外部中断1( INT1) IE1 0013H 定时/计数器1(T1) TF1 001BH 串行口接收/发送 RI/TI 0023H 定时/计数器2(T2) TF2 002BH 一、单片机的中断矢量与优先级 中断矢量:MCS-51单片机的 5 个中断源分别对应有各自的中断服务程序入口地址——中断矢量 最高优先级 最低优先级
IP —— PT2 PS PT1 PX1 PT0 PX0 (0B8H) PX0/PX1:INT0/1优先级控制位: =0时属低优先级;=1时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位: =0时属低优先级;=1时属高优先级。 PS1:串行口中断优先级控制位: =0时属低优先级;=1时属高优先级。
中断优先级处理原则 对同时发生多个中断申请时: ☞不同优先级的中断同时申请(很难遇到) ——先高后低 ☞相同优先级的中断同时申请(很难遇到) ——按序执行 ☞正处理低优先级中断又接到高级别中断 ——高打断低 ☞正处理高优先级中断又接到低级别中断 ——高不理低
在中断源提出了中断申请且CPU此前已经允许中断的前提下,还须满足以下三个条件:在中断源提出了中断申请且CPU此前已经允许中断的前提下,还须满足以下三个条件: ☞没有同级的中断或更高级别的中断正在处理; ☞正在执行的指令必须执行完最后 1个机器周期; ☞若正在执行RETI,或正在访问IE或IP寄存器,须执行完上述指令和下一条指令以后方能响应中断。
中断允许寄存器IE(0A8H) IE EA— ET2 ES ET1 EX1 ET0 EX0 EX0/EX1/ET1/ET0/ES 位: 分别是INT0/1,Timer0/1,串行口的中断允许控制位: =0 时禁止中断;=1时允许中断。 ET2:T2中断允许控制位(仅52子系列有) =0 时禁止中断;=1时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1时允许中断。
二、中断系统硬件结构 中断源标志位查询机构 各单路开关 总开关 高中断级中断请求 INT0 IE0 外部中断 请求0 EX0 TF0 内部 定时器0 ET0 中断源标志位 中断入口 外部中断 请求1 INT1 IE1 EX1 低中断级中断请求 内部 定时器1 TF1 ET1 TI T 内部 串行口 ES R 中断源标志位 中断入口 RI IE寄存器 EA位 IP寄存器 注:各中断允许控制位=0,开关断开; =1,开关接通
三、外部中断及中断请求的撤除 低电平/负脉冲→INT0/INT1引脚可触发中断 TCON(88H) TF1 TR1 TF0 TR0IE1 IT1 IE0 IT0 IT0/IT1:INT0/1的触发方式选择位: IT0/IT1=0时,INT0/INT1是低电平有效; IT0/IT1=1时,INT0/INT1是负跳变有效。 低电平触发引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,将再次中断。 负脉冲触发CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU 可记忆申请、可自动撤除中断申请。
外部低电平中断的撤除 INTx Q D 74LS74 MCS-51 外来中断申请信号(低电平) P1.0 CLK S S=0 则 Q=1 外来的低电平→反相→CLK端产生上跳沿→D端的“0”打到Q端→申请中断 中断返回前对P1.0送“0”→令Q端变为“1” 指令如下: ANL P1,#0FEH= CLR P1.0 ;令Q端置“1” ORL P1, #01H= SETB P1.0 ;令S端置“1”,以免下次中断来时Q端不能变“0”
四、中断应用前后要做的几项工作 中断前 开中断允许:必须 选择优先级:根据需要选择,可有/可无 设置控制位:INTx—触发方式(ITx) Tx—TCON,TMOD,TRx,初值…… RI/TI—SCON,REN,RB8,TB8,…… 中断后 进入中断服务后:保护现场,关中断,…… 退出中断服务前:恢复现场,开中断,设Tx的初 值,清TI/RI,…… 中断服务程序的最后一条指令必是RETI
5.4 中断应用的举例 通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。 此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。
中断应用程序举例: 通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。 此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。 P1.0 P1.7 INT1 300
ORG 0000H LJMP MAIN ORG 0013H;中断矢量 LJMP INT MAIN:SETB EA ;开总中断允许“开关” SETB EX1 ;开分中断允许“开关” CLR PX1 ;0 优先级(也可不要此句) SETB IT1 ;边沿触发 MOV B,#01H ;给 B 寄存器赋初值 HERE:SJMP HERE ;原地等待中断申请 INT:MOV A,B ;自B寄存器中取数 RL A ;左环移一次 MOV B,A ;存回B,备下次取用 (MOV P1,A) ;输出到P1口 RETI ;中断返回 中断服 务程序