350 likes | 518 Views
第 5 章 MCS-5l 的串行接口. 5.1 串行通信的基本概念 5.2 MCS-51 串行口的结构 5.3 串行口的工作方式 5.4 串行口的应用举例 5.5 标准串行通信接口 RS-232C. 退出. 5.1 串行通信的基本概念. 5.1.1 并行通信与串行通信。 5.1.2 串行通信方式 串行通信有三种方式:单工通信、半双工通信和全双工通信。 5.1.3 串行通信的同步方式. 1 、 异步通信. 2 、 同步通信. 5.1.4 波特率. 5.2 MCS-51 串行口的结构.
E N D
第5章 MCS-5l的串行接口 • 5.1 串行通信的基本概念 • 5.2 MCS-51串行口的结构 • 5.3 串行口的工作方式 • 5.4 串行口的应用举例 • 5.5 标准串行通信接口RS-232C 退出
5.1 串行通信的基本概念 • 5.1.1 并行通信与串行通信。 • 5.1.2 串行通信方式 • 串行通信有三种方式:单工通信、半双工通信和全双工通信。 • 5.1.3 串行通信的同步方式
2、 同步通信 5.1.4 波特率
5.2 MCS-51串行口的结构 • 5.2.1 MCS-51串行口的构成 • MCS-51单片机串行口控制寄存器有两个;特殊功能寄存器SCON(98H)利PCON(87H),可以用软件改变两者的内容来控制串行口的工作方式和波特率。
5.2.2 串行口控制寄存器SCON • 串行口控制寄存器SCON决定串行口通信工作方式,控制数据的接收和发送,并标示串行口的工作状态等。其位格式为:
SM0、SM1:串行口工作方式控制位,两位对应四种工作方式,如表7-1所示(fosc是晶振频率)。SM0、SM1:串行口工作方式控制位,两位对应四种工作方式,如表7-1所示(fosc是晶振频率)。
5.2.3 特殊功能寄存器PCON和波特率的选择 电源控制寄存器PCON中只有一位SMOD与串行口工作有关,它的位格式为: SMOD:波特率倍增位。串行口工作在方式1、方式2、方式3时,若SMOD=1,则波特率提高一倍;若SMOD=0,则波特率不提高一倍。单片机复位时,SMOD=0。
1、方式0的波特率 工作方式0时,移位脉冲由机器周期的第6个状态周期S6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的1/12,不受PCON寄存器中SMOD的影响。用公式表示为: 工作方式0的波特率=fosc/12
2、方式2的波特率 工作方式2时,移位脉冲由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中的SMOD位的值,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,波特率为fosc的1/32,用公式表示为; 工作方式2波特率=(2SMOD/64)×fosc
5.3 串行口的工作方式 • 5.3.1 工作方式0 串行扩展为并行方式
5.4 串行口的应用举例 【例5-1】有两台8031单片机相距很近,直接将它们的串行口相连,1#机的TXD接2#机的RXD,2#机的TXD接1#机的RXD,二机的GND相连。二机的晶振频率均为11.0592MHZ,通信的波特率为4800bps。现将第一台8031单片机片内RAM40H~5FH单元内的数据,串行发送到第二台8031单片机片内RAM60H~7FH单元中。
发送与接收的参考程序如下:1#单片机发送程序:发送与接收的参考程序如下:1#单片机发送程序: • ORG 1000H • TX:MOV TMOD , #02H • MOV TH1 , #0FAH • MOV TL1 , #0FAH • MOV SCON , #80H ; • 设定工作方式2 • MOV PCON, #00H ; • 波特率为fosc/64 • SETB TR0
MOV R0 , #40H;设发送数据的地址指针 • MOV R2 , #20H;设发送数据长度 • LOOP:MOV A , @R0;取发送数据送A • MOV C , PSW.0 • MOV TB8 , C;奇偶位送TB8 • MOV SBUF , A;启动发送 • WAIT:JBC TI , LL1;判发送中断标志 • SJMP WAIT
LL1:INC R0 • DJNZ R2 , LOOP • RET • 2#单片机接收程序: • ORG 1000H • RX:MOV TMOD , #02H • MOV TH1 , #0FAH • MOV TL1 , #0FAH • MOV SCON , #90H;设定工作方式2,并允许接收
MOV PCON , #00H • SETB TR0 • MOV R0 , #60H • MOV R2 , #20H • LOOP: JBC RI , MM1;等待接收数据 • SJMP LOOP • MM1: MOV A , SBUF;读入一帧数据 • JB PSW.0 , PP1;判接收端奇偶 • JB RB8 , ERROR ;判发送端奇偶 • SJMP RIGHT
PP1:JNB RB8 , ERROR;接收出错 • RIGHT: MOV @R0 , A;接收正确 • INC R0 • DJNZ R2 , LOOP • ERROR: SETB PSW.5;置出错标志 • RET
【例5-2】甲乙两机进行串行通信,将甲机片外RAM中1000H单元开始的32个数据发送到乙机的片外RAM 1000H开始的单元中。二机的晶振频率均为11.0592MHZ,通信的波特率为1200bps。 设甲、乙机串行口均工作在方式1,根据发送和接收的波特率,设置定时器T1工作在方式2,当SMOD=0,则计数初值为E8H。甲机发送子程序流程图如图7-7(a)所示,乙机接收子程序流程图如图7-7(b)所示。
参考程序如下: • (1)甲机发送子程序: • ORG 1000H • TTTT: MOV TMOD , #20H • MOV TH1 , #0E8H • MOV TL1 , #0E8H • SETB TR1 • MOV SCON , #50H • MOV 87H , #00H
ENTER:MOV DPH , #10H MOV DPL , #00H MOV R4 , #20H MOV R5 , #00H TX1: MOV A , #04H MOV SBUF , A WAIT1:JBC TI , RX1 SJMP WAIT1 RX1: JBC RI , NEXT1 SJMP RX1
NEXT1: MOV A , SBUF • CJNE A , #00H , TX1 • TX2: MOV A , R4 • MOV SBUF , A • ADD A , R5 • MOV R5 , A • WAIT2: JBC TI , TX3 • SJMP WAIT2 • TX3: MOVX A , @DPTR • MOV SBUF , A • ADD A , R5 • MOV R5 , A • INC DPTR
WAIT3:JBC TI , NEXT2 SJMP WAIT3 NEXT2:DJNZ R4 , TX3 MOV A , R5 MOV SBUF , A WAIT4:JBC TI , RX_11H SJMP WAIT4 RX_11H:JBC RI , IF_11H SJMP RX_11H IF_11H:MOV A , SBUF CJNE A , #11H , ENTER RET
(2)乙机接收子程序: • ORG 1000H • RRRR: MOV TMOD , #20H • MOV TH1 , #0E8H • MOV TL1 , #0E8H • SETB TR1 • MOV SCON , #50H • MOV 87H, #00H • ENTER: MOV DPH , #10H • MOV DPL , #00H • MOV R5 , #00H
RX1:JBC RI , IF_04H • SJMP RX1 • IF_04H: MOV A , SBUF • CJNE A , #04H , TX_FFH • MOV A , #00H • MOV SBUF , A • WAIT1: JBC TI , RX2 • SJMP WAIT1 • LJMP RX2 • TX_FFH: MOV A , #0FFH • MOV SBUF , A
WAIT2:JBC TI , LL1 SJMP WAIT2 LL1: LJMP ENTER RX2: JBC RI , LL2 SJMP RX2 LL2: MOV A , SBUF MOV R4 , A MOV R5 , A RX3: JBC RI , LL3 SJMP RX3
LL3:MOV A , SBUF • MOVX @DPTR , A • INC DPTR • ADD A , R5 • MOV R5 , A • DJNZ R4 , RX3 • RX4:JBC RI , LL4 • SJMP RX4 • LL4:MOV A , SBUF • MOV 30H , R5 • CJNE A, 30H , T_ERR
T_RIGHT:MOV A , #11H MOV SBUF , A WAIT3:JBC TI , EN SJMP WAIT3 T_ERR:MOV A , #0F0H MOV SBUF , A WAIT4:JBC TI , AGAIN SJMP WAIT4 AGAIN:LJMP ENTER EN:RET
5.5 标准串行通信接口RS-232C • 5.5.1接口信号 • 5.5.2 RS-232C接口的典型应用 • 5.5.3 RS-232C接口电平调整