340 likes | 503 Views
9.3 AT89C51 串行接口的应用与编程. 9.3.1 工作方式 0 的应用 串行口工作方式 0 主要用于扩展并行 I/O 口,扩展成并行输出口时,需要外接一片 8 位串行输入并行输出的同步移位寄存器 74HC164 或 CD4094 。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器 74HC165 或 CD4014 。. 数据的串行输出或输入可采用中断方式,也可采用查询标志位 TI 、 RI 的方法,在移位初始化时,要进行相应的设置。
E N D
9.3 AT89C51串行接口的应用与编程 • 9.3.1 工作方式0的应用 • 串行口工作方式0主要用于扩展并行I/O口,扩展成并行输出口时,需要外接一片8位串行输入并行输出的同步移位寄存器74HC164或CD4094。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器74HC165或CD4014。
数据的串行输出或输入可采用中断方式,也可采用查询标志位TI、RI的方法,在移位初始化时,要进行相应的设置。数据的串行输出或输入可采用中断方式,也可采用查询标志位TI、RI的方法,在移位初始化时,要进行相应的设置。 • [例9.1] 利用串行口工作在方式0,外扩一片74HC164构成一个三位LED动态显示器,并将内部RAM显示单元65H、66H、67H中的内容输出显示。如图9-14所示。
主程序如下: • ORG 0100H • STPRT: MOV SCON,#00H • ;串行口初始化为方式0 • SETB P1.2 ;消去最高显示位 • SETB P1.1 • MOV SBUF,65H ;传送最低显示位 • JNB TI,$ ;传送没结束,等待
CLR P1.0 ;最低位显示 • CLR TI ;清中断标志位 • LCALL DSSJ ;调延时子程序,维持状态 • SETB P1.0 ;消去最低显示位 • MOV SBUF,66H ;传送中间显示位 • JNB TI,$ ;等待传送结束 • CLR P1.1 ;显示中间位 • CLR TI ;清中断标志位
LCALL DSSJ ;调延时子程序,维持状态 • SETB P1.1 ;消去中间显示位 • MOV SBUF,67H ;传送最高显示位 • JNB TI,$ ;等待传送结束 • CLR P1.2 ;显示最高显示位 • CLR TI ;清中断标志位 • RET
[例9.2] 利用串行口工作方式0,扩展一片并行输入串行输出的移位寄存器74LS165,如图9-15所示,构成一个8位并行输入口,输入8位开关量(每一开关量代表不同功能,如启动、停止等),并将其存入固定单元60H中。
串行口工作在方式0,且处于接收状态,则REN置为“1”,SCON的控制字为10H,并行数据采用间隔调用子程序的方式读入,程序如下:串行口工作在方式0,且处于接收状态,则REN置为“1”,SCON的控制字为10H,并行数据采用间隔调用子程序的方式读入,程序如下:
START: CLR P1.0 ;输入并行数据 • SETB P1.0 ;允许串行移位,等待移位脉冲 • MOV SCON ,#10H • ;设串行口方式0,启动接收 • JNB RI,$ ;等待接收一帧数据 • CLR RI ;清中断标志位 • MOV A,SBUF ;读入接收数据 • MOV 60H,A ;存入固定单元 • RET
9.3.2 工作方式1的应用 • 串行方式1主要用于异步双机通信,波特率由定时器T1产生。 • [例9.3] 利用串行口方式1实现一个数据块的传送,数据块存在内部RAM的60H~6FH中,波特率选为2400,并形成和校验数据一起发送。
串行口工作为方式1,且处于发送的单工模式,则SCON控制字为40H。方式1的波特率由T1产生,设T1工作于方式2自动重装初值模式,晶振频率为11.0592 MHz时,计数初值为F4H。用于和校验的算术和存放在70H中,并在数据块的末尾传送出去。 • 通过上面的分析,采用查询法传送数据块的子程序如下:
MOV TMOD,#20H ;设置T1为工作方式2 • MOV TL1,#0F4H ;给T1送初值 • MOV TH1,#0F4H • SETB TR1 • MOV SCON,#40H ;设置串行口为工作方式1 • MOV R0,#60H ;数据块首址送R0 • MOV R1,#10H ;数据块长度送R1 • MOV 70H,#00H
DWFP:MOV A,@R0 • MOV SBUF,A ;发送数据 • ADD A,70H ;对和校验求和 • MOV 70H,A • JNB TI,$ ;未发送完等待 • CLR TI
INC R0 • DJNZ R1,DWFP • MOV SBUF,A ;发送和校验 • JNB TI,$ • CLR TI • RET
9.3.3 工作方式2与工作方式3的应用 • 方式2和方式3都是11位异步通信方式,所不同处仅在于波特率。方式2的波特率只有固定的两种,而方式3的波特率则可由用户设定。 • [例9.4] 利用串行口方式2编制一发送程序,将片内RAM中60H~6FH单元的数据串行发送出去,第九数据位TB8作奇偶校验位。 • 根据要求,将串行口设置为方式2、单工发送,则SCON控制字为80H。波特率选为fosc/64。采用中断方式发送的主程序和中断程序如下:
ORG 0000H • AJMP ZCX1 ;转主程序 • NOP • 0RG 0023H ;串行中断程序 • INC R0 ;被发送数据地址增1 • MOV A,@R0 ;取出待发数据 • MOV C,PSW.0 ;将奇偶位送TB8 • MOV TB8,C • MOV SBUF,A ;发送数据 • DJNZ R1,CSJS ;判断是否发送完 • CLR ES ;发送完关中断
CSJS: CLR TI ;清中断标志 • RETI • NOP • ZCX1: ORG 0100H ;主程序 • MOV SP,#20H ;置堆栈指针 • MOV SCON,#80H ;串行口设置为方式2 • MOV PCON,#00H ;波特率选为fosc/64 • MOV R0,#60H ;数据块首址送R0
MOV R1,#10H ;数据块长度送R1 • SETB EA ;开总中断 • SETB ES ;开串行口中断 • MOV A,@R0 ;取出待发数据 • MOV C,PSW.0 ;将奇偶位送TB8 • MOV TB8,C • MOV SBUF,A ;发送数据 • SJMP ¥ ;等待中断
[例9.5] 试编制串行口在方式3下接收数据块的程序。设单片机晶振为11.0592 MHZ,波特率为2400 b/s,接收数据存在片内RAM的40H起始单元的一段区间内,数据块长度由发送方先发送过来(不超过允许值),每接收一个数据都核对其奇偶校验位,正确存储数据,否则给出出错标志。 • 根据要求,设T1工作于方式2,当SMOD=0时,T1计数初值为F4H。采用查询法编制的程序如下:
START: MOV TMOD,#20H ;置T1工作于方式2 • MOV TH1,#0F4H ;置T1计数初值 • MOV TL1,#0F4H • SETB TR1 ;启动T1 • MOV SCON,#0D0H • ;置串行口工作于方式3允许接收 • MOV PCON,#00H ;设SMOD=0
MOV R0,#40H ;接收数据区首址送R0 • JNB RI,¥ ;等待接收数据块长度字节 • CLR RI ;接收后清RI • MOV A,SBUF • ;将数据块长度读入后存入R1中 • MOV R1,A • OR0: JNB RI,¥ ;等待接收数据 • CLR RI ;接收一个字符后清RI
MOV A,SBUF ;将接收字符读入A • JB PSW.0,OR1 ;进行奇偶位校验 • JB RB8,OR3 • SJMP OR2 • OR1: JNB RB8,OR3 • OR2: MOV @R0,A • ;校验正确存接收数据
INC R0 ;存储单元地址增1 • CLR PSW.5 ;设置正确的标志 • DJNZ R1,OR0 ;没接收完继续接收 • SJMP $ ;接收完停机 • OR3: SETB PSW.5 ;置校验出错标志 • SJMP $ ;停机
9.4 PC机与单片机间的串行通信 • 9.4.1 RS-232C总线标准 • RS-232C总线标准定义了25个引脚的连接器,各信号引脚的定义如表9-3所示。
引 脚 定 义(助记符) 引 脚 定 义(助记符) 1 保护地(PG) 14 辅助通道发送数据(STXD) 2 发送数据(TXD) 15 发送时钟(TXC) 3 接收数据(RXD) 16 辅助通道接收数据(SRXD) 4 请求发送(RTS) 17 接收时钟(RXC) 5 清除发送(CTS) 18 未定义 6 数据准备好(DSR) 19 辅助通道请求发送(SRTS) 7 信号地(GND) 20 数据终端准备就绪(DTR) 8 接收线路信号检测(DCD) 21 信号质量检测 9 未定义 22 音响指示(RI) 10 未定义 23 数据信号速率选择 11 未定义 24 发送时钟 12 辅助通道接收线信号检测(SDCD) 25 未定义 13 辅助通道允许发送(SCTS) • 表9-3 RS-232C信号引脚定义
表9-3中定义的许多信号线是为通信业务联系或信息控制而设置的,在计算机串行通信中主要使用以下一些信号: • (1) 数据传输信号:发送数据(TXD),接收数据(RXD)。 • (2) 调制解调器控制信号:请求发送(RTS),清除发送(CTS),数据准备好(DSR),数据终端准备就绪 (DTR)。 • (3) 时钟信号:发送时钟(TXC),接收时钟(RXC)。 • (4) 地线:保护地(PG),信号地(GND)。
RS-232C总线的其他标准规定如下: • (1) RS-232C总线标准逻辑电平:+5~+15 V表示逻辑“0”,-15~-5 V表示逻辑“1”,噪声容限为2 V。 • (2) 标准数据传输速率:50 b/s、75 b/s、110 b/s、300 b/s、600 b/s、1200 b/s、2400 b/s、4800 b/s、9600 b/s、19 200 b/s。 • 9.4.2 RS-232C接口电路 • 1. MAX232接口电路 • MAX232芯片是MAXIM公司生产的具有两路接收器和驱动器的IC芯片,其内部有一个电源电压变换器,可以将输入+5 V的电压变换成RS-232C输出电平所需的±12 V电压。
MAX232芯片的引脚结构如图9-16所示。其中管脚1~6(C1+、V+、C1-、C2+、C2-、V-)用于电源电压转换,只要在外部接入相应电解电容即可;管脚7~10和管脚11~14构成两组TTL信号电平与RS-232C信号电平的转换电路,对应管脚可直接与单片机串行口的TTL电平引脚和PC机的RS232电平引脚相连。具体连接可参看图9-17。
2.PC机与AT89C51单片机串行通信电路 • 图9-17是由芯片MAX232实现PC机与AT89C51单片机串行通信的典型接线图。图中外接电解电容C1、C2、C3、C4用于电源电压变换,提高抗干扰能力,它们可以取相同数值电容1.0 μF/16 V。电容C5用于对+5 V电源的噪声干扰进行滤波,其值一般为0.1 μF。
3.PC机与多个单片机间的串行通信 • 图9-18表示一台PC机与多个单片机间的串行通信电路。这种通信系统一般为主从结构,PC机为主机,单片机为从机。主从机间的信号电平转换由MAX232芯片实现。