第五章中断定时串口

上传人:桔**** 文档编号:584688097 上传时间:2024-08-31 格式:PPT 页数:47 大小:936.53KB
返回 下载 相关 举报
第五章中断定时串口_第1页
第1页 / 共47页
第五章中断定时串口_第2页
第2页 / 共47页
第五章中断定时串口_第3页
第3页 / 共47页
第五章中断定时串口_第4页
第4页 / 共47页
第五章中断定时串口_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《第五章中断定时串口》由会员分享,可在线阅读,更多相关《第五章中断定时串口(47页珍藏版)》请在金锄头文库上搜索。

1、第第5章中断系统、章中断系统、 定时器定时器/计数器与串行口计数器与串行口5.1 MCS-51单片机中断系统单片机中断系统 中断中断是指计算机暂时停止原程序执行转而为外部设备是指计算机暂时停止原程序执行转而为外部设备服务服务(执行中断服务程序执行中断服务程序), 并在服务完后自动返回原程序并在服务完后自动返回原程序执行的过程。执行的过程。5.1.1 中断系统结构及中断控制中断系统结构及中断控制 89C51单片机有单片机有5个中断源个中断源(89C52有有6个),可实现个),可实现二级中断服务程序嵌套二级中断服务程序嵌套。图5-1 中断系统结构示意图1. 中断源中断源中断源中断源中断标志中断标志

2、中断入口地址中断入口地址外部中断/INT0(P3.2)IE00003H/INT1(P3.3)IE10013H定时中断T0TF0000BHT1TF1001BH串行中断发送中断TI0023H接受中断RI2. 2. 中断控制中断控制定时器控制寄存器定时器控制寄存器TCON、 串行口控制寄存器串行口控制寄存器SCON、 中中断允许寄存器断允许寄存器IE和中断优先级寄存器和中断优先级寄存器IP(1) 定时器控制寄存器定时器控制寄存器(TCON)TCON(88H)D7 D6 D5 D4 D3 D2 D1 D0 (2) 串行口控制寄存器(串行口控制寄存器(SCON)98HTITI串行口发送中断请求标志位。当

3、发送完一帧串行数据后,串行口发送中断请求标志位。当发送完一帧串行数据后, 由由 硬件置硬件置1 1; 在转向中断服务程序后,在转向中断服务程序后, 用用软件清软件清0 0。RIRI串行口接收中断请求标志位。当接收完一帧串行数据后,串行口接收中断请求标志位。当接收完一帧串行数据后, 由由硬件置硬件置; 在转向中断服务程序后,在转向中断服务程序后, 用用软件清软件清0 0。(3) 中断允许控制寄存器(中断允许控制寄存器(IE)0A8H(5) 中断优先级控制中断优先级控制 A. 中断优先级控制寄存器(中断优先级控制寄存器(IP)0B8HB.中断查询顺序中断查询顺序 当同时接收到几个同一优先级的中断请

4、求时,当同时接收到几个同一优先级的中断请求时, 响应响应哪个中断源则取决于内部硬件查询顺序。哪个中断源则取决于内部硬件查询顺序。 中断源中断源 同级自然优先级同级自然优先级 INT0 最高最高 T0 INT1 T1 串行口串行口 最低最低C. C. 中断嵌套(中断嵌套(2 2个中断优先级个中断优先级) 由由IP设定高、低两级优先级设定高、低两级优先级原则:原则:允许高中断低,禁止低中断高和同级中断允许高中断低,禁止低中断高和同级中断5.1.2 中断响应及中断处理过程中断响应及中断处理过程 89C51单片机中断过程分为单片机中断过程分为中断采样中断采样、 中断查询中断查询、 中中断响应断响应、

5、中断处理中断处理和和中断返回中断返回等几个阶段。等几个阶段。1.中断采样(外部中断采样)中断采样(外部中断采样) 在每个机器周期的在每个机器周期的S5P2时刻对芯片引脚时刻对芯片引脚INT0(P3.2)和和INT1(P3.3)进行采样。)进行采样。(1)电平触发方式)电平触发方式 中断标志直接反映外部中断引脚的状态,无记忆功能,中断标志直接反映外部中断引脚的状态,无记忆功能,低电平时间至少需保持一个机器周期,低电平时间至少需保持一个机器周期, 才能保证中断请求才能保证中断请求能被采样到。能被采样到。(2)负跳变触发方式)负跳变触发方式 在两个相邻机器周期采样到的是在两个相邻机器周期采样到的是先

6、高电平后低电平先高电平后低电平, 则中断请求有效,则中断请求有效, 由硬件将由硬件将IE0或或IE1置置1,具有记忆功能,具有记忆功能,负脉冲的宽度也应至少为一个机器周期。负脉冲的宽度也应至少为一个机器周期。2.中断查询中断查询 由由CPU测试测试TCON和和SCON中各标志位的状态,中断查询在指令中各标志位的状态,中断查询在指令执行的每个机器周期中不停地重复进行。执行的每个机器周期中不停地重复进行。3.中断响应中断响应(1)产生硬件调用,将断点地址压入堆栈。)产生硬件调用,将断点地址压入堆栈。(2)中断封锁)中断封锁 A、CPU正处在为一个同级或高级的中断服务中。正处在为一个同级或高级的中断

7、服务中。因为当一个中因为当一个中断被响应时,断被响应时, 要把对应的优先级触发器置位,要把对应的优先级触发器置位, 封锁了低级和同级中封锁了低级和同级中断。断。 B、查询中断请求的机器周期不是当前指令的最后一个机器周期。查询中断请求的机器周期不是当前指令的最后一个机器周期。目的在于确保当前指令的完整执行。目的在于确保当前指令的完整执行。 C、当前指令是返回指令(当前指令是返回指令(RET, RETI)或访问)或访问IE、 IP的指令。的指令。在执行完这些指令之后,在执行完这些指令之后, 还应再继续执行一条指令,还应再继续执行一条指令, 然后才能响应然后才能响应中断。中断。 89C51对中断查询

8、的结果不作记忆,对中断查询的结果不作记忆, 当有新的查询结果出现时,当有新的查询结果出现时, 因为以上原因而被拖延的查询结果将不复存在,因为以上原因而被拖延的查询结果将不复存在, 其中断请求也就不能其中断请求也就不能再被响应了。再被响应了。(3)中断响应时间)中断响应时间 响应时间为响应时间为38个机器周期个机器周期,如果遇到中断受阻的情,如果遇到中断受阻的情况,则中断响应时间会更长一些。况,则中断响应时间会更长一些。4. 中断处理(中断服务)中断处理(中断服务)5. 中断返回中断返回 CPU执行执行RETI指令时,指令时, 把响应中断位置的优先级把响应中断位置的优先级触发器复位,触发器复位,

9、 再从堆栈中弹出断点地址送入程序计数器再从堆栈中弹出断点地址送入程序计数器PC, 以便从断点处重新执行被中断的主程序。以便从断点处重新执行被中断的主程序。5.1.3 中断请求的撤销中断请求的撤销1. 定时中断请求的撤销定时中断请求的撤销 定时中断响应后,硬件自动把标志位(定时中断响应后,硬件自动把标志位(TF0或或TF1)清)清0, 因此定时中断的中断请求是自动撤销的。因此定时中断的中断请求是自动撤销的。2. 脉冲方式外部中断的撤销脉冲方式外部中断的撤销 中断响应时自动撤销,在中断服务过程中有新的下中断响应时自动撤销,在中断服务过程中有新的下跳变会重新置位中断标志位。跳变会重新置位中断标志位。

10、3. 电平方式外部中断请求的撤销电平方式外部中断请求的撤销 中断响应时自动撤销,在中断返回后仍然为低电平中断响应时自动撤销,在中断返回后仍然为低电平将会再次响应中断。将会再次响应中断。4. 串行中断请求撤销串行中断请求撤销 由软件(程序)清除标志位。由软件(程序)清除标志位。 5.1.4 外部中断源的扩展外部中断源的扩展1. 用定时器作外部中断源用定时器作外部中断源 MCS-51单片机有两个定时器,具有两个内中断标志和单片机有两个定时器,具有两个内中断标志和外计数引脚,如在某些应用中不被使用,则它们定时器中外计数引脚,如在某些应用中不被使用,则它们定时器中断可作为外部中断请求使用。此时,可将定

11、时器设置成计断可作为外部中断请求使用。此时,可将定时器设置成计数方式,计数初值可设为满量程,则它们的计数输入端数方式,计数初值可设为满量程,则它们的计数输入端T0(P3.4)或)或T1(P3.5)引脚上发生负跳变时,计数器加引脚上发生负跳变时,计数器加1产生溢出中断。利用此特性,可把产生溢出中断。利用此特性,可把T0脚或脚或T1脚作为外部中脚作为外部中断请求输入线,而计数器的溢出中断作为外部中断请求标断请求输入线,而计数器的溢出中断作为外部中断请求标志。志。 【例例5.1】将定时器将定时器0扩展为外部中断源扩展为外部中断源n解:将定时器解:将定时器0设定为方式设定为方式2(自动恢复计数初值),

12、(自动恢复计数初值),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引脚每输引脚每输入一个负跳变

13、,入一个负跳变,TF0都会置都会置1,向,向CPU请求中断。此时,请求中断。此时,T0脚脚相当于边沿触发的外部中断源输入线。相当于边沿触发的外部中断源输入线。 同样,也可将定时器同样,也可将定时器1扩展为外部中断源。扩展为外部中断源。 2. 中断和查询相结合中断和查询相结合一个外中断扩展成多个外中断的原理图 由图可知,由图可知,4个外部扩展中断源通过个外部扩展中断源通过 4个个OC门电路组门电路组成线或取非后再与成线或取非后再与 /INT0(P3.2)相连;相连;4个外部扩展中个外部扩展中断源断源EXINT0EXINT3中有一个或几个出现高电平则输中有一个或几个出现高电平则输出为出为0,使,使

14、/INT0脚为低电平,从而发出中断请求。因此,脚为低电平,从而发出中断请求。因此,这些扩充的外部中断源都是电平触发方式(高电平有效)。这些扩充的外部中断源都是电平触发方式(高电平有效)。CPU执行中断服务程序时,先依次查询执行中断服务程序时,先依次查询P1口的中断源输口的中断源输入状态,然后,转入到相应的中断服务程序,入状态,然后,转入到相应的中断服务程序,4个扩展中个扩展中断源的优先级顺序由软件查询顺序决定,即最先查询的优断源的优先级顺序由软件查询顺序决定,即最先查询的优先级最高,最后查询的优先级最低。先级最高,最后查询的优先级最低。 中断服务程序如下:ORG0003H;外部中断外部中断0入

15、口入口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中断服务程序中断服务程序

16、AJMPEXIT同样,外部中断1也可作相应的扩展。 5.1.5 处理外部中断举例处理外部中断举例 要求每次按动按键,使外接发光二极管要求每次按动按键,使外接发光二极管LEDLED改变一次亮灭状态。改变一次亮灭状态。解:解:INT0INT0输入按键信号,输入按键信号,P P1.01.0输出改变输出改变LEDLED状态。状态。1跳变触发:跳变触发:每次跳变引起一次中断请求。每次跳变引起一次中断请求。 ORG 0000H; 复位入口复位入口 AJMP MAINORG0003H ; 中断入口中断入口AJMP PINT0ORG0100H ;主程序主程序MAIN:MOV SP,#40H;设栈底设栈底SET

17、B IT0;开总允许开关开总允许开关SETB EX0;开;开INT0中断中断SETB EA;负跳变触发中断负跳变触发中断H:SJMP H ;执行其它任务执行其它任务ORG0200H ;中断服务程序中断服务程序PINT0:CPL P1.0;改变改变LEDRETI;返回主程序返回主程序单片机单片机INT0P1.01+5V1 1软件等待按键释放。软件等待按键释放。2 2硬件清除中断信号。硬件清除中断信号。2. 电平触发电平触发:避免一次按键引起多次中断响应。避免一次按键引起多次中断响应。单片机单片机INT0P1.01+5V ORG 0000H; 复位入口复位入口 AJMP MAINORG0003H

18、; 中断入口中断入口AJMP PINT0ORG0100H ;主程序主程序MAIN:MOV SP,#40H;设栈底设栈底 CLRIT0;低电平触发中断;低电平触发中断SETB EX0;开;开INT0中断中断SETB EA;开总允许开关;开总允许开关H:SJMP H ;执行其它任务执行其它任务ORG0200H ;中断服务程序中断服务程序PINT0:CPL P1.0;改变改变LEDWAIT:JNBP3.2,WAIT;等按键释放等按键释放RETI;返回主程序返回主程序5.2 定时定时/计数器计数器5.2.1 定时器定时器/计数器的组成计数器的组成5.2.2 定时定时/计数器的定时和计数功能计数器的定时

19、和计数功能1. 计数功能计数功能 所谓计数是指对外部事件进行计数。外部事件以脉冲所谓计数是指对外部事件进行计数。外部事件以脉冲的形式通过引脚的形式通过引脚T0(P3.4)和)和T1(P3.5)输入到定时)输入到定时/计数器。下降沿时,计数器。下降沿时, 计数器的值加计数器的值加1。 89C51在每个机器周期的在每个机器周期的S5P2期间采样期间采样T0和和T1引脚引脚的输入电平,计数脉冲的频率不能高于振荡脉冲频率的的输入电平,计数脉冲的频率不能高于振荡脉冲频率的1/24 。2. 定时功能定时功能 定时功能也是通过计数器的计数功能来实现的,计定时功能也是通过计数器的计数功能来实现的,计数脉冲来自

20、单片机的内部,数脉冲来自单片机的内部, 每个机器周期产生一个计数每个机器周期产生一个计数脉冲,计数器加脉冲,计数器加1。根据定时时间的要求计算出计数器。根据定时时间的要求计算出计数器的预置值(定时常数)。的预置值(定时常数)。5.2.3 定时器定时器/计数器的控制寄存器计数器的控制寄存器1.定时器控制寄存器(定时器控制寄存器(TCON)2. 工作方式控制寄存器(工作方式控制寄存器(TMOD)5.2.4 定时定时/计数器工作方式计数器工作方式1. 方式方式0 (13位定时位定时/计数器方式计数器方式) 最大计数值:最大计数值:213 = 8192定时时间定时时间(T)=(213-计数初值)计数初

21、值)机器周期机器周期例例: :设单片机晶振频率为设单片机晶振频率为12MHz, 使用定时器使用定时器1以方式以方式0产生周期为产生周期为 500s的等宽正方波连续脉冲,的等宽正方波连续脉冲, 并由并由P1.0输出。以查询方式完成。输出。以查询方式完成。 计算计数初值计算计数初值 (213-X)110-6=25010-6 X=7942=1111100000110B 1111 1000 0000 0110B F 8 0 6 H TH1 TL1 TMOD寄存器初始化寄存器初始化(确定工作方式确定工作方式) TMOD=0000 0000B 启动启动T1(TCON中的中的TR1位控制定时的启动和停止位控

22、制定时的启动和停止) 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; 重复循环重复循环2

23、. 方式方式1 (16位定时位定时/计数器方式计数器方式)8最大计数值:最大计数值:216 = 655363. 方式方式2 (8位自动重装定时位自动重装定时/计数器方式计数器方式)最大计数值:最大计数值:28 = 2563. 方式方式 (3定时定时/计数器方式计数器方式)(1) 工作方式工作方式3下的定时计数器下的定时计数器T0TL0:8位定时位定时/计数器计数器TH0:8位定时器位定时器(2) 工作方式工作方式3下的定时器计数器下的定时器计数器1 T1设置为方式设置为方式3, 停止工作。如果停止工作。如果T0已工作已工作在方式在方式3, 则则T1只能工作在方式只能工作在方式0方式方式1或方式

24、或方式2下,下,通常工作于方式通常工作于方式2为串行口提供波特率时钟,只需为串行口提供波特率时钟,只需设置好工作方式和计数初值,设置好工作方式和计数初值, 便可自动运行。便可自动运行。应用举例:应用举例:设设89C51单片机的时钟频率为单片机的时钟频率为6MHz, 试编写利用试编写利用T0产生产生1s 定时的定时的程序。程序。 ORG 0000H LJMP MAIN ; 上电,上电, 转向主程序转向主程序 ORG 000BH ; T0的中断入口地址的中断入口地址 AJMP SERVE ; 转向中断服务程序转向中断服务程序 ORG 0030H ; 主程序主程序MAIN:MOV SP , #60H

25、 ; 设堆栈指针设堆栈指针 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 TR

26、0 ; 1s定时到,定时到, 停止停止T0工作工作LOOP: RETI ; 中断返回中断返回 END5.3 串行接口串行接口5.3.1 串行接口的功能与结构串行接口的功能与结构1. 串行接口的功能串行接口的功能 89C51单片机中的串行接口是一个全双工串行通信接口,单片机中的串行接口是一个全双工串行通信接口, 能同时发送、能同时发送、 接收数据,接收数据, 也能用作同步移位寄存器。也能用作同步移位寄存器。SM0SM1 工作方式工作方式功功 能能波特率波特率00方式方式 0 8位同步移位寄存器方式位同步移位寄存器方式fOSC/1201方式方式 1 8位通用异步接收器位通用异步接收器/发送器发送器

27、可变可变10方式方式 2 9位通用异步接收器位通用异步接收器/发送器发送器fOSC/32或或fOSC/6411方式方式 3 9位通用异步接收器位通用异步接收器/发送器发送器可变可变2. 串行接口结构串行接口结构5.3.2 串行接口控制串行接口控制1.数据缓冲器数据缓冲器SBUF发送发送SBUFSBUF和接收和接收SBUFSBUF共用一个地址共用一个地址99H99H 。 1 1)发送发送SBUFSBUF存放待发送的存放待发送的8 8位数据,写入位数据,写入SBUFSBUF将同时启动发送。将同时启动发送。发送指令:发送指令:MOV SBUF,A2 2)接收接收SBUFSBUF存放已接收成功的存放已

28、接收成功的8 8位数据,供位数据,供CPUCPU读取。读取。读取串行口接收数据指令:读取串行口接收数据指令:MOV A,SBUF3.节电控制寄存器节电控制寄存器PCON(87H)SMOD(PCON.7):波特率加倍控制位。波特率加倍控制位。SMOD=1,波特率加倍,波特率加倍, SMOD=0,则不加倍则不加倍。2.串行口控制串行口控制/状态寄存器状态寄存器SCON(98H)SM0SM0,SM1SM1:选择串行口选择串行口4 4种工作方式。种工作方式。SM2SM2:多机控制位,用于多机通讯。多机控制位,用于多机通讯。RENREN:允许接收控制位,允许接收控制位,REN=1REN=1,允许接收;允

29、许接收;REN=0REN=0,禁止接收。禁止接收。TB8TB8:发送的第发送的第9 9位数据位,可用作校验位和地址位数据位,可用作校验位和地址/ /数据标识位数据标识位RB8RB8:接收的第接收的第9 9位数据位或停止位位数据位或停止位TITI:发送中断标志,发送一帧结束,发送中断标志,发送一帧结束,TI=1TI=1,必须软件清零必须软件清零RIRI:接收中断标志,接收一帧结束,接收中断标志,接收一帧结束,RI=1RI=1,必须软件清零必须软件清零5.3.3 串行接口的工作方式串行接口的工作方式1. 方式方式0:同步移位寄存器方式。用于扩展并行同步移位寄存器方式。用于扩展并行I/I/O接口。接

30、口。A.A.一帧一帧8 8位,无起始位和停止位。位,无起始位和停止位。B.B.RXDRXD:数据输入数据输入/ /输出端。输出端。 TXDTXD:同步脉冲输出端,每个脉冲对应一个数据位。同步脉冲输出端,每个脉冲对应一个数据位。C.C.波特率波特率Baud = fosc/12Baud = fosc/12如:如: fosc=12MHzfosc=12MHz, Baud=1MHzBaud=1MHz,每位数据占每位数据占1 1 s s。D.D.发送过程:写入发送过程:写入SBUFSBUF,启动发送,一帧发送结束,启动发送,一帧发送结束,TI=1TI=1。 接收过程:接收过程:REN=1REN=1且且RI

31、=0RI=0,启动接收,一帧接收完毕,启动接收,一帧接收完毕,RI=1RI=1 发发送送时时序序写入写入SBUFRXD输出输出TXDTID0D1D2D3D4D5D6D7写写REN=1RI=0RXD输入输入RI 接接收收时时序序(a)(b)例:使用例:使用74HC164的并行输出端接的并行输出端接8支发光二极管,支发光二极管, 利用它利用它的串入并出功能,的串入并出功能, 将发光二极管从左向右依次点亮。将发光二极管从左向右依次点亮。 MOV SCON, # 00H ; 串行口方式串行口方式0工作工作 CLR ES ; 禁止串行中断禁止串行中断 MOV A, #80H ; 发光管从左边亮起发光管从

32、左边亮起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:发送数据端。发送数据端。

33、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引脚负跳变信号,若出现负跳变,引脚负跳变信号,若出现负跳变,才进入数据接收状态,

34、先检测起始位,若第一位为才进入数据接收状态,先检测起始位,若第一位为0,继续接收其,继续接收其余位;否则,停止接收,重新采样负跳变。余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率数据采样速率为波特率16倍频,在数据位中间,用第倍频,在数据位中间,用第7、8、9个个脉冲采样脉冲采样3次数据位,并次数据位,并3中取中取2保留采样值。保留采样值。3. 方式方式2和方式和方式3:9位数据异步通讯方式位数据异步通讯方式A.一帧为一帧为11位:位:9位数据位,位数据位,1个起始位个起始位(0),1个停止位个停止位(1)。第第9位数据位在位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。

35、中,常用作校验位和多机通讯标识位。B.RXD:接收数据端,接收数据端,TXD:发送数据端。发送数据端。C.波特率:波特率: 方式方式2:Baud=(2SMOD/64)fosc 。 方式方式3:Baud=(2SMOD/32)T1溢出率溢出率 。D.发送:先装入发送:先装入TB8,写入写入SBUF并启动发送,发送结束,并启动发送,发送结束,TI=1 接收:接收:REN=1,允许接收。接收完一帧,若允许接收。接收完一帧,若RI=0且第且第9位为位为1 (或或SM2=0),将接收数据装入接收将接收数据装入接收SBUF,第第9位装入位装入RB8,使,使RI=1;否则丢弃接收数据,不置位否则丢弃接收数据,

36、不置位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)串行口方式

37、串行口方式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

38、 ) ;选定波特率选定波特率 ( MOV TL1,#X ) ( SETB TR1) ( SETB EA) ;开串行口中断开串行口中断 ( SETB ES)发送程序:先发送一个字符,等待发送程序:先发送一个字符,等待TI=1TI=1后再发送下一个字符。后再发送下一个字符。1.1.查询方式:查询方式:TRAM:MOV A,R0 ;取数据取数据 MOV SBUF,A ;发送一个字符发送一个字符WAIT:JBCTI,NEXT ;等待发送结束等待发送结束SJMP WAITNEXT:INCR0 ;准备下一次发送准备下一次发送SJMP TRAM2.中断方式:中断方式: ORG 0023H ;串行口中断入口串

39、行口中断入口 AJMP SINTMAIN: ;初始化编程初始化编程TRAM: MOV A,R0 ;取数据取数据MOV SBUF,A ;发送第一个字符发送第一个字符 H:SJMP H ;其它工作其它工作 SINT:CLR TI ;中断服务程序中断服务程序INC R0MOV A,R0 ;取数据取数据MOV SBUF,A ;发送下一个字符发送下一个字符RETI接收程序:接收程序:REN=1REN=1、RI=0RI=0等待接收,当等待接收,当RI=1RI=1,从,从SBUFSBUF读取数据。读取数据。1.1.查询方式:查询方式: WAIT:JBCRI,NEXT;查询等待查询等待SJMP WAITNEX

40、T:MOV A,SBUF ;读取接收数据读取接收数据MOV R0,A;保存数据保存数据INCR0 ;准备下一次接收准备下一次接收SJMP WAIT2.2.中断方式:中断方式:ORG 0023HAJMP RINTMAIN: ;初始化编程初始化编程 H:SJMP H ;其它任务其它任务 RINT:CLRRI ;清中断标志清中断标志MOV A,SBUF ;读取接收数据读取接收数据MOV R0,A;保存数据保存数据INCR0RETI例:由串行接口发送带偶校验位的例:由串行接口发送带偶校验位的ASCII码数据块。码数据块。设拟发送的是位于片内设拟发送的是位于片内RAM30H3FH单元的单元的ASCII码

41、数据。单片机采用码数据。单片机采用12MHz晶振,晶振, 串行接口工作于方式串行接口工作于方式1, 定时器定时器/计数器计数器1用作波特率发生器,用作波特率发生器, 电源控制专用寄存器电源控制专用寄存器PCON中的中的SMOD位为位为0, 发送的波特率要求为发送的波特率要求为1200。相应的发送程序为相应的发送程序为TSTART:MOV TMOD, #20H ;置定时器;置定时器/计数器计数器1工作于方式工作于方式2的定时器方式的定时器方式 MOV TL1, #0E6H ; 定时器定时器/计数器计数器1预置数预置数 MOV TH1, #0E6H ; 定时器定时器/计数器计数器1置重装载数置重装

42、载数 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备13022795号 | 川公网安备 51140202000112号