
单片微机原理及应用课件 第10章 串行通信及其接口.ppt
69页第第10章章 串行通信及其接口串行通信及其接口•10.2 串行串行通信基础通信基础•10.2 MCS-51串行串行通信通信•10.3 MCS-51串行串行通信工作方式通信工作方式10.1串行串行通信基础通信基础•一、串行通信的基本概念一、串行通信的基本概念•串串行行通通信信::是是将将数数据据的的各各位位一一位位一一位位地地依依次次传传送送传传送送距距离离较较远远,,适适合合于于计计算算机机之之间间、、计计算算机机与与外外部设备之间的远距离通信部设备之间的远距离通信•并并行行通通信信::指指数数据据各各位位同同时时传传送送速速度度快快、、效效率率高、距离短高、距离短•串行通信有串行通信有 同步通信和异步通信两种方式:同步通信和异步通信两种方式:返回本章首页同步字符同步字符CRC字符字符开始开始终止终止数据块数据块图图9-5 同步通信数据格式同步通信数据格式返回本节•同同步步通通信信::每每个个数数据据块块开开始始时时,,发发送送一一个个或或两两个个同同步步字字符符,,使使发发送送和和接接收收双双方方取取得得同同步步,,数数据据块块各各字字符符间间取取消消了了起起始始位位和和发发送送位位。
如如发发送送的的数数据据之之间间有有间间隔隔时时,,用用发发送送同同步步字字符符填填充较少使用)较少使用)•同步字符由用户规定,如:同步字符由用户规定,如:01111110•同步传送时,收、发双方要求时钟和频率一致较少使用)同步传送时,收、发双方要求时钟和频率一致较少使用)图图9-4 异步串行通信数据帧格式异步串行通信数据帧格式•异异步步通通信信::数数据据在线路路上上是是以以一一个个字字((或或字字符符))为为单单位位来来传传送送的的不不需需严严格格的的同同步步时时钟钟控控制制,,也也不不需需数数据据流流的的连连续续性性在串行通信中常用在串行通信中常用•数数据据帧帧::包包含含起起始始位位((“0”电电平平)),,数数据据位位((从从低低位位到到高高位逐位数据传送),奇偶校验位、停止位(用位逐位数据传送),奇偶校验位、停止位(用“1”表示) • 线线路路不不传传送送数数据据时时,,应应保保持持为为“1”((保保证证起起始始处处有有一一个下跳沿)个下跳沿) 单片机的串行通信使用的是异步串行通信单片机的串行通信使用的是异步串行通信,所谓异步就是,所谓异步就是指发送端和接收端使用的不是同一个时钟。
异步串行通信通常指发送端和接收端使用的不是同一个时钟异步串行通信通常以字符(或者字节)为单位组成字符帧传送字符帧由发送端以字符(或者字节)为单位组成字符帧传送字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收一帧一帧地传送,接收端通过传输线一帧一帧地接收在异步通信中,收、发两方必须事先规定两件事:在异步通信中,收、发两方必须事先规定两件事: 1. 字符帧的帧格式字符帧的帧格式 字字符符帧帧由由四四部部分分组组成成,,分分别别是是起起始始位位、、数数据据位位、、奇奇偶偶校校验验位、停止位如图所示:位、停止位如图所示: 1)) 起起始始位位::位位于于字字符符帧帧的的开开头头,,只只占占一一位位,,始始终终位位逻逻辑辑低低电平,表示发送端开始发送一帧数据电平,表示发送端开始发送一帧数据 2)) 数数据据位位::紧紧跟跟起起始始位位后后,,可可取取5、、6、、7、、8位位,,低低位位在在前前,,高位在后高位在后3)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。
据需要选定4))停停止止位位::末末尾尾,,为为逻逻辑辑“1”高高电电平平,,可可取取1、、1.5、、2位位,,表表示示一一帧帧字符传送完毕字符传送完毕如:如:ASCII码帧(字符)为码帧(字符)为10位其中:数据其中:数据7位位 起始位、校验位、停止位各一位起始位、校验位、停止位各一位 字符帧格式字符帧格式 2. 传送的速率传送的速率 串串行行通通信信的的速速率率用用波波特特率率来来表表示示,,所所谓谓波波特特率率就就是是指指一一秒秒钟钟传传送送数数据据位位的的个个数数每每秒秒钟钟传传送送一一个个数数据据位位就就是是1波波特特即即::1波特=波特=1bps((位位/秒)秒) 在在串串行行通通信信中中,,数数据据位位的的发发送送和和接接收收分分别别由由发发送送时时钟钟脉脉冲冲和和接接收收时时钟钟脉脉冲冲进进行行定定时时控控制制时时钟钟频频率率高高,,则则波波特特率率高高,,通通信速度就快;反之,时钟频率低,波特率就低信速度就快;反之,时钟频率低,波特率就低, 通信速度就慢通信速度就慢如如120个字符(帧)个字符(帧)/秒,每帧数据有秒,每帧数据有10位,则传输速率为位,则传输速率为1200波特率。
波特率1200bit/s))接收器接收器图图9-1 单工方式单工方式发送器发送器 1.单向数据传送:数据只向一个方向传送单向数据传送:数据只向一个方向传送二、串行通信数据传送方向二、串行通信数据传送方向接收器接收器接收器接收器 发送器发送器发送器发送器 数据流数据流 图图9-2 半双工方式半双工方式2.半半双双向向数数据据传传送送::用用一一根根传传送送线线既既作作输输入入又又作作输输出出,,但但通通信信双双方方不不能能同同时时收收、、发发数数据据要要改改变变数数据据传传送送方方向向,,必必须须进进行通信双方的收、发设备的开关行通信双方的收、发设备的开关 切换切换发送器发送器接收器接收器数据流数据流接收器接收器发送器发送器图图9-3 全双工方式全双工方式3.全全双双向向数数据据传传送送::由由两两根根传传送送线线来来发发送送和和接收数据,双方可同时进行发送和接收接收数据,双方可同时进行发送和接收 串行数据通信要解决两个关键技术问题,一个是串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换所谓数据传送,另一个是数据转换所谓数据传送数据传送就是指就是指数据以什么形式进行传送。
所谓数据以什么形式进行传送所谓数据转换数据转换就是指单片就是指单片机在接受数据时,如何把接收到的串行数据转化为并机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如行数据,单片机在发送数据时,如 何把并行数据转换何把并行数据转换为串行数据进行发送为串行数据进行发送 所有串行接口电路都是以并行数据形式和所有串行接口电路都是以并行数据形式和CPU接接口,以串行数据形式和外部通信接口口,以串行数据形式和外部通信接口 •通用异步接收发送器通用异步接收发送器UART 接收器接收器 发送器发送器 控制部件控制部件串行输入串行输入时钟时钟复位复位并行输入并行输入时钟时钟控制信号控制信号并行输出并行输出数数据据总线总线串行输出(对外)串行输出(对外)状状态态信信息息控制信息控制信息UART基本组成框图基本组成框图UART主要功能:主要功能:1、数据的串化、反串化、数据的串化、反串化数据的串化:将并行数据变为串行数据;(发送器)数据的串化:将并行数据变为串行数据;(发送器)数据的反串化:将串行数据变为并行数据;(接收器)数据的反串化:将串行数据变为并行数据;(接收器)2、格式信息的插入和删除、格式信息的插入和删除格式信息:格式信息:异步通信中的异步通信中的起始位、校验位、停止位等。
起始位、校验位、停止位等串化过程:将格式信息插入和数据一起构成一个完整串化过程:将格式信息插入和数据一起构成一个完整的数据帧的数据帧反串化过程:滤出格式信息,保留数据位反串化过程:滤出格式信息,保留数据位3、错误检验、错误检验 检验数据通信过程是否正确检验数据通信过程是否正确•10.2 MCS-51串行串行通信通信•MCS-51单片机将单片机将一个一个“全双工全双工串行通信接口电串行通信接口电路路”集成在集成在单片机内单片机内数据转换数据转换 串串行行接接口口电电路路为为用用户户提提供供了了两两个个串串行行口口缓缓冲冲寄寄存存器器((SBUF)),,一一个个称称为为发发送送缓缓存存器器,,它它的的用用途途是是接接收收片片内内总总线线送送来来的的数数据据,,即即发发送送缓缓冲冲器器只只能能写写不不能能读读发发送送缓缓冲冲器器中中的的数数据据通通过过TXD引引脚脚向向外外传传送送另另一一个个称称为为接接收收缓缓冲冲器器,,它它的的用用途途是是向向片片内内总总线线发发送送数数据据,,即即接接收收缓缓冲冲器器只只能能读读不不能能写写接接收收缓缓冲冲器器通通过过RXD引引脚脚接接收收数数据据。
因因为为这这两两个个缓缓冲冲器器一一个个只只能能写写,,一一个个只只能能读读,,所所以以共共用用一一个个地地址址99H串行接口电路如图所示串行接口电路如图所示MCS-51串行口寄存器结构串行口寄存器结构 •串行串行接收的双缓冲结构接收的双缓冲结构 移位寄存器移位寄存器 数据缓冲器数据缓冲器SBUF 一帧数据(一帧数据(8位)接收完,由移位寄存器装入位)接收完,由移位寄存器装入SBUF,,立即接收下一帧要求主机应立即将立即接收下一帧要求主机应立即将SBUF中中数据取走否则前一帧数据将丢失数据取走否则前一帧数据将丢失 发送是由发送是由CPU操纵的,不会发生帧重叠错误操纵的,不会发生帧重叠错误将数据写入将数据写入SBUF,(,(自动)通过移位脉冲一位一自动)通过移位脉冲一位一位地发送出去位地发送出去二级二级10.2.1 MCS-51单片机串行通信的控制寄存器单片机串行通信的控制寄存器与与串行通信有关的寄存器有三个串行通信有关的寄存器有三个1. 串行口控制寄存器(串行口控制寄存器(SCON)) SCON是是MCS-51单单片片机机的的一一个个可可位位寻寻址址的的专专用用寄寄存存器器,,用用于于串串行行数数据据通通信信的的控控制制。
单单元元地地址址为为98H,,位位地地址址为为98H~~9FH寄寄存存器器的的内内容容及及位位地地址址表表示示如下:如下: 位地址位地址 9FH 9EH9DH9CH 9BH9AH 99H98H位符号位符号 SM0 SM1SM2RENTB8RB8TIRI各位的说明如下:各位的说明如下:1)) SM0 、、SM1——串行口工作方式选择位串行口工作方式选择位 2)) SM2——允许方式允许方式2、、3的多机通信控制位的多机通信控制位 在在方方式式2和和3中中,,若若SM2==1且且接接收收到到的的第第九九位位数数据据((RB8))为为1,,才才将将接接收收到到的的前前8位位数数据据送送入入接接收收SBUF中中,,并并置置位位RI产产生生中中断断请请求求;;否否则则丢丢弃弃前前8位位数数据据若若 SM2==0,,则则不不论论第第九九位位数数据据((RB8))为为1还还是是为为0,都将前都将前8位送入接收位送入接收SBUF中,并产生中断请求中,并产生中断请求方式方式0时,时,SM2必须置必须置0 多机通信的机制:多机通信的机制:地址帧地址帧 数据帧数据帧 地址帧地址帧被确认的从机,复位被确认的从机,复位SM2=0,,接收接收RB8=0的数据。
的数据RR8=1 地址帧地址帧RR8=0 数据帧数据帧SM2=1 多机方式多机方式SM2=0 直通方式直通方式3)) REN——允许接收位允许接收位 (通过软件值位、复位通过软件值位、复位) REN==0 禁止接收数据禁止接收数据 REN==1 允许接收数据允许接收数据4)) TB8——发送数据位发送数据位8 在在方方式式2、、3时时,,TB8的的内内容容是是要要发发送送的的第第9位位数数据据(格格式式信信息息))在在多多机机通通信信中中,,通通过过TB8状状态态来来表表示示主主机机发发送送的的是是地地址址帧帧((1)),,还还是是数数据据帧帧((0)),,其值由用户通过软件来设置其值由用户通过软件来设置5)) RB8——接收数据位接收数据位8 (和(和TB8对应)对应) 在在方方式式2、、3时时,,RB8是是存存放放接接收收的的第第9位位数数据据可可判判断断是是地地址址帧帧((1)),,还是数据帧(还是数据帧(0) 在方式在方式1时,时,RB8是接收的停止位。
是接收的停止位 在方式在方式0时,不使用时,不使用RB8 A B单机方式单机方式 主机主机 从机从机2 从机从机1 从机从机n 多机方式多机方式6)) TI——发送中断标志位发送中断标志位 在方式在方式0时,发送完第时,发送完第8位数据后,该位由硬件置位位数据后,该位由硬件置位 在其它方式下,于发送停止位开始时,由硬件置位在其它方式下,于发送停止位开始时,由硬件置位 因因此此,,TI==1表表示示帧帧发发送送结结束束,,其其状状态态既既可可供供软软件件查查询使用,也可请求中断询使用,也可请求中断 TI必须必须由软件清由软件清““0””7 7)) RI——接收中断标志位接收中断标志位 在方式在方式0时,接收完第时,接收完第8位数据后,该位由硬件置位位数据后,该位由硬件置位 在在其其它它方方式式下下,,于于接接收收到到停停止止位位中中间间时时,,该该位位由由硬硬件件置位 因因此此,,RI==1表表示示帧帧接接收收结结束束,,其其状状态态既既可可供供软软件件查查询使用,询使用, 也可请求中断。
也可请求中断 RI由由必须必须软件清软件清““0””2. 电源控制寄存器(电源控制寄存器(PCON)) PCON不不可可位位寻寻址址,,字字节节地地址址为为87H它它主主要要是是为为CHMOS型型单单片片机机80C51的的电电源源控控制制而而设设置置的的专专用用寄寄存存器其内容如下:器其内容如下: 与串行通信有关的只有与串行通信有关的只有D7位(位(SMOD),),该位为波特率倍增该位为波特率倍增位,当位,当SMOD=1时,串行口波特率增加一倍,当时,串行口波特率增加一倍,当SMOD=0时,串时,串行口波特率为设定值行口波特率为设定值当系统复位时,当系统复位时,SMOD=0 位序位序D7D6D5D4D3D2D1D0位符号位符号SMOD///GF1GF0PDIDL3. 3. 中断允许控制寄存器(中断允许控制寄存器(IEIE))进行字行字节操作操作时,寄存器地址,寄存器地址为0A8H按位操作按位操作时,各位的地,各位的地址址为0A8H~0AFH寄存器的内容及位地址表示如下:寄存器的内容及位地址表示如下: 位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符号EA//ESET1EX1ET0EX0ES:串口中断允许位串口中断允许位ES=0::禁止串口中断禁止串口中断ES=1::允许串口中断允许串口中断8.3 8.3 MCS-51MCS-51串行通信工作方式串行通信工作方式 串行口的工作方式由串行口的工作方式由SM0SM0和和SM1SM1确定,编码和功能如表所示。
确定,编码和功能如表所示 方式方式0 0和方式和方式2 2的波特率是固定的,而方式的波特率是固定的,而方式1 1和方式和方式3 3的波特的波特率是可变的,由率是可变的,由T1T1的溢出率决定的溢出率决定SM0 SM1方式方式功能说明功能说明波特率波特率0 0方式方式0移位寄存器方式移位寄存器方式fosc/120 1方式方式18位位UART可变可变1 0方式方式29位位UARTfosc/64 或者或者fosc/321 1方式方式39位位UART可变可变方式方式0发送时序发送时序10.3.1 串行工作方式串行工作方式0(移位方式)(移位方式)1. 数据输出(发送)数据输出(发送) 并口扩展并口扩展P147 当数据写入当数据写入SBUF后,数据从后,数据从RXD((P3.0))端在移位脉冲端在移位脉冲TXD((P3.1fosc/12P3.1fosc/12))的控制下,逐位移入的控制下,逐位移入74LS164,,74LS164能完成能完成数据的数据的串并转换串并转换。
当当8位数据全部移出后,位数据全部移出后,TI由硬件置位,由硬件置位,发生中断请发生中断请求若CPU响应中断,则从响应中断,则从0023H单元开始执行串行口中断服务程序,单元开始执行串行口中断服务程序,数据由数据由74LS164并行输出其接口逻辑如图所示并行输出其接口逻辑如图所示图图为接口逻辑为接口逻辑移移位位数数据据::一一帧帧8位位低低位位在在前前,,高高位位在在后后,,没没有有起起始始位位、、停止位图为图为 方式方式0接收时序接收时序2. 数据输入(接收)数据输入(接收) 要要实实现现接接收收数数据据,,必必须须首首先先把把SCON中中的的允允许许接接收收位位REN设设置置为为1当当REN设设置置为为1时时,,数数据据就就在在移移位位脉脉冲冲的的控控制制下下,,从从RXD端端输输入入当当接接收收到到8位位数数据据时时,,置置位位接接收收中中断断标标志志位位RI,,发发生生中中断断请请求求其其接接口口逻逻辑辑如如图图所所示示由由逻逻辑辑图图可可知知,,通通过过外外接接74LS165,,串串行行口口能能够够实实现现数数据据的的并行输入并串转换)并行输入并串转换)图图为为外接移位寄存器输入外接移位寄存器输入 •数据输出(发送):数据输出(发送): 当当8位数据全部移出后位数据全部移出后 ,,TI被自动被自动置置位。
位•数据输入(接收):数据输入(接收): 当当REN=1((允许接收),接收到允许接收),接收到8位数据时,位数据时,RI被自动置被自动置1 【【例】使用例】使用74LS164的并行输出端接的并行输出端接8支发光二极管,支发光二极管,利用它的串入并出功能,把发光二极管从左到右依次点利用它的串入并出功能,把发光二极管从左到右依次点亮,并反复循环假定发光二极管为共阴极接法亮,并反复循环假定发光二极管为共阴极接法图图为为电路设计电路设计 解:电路如图软件部分如下:解:电路如图软件部分如下: ORGORG0000H0000H LJMPLJMPMAINMAINORGORG1000H1000HMAINMAIN:: MOVMOVSCONSCON,,#00H#00H ;;串行口工作在方式串行口工作在方式0 0 CLRCLRESES ;;禁止串行中断禁止串行中断 MOVMOVA A,, #80H #80H ;;发光二极管从左边亮起发光二极管从左边亮起DELRDELR:: CLRCLRP1.0P1.0 ;;关闭并行输出关闭并行输出MOVMOVSBUFSBUF,, A A ;;串行输出串行输出WAINTWAINT::JNBJNBTITI,, WAIT WAIT ;;状态查询状态查询SETBSETBP1.0P1.0 ;;开启并行输出开启并行输出ACALLACALLDELAY DELAY ;;调用延时子程序调用延时子程序 CLRCLRTITI ;;清发送中断标志清发送中断标志 RRRRA A ;;发光右移发光右移AJMPAJMPDELRDELR ;;继续继续EDNEDN 10.3.2 串行工作方式串行工作方式1 方式方式1为为10位一帧的异步串行通信方式。
其帧格式为位一帧的异步串行通信方式其帧格式为1个起始位、个起始位、8个数据位和个数据位和1个停止位如图所示个停止位如图所示图图为为方式方式1的帧格式的帧格式1. 数据输出(发送)数据输出(发送) 数数据据写写入入SBUF后后,,开开始始发发送送,,此此时时由由硬硬件件自自动动加加入入起起始始位位和和停停止止位位,,构构成成一一帧帧数数据据,,由由TXD串串行行输输出出输输出出一一帧帧数数据据后后,,TXD保保持持在在高高电电平平状状态态下下((停停止止位位1)),,并并将将TI置位,通知置位,通知CPU可以进行下一个字符的发送可以进行下一个字符的发送图图为方式为方式1发送时序发送时序图图为方式为方式1接收时序接收时序2. 数据输入(接收)数据输入(接收) 被动状态被动状态 当当REN=1且且接接收收到到起起始始位位后后((1到到0)),,在在移移位位脉脉冲冲的的控控制制下下,,把把接接收收到到的的数数据据移移入入接接收收缓缓冲冲寄寄存存器器((SBUF))中中,,直直到到停停止止位位到到来来后后,,把停止位送入把停止位送入RB8((1))中,并置位中,并置位RI,,通知通知CPU接收到一个字符。
接收到一个字符3. 波特率的设定波特率的设定 工作在方式工作在方式1时,其波特率是可变的,波特率的计算公式为:时,其波特率是可变的,波特率的计算公式为: 其其中中,,SMOD为为PCON寄寄存存器器最最高高位位的的值值,,其其值值为为1 或或0波特率波特率=2^SMOD*定时器定时器1的溢出率的溢出率/32 当定时器当定时器1作波特率发生器使用时,选用定时工作方式作波特率发生器使用时,选用定时工作方式2(即自动(即自动加载定时初值方式)选择定时工作方式加载定时初值方式)选择定时工作方式2可以避免通过程序反复装可以避免通过程序反复装入定时初值所引起的定时误差,使波特率更加稳定假定计数初值为入定时初值所引起的定时误差,使波特率更加稳定假定计数初值为X,,则计数溢出周期为:则计数溢出周期为: 溢出率为溢出率为溢出周期溢出周期的倒数则波特率的计算公式为:的倒数则波特率的计算公式为: 实际使用中,波特率是已知的因此需要根据波特实际使用中,波特率是已知的因此需要根据波特率的计算公式求率的计算公式求定时初值定时初值X用户只需要把定时初值设用户只需要把定时初值设置到定时器置到定时器1,就能得到所要求的波特率。
就能得到所要求的波特率 图图为两台为两台8031直接通信直接通信 应用举例(用方式应用举例(用方式1实现双机串行通信)实现双机串行通信)((1)通信双方的硬件连接)通信双方的硬件连接 作作为为应应用用系系统统首首先先要要研研究究通通信信双双方方如如何何连连接接一一种种办办法法是是把把两两片片8051的的串串行行口口直直接接相相连连,,一一片片8051的的TXD与与另另一一片片的的RXD相相连连,,RXD与与另另一一片片的的TXD相相连连,,地地与与地地连连通通由由于于8051串串行行口的输出是口的输出是TTL电平,两片相连所允许的距离极短电平,两片相连所允许的距离极短2)通信双方的软件约定)通信双方的软件约定 为实现双机通信,我们规定如下:为实现双机通信,我们规定如下:• 假定假定A机为发送机,机为发送机,B机为接收机机为接收机• 当当A机机发发送送时时,,先先送送一一个个“AA”信信号号,,B机机收收到到后后回回答答一一个个“BB” 信号,表示同意接收信号,表示同意接收• 当当A机机接接收收到到““BB””后后,,开开始始发发送送数数据据,,每每发发送送一一次次求求一一次次““检检查查和和””,,假假定定数数据据块块长长16个个字字节节,,起起始始地地址址为为30H,,一一个个数据块发送完后再发出数据块发送完后再发出““检查和检查和””。
B机机接接收收数数据据并并转转存存到到数数据据区区,,起起始始地地址址也也为为30H,,同同时时每每接接收收一一次次也也计计算算一一次次“检检查查和和”,,当当一一个个数数据据块块收收齐齐后后,,再再接接收收A机机发发来来的的“检检查查和和”,,并并将将它它与与B机机的的“检检查查和和”进进行行比比较较若若两两者者相相等等,,说说明明接接收收正正确确,,B机机回回答答一一个个00;;若若两两者者不不相相等等,,说说明明接接收收不不正正确确,,B机机回回答答一一个个FF,,请请求重发• A机机收收到到00的的答答复复后后,,结结束束发发送送若若收收到到的的答答复复非非0,,则则重重新新将将数数据据发送一次发送一次• 双方均以双方均以1200波特的速率传送假设晶振频率为波特的速率传送假设晶振频率为6MHz ,,计算定时器计算定时器1的计数初值:的计数初值: 为使波特率不倍增,设定为使波特率不倍增,设定PCON寄存器的寄存器的SMOD=0,,则则 PCON==00H ..((3))基本的通信程序基本的通信程序 设计程序框图如图所示。
设计程序框图如图所示图图为为 双机通信程序结构图双机通信程序结构图 根据结构图设计出下述通信程序:根据结构图设计出下述通信程序:A机通信程序:机通信程序:ASTART:MOV TMOD,,#20H ;;设定定时器设定定时器1工作方式工作方式2 MOV TL1,,#0F3H ;;设定计数初值设定计数初值 MOV TH1,,#0F3H ;;计数重装值计数重装值 MOV PCON,,#00H ;;波特率不倍增波特率不倍增 SETB TR1 ;;启动启动T1 MOV SCON,,#50H;;设置串行口方式设置串行口方式1ATT1: MOV SBUF,, #0AAH;;发送发送“AA”AWAIT1: JBC TI,, ARR1 ;;等待一帧发送完等待一帧发送完 SJMP AWAIT1ARR1: JBC RI,,ARR2 ;;等待应答信号等待应答信号 SJMP ARR1 ARR2: MOVA,, SBUF XRLA,,#0BBH JNZATT1 ;;判断是否是应答信号判断是否是应答信号“00”ATT2: MOVR0,, #30H MOVR7,,#10 MOVR6,,#00HATT3: MOVSBUF,, @R0 MOVA,,R6 ADDA,,@R0 MOVR6,,A INCR0AWAIT2: JBCTI,,ATT4 SJMPAWAIT2 ;;发送有效数据发送有效数据ATT4: DJNZR7,, ATT3 ;;判断是否传送完毕判断是否传送完毕 MOVSBUF,, R6AWAIT3: JBCTI,, ARR3 SJMPAWAIT3 ;;等待等待ARR3: JBCRI,, ARR4 SJMPARR3 ;;等待等待ARR4: MOVA,, SBUF JNZATT2AEND: RETB机通信程序:机通信程序:BST\ART: MOVTMOD,, #20H ;;设定定时器设定定时器1工作方式工作方式2 MOVTH1,,#0F2H ;;设定计数初值设定计数初值 MOVTL1,,#0F2H ;;计数重装值计数重装值 MOVPCON,,#00H ;;波特率不倍增波特率不倍增 SETBTR1 MOVSCON,,#50HBRR1: JBC RI,BRR2 SJMP BRR1 ;;等待等待BRR2: MOV A,SBUF ;;把接收到的数据送入把接收到的数据送入A XRL A,#0AAH ;;判断接收到数据是否是判断接收到数据是否是“AA” JNZ BRR1 ;;如果不是继续等待如果不是继续等待BTT11: MOVSBUF,0BBH ;;发送应答信号发送应答信号BWAIT1: JBCTI, BRR3 ;;等待等待 SJMPBWAIT1BRR3: MOVR0,#30H ;;接收有效数据接收有效数据 MOVR7,#10 MOVR6, ,#00HBRR4: JBCRI,BRR5 SJMPBRR4 BRR6: MOV A,, SBUF XRL A,,R6 JZ BEND MOV SBUF,,#0FFHBWAIT3: JBC TI,, BRR3 SJMP BWAIT3BEND: MOV SBUF,, #00H RET 串行工作方式串行工作方式2、、3• 当当SM0SM1=10、、11时时,,串串行行口口工工作作在在方方式式2、、3。
方方式式2波波 特特 率率 为为 (( 1/64)) fosc或或 (( 1/32)) fosc,, 方方 式式 3波波 特特 率率=((2SMOD/32))×定定时时器器T1的的溢溢出出率率,,为为波波特特率率可可变变的的9位位异步通信方式,除了波特率外,方式异步通信方式,除了波特率外,方式3和方式和方式2相同•字符帧字符帧11位:位:•起起始始位位((0))1位位、、数数据据位位8位位、、可可程程控控第第9位位数数据据、、停停止止位位((1))1位•发送时,发送时,第第9位数据由位数据由SCON中中TB8位提供,软件设置:位提供,软件设置:• SETB TB8 ; CLR TB8 (多机通信时)多机通信时)•接收时,接收时,串行口把接收到的前串行口把接收到的前8个数据位送入个数据位送入SBUF,而把而把•第第9位数据装入位数据装入SCON中中RB8位,系统自动装入位,系统自动装入 返回本节 图图为方式为方式2发送时序发送时序图为图为 方式方式2的接收时序的接收时序波特率的计算波特率的计算波特率计算公式表7-3 常用的波特率及计算器初值返回本节•对于可变波特率(方式对于可变波特率(方式1、、3)其计算公式:)其计算公式: 波特率波特率=((2SMOD/32))×定时器定时器T1的溢出率的溢出率定时器溢出率:定时器溢出率:单位时间定时器溢出的次数;单位时间定时器溢出的次数;溢出率为溢出率为溢出周期溢出周期的倒数。
的倒数溢出周期:溢出周期:定时器溢出一次所需时间定时时间)定时器溢出一次所需时间定时时间) 当定时器当定时器T1作作波特率发生器时,通常选用定时方式波特率发生器时,通常选用定时方式2((8位自动加载),位自动加载),可以避免通过程序反复装入定时初值可以避免通过程序反复装入定时初值所引起的定时误差,使波特率更加稳定所引起的定时误差,使波特率更加稳定假定计数初值为假定计数初值为X,,则计数溢出周期为:则计数溢出周期为: 则波特率的计算公式为:则波特率的计算公式为: 实际使用中,实际使用中,①①首先确定波特率;(双方已相互约定)首先确定波特率;(双方已相互约定)②②再根据波特率的计算公式求定时再根据波特率的计算公式求定时1 1初值初值X;;③③然后进行定时器然后进行定时器1的初始化的初始化,就能得到所要求的波,就能得到所要求的波 特率 SMOD值可通过值可通过 MOV PCON,#00H或或MOV PCON,#80H设定例:例:设设fosc=6MHZ,,波特率为波特率为1200bit/s,,计算计算定时器定时器1的的计数初值串行口为工作方式计数初值。
串行口为工作方式1,写出相应的初始化程序写出相应的初始化程序 解:设解:设SMOD=0,,T1为工作方式为工作方式2•初始化程序:初始化程序:•MOV TMOD,#20H ;;设置设置T1工作方式工作方式2•MOV TL1,#0F3H ;;计数初值计数初值•MOV TH1,#0F3H;;•SETB EA ;;中断允许中断允许•MOV PCON,#00H ;;波特率不倍增波特率不倍增•MOV SCON,#50H ;;串行串行方式方式1,,REN=1•SETB TR1 ;;启动启动T1工作工作多机通信接口多机通信接口1.多机通信原理.多机通信原理 串串行行口口控控制制寄寄存存器器SCON中中的的SM2为为多多机机通通信信接接口口控控制制位位串串行行口口以以方方式式2或或3接接收收时时,,若若SM2为为1,,则则仅仅当当接接收收到到的的第第9位位数数据据RB8为为1时时,,数数据据才才装装入入SBUF,,置置位位RI,,请请求求CPU对对数数据据进进行行处处理理;;当当SM2为为0时时,,则则接接收收到到一一个个数数据据后后,,不不管管第第9位位数数据据RB8是是0还还是是1,,都都将将数数据据装装入入接接收收缓缓冲冲器器SBUF并置位中断标志并置位中断标志RI,,请求请求CPU处理。
处理……图为图为 MCS-51单片机主从式多机通信单片机主从式多机通信 8051 TXD RXD•多机通信:多机通信:一台主机和多台从机之间的通信一台主机和多台从机之间的通信•多机通信机制:多机通信机制:主机发送信息,可以传送到各个从机或指主机发送信息,可以传送到各个从机或指定从机,各从机发送的信息只能被主机接收定从机,各从机发送的信息只能被主机接收•主机发送:主机发送:地址帧地址帧 数据帧数据帧 地址帧地址帧 通过第9位数位数 据确据确 定 TB8=1,,地址帧地址帧 TB8=0,,数据帧数据帧•从机接收:从机接收:串口工作在方式串口工作在方式2、、3下下,, 多机通信标志多机通信标志SM2(SCON.5)=1时,时,当当RB8=1::地址帧,将数据装入地址帧,将数据装入SBUF,,置置RI,,发出接收中发出接收中 断请求RB8=0::数据帧,在数据帧,在SM2=1,, RB8=0时,接收数据丢弃时,接收数据丢弃•SM2=0:直通方式,直通方式,不论不论RB8是是0还是还是1,都将收到的数据,都将收到的数据装入装入SBUF,,并发出中断请求。
再置并发出中断请求再置SM2=1))• 对于所有从机,由于对于所有从机,由于SM2=1,, RB8=1,(,(都都接收地址接收地址帧)各自发出中断请求判断主机发送的是否与本机相符,帧)各自发出中断请求判断主机发送的是否与本机相符,若相符,则从机若相符,则从机SM2清清0(变成(变成直通方式直通方式),准备),准备接收其接收其后发送来的数据后发送来的数据•多机通信过程:多机通信过程:•①① 全部从机串口工作方式初始化为全部从机串口工作方式初始化为2或或3,置位,置位SM2,允允 许中断;许中断;•②② 主机置位主机置位TB8,,发送要寻址的从机地址;发送要寻址的从机地址;•③③ 所有从机均接收主机所有从机均接收主机发送的地址,进入中断进行地址发送的地址,进入中断进行地址 比较;比较;•④④ 确认确认寻址从机,自身寻址从机,自身SM2清清0,向主机返回地址,供,向主机返回地址,供 主机核对;主机核对;•⑤⑤ 核对无误,核对无误,从机向被寻址从机发送命令,通知从机进从机向被寻址从机发送命令,通知从机进 行一对一的数据通信。
行一对一的数据通信多机通信程序设计多机通信程序设计 P195•串行串行通信的接口标准通信的接口标准•美国电子工业协会公布的串行通信的接口标准美国电子工业协会公布的串行通信的接口标准((EIA))•正逻辑:正逻辑:•高电平用高电平用“1”表示;表示;•低电平用低电平用“0”表示;表示;•RS232((电压型总线标准)电平逻辑:电压型总线标准)电平逻辑:负逻辑•带负载时:逻辑带负载时:逻辑1::-5V~-15V 逻辑逻辑0::+5V~+15V不带负载时:输出电平,不带负载时:输出电平,-25V~+25V 输入电压,输入电压,-25V~+25V•RS232串行信息格式:串行信息格式:•MCS-51串行口通信采用串行口通信采用TTL正逻辑正逻辑•逻辑逻辑1::+2.4V•逻辑逻辑0::0.4V•因此,因此, RS232与与MCS-51串行口接口时,必须进行串行口接口时,必须进行电平转电平转换换1” –12V“0” +12V•电平转换常用芯片:电平转换常用芯片:•传输线驱动器:传输线驱动器:MC1488•供电电压:供电电压:±12V,输入输入TTL电平,输出电平,输出RS232电平。
电平 实现将实现将TTL逻辑电平转换为逻辑电平转换为RS232逻逻 辑电平•传输线接收器:传输线接收器:MC1489•供电电压:供电电压:±5V,输入输入RS232电平,输出电平,输出TTL电平 (a)MC1488 (b)MC1489图7-20 MC1488,MC1489引脚•RS232接口常用信号:接口常用信号:•信号线信号线 引脚引脚•保护地保护地 1•信号地信号地 7•发送数据发送数据TXD 2•接收数据接收数据RXD 3•请求发送请求发送RTS((输出)输出) 4•消除发送消除发送CTS ((输入)输入) 5•数据准备好数据准备好((输入)输入) 6两台两台8031采用采用RS232C总线通信总线通信TXDRXDTXDRXD1~2米距离米距离•长距离可用长距离可用485,,MODEM,,GPS,,等。
等THANK YOU VERY MUCH !!•本章到此结束,本章到此结束,•谢谢!谢谢!结束放映返回本章首页。












