收藏 分享(赏)

Chapter06_主要功能单元.ppt

上传人:dzzj200808 文档编号:3323874 上传时间:2018-10-13 格式:PPT 页数:73 大小:1.18MB
下载 相关 举报
Chapter06_主要功能单元.ppt_第1页
第1页 / 共73页
Chapter06_主要功能单元.ppt_第2页
第2页 / 共73页
Chapter06_主要功能单元.ppt_第3页
第3页 / 共73页
Chapter06_主要功能单元.ppt_第4页
第4页 / 共73页
Chapter06_主要功能单元.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

1、第6章 主要功能单元,6.2 MCS-51定时/计数器,6.3 MCS-51串行口,6.1 MCS-51单片机中断系统,6.1.1 中断请求源,5个中断源 2个优先级,2个外部中断,3个内部中断,T0,T1,UART,与中断有关的特殊功能寄存器:,IP: 中断优先控制寄存器,IE: 中断允许控制寄存器,TCON: 定时/计数控制寄存器,SCON: UART控制寄存器,中断请求 标志寄存器,可编程,可控,MCS 51 中断要点,6.1 MCS-51单片机中断系统,1、定时/计数器控制寄存器TCON,TCON (88H),触发方式控制位,0 低电平触发,1 边沿触发,外部中断请求标志,1 有有效触

2、发时,0 当CPU响应中断时,T1 T0,溢出标志,1 计数器“+1”有溢出时,并向CPU请求中断,0 当CPU响应中断时,也可由指令清除,TR1 TR0,由硬件 自动,由硬件 自动,TR1 TR0,由硬件 自动,由硬件 自动,在每个机器周期 S5P2 都采样引脚 P3.3、P3.2,引脚,0,0,记录有无中断,记录有无中断,6.1.1 中断请求源,2、串行口控制寄存器 SCON,TI:串行口发送(完)中断标志,在方式0,串行发送到第8位结束时,由硬件置“1”;或在其他方式中,串行发送到停止位的开始时,由硬件置“1”。,RI:串行口接收(好)中断标志,在方式0,串行接收到第8位结束时,由硬件置

3、“1”;或在其他方式中,串行接收到停止位的开始时,由硬件置“1”。,“1” 发送完一帧数据后,“1” 接收完一帧数据后,必须由软件清 “0”,SCON (98H),6.1.1 中断请求源,必须由软件清 “0”,串行通信的数据格式:,一帧数据:,一个字符在异步传送中称为一帧数据。,一帧数据由4部分组成:起始位、数据位、奇偶位、停止位,一帧数据,起始位,数据位,奇偶位,停止位,起始位,第n个字符,第n+1个字符,通信协议,6.1.1 中断请求源,6.1.2 中断控制,1、中断允许寄存器 IE,0 禁止,1 允许,0 禁止,1 允许,总 中断,中断,IE (A8),中断的开放和禁止是可控,可编程的。

4、,ET2,CPU,IE 的相应位被清 “0”或置“1”, 该相应中断即被“禁止”或“开放”。,2、中断优先级寄存器 IP,IP (B8),ET2,0 低级,1 高级,中断,中断优先级可控、可编程,3、优先级结构,中断优先级控制遵循的两个基本原则:, 一个正在执行的低级中断服务程序,能被高优先级中断请求所中断,但不能被同优先级中断请求所中断。, 一个正在执行的高级中断服务程序,不能被任何中断请求所中断,直到返回。,6.1.2 中断控制,实现这两个原则的方法:,中断系统内部设置了两个不可寻址的优先级状态触发器。一个指出正在处理的是:高优先级中断,并阻止所有其他中断;另一个指出正在处理的是:低优先级

5、中断,并阻止除高优先级中断外的其他任何中断。,是不可寻址的,当CPU响应 高级中断, 并进入中断 服务时,“1”,“1”,RETI,“0”,当CPU响应 低级中断, 并进入中断 服务时,“1”,RETI,“0”,无条件的,6.1.2 中断控制,在同级的几个中断源中同时发生请求时,内部对同级的各中断源的优先级别有一个规定的查询顺序:,外部中断请求 INT0,定时/计数器 T0,定时/计数器 T1,串行口 UART,定时/计数器 T2,外部中断请求 INT1,最高,最低,自然优先级,自然优先级由硬件查询逻辑完成。,6.1.2 中断控制,源允许,中断系统总体逻辑结构,总允许,优先级,中断标志,中断

6、标志,1,IE0,矢量 地址送PC,“+1”,TF1,0,矢量 地址送PC,EA,“+1”,“+1”,EX0,ET1,1,PX0PT0PX1PT1P S,“+1”,“+1”,6.1.2 中断控制,6.1.3 中断响应过程,中断响应的三个条件:, CPU不是正在处理同级或高级中断请求。, 现行机器周期是所执行指令的最后一个机器周期。, 正在执行的指令不是RETI(或RET),或不是在访问IE或IP。,中断入口地址:,0003H,000BH,0013H,001BH,0023H,002BH,中断源,排除法,6.1.4 外部中断响应时序与触发方式,1、外部中断响应时序,M1,M3,M4,M5,M2,S

7、5P1,S5P2,CPU进行 中断查询,保护断点, 长调用至入口,中断服务,1)中断响应顺利,不受阻,需要3个机器周期。,2)如果中断受阻,则需要38个机器周期。,即满足上述三个条件, 正在处理同级或高级中断,这要视中断服务程序的长短。, 执行的指令不是最后一个机器周期,则等待不超过3个周期。, 正在执行指令是RETI(RET)(双周期指令),或正访问IE、IP,则需返回主程序后,再执行一条主程序的指令才能响应该中断,等待不超过5个周期。,2、外部中断触发方式, 电平触发方式, 边沿触发方式,若外部中断(当ITX = 0时)被定义为电平触发方式。其有效触发为低电平,该低电平维持到CPU响应该中

8、断为止,中断返回之前,必须变为高电平。否则CPU将再次响应该中断。,若外部中断(当ITX = 1时)被定义为边沿触发方式。其有效触发为下降沿。在该触发方式中,CPU在一个机器周期采样为高电平,在下一机器周期采样为低电平,就立即置位外部中断请求标志。,无论是那种触发发方式,只要有有效触发,都会记录在相应的中断标志位中, 若CPU即使暂不响应,中断标志也不会丢失,直到CPU响应该中断,该标志才会清除。,6.1.4 外部中断响应时序与触发方式,6.1.5 多个外部中断源的设计,1、利用定时/计数器作外部中断输入使用的方法,T0作为外部中断源的初始化程序:,;T0计数方式,自动装载,;置计数初值,;T

9、0开中断,;CPU开中断,;启动T0工作,计数器,“+1”,计数器,向CPU发中断请求,向CPU发中断请求,方式2(8位),FFH,FFH,TF0,00H,FFH,FFH,P3.4,2、中断与查询相结合的方法,DVT0,10K,+5V,扩展多个外部中断,最高级,最低级,“线或”,6.1.5 多个外部中断源的设计,外部中断INT1的中断服务程序:,6.1.5 多个外部中断源的设计,PDVT1: ,AJMP PINTR,PDVT2: ,AJMP PINTR,PDVT3: ,AJMP PINTR,PDVT4: ,AJMP PINTR,;DVT1中断服务,;DVT2中断服务,;DVT3中断服务,;DV

10、T4中断服务,中断处理,6.1.5 多外部中断源的设计,6.1.6 用软件模拟第三个中断优先级,在中断优先级寄存器IP中定义两个中断优先级:高优先级、低优先级。,低优先级的中断服务程序如下:,*PCL,*PCH,IE,;保护IE,;置屏蔽字,屏蔽当前中断,;调用子程序,;执行中断服务,;恢复IE,;子程序返回,真正的中断返回,;中断返回,CPU被欺骗误认为返回主程序,“1”,LABEL,LABEL:,CPU认为已经返回主程序,“0”,堆栈,又可被低级中断请求中断,6.2 MCS-51定时/计数器,51系列内部有2个16位的定时/计数器T0、T1。,52系列内部有3个16位的定时/计数器T0、T

11、1、T2。,定时/计数器的可编程特性:, 可确定其工作方式是定时还是计数。, 预置定时或计数初值。, 当定时时间到(或计数终止时),要不要发中断请求。, 如何启动定时(或计数)器工作 。,可编程,“+1”,“+1”,6.2.1 定时/计数器的结构与工作原理,结构,2个16位T/C分别由8位计数器TH0、TL0、TH1、TL1组成。,“+1” 计数器,控制寄存器TCON:控制T/C的启停、中断等。,方式寄存器TMOD:控制T/C的工作方式。,2、工作原理, 定时器,定时输入信号:机器内部振荡信号的1/12分频。,即每一个机器周期做一次“+1”运算。,6.2.1 定时/计数器的结构与工作原理,1个

12、机器周期 = 12个振荡脉冲,计数速率为振荡频率的1/12分频,若单片机的晶振主频为12MHz,则计数周期为1s。, 计数器,由外部引脚(T0为P3.4 ,T1为P3.5)输入计数脉冲。,外部输入脉冲宽度应大于2个机器周期。(S5P2、S5P2、S3P1),TCY,TCY,外部输入脉冲发生负 跳变时,进行“+1”计数。,下降沿,高电平,低电平,TCY:机器周期,6.2.1 定时/计数器的结构与工作原理,OSC,S1,S2,S3,S4,S5,S6,机器周期,机器周期,XTAL2,6.2.1 定时/计数器的结构与工作原理,采样,1、方式寄存器TMOD,GATE,C/T,M1,M0,GATE,C/T

13、,M1,M0,LSB,MSB,控制T1,控制T0,门控位,功能选择位,工作方式选择,6.2.2 定时/计数器的方式寄存器和控制寄存器,GATE: 门控位。设定T1、T0运行时,是否受,GATE,C/T,M1,M0,GATE,C/T,M1,M0,INT1(P3.3) INT0(P3.2)引脚输入电平的控制。,GATE=,0 不受外部中断控制,0 0 方式0 13位计数器,0 1 方式1 16位计数器,1 0 方式2 可自动重新装载初值的8位计数器,1 1 方式3 T0分为2个8位计数器,T1停止计数,表5-1 操作方式选择,1 受外部中断控制,0为定时功能1为计数功能,6.2.2 定时/计数器的

14、方式寄存器和控制寄存器,2、控制寄存器TCON,T1、T0 启/停控制位,T1、T0 溢出标志位,与外部中断INT1、INT0有关,“0” 停止,“1” 启动,“1” 有溢出,“0” 无溢出,可编程 可控制,“+1”,亦可由指令清“0”,工作,记录有无溢出,6.2.2 定时/计数器的方式寄存器和控制寄存器,1、方式0 (M1M0=00),13位的定时/计数器,由TH的8位和TL的低5位组成。,定时/计数器方式0逻辑图,1,1,1,“+1”,中断,TL40,以T1为例:,TF1,“+1”,“+1”,6.2.3 定时/计数器的4种工作方式,2、方式1(M1M0=01),16位的定时计数器,由TH的

15、8位和TL的8位组成。,定时/计数器方式1逻辑图,“+1”,1,以T1为例:,中断,TF1,“+1”,“+1”,6.2.3 定时/计数器的4种工作方式,3、方式2(M1M0=10),可自动重装载的8位计数器,TH1(TH0)被定义为赋值寄存器,TL1(TL0)被定义为计数器,定时/计数器方式2逻辑图,重装载,1,“+1”,以T1为例:,中断,TF1,“+1”,“+1”,6.2.3 定时/计数器的4种工作方式,4、 方式3(M1M0=11),T0被分成2个相互独立的8位计数器TL0 、TH0。,TL0使用T0本身的一些控制位C/T、GATE、TR0、TF0、INT0等。可做定时器也可做计数器。

16、TH0只能做定时器,并使用T1的控制位TR1、TF1,同时占用T1的中断服务子程序入口(001BH)。 方式3只适用于T0。T1不能工作在方式3(如果T1被设置为方式3,T1将停止计数)。,6.2.3 定时/计数器的4种工作方式,定时/计数器方式3逻辑图,1,TH0借用了T1的TR1和TF1,因此控制了T1的中断。 此时T1只能用在一些不需要中断的情况。,“+1”,“+1”,1,“+1”,“+1”,TF0,TF1,中断,中断,“+1”,6.2.3 定时/计数器的4种工作方式,初始化一般有以下几个步骤:, 确定工作方式,对方式寄存器TMOD赋值。, 预置定时或计数初值,直接将其写入TH0、TL0

17、、TH1、TL1中。, 根据需要对中断允许寄存器有关位赋值,以开放或禁止定时/计数器中断。, 将TRi 置为“1”,启动定时/计数器。,计数初值的设定:,最大计数值M:不同的工作方式M值不同,方式0: M = 213 = 8192,方式1: M = 216 = 65536,方式2、3:M = 28 = 256,6.2.4 定时/计数器的初始化,计数初值X的计算方法:,计数方式:,X = M计数值(X即为计数值的补码数),定时方式:,(M X)T = 定时值, X = M定时值 / T,其中T为机器周期,时钟的12分频, 若晶振为6MHz,则T = 2s; 若晶振为12MHz,则T = 1s。,

18、6.2.4 定时/计数器的初始化,例1 若单片机晶振为12MHz,要求产生500s定时,试计算X的初值。,解:由于T = 1s,产生500s定时,需要“+1” 500次,定时器方能产生溢出。,采用方式0:( 13位计数器 ),X= 213(50010-6 /10-6 )= 8192 500 = 7692 = 1E0CH = 0F00CH,采用方式1:( 16位计数器 ),X= 216 (50010-6 /10-6)= 65036 = 0FE0CH,?,THi,TLi,0F00CH =,?,暂时写成,6.2.4 定时/计数器的初始化,1、作定时器用,例2 设主频为12MHz,利用定时器T1定时。

19、使P1.0输出周期为2ms的方波。,解:用P1.0作方波输出信号,周期为2ms的方波即可用每1ms改变一次电平的方法完成,故定时值可设置为1ms。可做“+1”运算1000次,使T1工作在方式0,即13位计数器。,定时初值:,X= M计数次数= 81921000 = 7192 = 1C18H,6.2.5 定时/计数器应用举例,由于TL1的高3位不用,1C18H可写成:,1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0,TL1的高3位不用,=E018H,TH1初值为E0H,TL1初值为18H,0 0 0 0,选择方式0,13位计数器,选择定时器方式,TMOD,=E018H,6.2.5

20、 定时/计数器应用举例,MOV TMOD, #00H,MOV TH1, #0E0H,MOV TL1, #18H,SETB EA,SETB ET1,SETB TR1,SJMP $,ORG 001BH,AJMP BR1,BR1: MOV TH1, #0E0H,MOV TL1, #18H,CPL P1.0,RETI,;T1按方式0工作,;给计数器赋初值,;CPU开总中断,;T1允许中断,;启动T1,;模拟主程序,;T1中断入口,;转T1中断服务,;重装T1的初值,;输出方波,;返回,程序:,6.2.5 定时/计数器应用举例,ORG 0100H,例3 根据例2的要求产生周期为2ms的方波,但不用中断方

21、式,而用查询方式工作,查询标志为TF1。,解:利用方式1,16位计数器,当定时时间到,T1计数器溢出使TF1置“1”,由于不采用中断方式,TF1置“1”后,不会自动复“0”故需要指令给TF1清“0”。,初值=,0 0 0 0 H,-) 0 3 E 8 H,8,1,C,F,H,FC18H, 1000,6.2.5 定时/计数器应用举例,MOV TMOD, #10H,SETB TR1,LOOP: MOV TH1, #0FCH,MOV TL1, #18H,JNB TF1, $,CPL P1.0,CLR TF1,SJMP LOOP,;T1按方式1工作,;启动T1定时,;给计数器赋初值,;TF1=0,则继

22、续查询,;TF10,;输出方波,;返回,程序:,6.2.5 定时/计数器应用举例,2、作计数器用,包装机,包装命令,光源,光 敏,6.2.5 定时/计数器应用举例,选方式2,选计数器,0 1 1 0, 计数初值X = M64H = 9CH, 用P1.0启动外设发包装命令, 用R5R4作箱数计数器, 方式字TMOD = 06H,6.2.5 定时/计数器应用举例,程序:,;P1.0为低,;箱数计数器清“0”,;置T0工作方式,;计数初值送计数器,;T0开中断,;CPU开中断,;启动T0,;模拟主程序,;T0中断入口,;转向中断服务,6.2.5 定时/计数器应用举例,COUNT: MOV A, R4

23、,ADD A, #1,MOV R4, A,MOV A, R5,ADDC A, #0,MOV R5, A,SETB P1.0,MOV R3, #100,DLY: NOP,DJNZ R3, DLY,CLR P1.0,RETI,中断服务:,;箱计数器加“1”,;启动外设包装,;给外设足够时间,;延时,;停止包装,;中断返回,6.2.5 定时/计数器应用举例,;先在低字节加“1”,ORG 0100H,R5R4作箱数计数器,3、门控位GATE的应用,选方式1,选定时器方式,1 0 0 1,例5 用GATE 控制位,测量INT1(P3.3)引脚上正脉冲的宽度(设:晶振为12MHz)。,6.2.5 定时/计

24、数器应用举例,“+1”,1,0,0,1,1,1,1,“+1”,“+1”,0,0,0,6.2.5 定时/计数器应用举例,程序:,;置T1方式控制字,;T1从0开始计数,;等INT1低电平,;T1允许计数,;等INT1高电平,;等INT1低电平,;停止计数(更保险一点),计数时间,6.2.5 定时/计数器应用举例,6.3.1 串行通信的两种基本方式,1、异步传送方式,一帧数据:,一个字符在异步传送中称为一帧数据。,一帧数据由4部分组成: 起始位、数据位、奇偶位、停止位,一帧数据,起始位,数据位,奇偶位,停止位,第n个字符,第n+1个字符,6.3 MCS-51串行口,为逻辑“0”信号,占用1位,用来

25、通知接收设备,一个新的字符开始了。,数据位:,起始位:,奇偶位:,58位。数据的最低位在前,最高位在后。,紧跟在最高位之后,占用1位,奇偶校验时,根据协议置“1”或“0”。,停止位:,为逻辑“1”信号,占用1位或2位,当接收端收到停止位时,表示一帧数据结束。,2、同步传送方式,数据块开始有12同步字符SYNC,后面是按顺序传送的数据块。,数据结构:,6.3.1 串行通信的两种基本方式,6.3.2 MCS-51串行口结构,1、数据缓冲器SBUF,包括物理上独立的发送缓冲器、接收缓冲器。,发送缓冲器:只能写入不能读出,接收缓冲器:只能读出不能写入,两个缓冲器共用一个地址99H,2、串行口控制寄存器

26、,字节地址为98H,可位寻址(位地址为98H9FH)。,SM0 SM1 SM2 REN TB8 RB8 TI RI,SCON (98H),SM0、SM1:串行口工作方式选择位,如下表所示。,0 0 0 移位寄存器方式(用于I/O扩展),0 1 1 8位UART,波特率可变,1 0 2 9位UART,波特率为fosc/32或fosc/64,1 1 3 9位UART,波特率可变,串行口工作方式,6.3.2 MCS-51串行口结构,允许接收控制位。由软件置“1”时,允许接收,置“0”时,禁止接收。,REN:,TB8:,在方式2和方式3中要发送的第9位数据,需要时由软件置1或置0。,RB8:,在方式2

27、和方式3中接收到的第9位数据。在方式1时,如SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8。,TI:,发送中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位的开始时置“1”,必须由软件清“0”。,RI:,接收中断标志。在方式0串行接收到第8位结束时由硬件置“1”,或在其他方式中串行接收到停止位的中间时置“1”,必须由软件清“0”。,6.3.2 MCS-51串行口结构,6.3.2 MCS-51串行口结构,SM2:允许方式2和方式3多机通信控制位。在方式2或方式3中,如SM2=1,则接收到的第9位数据(RB8)为“1”时,置位接收中断标志RI;如SM2

28、=0,则RB8无论为1还是0,均置位RI。在方式1时,如SM2=1,则只有在接收到有效停止位时才置位RI,若没有接收到有效停止位,则RI清“0”。在方式0中,SM2必须为“0”。,3、特殊功能寄存器PCON,其字节地址87H,没有位寻址功能。,PCON(87H),SMOD:波特率选择位。SMOD=1时,波特率加倍。,6.3.2 MCS-51串行口结构,6.3.3 串行口工作方式,1、方式0,移位寄存器输入/输出方式,可外接移位寄存器,以扩展并行I/O口。,方式0的波特率为:,波特率=fosc/12,74LS164,数据输出,移位脉冲,1)方式0 发送,一个数据写入SBUF,串口将数据从RXD输

29、出(波特率fosc/12),TXD输出同步移位信号,发送完TI置1。,D7 D0,方式0扩展I/O口硬件逻辑图,2)方式0 接收,REN置1,串口将数据从RXD输入(波特率fosc/12),TXD输出同步移位信号,接收完RI置1。,方式0扩展I/O口硬件逻辑图,6.3.3 串行口工作方式,方式0发送时序,ALE,WRITE TO SBUF,SEND,SHIFT,RXD,TI,S6P2,TXD,S3P1,S5P1,6.3.3 串行口工作方式,方式0接收时序,ALE,WRITE TO SBUF,RECEIVE,SHIFT,RXD,TXD,RI,D0,D1,D3,D4,D5,D6,D7,D2,S5P

30、2,6.3.3 串行口工作方式,2、方式1,波特率可变的8位异步通信接口方式。,波特率=2SMOD/32T1溢出率,1)方式1发送,CPU 执行一条写SBUF指令,就启动了串口发送。,当SEND和DATA有效时,数据从TXD输出。,2)方式1接收,允许接收位REN被置“1”后,接收器就开始工作,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。,6.3.3 串行口工作方式,TX CLOCK,WRITE TO SBUF,SEND,DATA,START BIT,STOP BIT,SHIFT,TXD,TI,方式1发送时序,6.3.3 串行口工作

31、方式,TX CLOCK,START BIT,STOP BIT,SHIFT,RXD,BIT DETECTOR SAMPLE TIMES,RI,方式1接收时序,6.3.3 串行口工作方式,3、方式2,9位异步通信接口方式。传送一帧数据信息为11位。,波特率=2SMOD/64fosc,1)方式2发送,数据由TXD端输出,附加的第9位数据由SCON中的TB8提供。 CPU 执行一条写SBUF指令,就启动了串口发送,发送完TI置1。,2)方式2接收,与方式1相似,REN被置“1”后,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。,6.3.3 串

32、行口工作方式,STOP BIT,方式2发送时序,TX CLOCK,WRITE TO SBUF,SEND,DATA,D0,D1,D2,D3,D4,D5,D6,D7,START BIT,SHIFT,TXD,TI,TB8,6.3.3 串行口工作方式,方式2接收时序,TX CLOCK,START BIT,STOP BIT,SHIFT,RXD,D0,D1,D2,D3,D4,D5,D6,D7,BIT DETECTOR SAMPLE TIMES,RI,RB8,4、方式3,9位异步通信接口方式。,波特率=2SMOD/32T1的溢出率,其他与方式2类似,6.3.3 串行口工作方式,6.3.4 波特率的设计,1、

33、方式0的波特率是固定的:,波特率=fosc/12,2、方式2波特率取决于SMOD,波特率=2SMOD/32T1的溢出率,方式2波特率=2SMOD/64 fosc,SMOD=0时,波特率=fosc/64;SMOD=1时,波特率=fosc/32。,3、方式1、3波特率取决于T1的溢出率,SMOD=0时,波特率= T1的溢出率/32;SMOD=1时,波特率= T1的溢出率/16。,4、定时器1作波特率发生器,T1的溢出率 = 计数速率 / (2K - 初值),K为计数器T1的位数。,K=13(方式0);K=16(方式1);K=8(方式2),T1为计数器时:,T1为定时器时:,T1的溢出率 = fos

34、c / 12(2K - 初值),工作于方式1、3时波特率:,波特率=2SMOD / 32T1的溢出率,= 2SMOD fosc / 32 12 (2K - 初值),6.3.4 波特率的设计,6.3.4 波特率的设计,定时器1产生的常用波特率,6.3.5 串行口的应用,例6:把内部RAM 40H5FH单元中的ASCII码,在最高位D7加上奇偶校验位后由甲机发送到乙机,波特率为1.2K,晶振fosc = 11.0592MHz。,解:1、设置甲机为串行方式1发送状态,SCON40H;乙机为串行方式1接收状态,SCON50H(REN置为1,允许接收)。 2、甲乙机用定时器T1(工作方式2,自动重新装载

35、初值)波特率发生器,波特率为1.2K,当fosc = 11.0592MHz时,查表得重装初值为E8H。定时器T1方式字TMOD20H。 3、ASCII码奇偶校验位的加入,可采用以下程序实现:MOV A, #ASCII MOV C, P ;P=1,奇数个“1” ;P=0,偶数个“1”CPL C ;奇校验MOV ACC.7,C ;在D7加上奇校验位,6.3.5 串行口的应用,甲机软件:MOV TMOD, #20H ;定时器T1为方式2MOV TL1, #0E8H MOV TH1, #0E8H ;赋初值,1.2KHz的波特率SETB TR1 ;启动T1MOV SCON, #40H ;串行口方式1MO

36、V R0, #40H ;R0作指针MOV R1, #32 ;发送32个字节 NEXT: MOV A, R0 ;取ASCII码LCALL SOUT ;转发送子程序INC R0 ;修改指针DJNZ R1, NEXT ;未发送完则继续 SOUT: MOV C, P CPL C ;采用奇校验MOV ACC.7, C ;插入奇校验位MOV SBUF, A ;发送JNB TI, $ ;等发送中断标志,查询方式CLR TI ;允许再发送RET,6.3.5 串行口的应用,乙机软件: 设乙机接收到的32个字节存放在60H7FH单元中。MOV TMOD, #20H ;定时器T1为方式2 MOV TL1, #0E8

37、H MOV TH1, #0E8H ;1.2K的波特率 SETB TR1 ;启动T1MOV R0, #60H ;ASCII码首址指针MOV R1, #32 ;接收32个字节 NEXT: LCALL RIN ;转接收子程序JNC ERR ;若“1”的个数为偶则出错MOV R0, A ;接收的字符存入缓冲区INC R0 ; 修改缓冲区指针DJNZ R1, NEXT ;未完则继续 RIN: MOV SCON, #50H ;启动串行口接收,串口方式1,允许接收JNB RI, $ ;等接收中断标志,查询方式MOV A, SBUF ;接收数据送AMOV C, P ;C(P)ANL A, #7FH ;屏蔽最高位(奇偶位)CLR RI RET ERR: ,6.3.5 串行口的应用,例7:串行口方式2、方式3用于多机通信。,主从式结构的多机系统,6.3.5 串行口的应用,多机通信原理流程,作业题:,P.155156:2、3、5、7、13、15、17、18、19、21,第6章 主要功能单元,

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报