133 / 149 page

宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
133
附录 C: 用串行口扩展 I/O 接口
STC12Cxxxx 串行口的方式 0 可用于 I/O 扩展。如果在应用系统中,串行口未被占用,那么将它用
来扩展并行 I/O 口是一种经济、实用的方法。
在操作方式 0 时,串行口作同步移位寄存器,其波特率是固定的,为 fosc/12 (fosc 为振荡器频
率)。数据由 RXD 端(P3.0)出入,同步移位时钟由 TXD 端(P3.1)输出。发送、接收的是 8 位数据,低位
在先。
一、用 74LS165 扩展并行输入口
下图是利用两片 74LS165 扩展二个 8 位并行输入口的接口电路图。
H G F E D C B A
5
4
3 14 13 12 11
6
QH
QH
S/L
CP
VCC
SIN
74LS165
15
8
16
12Cxxxx
P3.0
P3.1
P1.0
H G F E D C B A
5
4
3 14 13 12 11
6
QH
QH
S/L
CP
SIN
74LS165
15
2
2
7
10
74LS165 是 8 位并行置入移位寄存器。当移位 / 置入端(S/L)由高到低跳变时,并行输入端的数据置
入寄存器;当 S/L=1 ,且时钟禁止端(第 15 脚)为低电平时,允许时钟输入,这时在时钟脉冲的作
用下,数据将由 Q A 到 Q H 方向移位。
上图中,TXD(P3.1)作为移位脉冲输出端与所有 74LS165 的移位脉冲输入端 CP 相连;RXD(P3.0)
作为串行输入端与 74LS165 的串行输出端 QH 相连;P1.0 用来控制 74LS165 的移位与置入而同 S/L 相连;
74LS165 的时钟禁止端(15 脚)接地,表示允许时钟输入。当扩展多个 8 位输入口时,两芯片的首尾
(Q H 与 S IN )相连。
下面的程序是从 16 位扩展口读入 5 组数据(每组二个字节),并把它们转存到内部 RAM 20H 开始的
单元中。
MOV
R7 ,#05H
;设置读入组数
MOV
RO ,#20H
;设置内部 RAM 数据区首址
START :
CLR
P1.0
;并行置入数据,S/L=0
SETB P1.0
;允许串行移位 S/L=1
MOV
R1 ,#02H
;设置每组字节数,即外扩 74LS165 的个数
RXDATA : MOV
SCON,#00010000B
;设串行方式 0 ,允许接收,启动接收过程
WAIT :
JNB
RI ,WAIT
;未接收完一帧,循环等待
CLR
RI
;清 RI 标志,准备下次接收
MOV
A ,SBUF
; 读入数据
MOV
@R0 ,A
;送至 RAM 缓冲区
INC
R0
;指向下一个地址
DJNZ R1 ,RXDATA
; 为读完一组数据 , 继续
DJNZ R7 ,START
;5 组数据未读完重新并行置入
……
;对数据进行处理
9
7
10 9
1
1
VCC
8
16
104
104