收藏 分销(赏)

第五章 中断 定时 串口.ppt

上传人:xrp****65 文档编号:14026444 上传时间:2026-06-09 格式:PPT 页数:47 大小:1.57MB 下载积分:10 金币
下载 相关
第五章 中断 定时 串口.ppt_第1页
第1页 / 共47页
第五章 中断 定时 串口.ppt_第2页
第2页 / 共47页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,5,章中断系统、定时器,/,计数器与串行口,5.1 MCS-51,单片机中断系统,中断,是指计算机暂时停止原程序执行转而为外部设备服务,(,执行中断服务程序,),,并在服务完后自动返回原程序执行的过程。,5.1.1,中断系统结构及中断控制,89C51,单片机有,5,个中断源,(,89C52,有,6,个),可实现,二级中断服务程序嵌套,。,图,5-1,中断系统结构示意图,1.,中断源,中断源,中断标志,中断入口地址,外部中断,/INT0(P3.2),IE0,0003H,/INT1(P3.3),IE1,0013H,定时中断,T0,TF0,000BH,T1,TF1,001BH,串行中断,发送中断,TI,0023H,接受中断,RI,2.,中断控制,定时器控制寄存器,TCON,、串行口控制寄存器,SCON,、中断允许寄存器,IE,和中断优先级寄存器,IP,(1),定时器控制寄存器,(TCON),TCON(88H),D7 D6 D5 D4 D3 D2 D1 D0,(,2,)串行口控制寄存器(,SCON,),98H,TI,串行口发送中断请求标志位。当发送完一帧串行数据后,由,硬件置,1,;在转向中断服务程序后,用,软件清,0,。,RI,串行口接收中断请求标志位。当接收完一帧串行数据后,由,硬件置,;在转向中断服务程序后,用,软件清,0,。,(,3,)中断允许控制寄存器(,IE,),0A8H,(5),中断优先级控制,A.,中断优先级控制寄存器(,IP,),0B8H,B.,中断查询顺序,当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。,中断源 同级自然优先级,INT0,最高,T0,INT1,T1,串行口,最低,C.,中断嵌套(,2,个中断优先级,),由,IP,设定高、低两级优先级,原则:,允许高中断低,禁止低中断高和同级中断,5.1.2,中断响应及中断处理过程,89C51,单片机中断过程分为,中断采样,、,中断查询,、,中断响应,、,中断处理,和,中断返回,等几个阶段。,1.,中断采样(外部中断采样),在每个机器周期的,S5P2,时刻对芯片引脚,INT0,(,P3.2,)和,INT1,(,P3.3,)进行采样。,(,1,)电平触发方式,中断标志直接反映外部中断引脚的状态,无记忆功能,低电平时间至少需保持一个机器周期,才能保证中断请求能被采样到。,(,2,)负跳变触发方式,在两个相邻机器周期采样到的是,先高电平后低电平,,则中断请求有效,由硬件将,IE0,或,IE1,置,1,,具有记忆功能,负脉冲的宽度也应至少为一个机器周期。,2.,中断查询,由,CPU,测试,TCON,和,SCON,中各标志位的状态,中断查询在指令执行的每个机器周期中不停地重复进行。,3.,中断响应,(,1,)产生硬件调用,将断点地址压入堆栈。,(,2,)中断封锁,A,、,CPU,正处在为一个同级或高级的中断服务中。,因为当一个中断被响应时,要把对应的优先级触发器置位,封锁了低级和同级中断。,B,、,查询中断请求的机器周期不是当前指令的最后一个机器周期。,目的在于确保当前指令的完整执行。,C,、,当前指令是返回指令(,RET,,,RETI,)或访问,IE,、,IP,的指令。,在执行完这些指令之后,还应再继续执行一条指令,然后才能响应中断。,89C51,对中断查询的结果不作记忆,当有新的查询结果出现时,因为以上原因而被拖延的查询结果将不复存在,其中断请求也就不能再被响应了。,(,3,)中断响应时间,响应时间为,38,个机器周期,,如果遇到中断受阻的情况,则中断响应时间会更长一些。,4.,中断处理(中断服务),5.,中断返回,CPU,执行,RETI,指令时,把响应中断位置的优先级触发器复位,再从堆栈中弹出断点地址送入程序计数器,PC,,以便从断点处重新执行被中断的主程序。,5.1.3,中断请求的撤销,1.,定时中断请求的撤销,定时中断响应后,硬件自动把标志位(,TF0,或,TF1,)清,0,,因此定时中断的中断请求是自动撤销的。,2.,脉冲方式外部中断的撤销,中断响应时自动撤销,在中断服务过程中有新的下跳变会重新置位中断标志位。,3.,电平方式外部中断请求的撤销,中断响应时自动撤销,在中断返回后仍然为低电平将会再次响应中断。,4.,串行中断请求撤销,由软件(程序)清除标志位。,5.1.4,外部中断源的扩展,1.,用定时器作外部中断源,MCS-51,单片机有两个定时器,具有两个内中断标志和外计数引脚,如在某些应用中不被使用,则它们定时器中断可作为外部中断请求使用。此时,可将定时器设置成计数方式,计数初值可设为满量程,则它们的计数输入端,T0,(,P3.4,)或,T1,(,P3.5,),引脚上发生负跳变时,计数器加,1,产生溢出中断。利用此特性,可把,T0,脚或,T1,脚作为外部中断请求输入线,而计数器的溢出中断作为外部中断请求标志。,【,例,5.1】,将定时器,0,扩展为外部中断源,n,解:将定时器,0,设定为方式,2,(自动恢复计数初值),,TH0,和,TL0,的初值均设置为,FFH,,,允许定时器,0,中断,,CPU,开放中断。源程序如下:,MOVTMOD,#06H,MOVTH0,#0FFH,MOVTL0,#0FFH,SETBTR0,SETBET0,SETBEA,当连接在,T0,(,P3.4,),引脚上的外部中断请求输入线发生负跳变时,,TL0,加,1,溢出,,TF0,置,1,,向,CPU,发出中断申请,同时,,TH0,的内容自动送至,TL0,使,TL0,恢复初值。这样,,T0,引脚每输入一个负跳变,,TF0,都会置,1,,向,CPU,请求中断。此时,,T0,脚相当于边沿触发的外部中断源输入线。,同样,也可将定时器,1,扩展为外部中断源。,2.,中断和查询相结合,一个外中断扩展成多个外中断的原理图,由图可知,,4,个外部扩展中断源通过,4,个,OC,门电路组成线或取非后再与,/INT0,(,P3.2,),相连;,4,个外部扩展中断源,EXINT0,EXINT3,中有一个或几个出现高电平则输出为,0,,使,/INT0,脚为低电平,从而发出中断请求。因此,这些扩充的外部中断源都是电平触发方式(高电平有效)。,CPU,执行中断服务程序时,先依次查询,P1,口的中断源输入状态,然后,转入到相应的中断服务程序,,4,个扩展中断源的优先级顺序由软件查询顺序决定,即最先查询的优先级最高,最后查询的优先级最低。,中断服务程序如下:,ORG0003H;,外部中断,0,入口,AJMPINT0;,转向中断服务程序入口,INT0:PUSHPSW;,保护现场,PUSHACC JBP1.0,EXT0;,中断源查询并转相应中断服务程序,JBP1.1,EXT1 JBP1.2,EXT2 JBP1.3,EXT3EXIT:POPACC;,恢复现场,POPPSW RETIEXT0:;EXINT0,中断服务程序,AJMPEXITEXT1:;EXINT1,中断服务程序,AJMPEXITEXT2:;EXINT2,中断服务程序,AJMPEXITEXT3:;EXINT3,中断服务程序,AJMPEXIT,同样,外部中断,1,也可作相应的扩展。,5.1.5,处理外部中断举例,要求每次按动按键,使外接发光二极管,LED,改变一次亮灭状态。,解:,INT0,输入按键信号,,P,1.0,输出改变,LED,状态。,1,跳变触发:,每次跳变引起一次中断请求。,ORG 0000H,;,复位入口,AJMP MAIN,ORG0003H,;,中断入口,AJMPPINT0,ORG0100H,;,主程序,MAIN,:,MOV SP,,,#40H,;,设栈底,SETBIT0,;,开总允许开关,SETBEX0,;开,INT0,中断,SETBEA,;,负跳变触发中断,H,:,SJMPH,;,执行其它任务,ORG0200H,;,中断服务程序,PINT0,:,CPL P1.0,;,改变,LED,RETI,;,返回主程序,单片机,INT0,P,1.0,1,+5V,1,软件等待按键释放。,2,硬件清除中断信号。,2.,电平触发,:,避免一次按键引起多次中断响应。,单片机,INT0,P,1.0,1,+5V,ORG 0000H,;,复位入口,AJMP MAIN,ORG0003H,;,中断入口,AJMPPINT0,ORG0100H,;,主程序,MAIN,:,MOV SP,,,#40H,;,设栈底,CLRIT0,;低电平触发中断,SETBEX0,;开,INT0,中断,SETBEA,;开总允许开关,H,:,SJMPH,;,执行其它任务,ORG0200H,;,中断服务程序,PINT0,:,CPL P1.0,;,改变,LED,WAIT,:,JNBP3.2,,,WAIT,;,等按键释放,RETI,;,返回主程序,5.2,定时,/,计数器,5.2.1,定时器,/,计数器的组成,5.2.2,定时,/,计数器的定时和计数功能,1.,计数功能,所谓计数是指对外部事件进行计数。外部事件以脉冲的形式通过引脚,T0,(,P3.4,)和,T1,(,P3.5,)输入到定时,/,计数器。下降沿时,计数器的值加,1,。,89C51,在每个机器周期的,S5P2,期间采样,T0,和,T1,引脚的输入电平,计数脉冲的频率不能高于振荡脉冲频率的,1/24,。,2.,定时功能,定时功能也是通过计数器的计数功能来实现的,计数脉冲来自单片机的内部,每个机器周期产生一个计数脉冲,计数器加,1,。根据定时时间的要求计算出计数器的预置值(定时常数)。,5.2.3,定时器,/,计数器的控制寄存器,1.,定时器控制寄存器(,TCON,),2.,工作方式控制寄存器(,TMOD,),5.2.4,定时,/,计数器工作方式,1.,方式,0(,13,位定时,/,计数器方式,),最大计数值:,2,13,=8192,定时时间,(T)=,(,2,13,-,计数初值),机器周期,例,:,设单片机晶振频率为,12MHz,,使用定时器,1,以方式,0,产生周期为,500s,的等宽正方波连续脉冲,并由,P1.0,输出。以查询方式完成。,计算计数初值,(2,13,-X)110,-6,=25010,-6,X=7942=1111100000110B,1111 1000,000,0 0110B,F 8,0 6,H,TH1 TL1,TMOD,寄存器初始化,(,确定工作方式,),TMOD=0000 0000B,启动,T1(TCON,中的,TR1,位控制定时的启动和停止,),MOV TMOD,,,#00H,;设置,T1,为工作方式,0,MOV TH1,,,#0F8H,;设置计数初值,MOV TL1,,,#06H,MOV IE,,,#00H,;禁止中断,LOOP,:,SETB TR1,;启动定时,LOOP1,:,JBC TF1,,,LOOP2,;查询计数溢出,AJMP LOOP1,LOOP2,:,MOV TH1,,,#0F8H,;重新设计数初值,MOV TL1,,,#06H,CLR TF1,;计数溢出标志位清“,0”,CPL P1.0,;输出取反,AJMP LOOP,;重复循环,2.,方式,1(,16,位定时,/,计数器方式,),8,最大计数值:,2,16,=65536,3.,方式,2(,8,位自动重装定时,/,计数器方式,),最大计数值:,2,8,=256,3.,方式,(,3,定时,/,计数器方式,),(,1,)工作方式,3,下的定时计数器,T0,TL0,:,8,位定时,/,计数器,TH0,:,8,位定时器,(,2,)工作方式,3,下的定时器计数器,1,T1,设置为方式,3,,停止工作。如果,T0,已工作在方式,3,,则,T1,只能工作在方式,0,方式,1,或方式,2,下,通常工作于方式,2,为串行口提供波特率时钟,只需设置好工作方式和计数初值,便可自动运行。,应用举例:,设,89C51,单片机的时钟频率为,6MHz,,试编写利用,T0,产生,1s,定时的程序。,ORG 0000H,LJMP MAIN,;上电,转向主程序,ORG 000BH,;,T0,的中断入口地址,AJMP SERVE,;转向中断服务程序,ORG 0030H,;主程序,MAIN,:,MOV SP,,,#60H,;设堆栈指针,MOV B,,,#0AH,;设循环次数,MOV TMOD,,,#01H,;设置,T0,工作于模式,1,MOV TL0,,,#0B0H,;装入计数值低,8,位,MOV TH0,,,#3CH,;装入计数值高,8,位,SETB TR0,;启动定时器,T0,SETB ET0,;允许,T0,中断,SETB EA,;允许,CPU,中断,SJMP,;等待中断,中断服务程序:,SERVE,:,MOV TL0,,,#0B0H,MOV TH0,,,#3CH,;重新赋计数值,DJNZ B,,,LOOP,CLR TR0,;,1s,定时到,停止,T0,工作,LOOP,:,RETI,;中断返回,END,5.3,串行接口,5.3.1,串行接口的功能与结构,1.,串行接口的功能,89C51,单片机中的串行接口是一个全双工串行通信接口,能同时发送、接收数据,也能用作同步移位寄存器。,SM0,SM1,工作方式,功 能,波特率,0,0,方式,0,8,位同步移位寄存器方式,f,OSC,/12,0,1,方式,1,8,位通用异步接收器,/,发送器,可变,1,0,方式,2,9,位通用异步接收器,/,发送器,f,OSC,/32,或,f,OSC,/64,1,1,方式,3,9,位通用异步接收器,/,发送器,可变,2.,串行接口结构,5.3.2,串行接口控制,1,.,数据缓冲器,SBUF,发送,SBUF,和接收,SBUF,共用一个地址,99H,。,1,),发送,SBUF,存放待发送的,8,位数据,写入,SBUF,将同时启动发送。发送指令:,MOVSBUF,,,A,2,),接收,SBUF,存放已接收成功的,8,位数据,供,CPU,读取。读取串行口接收数据指令:,MOV A,,,SBUF,3,.,节电控制寄存器,PCON,(,87H,),SMOD,(PCON.7),:,波特率加倍控制位。,SMOD=1,,,波特率加倍,,SMOD=0,,,则不加倍,。,2,.,串行口控制,/,状态寄存器,SCON(98H),SM0,,,SM1,:,选择串行口,4,种工作方式。,SM2,:,多机控制位,用于多机通讯。,REN,:,允许接收控制位,,REN=1,,,允许接收;,REN=0,,,禁止接收。,TB8,:,发送的第,9,位数据位,可用作校验位和地址,/,数据标识位,RB8,:,接收的第,9,位数据位或停止位,TI,:,发送中断标志,发送一帧结束,,TI=1,,,必须软件清零,RI,:,接收中断标志,接收一帧结束,,RI=1,,,必须软件清零,5.3.3,串行接口的工作方式,1.,方式,0,:,同步移位寄存器方式。用于扩展并行,I/,O,接口。,A.,一帧,8,位,无起始位和停止位。,B.,RXD,:,数据输入,/,输出端。,TXD,:,同步脉冲输出端,每个脉冲对应一个数据位。,C.,波特率,Baud=fosc/12,如:,fosc=12MHz,,,Baud=1MHz,,,每位数据占,1,s,。,D.,发送过程:写入,SBUF,,,启动发送,一帧发送结束,,TI=1,。,接收过程:,REN=1,且,RI=0,,,启动接收,一帧接收完毕,,RI=1,发送时序,写入,SBUF,RXD,输出,TXD,TI,D,0,D,1,D,2,D,3,D,4,D,5,D,6,D,7,写REN=1,RI=0,RXD,输入,RI,接收时序,(a),(b),例:使用,74HC164,的并行输出端接,8,支发光二极管,利用它的串入并出功能,将发光二极管从左向右依次点亮。,MOV SCON,,,#00H,;串行口方式,0,工作,CLR ES,;禁止串行中断,MOV A,,,#80H,;发光管从左边亮起,DELR,:,CLR P1.0,;关闭并行输出,MOV SBUF,,,A,;串行输出,JNB TI,,;状态维持,SETB P1.0,;开启并行输出,ACALL DELAY,;状态维持,CLR TI,;清发送中断标志,RR A,;发光组合中断标志,AJMP DELR,;继续,2.,方式,1,:,8,位数据异步通讯方式,A.,一帧,10,位:,8,位数据位,,1,个起始位,(0),,,1,个停止位,(1),。,B.,RXD,:,接收数据端。,TXD,:,发送数据端。,C.,波特率:用,T1,作为波特率发生器,,Baud=(2,SMOD,/32)T1,溢出率。,D.,发送:写入,SBUF,,,同时启动发送,一帧发送结束,,,TI=1,。,接收:,REN=1,,,允许接收。接收完一帧,若,RI=0,且停止位为,1(,或,SM2=0),,,将接收数据装入,SBUF,,,停止位装,入,RB8,,,并使,RI=1,;,否则丢弃接收数据,不置位,RI,。,当,REN=1,,,CPU,开始采样,RXD,引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为,0,,继续接收其余位;否则,停止接收,重新采样负跳变。,数据采样速率为波特率,16,倍频,在数据位中间,用第,7,、,8,、,9,个脉冲采样,3,次数据位,并,3,中取,2,保留采样值。,3.,方式,2,和方式,3,:,9,位数据异步通讯方式,A.,一帧为,11,位:,9,位数据位,,1,个起始位,(0),,,1,个停止位,(1),。,第,9,位数据位在,TB8/RB8,中,常用作校验位和多机通讯标识位。,B.,RXD,:,接收数据端,,TXD,:,发送数据端。,C.,波特率:方式,2,:,Baud=(2,SMOD,/64)fosc,。,方式,3,:,Baud=(2,SMOD,/32)T1,溢出率。,D.,发送:先装入,TB8,,,写入,SBUF,并启动发送,发送结束,,TI=1,接收:,REN=1,,,允许接收。接收完一帧,若,RI=0,且第,9,位为,1(,或,SM2=0),,,将接收数据装入接收,SBUF,,,第,9,位装入,RB8,,使,RI=1,;,否则丢弃接收数据,不置位,RI,。,4.,计算波特率,方式,0,为固定波特率:,Baud=fosc/12,方式,2,可选两种波特率:,Baud=(2,SMOD,/64)fosc,方式,1,、,3,为可变波特率,用,T1,作波特率发生器。,Baud=(2,SMOD,/32)T1,溢出率,T1,为方式,2,的时间常数:,X=2,8,-t/T,溢出时间:,t=(2,8,-X)T=(2,8,-X)12/fosc,T1,溢出率,=1/t=fosc/12(2,8,-X),波特率,Baud=(2,SMOD,/32)fosc/12(2,8,-X),串行口方式,1,、,3,,根据波特率选择,T1,工作方式,计算时间常数,T1,选方式,2,:,TL1=TH1=X=2,8,-fosc/122,SMOD,/(32B),T1,选方式,1,用于低波特率,需考虑,T1,重装时间常数时间。,5.3.4,串行口的应用,串行口初始化编程格式:,SIO,:,MOV SCON,,,#,控制状态字;写方式字且,TI=RI=0,(MOV PCON,,,#80H),;,波特率加倍,(MOV TMOD,,,#20H),;,T1,作波特率发生器,(MOV TH1,,,#X),;,选定波特率,(MOV TL1,,,#X),(SETB TR1),(SETB EA),;,开串行口中断,(SETB ES),发送程序:先发送一个字符,等待,TI=1,后再发送下一个字符。,1.,查询方式:,TRAM,:,MOV A,,,R0,;,取数据,MOVSBUF,,,A,;,发送一个字符,WAIT,:,JBCTI,,,NEXT,;,等待发送结束,SJMPWAIT,NEXT,:,INCR0,;,准备下一次发送,SJMPTRAM,2.,中断方式:,ORG 0023H,;,串行口中断入口,AJMP SINT,MAIN,:,;,初始化编程,TRAM,:,MOV A,,,R0,;,取数据,MOV SBUF,,,A,;,发送第一个字符,H,:,SJMP H,;,其它工作,SINT,:,CLR TI,;,中断服务程序,INC R0,MOV A,,,R0,;,取数据,MOV SBUF,,,A,;,发送下一个字符,RETI,接收程序:,REN=1,、,RI=0,等待接收,当,RI=1,,从,SBUF,读取数据。,1.,查询方式:,WAIT,:,JBCRI,,,NEXT,;,查询等待,SJMPWAIT,NEXT,:,MOVA,,,SBUF,;,读取接收数据,MOVR0,,,A,;,保存数据,INCR0,;,准备下一次接收,SJMPWAIT,2.,中断方式:,ORG0023H,AJMPRINT,MAIN,:,;,初始化编程,H,:,SJMPH,;,其它任务,RINT,:,CLRRI,;,清中断标志,MOVA,,,SBUF,;,读取接收数据,MOVR0,,,A,;,保存数据,INCR0,RETI,例:由串行接口发送带偶校验位的,ASCII,码数据块。,设拟发送的是位于片内,RAM30H3FH,单元的,ASCII,码数据。单片机采用,12MHz,晶振,串行接口工作于方式,1,,定时器,/,计数器,1,用作波特率发生器,电源控制专用寄存器,PCON,中的,SMOD,位为,0,,发送的波特率要求为,1200,。,相应的发送程序为,TSTART,:,MOV TMOD,,,#20H,;置定时器,/,计数器,1,工作于方式,2,的定时器方式,MOV TL1,,,#0E6H,;定时器,/,计数器,1,预置数,MOV TH1,,,#0E6H,;定时器,/,计数器,1,置重装载数,MOV SCON,,,#40H,;置串行接口工作于方式,1,MOV R0,,,#30H,;,R0,作地址指针,指向数据块首址,MOV R7,,,#10H,;,R7,用作计数器,置拟发送字节数,SETB TR1,;启动定时器,/,计数器,1,LOOP,:,MOV A,,,R0,;取待发送的一个字节,MOV C,,,P,;取奇偶标志,若奇为,1,,若偶为,0,MOV ACC.7,,,C,;加偶校验位,MOV SBUF,,,A,;启动串行接口发送,WAIT,:,JNB TI,,,WAIT,;等发送完毕,CLR TI,;清,TI,标志,为下一字节发送做准备,INC R0,;指向数据块下一待发送字节的地址,DJNZ R7,,,LOOP,;若拟发送数据未发送完,则继续发送,RET,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服