版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
§第六章串行接口
MCS-51单片机内部有一个功能很强的全双工串行口,可同时接收和发送数据。此串行口能方便地与其他计算机或外部设备实现数据通信,也可用于输入/输出口的扩展。一、串行通信的基本概念
基本方式:
并行:8位或16位数据同时传送,速度快、传输线多、传输距离近。串行:数据按位传输,速度慢、传输线少、传输距离远。
一、串行通信的基本概念
串行通信方向:
单工:只能单方向传送数据半双工:同一时间只能作一个方向的传送全双工:双向同时收发数据接收器接收器
发送器发送器
数据流
半双工方式发送器接收器数据流接收器发送器全双工方式一、串行通信的基本概念
串行通信方式:
异步传送方式:数据按字符为单位传送,每帧数据含起始位(0)、数据位、奇偶校验位和停止位(1)4部分组成。同步传送方式:数据按块传送,数据块起始处发同步字符(SYN)。SYN同步字符CRC终止字符开始终止数据块同步通信数据格式二、MCS-51单片机的串行口
1、功能与结构:
MCS-51系列单片机内部有一个全双工的串行端口:P3.0(RXD)、P3.1(TXD),有4种工作方式。二、MCS-51单片机的串行口①串行口有两个独立的接收、发送缓冲器:SBUF,占用同一地址(99H)。发送时,只写不读;接收时,只读不写;中断标志是RI/TI。串行口控制寄存器SCON:
SM0、SM1:串行口工作方式设置位SM2:方式2和方式3的多机通讯控制位(方式0不用)REN:串行接收允许位,0-禁止接收,1-允许接收TB8:在方式2、3中,是要发送的第9位数据。RB8:在方式2、3中,是要接收的第9位数据。(TB8和RB8在方式0中均不用)TI:发送中断标志,须由软件清零。RI:接收中断标志,须由软件清零。
③电源控制寄存器PCON
字节地址87H,无位地址。其中与串行接口有关的只有D7位(PCON的最高位)SMOD:波特率加倍位,1-加倍,0-不加倍
2、串行口的四种工作方式
SM0SMl工作方式方式简单描述波特率000移位寄存器I/O振荡频率/1201110位UART可变10211位UART振荡频率/32或振荡频率/6411311位UART可变方式110位异步通信方式:1个起始位(0)、8个数据位(低位在前)、1个停止位(1)TXD端发送数据,RXD端接收数据方式1波特率可变:波特率=2SMOD/32×(T1的溢出率)溢出率:每秒钟溢出的次数,定时时间的倒数。
方式2、311位异步通信方式:1个起始位(0)、8个数据位(低位在前)、1个附加的第9位和1个停止位(1)
TXD端发送数据,RXD端接收数据方式2只有两种波特率:fosc/32或fosc/64。(2SMOD/64×fosc)。方式3波特率可变:波特率=2SMOD/32×(T1的溢出率)
3、多机通信主从式多机通信系统如下图。利用SM2控制位实现
主机TXDRXDTXDRXDRXDRXDTXDTXD从机2从机1从机n三、串行口应用举例
串行口信号发送流程:置串口方式(SCON)清中断标志TI发送数据送SBUF等待TI为1(查询方式或中断方式)清TI,重复发送数据三、串行口应用举例
串行口信号接收流程:置串口方式(SCON)置REN=1,清中断标志RI等待RI为1(查询方式或中断方式)从SBUF取数据清RI,重复接收数据例1:由串行口发送带偶校验位的ASCⅡ码数据块。设数据块在片内30H~3FH单元。
解:设单片机采用12MHZ晶振,串行口工作于方式1,T1用作波特率发生器,工作于方式2,PCON中的SMOD位为0,发送的波特率为1200。
例1:另:根据题意,TMOD的方式控制字为20H(方式2)串行口SCON方式控制字为40H(方式1)相应的发送程序如下:例1:Tstart:MovTMOD,#20HMovTL1,#0E6H MovTH1,#0E6H MovSCON,#40h MovR0,#30h MovR7,#10H
SETBTR1Loop:MOVA,@R0 Movc,p MovACC.7,c MovSBUF,AWait: jnbTI,Wait ClrTi IncR0 DjnzR7,loop Ret例2:由串行口接受带偶校验位的ASCⅡ码数据块。设接受的数据块共10H个字节,存放于片内40H~4FH单元中。解:设单片机采用的晶振频率、波特率、SMOD位的值等均同上题。相应的接收子程序如下:
例3:设T1选工作方式2,fosc=11.0592MHz,SMOD=0,串行口工作于方式1,试设计一个波特率为2400的发生器。解:2400=n/32 有n=76800
T1的溢出率:N=1/t=fosc/12x(256-x)
故x=244D=0F4H
MOVSCON,#40H MOV TMOD,#20H MOV PCON,#00H MOV TL1,#0F4H MOV TH1,#0F4H SETB TR1例4:编写发送程序,将60H~6FH的数据块从串行口输出。将串行口定义为工作方式2发送,TB8作奇偶校验位。 MOV SCON,#80H MOV PCON,#80H MOV R0,#60H MOV R7,#10HLOOP: MOV A,@R0 MOV C,PSW.0 MOV TB8,C MOV SBUF,AWAIT:JBC TI,CONT SJMP WAIT CONT:INC R0 DJNZ R7,LOOP RET例5:设串行口外接一个串行输入设备,单片机和该设备采用11位异步通信方式,波特率2400,晶振为11.0592MHz,串行口选择工作方式3,定时器T1选工作方式2,SMOD=0时,计算得TL1初始值为0F4H。编制其接收程序。
PVE: MOV TMOD,#20H MOV PCON,#00H MOV TH1,#0F4H MOV TL1,#0F4H SETR TR1 MOV R0,#50H MOV R7,#10H MOV SCON,#0D0HWAIT: JBC RI,PRI SJMP WAITPRI: MOV A,SBUF JNB PSW.0,PNP JNB RB8,PER SJMP RIGHTPNP: JB RB8,PERRIGHT: MOV @R0,A INC R0 DJNZ R7,WAIT CLR PSW.5 ;奇偶校验正确 RETPER: SETB PSW.5 ;奇偶校验出错 RET四﹑串行扩展I/O接口:1.利用SPI扩展I/O接口:
⑴扩展并行输出口:
利用SPI扩展并行输出口示意图,见图6-41。
如图6-41,通过并行口输出片内RAM中20H和21H两个单元数据。MOVR7,#2;置计数器MOVR0,#20H;缓冲区指针MOVSCON,#00H;设置串行口为方式0CLRP1.0;允许串行接收OUT1:MOVA,@R0;取数据MOVSBUF,A;启动发送过程JNBTI,$;等待一帧发送结束CLRTIINCR0;指向下一数据DJNZR7,OUT1SETBP1.0;送出并行数据RET⑵扩展并行输入口:
利用SPI扩展并行输入口的示意图,见图6-42。
图6-42中,经串行口从16位的并行扩展口读入2个字节数据,并存入片内RAM的20H和21H单元中。MOVR7,#2;置计数器MOVR0,#20H;缓冲区指针CLRP1.0;置入并行数据SETBP1.0;允许串行移位MOVSCON,#10H串行口方式0,允许接收stop:JNBRI,$;等待一帧接收结束CLRRIMOVA,SBUF;读入数据MOV@R0,A;送入缓存区INCR0;调整指针DJNZR7,stop;未完,继续RET例6.5:用中断法编写串行口方式1下发送程序。设单片机主频为6MHz,定时器T1用作波特率发生器,波特率为2400bps,发送字符块在内部RAM的起始地址为BLOCK单元,字符块长度为LEN。要求奇校验位在数据的第7位发送,字符块长度LEN先发送。解:为使发送波特率为2400bps,取SMOD=1,计算得TH1和TL1的时间常数初值为0F4H。本程序由主程序和发送子程序两部分组成。其流程图如图6-13所示。主程序用于定时器T1和串行口初始化、发送字符块长度字节LEN、中断系统初始化;中断服务程序用于形成奇校验位并加到发送数据第7位和发送这个字符。ORG2000HBLOCKDATA20HLENDATA14HSTART:MOVTMOD,#20H;定时器T1为方式2M0VTL1,#0F4H;波特率为2400MOVTH1,#0F4H;给TH1送重装初值MOVPCON,#80H;令SMOD=1SETBTR1;启动T1MOVSCON,#40H;串行口为方式1MOVR0,#BLOCK;字符块起始址送R0MOVA,#LENM0VR1,A;字符块长度字节送R1MOVSBUF,A;发送LEN字节SETBEA;开CPU中断SETBES;允许串行口中断WAIT:SJMPWAIT;等待中断发送子程序:
ORG0023HLJMPTXSVE;转发送服务程序ORG2160TXSVE:CLRES;关串行口中断CLRTI;清TI
MOVA,@R0;发送字符送AMOVC,PSW.0;奇偶校验位送CCPLC;形成奇校验位送CMOVACC.7,C;使A中最高位为奇校验位MOVSBUF,A;启动发送DJNZR1,NEXT;所有字符发完停止发送INCR0;未完,字符块指针加1SJMPENDTNEXT:CLRESENDT:RETI;中断返回例6.6:用查询法编写串行口在方式3下的接收程序。设单片机主频为6MHz,波特率为2400bps,接收数据区起始地址为RBLOCK(内部RAM),接收数据块长度由始发端发送。解:本程序由主程序和接收子程序组成。ORG2000HTBLOCKDATA40START:MOVTMOD,#20H;T1工作于方式2MOVTH1,#0F4H;设置时间常数初值MOVTL1,#0F4HSETBTR1;启动T1MOVSCON,#0D0H;串行口工作于方式3接收MOVPCON,#80H;使SMOD=1MOVR0,RBLOCK;接收数据区起始址送R0MOVR3,#00H;累加和寄存器清零ACALLRISV;调接收子程序::SJMP$;动态暂停接收子程序:接收子程序流程图如图6-14(b)所示。参考程序为:RISV:CLRRI;清RILEN:JNBRI,RXLEN;等待接收数据块长度字节CLRRI;接收完后清RIMOVA,SBUF;数据块长度字节送A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论