230 likes | 453 Views
基本概念 RS-232 接口 MCS-51 的串行接口 单片机与单片机之间的通信 单片机与 PC 机之间的通信. 第 章 串行口通信技术. Single Chip Microcomputer. 本章内容. 发送. 计算机1 GND. 计算机2 GND. 计算机1 GND. 计算机2 GND. 接收. 并行通信. 串行通信. 什么是串行通信?. 串行通信和并行通信. 并行通信,即数据的各位 同时 传送;. 串行通信,即数据 一位一位 顺序传送。. A 站. B 站. 单工通信. 发送器. 接收器. (. a. ).
E N D
基本概念 RS-232接口 MCS-51的串行接口 单片机与单片机之间的通信 单片机与PC机之间的通信 第章串行口通信技术 Single Chip Microcomputer 本章内容
发送 计算机1 GND 计算机2 GND 计算机1 GND 计算机2 GND 接收 并行通信 串行通信 什么是串行通信? • 串行通信和并行通信 并行通信,即数据的各位同时传送; 串行通信,即数据一位一位顺序传送。
A站 B站 单工通信 发送器 接收器 ( a ) 发 发 发 发 收 收 收 收 A站 B站 A站 A站 ( b ) ( c ) 串行通信的分类:异步(Asynchronous Communication) 同步(Synchronous Communication) 串行通信制式:单工(a)、半双工(b)和全双工(c) (simplex half duplex full duplex)
MCS-51的串行接口 • 概述 • 有一个可编程全双工串行通信接口(UART) (Universal Asychronous Receiver/Transmitter ) • 可同时发送、接收数据(Transmit/Receive) • 有四种工作方式,帧格式有8、10、11位。 • 波特率(Baud rate)可设置 波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。
MCS-51串行接口寄存器 • SBUF——串行口数据缓冲器 • 共两个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。 • SCON——串行口控制寄存器。 • PCON——电源及波特率选择寄存器,格式如下:
SM0 9FH SM1 9EH SM2 9DH 9CH REN TB8 9BH 9AH RB8 TI 99H 98H RI 接收中断标志 工作方式选择 发送中断标志 多机通信控制位 允许串行接收位 接收数据的第9位 发送数据的第9位 控制寄存器SCON
SM0 SM1 工作方式 功能 波特率 0 0 方式0 8位同步移位寄存器 fosc/12 0 1 方式1 10位UART 可变 1 0 方式2 11位UART fosc/64或fosc/32 1 1 方式3 11位UART 可变 串行方式的定义 例:设串行口工作在方式1,允许接收,则指令为: MOV SCON,#01010000B
SMOD × × × GF1 GF0 PD IDL 电源及波特率选择寄存器PCON 87H 只有该位有用,为1时,波特率×2;为0时不变。
串行口的四种工作方式 波特率的设定可参见表8.2,实际无需计算。 • 方式的选择由SM1、SM0实现。 • 四种方式的比较:
方式0 在方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口。 方式0用于扩展I/O口输出
方式1 串行口为波特率可调的10位通用异步接口UART。发送或接收一帧信息,包括1位起始位0,8位数据位和1位停止位1。 10位的帧格式
方式2 串行口为11位UART,传送波特率与SMOD有关。发送或接收一帧数据包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。 11位的帧格式
方式3 方式3为波特率可变的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。
在方式2中,波特率取决于PCON中的SMOD值: • 当SMOD=0时,波特率为fosc/64; • 当SMOD=1时,波特率为fosc/32.即波特率 = 。 SMOD 2 f osc 64 MCS-51串行口的波特率 1.方式0和方式2的波特率是固定的 • 在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变
波特率/(b/s) fosc/MHz SMOD 定时器1 C/ 模式 初始值 方式0:1 方式2:375 k 方式1、3:62.5 k 19.2 k 9.6 k 4.8 k 2.4 k 1.2 k 137.5 k 110 110 12 12 12 11.059 11.059 11.059 11.059 11.059 11.986 6 12 × 1 1 1 0 0 0 0 0 0 0 × × 0 0 0 0 0 0 0 0 0 × × 2 2 2 2 2 2 2 2 1 × × FFH FDH FDH FAH F4H E8H 1DH 72H FEEBH T 2. 方式1和方式3的波特率可变,由定时器1的溢出率决定
单片机之间的通信 双机异步通信接口电路
双机通信软件编程 查询方式 1) 甲机发送 编程将甲机片外1000H~101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375 kb/s,晶振为12 MHz, 所以SMOD=1。
参考发送子程序如下: MOV SCON,#80H ;设置串行口为方式2 MOV PCON,#80H ;SMOD=1 MOV DPTR,#1000H ;设数据块指针 MOV R7,#20H ;设数据块长度 START: MOVX A,@DPTR ;取数据给A MOV C,P MOV TB8,C ;奇偶位P送给TB8 MOV SBUF,A ;数据送SBUF,启动发送 WAIT: JBC TI,CONT ;判断一帧是否发送完。若送完,清TI,取下一个数据 AJMP WAIT ;未完等待 CONT: INC DPTR ;更新数据单元 DJNZ R7,START ;循环发送至结束 RET
2) 乙机接收 编程使乙机接收甲机发送过来的数据块,并存入片内50H~6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。 在进行双机通信时,两机应采用相同的工作方式和波特率。
参考接收子程序如下: MOV SCON,#80H ;设置串行口为方式2MOV PCON,#80H ;SMOD=1 MOV R0,#50H ;设置数据块指针MOV R7,#20H ;设置数据块长度SETB REN ;启动接收WAIT:JBC RI,READ ;判断是否接收完一帧。若完,清RI,读入数据AJMP WAIT ;未完等待READ:MOV A,SBUF ;读入一帧数据a JNB PSW.0,PZ ;奇偶位为0则转JNB RB8, ERR ;P=1,RB8=0,则出错 SJMP RIGHT ;二者全为1,则正确PZ: JB RB8, ERR ;P=0,RB8=1,则出错RIGHT: MOV @R0, A ;正确,存放数据INC R0 ;更新地址指针DJNZ R7, WAIT ;判断数据块是否接收完CLR PSW.5 ;接收正确,且接收完清F0标志RET ;返回ERR: SETB PSW.5 ;出错,置F0标志为1RET ;返回