880 likes | 1.03k Views
第三讲: I/O, 中断 , 定时与串口. 本讲重点: 接口概念 , 单片机的编址与译码方法 ; 中断概念 , 响应条件 , 处理原则 , 中断服务 ; 定时器 / 计数器工作方式 1,2 的 用法 ; 串行通讯的波特率 , 4 种工作方式. 第五章 I/O , 中断 , 定时与串行通信. I/O 接口的作用 / 功能 / 定义. 计算机 / 单片机 与 外设 之间 起 桥梁 作用的 电路或部件 —— 接口 (interface) 。 协调 两者间的 差异 。. 速度 不一致. 数据 性质 不同. 数据 协议 / 格式 不同.
E N D
第三讲: I/O,中断,定时与串口 本讲重点: 接口概念,单片机的编址与译码方法; 中断概念,响应条件,处理原则,中断服务; 定时器/计数器工作方式1,2的用法; 串行通讯的波特率, 4种工作方式. 《单片微机原理及应用》教学课件
第五章I/O,中断,定时与串行通信 I/O接口的作用/功能/定义 计算机/单片机与外设之间起桥梁作用的 电路或部件——接口(interface)。 协调两者间的差异。 速度不一致 数据性质不同 数据协议/格式不同 所需功率/电平不匹配 所需测控点数量不匹配 《单片微机原理及应用》教学课件
接口与端口 本课程中讲到的接口可以是 →器件 →功能模块 →设备/装置→ …… →电路板卡 口地址 → 可寻址的寄存器/端口 地址由选用的地址线条数与地址线名决定 ☞地址线条数n决定:寻址范围 = 2n MCS-51寻址范围 = 216 = 65536 = 64K字节 ☞地址线在地址总线中的序名决定具体地址 一个端口可能有多个口地址; 一个口地址只能唯一地指向某个端口。 《单片微机原理及应用》教学课件
接口地址的编址/译码/寻址概念(P125): 通过适当的地址线(或控制线,或I/O线), 物理上形成某个或某些片选/使能等信号, 实现与接口对象的一一对应的过程。 站在单片机/计算机一侧来看待上述过程叫编址。 站在单片机/计算机外侧来看待上述过程叫译码。 通过软件与译码电路硬件实现对外设的片选或使能控制过程叫寻址。 《单片微机原理及应用》教学课件
编址有两种方式 编址是设计过程(在先) 译码和寻址是应用过程(在后) 对I/O与存储器编址通常有两种方式: ☞独立编址方式: I/O与存储器分别编址 (例如IBM-PC) ☞统一编址方式: I/O与存储器合在一起编址(单片机应用系统) 《单片微机原理及应用》教学课件
线选寻址与译码寻址(P109) 单片机对外部器件实现一一对应的“片选”通常要用单片机的地址总线A15—A0中的部分或全部,甚至也可以用某些I/O线。 P0口是低8位地址与数据复用口 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 A7/D7 A6/D6 A5/D5 A4/D4 A3/D3 A2/D2 A1/D1 A0/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 《单片微机原理及应用》教学课件
☞线选寻址:用一条或几条地址线对外寻址 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 X000 0000 0000 XX0X X111 1111 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) 《单片微机原理及应用》教学课件
☞译码寻址:用地址线加译码器件对外寻址 +5V P0.7-P0.0 74LS138 0# 1# 2# 7# 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译码器 《单片微机原理及应用》教学课件
单片机的中断系统 《单片微机原理及应用》教学课件
第五章I/O,中断,定时与串行通信 数据的输入/输出传送方式 无条件传送方式: 一方对另一方来说总是准备好的 查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待 中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送 直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转 《单片微机原理及应用》教学课件
中断传送方式特点 (P.128) 数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。 中断功能强弱是计算机性能优劣的重要标志 提高CPU效率 解决速度矛盾 实现并行工作 应付突发事件…… 《单片微机原理及应用》教学课件
中断涉及的几个环节 (前面提到的甲方) (甲方发出信号提出申请) (乙方同意传送) (安排好当前的工作) (响应乙方的要求) (完事后,回去……) (继续做打断前的工作) ①中断源 ②中断申请 ③开放中断 ④保护现场 ⑤中断服务 ⑥恢复现场 ⑦中断返回 《单片微机原理及应用》教学课件
单片机的中断源及TCON 51子系列允许5个(52子系列6个)中断源: 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF2——52子系列有T2) 1个串行口中断请求:TI/RI CPU识别中断申请的依据: CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。 《单片微机原理及应用》教学课件
单片机的中断源及TCON Tc=1/fosc Ts=6Tc Tm=12Tc=6Ts Tc S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 Ts Tm Tm ——此图见P.40 CPU识别中断申请的依据: CPU 在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。 《单片微机原理及应用》教学课件
定时器控制寄存器TCON (88H) TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断) TCON TF1TR1TF0TR0IE1IT1IE0IT0 TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。 TR0/TR1:定时器运行启停控制位: =0:定时器停止运行; =1:定时器启动运行。 《单片微机原理及应用》教学课件
定时器控制寄存器TCON (88H) TCON:Timer控制寄存器,低4位管理外部中断 TCON TF1TR1TF0TR0IE1IT1IE0IT0 IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。 IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效. 《单片微机原理及应用》教学课件
外部中断(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 单片机的中断矢量与优先级 (P.130) 中断矢量: MCS-51单片机的 5 个中断源分别对应有各自的中断服务程序入口地址——中断矢量 最高优先级 最低优先级 《单片微机原理及应用》教学课件
中断优先级控制寄存器IP (0B8H) IP ——PT2 PS PT1 PX1 PT0 PX0 PX0/PX1:INT0/1优先级控制位: =0时属低优先级; =1时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位: =0时属低优先级; =1时属高优先级。 PS1:串行口中断优先级控制位: =0时属低优先级; =1时属高优先级。 《单片微机原理及应用》教学课件
中断优先级处理原则 对同时发生多个中断申请时: ☞不同优先级的中断同时申请(很难遇到) ——先高后低 ☞相同优先级的中断同时申请(很难遇到) ——按序执行 ☞正处理低优先级中断又接到高级别中断 ——高打断低 ☞正处理高优先级中断又接到低级别中断 ——高不理低 《单片微机原理及应用》教学课件
(P.131) 在中断源提出了中断申请且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时允许中断。 《单片微机原理及应用》教学课件
中断系统硬件结构 (P.132) 中断源标志位查询机构 各单路开关 总开关 INT0 IE0 外部中断 请求0 高中断级中断请求 EX0 TF0 内部 定时器0 ET0 中断源标志位 中断入口 外部中断 请求1 INT1 IE1 EX1 内部 定时器1 TF1 低中断级中断请求 ET1 TI T 内部 串行口 ES 中断源标志位 R RI 中断入口 IE寄存器 EA位 IP寄存器 注:各中断允许控制位=0,开关断开; =1,开关接通 《单片微机原理及应用》教学课件
外部中断及中断请求的撤除 (P.133) 低电平/负脉冲→INT0/INT1引脚可触发中断 TCON (88H) TF1 TR1 TF0 TR0 IE1IT1 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 《单片微机原理及应用》教学课件
中断应用程序举例: P134例2:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。 此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。 《单片微机原理及应用》教学课件
中断应用程序举例: P134例2:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。 此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。 P1.0 P1.7 INT1 300 《单片微机原理及应用》教学课件
ORG 0000H (P.134) 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 ;中断返回 中断服 务程序 《单片微机原理及应用》教学课件
单片机的定时/计数器 《单片微机原理及应用》教学课件
第五章 I/O,中断,定时与串行通信 P.135 2个16位定时器/计数器 ——(52系列有3个16位Timer) 定时器:对片内机器时钟(周期方波)进行计数 计数器:对Tx引脚输入的负脉冲进行计数 与Timer工作有关的特殊功能寄存器: TCON 和TMOD 《单片微机原理及应用》教学课件
Timer的2个特殊功能寄存器(TCON,TMOD) 定时器控制寄存器TCON (88H) P.137 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TFx: Timer0/1计数溢出标志位。 =1 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。 在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。 TRx: Timer0/1运行控制位。 =1 启动计数; =0 停止计数 《单片微机原理及应用》教学课件
定时器T0/T1 中断申请过程 定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数 在已经开放T0/T1中断允许且已被启动的前提下: T0/T1加满溢出时 TF0/TF1标志位自动置“1”检测到TCON中TF0/TF1变“1”后,将产生指令: LCALL 000BH/LCALL 001BH执行中断服务程序, TF0/TF1标志位会自动清“0”,以备下次中断申请。 TCON (88H) TF1 TR1 TF0TR0IE1 IT1 IE0 IT0 TR0/TR1:Timer0/1运行控制位: TR0/TR1 =0 时,Timer0/1停止计数 TR0/TR1 =1 时,Timer0/1启动计数 《单片微机原理及应用》教学课件
定时器方式寄存器TMOD (89H) P.137 T1 T0 GATE C / T M1 M0 GATE C / T M1 M0 M1,M0:工作方式定义位 ( 定义4 种方式 ): 0 0:13位 Timer——用它无益,不要记它! 0 1:16位 Timer——经常用到 1 0:可自动重装的 8位 Timer——经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 ——因为没有带来甚麽好处,几乎无用 C/T :计数器/定时器选择位 = 1 外部事件计数器。对Tx引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时 《单片微机原理及应用》教学课件
定时器方式寄存器TMOD(续) (89H) GATE C / T M1 M0 GATE C / T M1 M0 T0 T1 GATE门控位: Timer可由软件与硬件两者控制 GATE = 0 ——普通用法 Timer的启/停由软件对TRx位写“1”/“0”控制 GATE = 1 ——门控用法 Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制 《单片微机原理及应用》教学课件
阅读书上定时器应用程序举例: P.140例1:晶振=6MHz,估算Timer的定时时长 (max,min) P.141例2:要求对T0产生100mS定时进行初始 化。 (晶振=6MHz) P.141例3:产生T=2mS方波(改为方式2) P.142例4:请改为方式1或2再阅读,务请大家 不要陷入方式0的困惑之中! P.143例5: 定时1 秒 P.144例6: 方式3(双8位定时器)的应用 《单片微机原理及应用》教学课件
定时器结构与工作方式P.139 工作方式1:——16位的定时/计数器 振荡器 12 C/T=0 申请中断 TLx THx (8位) (8位) TFx C/T=1 Tx端 控制 =1开关接通 TRx位 & GATE位 ≥1 与门 INTx端 或门 《单片微机原理及应用》教学课件
工作方式1 的编程要点: 参阅P.140 THx/TLx赋初值:THx赋高8位,TLx赋低8位 TMOD选方式: 写“M1,M0”=01 b 选方式1 若不用门控位,直接用软件写TRx控制启/停 若使用门控位,先置位TRx,然后由INTx端 的高/低电平来控制其启/停 若要允许中断,还须先置位ETx、EA等中断 允许控制位,并编写中断服务程序 若不用中断,可查询“计数溢出标志TFx” 的方式工作,但溢出标志TFx须软件清0 《单片微机原理及应用》教学课件
定时器(方式1)应用程序举例: P140例1:若晶振频率为6MHz,计算单片机的最小与最大定时时间: 分析:已知fosc= 6MHz 则: (振荡周期)1Tc=1/6MHz (机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1工作可以得到: Tmax = 655362 = 131072S=131.072mS 《单片微机原理及应用》教学课件
定时器(方式1)应用程序举例: P141例2:要求对T0产生100mS定时进行初始化。 (晶振=6MHz) 分析:已知fosc= 6MHz 则: (机器周期)1Tm=12Tc=12/6MHz=2S 100mS÷2 S = 50000 16位定时器最大数值为: 216 = 65536 (=0FFFFH+1) 故选择方式1工作可以满足要求。 计算初值:65536-50000=15536=3CB0H 《单片微机原理及应用》教学课件
由分析得知:T0选择方式1,初值=3CB0H 定时器方式 寄存器TMOD GATE C / T M1 M0 GATE C / T M1 M0 X X X X 0 0 0 1 初始化:MOV TMOD,#01H ;选 T0 方式 1 MOV TH0, #3CH ;赋初值高8位 MOV TL0, #0B0H ;赋初值低8位 SETB TR0 ;启动 T0定时 若需要定时器0产生中断还应当写如下语句: SETB ET0 ;开T0中断允许 SETB EA ;开总中断允许 以及相应的中断服务程序。 《单片微机原理及应用》教学课件
工作方式2:——8 位自动重装的定时/计数器 振荡器 12 C/T=0 申请中断 TLx (8位) TFx C/T=1 溢出位 Tx端 控制 =1开关接通 TRx位 & 门开 THx (8位) GATE位 ≥1 与门 INTx端 或门 《单片微机原理及应用》教学课件
工作方式 2 的编程: ☞ THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TL0 将溢出,进位位直接进入“TFx”去申请 中断,同时打开三态门,使THx中的值 自动重装(Copy)进TLx ☞ TMOD寄存器选方式: 写“M1,M0” = 10b 选中方式2 ☞ 其他用法与各种方式1完全相同 《单片微机原理及应用》教学课件
定时器(方式2)应用程序举例: P141例3(改):从P1.0 脚输出频率=1KHz方波。 设:晶振=6MHz。利用T1定时中断。 分析:fosc= 6MHz 1机器周期 = 2 S 1KHz方波周期 = 1 mS 半个方波周期 =500S 500uS÷2 uS = 250 若选择方式2 工作,8位定时器最大数值为: 28 =256 =0FFH + 1 可以满足要求。 计算初值:256-250=6 Th:半周期 T:周期 《单片微机原理及应用》教学课件
ORG 0000H AJMP MAIN ORG 001BH ;T1的中断矢量 CPL P1.0 ;中断服务:P1.0取非 RETI ;中断返回 MAIN: MOV TMOD,#20H MOV TH0, #6 MOV TL0, #6 SETB ET1 SETB EA SETB TR1 HERE: AJMP HERE ;原地等待中断 END ;选T1方式2 ;赋重装值 ;赋初值 ;开T1中断 ;开总中断 ;启动T1 初始化 《单片微机原理及应用》教学课件
Timer工作方式 3 ——几乎无用 T0:组织成TL0和TH0两个8位定时/计数器 T1: 不再是定时/计数器了 T1的TR1和TF1出借给TH0当控制位使用, 剩下的TH1/TL1寄存器只能当作普通寄存 器用。 《单片微机原理及应用》教学课件
Timer工作方式 3 结构: TR1位 控制 =1 申请中断 TH0 (8位) TF1 振荡器 12 C/T=0 申请中断 TL0 (8位) TF0 C/T=1 T0端 控制 =1开关接通 TR0位 & GATE位 ≥1 ☞T0成为双 8位Timer ☞T1不再有Timer功能 ☞TF1,TR1出借给TH0 与门 INT0端 或门 《单片微机原理及应用》教学课件
长定时举例(设晶振=6MHz,要定时1秒): ORG 0000H ;P.143例5 AJMP MAIN ORG 001BH AJMP TINT ;见下一页 MAIN: MOV TMOD,#10H ;选T1方式1 MOV TH1, #3CH ;赋初值3CB0H=15536(只能定100mS) MOV TL1,#0B0H MOV 30H,#10 ;软件计数单元30H 初值=10 CLR F0 ;芯片复位时已经是“0”,此句可有可无 SETB ET1 ;开T1中断 SETB EA ;开总中断 SETB TR1 ;启动T1 HERE: JBC F0,TIMEUP ;原地等待“1秒到”的标志 F0 AJMP HERE TIMEUP:(do something) ;定时1秒到了以后要做的事情 AJMP HERE 中断服务在主程序中 《单片微机原理及应用》教学课件
长定时举例(续): ORG 0000H AJMP MAIN ORG 001BH AJMP TINT MAIN: ………………… TINT:DJNZ 30H,RTN ;若中断不到10次就返回 SETB F0 ;已经中断够10次了“置1”标志位 MOV 30H,#10 ;为下一个1秒定时做准备 RTN: MOV TH1,#3CH ;再赋定时100mS的初值3CB0H MOV TL1,#0B0H RETI ;中断返回 END 《单片微机原理及应用》教学课件