中断定时与串口.ppt
《中断定时与串口.ppt》由会员分享,可在线阅读,更多相关《中断定时与串口.ppt(96页珍藏版)》请在三一文库上搜索。
1、,第四章: 中断,定时与串口,本讲重点: 中断概念,响应条件,处理原则,中断服务; 定时器/计数器工作方式1,2的用法; 串行通讯的波特率, 4种工作方式.,单片机的中断系统,数据的输入/输出传送方式,查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待,中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送,无条件传送方式: 一方对另一方来说总是准备好的,直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转,数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接
2、到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。,中断功能强弱是计算机性能优劣的重要标志 提高CPU效率 解决速度矛盾 实现并行工作 应付突发事件,中断传送方式特点,中断源 中断申请 开放中断 保护现场 中断服务 恢复现场 中断返回,中断涉及的几个环节,(前面提到的甲方) (甲方发出信号提出申请) (乙方同意传送) (安排好当前的工作) (响应乙方的要求) (完事后,回去) (继续做打断前的工作),单片机的中断源及TCON,CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。,51子系列允许5个
3、(52子系列6个)中断源: 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF252子系列有T2) 1个串行口中断请求:TI/RI,CPU识别中断申请的依据:,单片机的中断源及TCON,CPU 在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。,CPU识别中断申请的依据:,Tc,Ts,Tm,Tm,Tc=1/fosc Ts=2Tc Tm=12Tc=6Ts,S5,S6,S4,S3,S2,S5,S6,S4,S3,S2,S1,定时器控制寄存器TCON (88H),TF1 TR1 TF0 TR0 IE1
4、 IT1 IE0 IT0,TCON,TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。,TR0/TR1:定时器运行启停控制位: =0:定时器停止运行; =1:定时器启动运行。,TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断),定时器控制寄存器TCON (88H),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON,IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。,IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中
5、断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效.,TCON:Timer控制寄存器,低4位管理外部中断,在CPU已经开放了外部中断允许的前提下: 在INT0/INT1引脚输入一个负脉冲或低电平, TCON寄存器中的IE0/IE1标志位自动变“1”, CPU检测到IE0/IE1变“1”后,将自动跳转到 0003H(/0013H)执行中断服务程序, 并将IE0/IE1标志位自动清“0”,以备下次申请。,外部中断(INT0,INT1)申请过程,单片机的中断矢量与优先级,中断矢量: MCS-51单片机的 5 个中断源分别对应有各自的中断服务程序入口地址中断矢量,最高优先级 最
6、低优先级, PT2 PS PT1 PX1 PT0 PX0,IP,PX0/PX1:INT0/1优先级控制位: =0 时属低优先级; =1 时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位: =0 时属低优先级; =1 时属高优先级。 PS:串行口中断优先级控制位: =0 时属低优先级; =1 时属高优先级。,中断优先级控制寄存器IP (0B8H),对同时发生多个中断申请时: 不同优先级的中断同时申请(很难遇到) 先高后低 相同优先级的中断同时申请(很难遇到) 按序执行 正处理低优先级中断又接到高级别中断 高打断低 正处理高优先级中断又接到低级别中断 高不理低,中断优先级处理原
7、则,没有同级的中断或更高级别的中断正在处理;,在中断源提出了中断申请且CPU此前已经允许中断的前提下,还须满足以下三个条件:,正在执行的指令必须执行完最后 1个机器周期;,若正在执行RETI,或正在访问IE或IP寄存器,须执行完上述指令和下一条指令以后方能响应中断。,EA ET2 ES ET1 EX1 ET0 EX0,IE,中断允许寄存器IE (0A8H),EX0/EX1/ET1/ET0/ES 位: 分别是INT0/1,Timer0/1,串行口的中断允 许控制位: =0 时禁止中断; =1 时允许中断。 ET2:T2中断允许控制位(仅52子系列有) =0 时禁止中断; =1 时允许中断。 EA
8、:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。,中断系统硬件结构,注:各中断允许控制位=0,开关断开; =1,开关接通,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,外部中断 请求0,外部中断 请求1,内部 定时器0,内部 定时器1,内部 串行口,T,R,RI,IE寄存器,EA位,IP寄存器,各单路开关,总开关,中断源标志位查询机构,高中断级中断请求,低中断级中断请求,中断入口,中断源标志位,INT0,INT1,中断入口,中断源标志位,中断应用前后要做的几项工作,中断前 开中断允许:必须 选择优先级:根据需要选择,可有/可无 设置控制位
9、:INTx触发方式(ITx) TxTCON,TMOD,TRx,初值 RI/TISCON,REN,RB8,TB8,中断后 进入中断服务后:保护现场,关中断, 退出中断服务前:恢复现场,开中断,设Tx的初 值,清TI/RI, 中断服务程序的最后一条指令必是 RETI,编写中断服务程序时应注意的几点:,1)各中断源的入口矢量地址之间,只相隔8个单元,一般中断服务程序是容纳不下的,因而最常用的方法是将中断服务程序放置在程序存储器的其它空间,而在中断入口矢量地址单元处存放一条无条件转移指令,转至该服务程序。 2)若要在执行当前中断程序时禁止更高优先级中断,应采用软件来关闭CPU中断,或屏蔽更高级中断源的
10、中断,在中断返回前再开放这些中断。,3)现场通常用到PSW、工作寄存器和专用寄存器等。如果在中断服务程序中要用这些寄存器,则在中断服务前应将它们的内容保护起来称保护现场,同时在RETI指令前应恢复现场。 4)在保护现场和恢复现场时,为了不使现场信息受到破坏或造成混乱,一般情况下,应关CPU中断,使CPU暂不响应新的中断请求。因此在编写中断服务程序时,保护现场之前要关中断,在保护现场之后若允许高优先级中断源中断它,则应开中断。同样在恢复现场之前也应关中断,恢复之后再开中断。,编写中断服务程序时应注意的几点:,五、中断系统的应用举例,从软件角度看,使用中断时需要做两个方面的任务: (1)按人们的意
11、志对中断源进行管理和控制。 中断源管理和控制(初始化程序)程序一般都包含在主程序中,根据需要通过几条指令来完成。 在编写中断管理与控制程序时应考虑以下项目: 1)CPU开中断与关中断; 2)某个中断源中断请求的允许或屏蔽; 3)各中断源优先级别的设定; 4)外部中断请求的触发方式。 (2)编制中断服务程序。 中断服务程序是一种具有特定功能的独立程序段,根据中断源的具体要求进行服务的。,中断应用程序举例:,例:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。,此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中
12、断,中断服务则是:依次点亮八盏灯中的一盏。,中断应用程序举例:,例:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。,此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。,ORG 0000H LJMP MAIN ORG 0013H ;中断矢量 LJMP INT MAIN:SETB EA ;开总中断允许“开关” SETB EX1 ;开分中断允许“开关” CLR PX1 ;0 优先级(也可不要此句) SETB IT1 ;边沿触发 MOV B,#01H ;给 B 寄存器赋初
13、值 MOV P1,B HERE:SJMP HERE ;原地等待中断申请,INT: MOV A,B ;自B寄存器中取数 RL A ;左环移一次 MOV B,A ;存回B,备下次取用 MOV P1,A ;输出到P1口 RETI ;中断返回,中断服 务程序,利用做一个计数器。当有脉冲时,A的内容加1。并且当A的内容大于或等于100时将P1.0置位.,ORG 0000h Ljmp MIN0 ORG 0003h Ljmp INTB0 ORG 000bh reti ORG 0013h reti ORG 001bh reti ORG 0023h reti ORG 0030h Min0: mov sp,#30
14、h Setb IT0,Setb EX0 CLR PX0 SETB EA Mov a,#00 Min1: NOP ljmp Min1 Org 0100h INTB0: Push psw Add A,#01 Cjne a,#100,INTB1 Ljmp INTB2 INTB1: jc INTB3 INTB2: setb P1.0 INTB3: POP PSW RETI,单片机的定时/计数器,2个16位定时器/计数器 (52系列有3个16位Timer) 定时器:对片内机器周期进行计数 计数器:对Tx引脚输入的负脉冲进行计数,与Timer工作有关的特殊功能寄存器: TCON 和 TMOD,Timer的
15、2个特殊功能寄存器(TCON,TMOD),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,定时器控制寄存器TCON (88H) P.137,TFx: Timer0/1计数溢出标志位。 =1 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。 在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。,TRx: Timer0/1运行控制位。 =1 启动计数; =0 停止计数,TR0/TR1:Timer0/1运行控制位: TR0/TR1 =0 时,Timer0/1停止计数 TR0/TR1 =1 时,Timer0/1启动计数,定时器T0/T1 中断申请过程,
16、在已经开放T0/T1中断允许且已被启动的前提下: T0/T1加满溢出时 TF0/TF1标志位自动置“1” 检测到TCON中TF0/TF1变“1”后,将转到 000BH/001BH 执行中断服务程序, TF0/TF1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON (88H),GATE C / T M1 M0 GATE C / T M1 M0,定时器方式寄存器TMOD (89H) P.137,T1,T0,M1,M0:工作方式定义位 ( 定义4 种方
17、式 ):,C/T :计数器/定时器选择位 = 1 外部事件计数器。对Tx引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时,0 0:13位 Timer用它无益,不要记它! 0 1:16位 Timer经常用到 1 0:可自动重装的 8位 Timer经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 因为没有带来甚麽好处,几乎无用,GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,GATE门控位: Timer可由软件与硬件两者控制 GATE = 0 普通用法 Timer的启/停由软件对TRx位写“1”/“0”控制,定时器方式寄存器TMO
18、D(续),(89H), GATE = 1 门控用法 Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制,定时器结构与工作方式,工作方式1:16位的定时/计数器,振荡器,12,TLx THx (8位) (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,&,C/T=0,C/T=1,控制 =1开关接通,或门,与门, THx/TLx赋初值:THx赋高8位,TLx赋低8位,工作方式1 的编程要点:, TMOD选方式: 写“M1,M0”=01 b 选方式1, 若不用门控位,直接用软件写TRx控制启/停 若使用门控位,先置位TRx,然后由
19、INTx端 的高/低电平来控制其启/停, 若要允许中断,还须先置位ETx、EA等中断 允许控制位,并编写中断服务程序 若不用中断,可查询“计数溢出标志TFx” 的方式工作,但溢出标志TFx须软件清0,定时器(方式1)应用程序举例:,分析:已知fosc = 6MHz 则: (振荡周期)1Tc=1/6MHz (机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1 工作可以得到: Tmax = 655362 = 131072S131.072mS,例:若晶振频率为6MHz,计算单片机的最小与最大定时时间
20、:,分析:已知fosc = 6MHz 则: (机器周期)1Tm=12Tc=12/6MHz=2S 100mS2 S = 50000 16位定时器最大数值为: 216 = 65536 (=0FFFFH+1) 故选择方式1工作可以满足要求。 计算初值:6553650000=15536=3CB0H,例:要求对T0产生100mS定时进行初始化。 (晶振=6MHz),定时器(方式1)应用程序举例:,GATE C / T M1 M0 GATE C / T M1 M0,定时器方式 寄存器TMOD,由分析得知:T0选择方式1,初值=3CB0H,X X X X 0 0 0 1,初始化:MOV TMOD,#01H
21、;选 T0 方式 1 MOV TH0, #3CH ;赋初值高8位 MOV TL0, #0B0H ;赋初值低8位 SETB TR0 ;启动 T0定时 若需要定时器0产生中断还应当写如下语句: SETB ET0 ;开T0中断允许 SETB EA ;开总中断允许 以及相应的中断服务程序。,工作方式2:8 位自动重装的定时/计数器,振荡器,12,TLx (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,&,C/T=0,C/T=1,控制 =1开关接通,或门,与门,THx (8位),溢出位,门开, THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TL0 将溢出,进
22、位位直接进入“TFx”去申请 中断,同时打开三态门,使THx中的值 自动重装(Copy)进TLx,工作方式 2 的编程:, TMOD寄存器选方式: 写“M1,M0” = 10 b 选中方式2, 其他用法与各种方式1完全相同,分析:fosc = 6MHz 1机器周期 = 2 S 1KHz方波周期 = 1 mS 半个方波周期 =500S 500uS2 uS = 250 若选择方式2 工作,8位定时器最大数值为: 28 =256 =0FFH + 1 可以满足要求。 计算初值:256250=6,例:从P1.0 脚输出频率=1KHz方波。 设:晶振=6MHz。利用T1定时中断。,Th:半周期,T:周期,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 定时 串口
链接地址:https://www.31doc.com/p-2834242.html