《中断定时串口》PPT课件.ppt

上传人:小飞机 文档编号:5456384 上传时间:2023-07-09 格式:PPT 页数:47 大小:892.50KB
返回 下载 相关 举报
《中断定时串口》PPT课件.ppt_第1页
第1页 / 共47页
《中断定时串口》PPT课件.ppt_第2页
第2页 / 共47页
《中断定时串口》PPT课件.ppt_第3页
第3页 / 共47页
《中断定时串口》PPT课件.ppt_第4页
第4页 / 共47页
《中断定时串口》PPT课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《《中断定时串口》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《中断定时串口》PPT课件.ppt(47页珍藏版)》请在三一办公上搜索。

1、第5章中断系统、定时器/计数器与串行口,5.1 MCS-51单片机中断系统 中断是指计算机暂时停止原程序执行转而为外部设备服务(执行中断服务程序),并在服务完后自动返回原程序执行的过程。5.1.1 中断系统结构及中断控制 89C51单片机有5个中断源(89C52有6个),可实现二级中断服务程序嵌套。,图5-1 中断系统结构示意图,1.中断源,2.中断控制定时器控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存器IE和中断优先级寄存器IP,(1)定时器控制寄存器(TCON),TCON(88H),D7 D6 D5 D4 D3 D2 D1 D0,(2)串行口控制寄存器(SCON)98H,TI

2、串行口发送中断请求标志位。当发送完一帧串行数据后,由 硬件置1;在转向中断服务程序后,用软件清0。RI串行口接收中断请求标志位。当接收完一帧串行数据后,由硬件置;在转向中断服务程序后,用软件清0。,(3)中断允许控制寄存器(IE)0A8H,(5)中断优先级控制 A.中断优先级控制寄存器(IP)0B8H,B.中断查询顺序 当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。中断源 同级自然优先级 INT0 最高 T0 INT1 T1 串行口 最低C.中断嵌套(2个中断优先级)由IP设定高、低两级优先级原则:允许高中断低,禁止低中断高和同级中断,5.1.2 中断响应及中

3、断处理过程 89C51单片机中断过程分为中断采样、中断查询、中断响应、中断处理和中断返回等几个阶段。1.中断采样(外部中断采样)在每个机器周期的S5P2时刻对芯片引脚INT0(P3.2)和INT1(P3.3)进行采样。(1)电平触发方式 中断标志直接反映外部中断引脚的状态,无记忆功能,低电平时间至少需保持一个机器周期,才能保证中断请求能被采样到。(2)负跳变触发方式 在两个相邻机器周期采样到的是先高电平后低电平,则中断请求有效,由硬件将IE0或IE1置1,具有记忆功能,负脉冲的宽度也应至少为一个机器周期。,2.中断查询 由CPU测试TCON和SCON中各标志位的状态,中断查询在指令执行的每个机

4、器周期中不停地重复进行。3.中断响应(1)产生硬件调用,将断点地址压入堆栈。(2)中断封锁 A、CPU正处在为一个同级或高级的中断服务中。因为当一个中断被响应时,要把对应的优先级触发器置位,封锁了低级和同级中断。B、查询中断请求的机器周期不是当前指令的最后一个机器周期。目的在于确保当前指令的完整执行。C、当前指令是返回指令(RET,RETI)或访问IE、IP的指令。在执行完这些指令之后,还应再继续执行一条指令,然后才能响应中断。89C51对中断查询的结果不作记忆,当有新的查询结果出现时,因为以上原因而被拖延的查询结果将不复存在,其中断请求也就不能再被响应了。,(3)中断响应时间 响应时间为38

5、个机器周期,如果遇到中断受阻的情况,则中断响应时间会更长一些。4.中断处理(中断服务)5.中断返回 CPU执行RETI指令时,把响应中断位置的优先级触发器复位,再从堆栈中弹出断点地址送入程序计数器PC,以便从断点处重新执行被中断的主程序。,5.1.3 中断请求的撤销1.定时中断请求的撤销 定时中断响应后,硬件自动把标志位(TF0或TF1)清0,因此定时中断的中断请求是自动撤销的。2.脉冲方式外部中断的撤销 中断响应时自动撤销,在中断服务过程中有新的下跳变会重新置位中断标志位。3.电平方式外部中断请求的撤销 中断响应时自动撤销,在中断返回后仍然为低电平将会再次响应中断。4.串行中断请求撤销 由软

6、件(程序)清除标志位。,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

7、开放中断。源程序如下:,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(

8、P3.2)相连;4个外部扩展中断源EXINT0EXINT3中有一个或几个出现高电平则输出为0,使/INT0脚为低电平,从而发出中断请求。因此,这些扩充的外部中断源都是电平触发方式(高电平有效)。CPU执行中断服务程序时,先依次查询P1口的中断源输入状态,然后,转入到相应的中断服务程序,4个扩展中断源的优先级顺序由软件查询顺序决定,即最先查询的优先级最高,最后查询的优先级最低。,中断服务程序如下:ORG0003H;外部中断0入口AJMPINT0;转向中断服务程序入口INT0:PUSHPSW;保护现场 PUSHACC JBP1.0,EXT0;中断源查询并转相应中断服务程序 JBP1.1,EXT1

9、JBP1.2,EXT2 JBP1.3,EXT3EXIT:POPACC;恢复现场 POPPSW RETIEXT0:;EXINT0中断服务程序AJMPEXITEXT1:;EXINT1中断服务程序AJMPEXITEXT2:;EXINT2中断服务程序AJMPEXITEXT3:;EXINT3中断服务程序AJMPEXIT同样,外部中断1也可作相应的扩展。,5.1.5 处理外部中断举例,要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。解:INT0输入按键信号,P1.0输出改变LED状态。1跳变触发:每次跳变引起一次中断请求。,ORG 0000H;复位入口 AJMP MAINORG0003H;中断入

10、口AJMPPINT0ORG0100H;主程序MAIN:MOV SP,#40H;设栈底SETBIT0;开总允许开关SETBEX0;开INT0中断SETBEA;负跳变触发中断H:SJMPH;执行其它任务ORG0200H;中断服务程序PINT0:CPL P1.0;改变LEDRETI;返回主程序,1软件等待按键释放。2硬件清除中断信号。,2.电平触发:避免一次按键引起多次中断响应。,ORG 0000H;复位入口 AJMP MAINORG0003H;中断入口AJMPPINT0ORG0100H;主程序MAIN:MOV SP,#40H;设栈底 CLRIT0;低电平触发中断SETBEX0;开INT0中断SET

11、BEA;开总允许开关H:SJMPH;执行其它任务ORG0200H;中断服务程序PINT0:CPL P1.0;改变LEDWAIT: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.定时功能 定时功能也是通过计数器的计数功能来

12、实现的,计数脉冲来自单片机的内部,每个机器周期产生一个计数脉冲,计数器加1。根据定时时间的要求计算出计数器的预置值(定时常数)。,5.2.3 定时器/计数器的控制寄存器1.定时器控制寄存器(TCON),2.工作方式控制寄存器(TMOD),5.2.4 定时/计数器工作方式1.方式0(13位定时/计数器方式),最大计数值:213=8192,定时时间(T)=(213-计数初值)机器周期例:设单片机晶振频率为12MHz,使用定时器1以方式0产生周期为 500s的等宽正方波连续脉冲,并由P1.0输出。以查询方式完成。计算计数初值(213-X)110-6=25010-6 1111 1000 0000 01

13、10B 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 LOOP1LOOP2:MOV TH1,#0F8H;重新设计数初值 MOV TL1,#06H CLR TF1;计数溢出标志位清“0”CPL P1.0;输出取反 AJMP LOOP;重复循

14、环,2.方式1(16位定时/计数器方式),8,最大计数值:216=65536,3.方式2(8位自动重装定时/计数器方式),最大计数值:28=256,3.方式(3定时/计数器方式)(1)工作方式3下的定时计数器T0,(2)工作方式3下的定时器计数器1 T1设置为方式3,停止工作。如果T0已工作在方式3,则T1只能工作在方式0方式1或方式2下,通常工作于方式2为串行口提供波特率时钟,只需设置好工作方式和计数初值,便可自动运行。,应用举例:设89C51单片机的时钟频率为6MHz,试编写利用T0产生1s 定时的程序。ORG 0000H LJMP MAIN;上电,转向主程序 ORG 000BH;T0的中

15、断入口地址 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;中断返回

16、 END,5.3 串行接口,5.3.1 串行接口的功能与结构1.串行接口的功能 89C51单片机中的串行接口是一个全双工串行通信接口,能同时发送、接收数据,也能用作同步移位寄存器。,2.串行接口结构,5.3.2 串行接口控制,1.数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H。1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:MOVSBUF,A2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOV A,SBUF,3.节电控制寄存器PCON(87H)SMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SM

17、OD=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:同步脉冲输出端,每个脉冲对

18、应一个数据位。C.波特率Baud=fosc/12如:fosc=12MHz,Baud=1MHz,每位数据占1s。D.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1,例:使用74HC164的并行输出端接8支发光二极管,利用它的串入并出功能,将发光二极管从左向右依次点亮。,MOV SCON,#00H;串行口方式0工作 CLR ES;禁止串行中断 MOV A,#80H;发光管从左边亮起DELR:CLR P1.0;关闭并行输出 MOV SBUF,A;串行输出 JNB TI,;状态维持 SETB P1.0;开启并行输出 ACALL

19、 DELAY;状态维持 CLR TI;清发送中断标志 RR A;发光组合中断标志 AJMP DELR;继续,2.方式1:8位数据异步通讯方式,A.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。B.RXD:接收数据端。TXD:发送数据端。C.波特率:用T1作为波特率发生器,Baud=(2SMOD/32)T1溢出率。D.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。当REN=1,CPU开始采样RXD引脚负跳变

20、信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为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=(2SMOD/64)fosc。方式3:Baud=(2SMOD/32)T1溢出率。D.发送:先装入TB8,写入SBUF并启动发送,发送结束

21、,TI=1 接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。,4.计算波特率,方式0为固定波特率:Baud=fosc/12方式2可选两种波特率:Baud=(2SMOD/64)fosc 方式1、3为可变波特率,用T1作波特率发生器。Baud=(2SMOD/32)T1溢出率T1为方式2的时间常数:X=28-t/T溢出时间:t=(28-X)T=(28-X)12/foscT1溢出率=1/t=fosc/12(28-X)波特率Baud=(2SMOD/32)fosc/12(28-X)串行口

22、方式1、3,根据波特率选择T1工作方式,计算时间常数T1选方式2:TL1=TH1=X=28-fosc/122SMOD/(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

23、:MOV A,R0;取数据 MOVSBUF,A;发送一个字符WAIT:JBCTI,NEXT;等待发送结束SJMPWAITNEXT:INCR0;准备下一次发送SJMPTRAM,2.中断方式:ORG 0023H;串行口中断入口 AJMP SINTMAIN:;初始化编程TRAM:MOV A,R0;取数据MOV SBUF,A;发送第一个字符 H:SJMP H;其它工作 SINT:CLR TI;中断服务程序INC R0MOV A,R0;取数据MOV SBUF,A;发送下一个字符RETI,接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。,1.查询方式:WAIT:JBCRI,NEXT

24、;查询等待SJMPWAITNEXT:MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0;准备下一次接收SJMPWAIT,2.中断方式:ORG0023HAJMPRINTMAIN:;初始化编程 H:SJMPH;其它任务 RINT:CLRRI;清中断标志MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0RETI,例:由串行接口发送带偶校验位的ASCII码数据块。设拟发送的是位于片内RAM30H3FH单元的ASCII码数据。单片机采用12MHz晶振,串行接口工作于方式1,定时器/计数器1用作波特率发生器,电源控制专用寄存器PCON中的SMOD位为0,发送的波特率要求为1

25、200。相应的发送程序为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,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号