跳转至

串行口原理及应用

外设:定时器,串口

串行传输方式

  • 单工方式:只能沿一个方向进行传输
  • 半双工方式:在特定时刻内只能沿一个方向
  • 全双工方式:任何一方在同一时刻既能发送又能接收

  • 异步传输: 传递以字符位单位:由起始位、停止位包装起来

  • 同步传输:对数据块进行传输

波特率

串行通信的传送速率,每秒钟信号电平的变化次数

单位:BAUD

比特率:每秒传送二进制数据的位数,单位bit/s

串行口结构

SBUF 99H 发送/接受数据寄存器

99H,但是发送和接收时两个独立的缓冲器,全双工

MOV SBUF,A 开始引发串口的发送,发送完毕,SCON.TI=1

MOV A,SBUF 接收到一帧数据时,接收完毕,SCON.RI=1

SCON,98H

98H 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0,SM1工作方式选择器
运行模式 功能 波特率
0 8位寄存器 $ f_{osc}/12$
1 10位异步 \(\frac{2^{smod}}{32}\times\frac{f_{osc}}{12\times(256-X)}\)
2 11位异步 $ f_{osc}/64\cdot 2^{smod}$
3 11位异步 \(\frac{2^{smod}}{32}\times\frac{f_{osc}}{12\times(256-X)}\)

T1 控制M1,M3的波特率。

SM2

多机通信控制位

若SM2=1 ,当接收到第 9 数据位 RB8 为 1 ,则数据有效并使 RI=1 ,产生串行口接收中断。当接收到第 9 数据位RB8 为 0 ,则数据无效,不产生中断。

若SM2=0 ,则无论接收到的第 9 数据位 RB8 为 1 或为 0,数据均有效,并使 RI=1 ,产生串行口接收中断。

串行口工作方式为0 时, SM2 必须设置为 0

串行口工作方式为1 时,若 SM2=1 ,停止位必须为 1

REN

允许接收位,REN=1 允许接收;软件置位

TB8 发送第8位数据

方式2、3,TB8要发送的第9位数据

TB8=0,发送数据

TB8=1,发送地址

RB8 接收数据位8

方式1中停止位数据

TI

发送中断标志,硬件置位、软件清除

RI

接收中断标志

IE,A8H

A8 AF AE AD AC AB AA A9 A8
IE中断允许控制寄存器 EA中断允许总控制 ES串行终端允许控制 ET1定时器中断允许控制 EX1外部中断允许控制 ET0 EX0

ES 串行口中断

PCON

87H D7 D6 D5 D4 D3 D2 D1 D0
PCON SMOD WLE GF1 GF0 PD掉电方式 IDL

SMOD = 1 波特率倍增

工作方式

模式0

8位数据

TXD P3.1 输出时钟

RXD P3.0 输入输出数据

发送: MOV SBUF,A;TI置位,CPU中断则从0023H开始执行中断。

接收:REN=1,RI清零,启动接收;REN=0,set RI=1。

image-20240601133151752image-20240601133254974

模式1

image-20240622162926865

RXD P3.0:接收数据

TXD P3.1:发送数据

1位起始位,1位停止位,8位数据

采样速率:16倍波特率

发送:MOV SBUF,A;TI置位

接收:REN=1,且RI=0,P3.1(RXD)由1变0;复位16分频计数器,使之边沿对齐;

​ 停止:RI置位条件:RI=0,接收到停止位为1;满足则,RI=1,RB8=1;

模式2、3

image-20240622163656958

1位起始位,1位停止位,9位数据,第9位由TB8决定

模式2: 波特率固定

模式3:由T1/T2溢出率决定

发送:MOV SBUF,A;TI置位

接收: REN=1,且RI=0,P3.1(RXD)由1变0

例程

Text Only
; set BodeRate
MOV TMOD,#20H
MOV TL1, #XXH
MOV TH1, #XXH
; interrupt
SETB EA
SETB/CLR ES
CLR ET1
; SET PCON
MOV PCON, #00H
; SET RECEIVE/TRANSFER
CLR TI
SETB TR1
MOV SCON,#40H
Text Only
ORG 0000H
SJMP MAIN
ORG 0023H
AJMP SIERIE
ORG 0030H
MAIN:
    MOV TMOD,#20H
    MOV TL1,#0F3H
    MOV TH1,#0F3H
    SETB EA
    CLR ES
    CLR ET1
    SETB TR1
    MOV R0,#20H ;传输数据的首地址
    MOV R7,#3FH ;待传输数据的末地址
    MOV R1,#80H ;接收数据的首地址
    MOV SCON,#050H
    SETB ES
    MOV A,@R0
    MOV SBUF,A
    SJMP $

SIERIE:
    JB TI,FINISH_SEND
    AJMP JUDGER
FINISH_SEND:
    CLR TI
    INC R0
    CJNE R0,R7,CONTINUE
    AJMP END1
CONTINUE:
    MOV A,@R0
    MOV SBUF,A
JUDGER:
    JNB RI,END1
    CLR RI
    MOV A,SBUF
    MOV @R1,A
    INC R1
END1:
    RETI