当前位置:
文档之家› C51系列单片机有一个全双工的串行口
C51系列单片机有一个全双工的串行口
(2) 数据接收
串行口作为并行输入口使用时,要有“并入串出” 的移位寄存器配合。
74HC165 S/L端为移位/置入端,当S/L=0时,从Q0~ Q7并行置入数据,当S/L=1时,允许从QH端移出数据。在 80C51串行控制寄存器SCON中的REN=1时,TXD端发出移位 时钟脉冲,从RXD端串行输入8位数据。当接收到第8位数 据D7后,置位中断标志RI,表示一帧数据接收完成。
KIN: MOV SCON,#00H;串行口方式0
CLR ES
;禁止串行中断
CLR P1.0 ;锁存并行输入数据
SETB P1.0 ;允许串行移位操作
SETB REN
;允许并启动接收(TXD发送移位脉冲)
JNB RI,$
;等待接收完毕
MOV 40H,SBUF ;存入K1~K8状态数据
RET
;
2、串行工作方式1
;读顺序编号
MOVC A,@A+DPTR ;读控制字
CLR P1.0
;关闭并行输出
MOV SBUF,A ;启动串行发送
JNB TI,$
;等待发送完毕
CLR TI
;清发送中断标志
SETB P1.0
;开启并行输出
LCALL DLY500ms ;调用延时0.5秒子程序(参阅例4-13)
INC R7
;指向下一控制字
5) RB8 —— 方式2和方式3中要接收的第9位数据。
6) TI —— 发送中断标志。
7) RI —— 接收中断标志。
3、电源控制寄存器PCON
PCON
D7 D6 D5 D4 D3
位名称
SMOD — — — GF1
D2 RB8 9AH 接收 第9位
D2 GF0
D1 TI 99H 发送 中断
D0 RI 98H 接收 中断
D1 D0 PD IDL
SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。
二、串行工作方式
80C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0 SM1决定。 1、串行工作方式0(同步移位寄存器工作方式)
以RXD(P3.0)端作为数据移位的输入/输出端, 以TXD(P3.1)端输出移位脉冲。 移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出, 均低位在前高位在后。 其帧格式为:
CJNE R7,#30,LP2 ;判循环操作完否?未完继续
SJMP LP1
;顺序编号0~29依次操作完毕,从0开始重新循环
TAB: DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;从左向右依次暗灭,
每次减少一个,直至全灭; DB 80H,40H,20H,10H,08H,04H,02H,01H;从左向右依次点亮,每次亮一个
⑶ 波特率
方式0 波特率固定,为单片机晶振频率的十二分之一。
⑷ 应用举例
【例6-1】电路如图所示,试编制程序按下列顺序要求每隔 0.5秒循环操作。
1) 8个发光二极管全部点亮;
2) 从左向右依次暗灭,每次减少一个,直至全灭; 3) 从左向右依次点亮, 每次亮一个;
。4) 从右向左依次点亮, 每次亮一个;
DB 02H,04H,08H,10H,20H,40H,80H;从右向左依次点亮,每次亮一个 DB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;从左向右依次点亮,
每次增加一个,直至全部点亮;
【例】电路如图所示,试 编制程序输入K1~K8状 态数据,并存入内RAM
40H。
解:编程如下:
5) 从左向右依次点亮, 每次增加一个, 直至全 部点亮;
6) 返回从2)不断循环
解:编程如下:
LIGHT:MOV SCON,#00H ;串行口方式0
CLR ES
;禁止串行中断
MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址
LP1: MOV R7,#0
;置顺序编号0
LP2: MOV A,R7
§6-2 80C51串行口
80C51系列单片机有一个全双工的串行口,这个口既可以用 于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存 器使用。
一、串行口特殊功能寄存器
1、串行数据缓冲器SBUF 在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一 个单元地址99H,用同一寄存器名SBUF。
方式1是一帧10位的异步串行通信方式,包括1个起始位,8个数据 位和一个停止位。
其帧格式为:
起始 D0 D1 D2 D3 D4 D5 D6 D7 停止
⑴ 数据发送 发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停
止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串 行输出。一帧数据发送完毕,将SCON中的TI置1。 ⑵ 数据接收
接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就认定 为已接收到起始位。随后在移位脉冲的控制下,将串行接收数据移入 SBUF中。一帧数据接收完毕,将SCON中的RI置1,表示可以从SBUF取走 接收到的一个字符。
• • • D0 D1 D2 D3 D4 D5 D6 D7 • • •
方式0可将串行输入输出数据转换成并行输入输出数据。
⑴ 数据发送 串行口作为并行输出口使用时,要有“串入并出”移位寄存
器配合。
在移位时钟脉冲(TXD)的控制下,数据从串行口RXD端逐位移 入74HC164 SA、SB端。当8位数据全部移出后,SCON寄存器的TI位被 自动置1。其后74HC164的内容即可并行输出。74HC164 CLR为清0端, 输出时CLR必须为1,否则74HC164 Q0~Q7输出为0。
在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存 器。 发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发 送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接 收数据。
2、串行控制寄存器SCON
SCON
D7 D6
D5
D4
D3
位名称 SM0 SM1
SM2
REN
TB8
位地址 9FH 9EH
9DH
9CH 9BH
功能
工作方式 选择
多机通信 接收 发送
控制பைடு நூலகம்
允许 第9位
1) SM0 SM1 —— 串行口工作方式选择位。
2) SM2 —— 多机通信控制位。
3) REN —— 允许接收控制位。REN=1,允许接收。
4) TB8 —— 方式2和方式3中要发送的第9位数据。