MCS51串行通信(2).ppt

上传人:仙人指路1688 文档编号:2673726 上传时间:2023-02-22 格式:PPT 页数:35 大小:123.02KB
返回 下载 相关 举报
MCS51串行通信(2).ppt_第1页
第1页 / 共35页
MCS51串行通信(2).ppt_第2页
第2页 / 共35页
MCS51串行通信(2).ppt_第3页
第3页 / 共35页
MCS51串行通信(2).ppt_第4页
第4页 / 共35页
MCS51串行通信(2).ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《MCS51串行通信(2).ppt》由会员分享,可在线阅读,更多相关《MCS51串行通信(2).ppt(35页珍藏版)》请在三一办公上搜索。

1、1,10 MCS-51的串行通信,通信的概念MCS-51的串行通信控制器通信及其应用,2,基本概念,通信方式串行与并行单工、半双工、全双工波特率异步通信的字符编码同步与异步,3,串行与并行,并行通信:字符各位同时传输串行通信:同一字符的各位依次传输字符与字符之间总是串行传输优缺点比较同等技术条件下的速度成本(硬件成本、传输协议的兼容性),4,单工通信,单工(Simplex)特点:仅能进行一个方向的数据传送,5,半双工通信,半双工(Half Duplex)特点:数据可以在两个方向上进行传送,但是这种传送绝不能同时进行。【双向,但不同时】,6,全双工通信,全双工(Full Duplex)特点:能够

2、在两个方向同时进行数据传送。,7,通信速率,比特率每秒传输的二进制位数,单位为bps(bit per second)。波特率每秒传输的离散状态数(也称离散状态)。在一个信道上,如果只有高、低电平两种离散状态(分别代表“1”和“0”),则波特率与比特率刚好一致。如果在某个信道中可以传输多种不同的离散状态,则每个状态可以携带两位或两位以上的二进制数,此时,波特率就不等于比特率。波特率有标准值,8,异步(Asynchronous)通信字符编码,以字符为单位传输帧的组成:“起止同步式”效率、时钟的准确性要求,9,例10-1,某异步通信的波特率为4800,8个数据位,无校验位,一个停止位。试估算每个字符

3、传输所需要的时间。解:起始位1位,8位数据位,无校验位,一个停止位,则一个字符的编码为1+8+0+1=10位。波特率为4800,即4800位/秒,传输10位所需要的时间是10/48000.002083秒,即2.083毫秒。,10,同步方式(Synchronous),实现原理:数据线、时钟线具体实现:增加导线、增加信道、锁相环提取同步时钟、数据与时钟编码(曼切斯特)面向位的传输(相对于字符)效率高,成本高,同步字符(SYN1),同步字符(SYN2),数据(DATA),11,异步串行通信的常用物理标准,异步串行通信控制器仍然是TTL兼容电平逻辑“1”和逻辑“0”的电压区分度只有23V,这不适于稍长

4、距离的传输RS-232电平标准(EIARS-232-C)信号线为负逻辑。即:逻辑“1”(-3-15V);逻辑“0”(+3+15V)波特率9600时,可靠的通信距离15m左右,12,9针接口线的信号说明(DB9),13,串行通信控制器,Intel 8250 16C50 16C550 16C552 16C554Intel 8251Z80-PIOMCS-51片上串行通信接口TXD RXD 引脚 SBUF SCON PCON寄存器T1(or T2)波特率发生器,14,MCS-51串行口工作方式,方式0串行移位/方式18位异步串行通信(波特率可变)方式29位异步串行通信(波特率固定)方式39位异步串行通

5、信(波特率可变)串行口控制字寄存器SCON(98H),可位寻址。,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,15,SM2多机通信控制位,一般可简单地置0。REN允许接收控制位。RENl/0时,允许/禁止接收数据。TB8是9位数据通信(方式2,3)发送时的第9位数据,是尾随SBUF中的8位数据。TB8作字符发送时的奇偶校验位,也可作多机通信的地址指示位。RB8是9位数据通信(方式2,3)时接收到的第9位数据。TI是发送缓冲器空标志位,也可作中断标志。TI必须由软件清0。RI是接收就绪标志位,也可作中断标志。RI必须由软件清0。,SM0,SM1,SM2,REN,TB8,RB8,T

6、I,RI,16,PCON(87H),没有位寻址功能。当单片机复位时,SMOD位被清零。,PCON主要用于控制CMOS型MCS51芯片的低功耗操作。其中与串行口有关的只有第7位SMOD。该位控制串行口方式l、2、3时的波特率。,17,方式0移位寄存器输入输出方式,串行同步方式,多作移位寄存器扩展之用。RXD作串行数据线I/O(输入或输出)。TXD作串行时钟(输出)。8位数据输入或输出的顺序是低位在前,高位在后。下图为方式0的时序图。,18,静态数码显示技术,19,74LS164,20,m_DataSEGMENTDATARSEGm_DataDispBuf:DS4DispSEGMENTCODERSE

7、GDispDisplay:MOVSCON,#00H;串行方式0CLRP3.7SETBP3.7MOVB,#4;数据位数MOVR0,#DispBuf;取显示缓冲区首址L:MOVA,R0;取数ADDA,#(TABLE-X);加一个偏移量MOVCA,A+PC;查表X:MOVSBUF,A;标号用于地址计算JNBTI,$;等待送数结束CLRTI;清除发送就绪标志INCR0;调整数据指针DJNZB,L1;循环显示4个数据RETTABLE:DB 12H,0F6H,4AH,0C2H,0A6H,83H,03H,0F2HDB 02H,82H,22H,07H,1BH,16H,0BH,2BH,21,方式18位异步串行通

8、信方式,传送8位数据位按异步编码格式,自动插入起始位、停止位TXD为发送引脚RXD为接收引脚CPU写SBUF激活一个字符的发送过程发送完成后硬件置TI为1,需软件将TI清0异步接收需设置REN=1。接收到的字符保存在SBUF,并置RI=1。RI需软件清0。,22,异步串行通信的编程参考图,fosc,/12,T1 or T2,PCON.7,0,1,/2,波特率,SBUF,BUS,TxD,SBUF,RxD,BUS,TI,RI,并/串,串/并,23,例10-4 T1作为波特率发送器,取常用波特率9600,CPU时钟为11.0592MHz,试初始化T1。一般CPU时钟接近于其工作上限,同时兼顾标准的波

9、特率值。允许差最大为78%,常用11.0592MHz的时钟频率,12分频以后为0.9216MHz=921600Hz;波特率为9600时,波特率时钟为960016=153600Hz;如果选SMOD=0,则中间多出一个2分频,所以T1的输出时钟频率需要达到波特率时钟的2倍,即1536002=307200Hz。T1的分频数为 921600Hz307200Hz=3;如果选SMOD=1,T1的输出时钟频率就是波特率时钟,即153600Hz。T1的分频数为 921600Hz153600Hz=6,24,两种初始化方法,;SMOD=0的初始化语句MOVA,TMODANLA,#0FHORLA,#20HMOVTM

10、OD,AMOVTH1,#(-3)MOVTL1,#(-3)MOVA,PCONANLA,#7FHMOVPCON,ASETBTR1,;SMOD=1的初始化语句MOVA,TMODANLA,#0FHORLA,#20HMOVTMOD,AMOVTH1,#(-6)MOVTL1,#(-6)MOVA,PCONORLA,#80HMOVPCON,ASETBTR1,25,查询方式数据通信举例,串行通信的初始化查询方式的发送查询方式的接收,26,初始化子程序,PUBLICInit_SPORTPUBLIC_Send_CharPUBLICGet_CharSIO_GROUPSEGMENTCODERSEGSIO_GROUP;串行

11、口初始化子程序,无参数,无返回值Init_SPORT:MOVSCON,#50H;串行口通信方式1MOVA,TMODANLA,#0FHORLA,#20HMOVTMOD,AMOVTH1,#(-3)MOVTL1,#(-3)MOVA,PCONANLA,#7FHMOVPCON,ASETBTR1RET,27,发送数据,;发送子程序,参数在R7中,为待发字符,无返回值_Send_Char:MOVA,R7MOVSBUF,AJNBTI,$;等待直到TI=1CLRTI;清除TIRET,28,接收数据,;接收子程序,无参数,有返回值在R7 Get_Char:JNBRI,$CLRRIMOVA,SBUFMOVR7,AR

12、ETEND,29,简单应用主程序(首部),EXTRN CODE(Init_SPORT,_Send_Char,Get_Char)?STACKSEGMENT IDATARSEG?STACK;相对的段DS1;保留一个字节占位CSEGAT 0000HLJMPSTARTM_JOBSEGMENT CODERSEGM_JOBSTART:MOVSP,#?STACK-1;设置堆栈CALLInit_SPORT;初始化串行口;在间接寻址段定义堆栈,该说明必须放在主模块,30,续,MOVB,#19;字符串长度MOVDPTR,#MESSAGE;字符串首地址Print:CLRA;偏移量恒定,修改DPTR取数,变通用法MO

13、VCA,A+DPTR;查表指令读字符串MOVR7,A;传递参数CALL_Send_Char;调用发送子程序INCDPTR;修改DPTRDJNZB,Print;字符串结束判断ALWAYS:;无限循环CALLGet_Char;取读串行口数据,返回值在R7INCR7;对收到的数变化一下CALL_Send_Char;再发送出去SJMPALWAYS MESSAGE:DB“Hello,MCS-51 world!”;字符串定义END,31,中断方式数据通信举例,初始化中断服务程序的安排现场保护与恢复一些技巧,32,数据段定义,PUBLICInit_SPORTPUBLICSEND_LENPUBLICSEND_

14、BUFPUBLICRecDataPUBLICXFlagSIO_BUFSEGMENTDATA;内部RAM的数据段RSEGSIO_BUF;说明为可移动段SEND_LEN:DS1;发送数据长度SEND_ADDR:DS1;发送地址SEND_BUF:DS16;发送数据缓冲区RecData:DS1;接收1字节缓冲区SIO_FLAGSEGMENTBIT;定义一个位寻址段RSEGSIO_FLAG;说明为相对的段XFlagDBIT1;接收到新数据标志,33,中断向量及串口初始化代码,CSEGAT 4*8+3;串行通信的中断向量地址LJMPSPORT_SRV;跳转到中断服务程序的实际入口SIO_GROUPSEGM

15、ENTCODE;与串口通信相关的代码段RSEGSIO_GROUP;串行口初始化子程序,无参数,无返回值,中断方式通信Init_SPORT:MOVSCON,#50H;串行口通信方式1MOVTMOD,#20H;T1方式2,波特率发生器MOVTH1,#(-3);11.0592MHz时可达9600bpsMOVTL1,#(-3)MOVPCON,#00HSETBTR1;启动波特率定时器SETBES;允许串行口中断SETBEA;允许CPU中断RET,34,串行通信中断服务程序现场保护与恢复部分代码,USING1SPORT_SRV:PUSHACCPUSHPSWSETBRS0;选BANK 1CLRRS1RE_ENTER:JBCTI,Send;重入标号JBCRI,ReceiveEXIT:POPPSWPOPACCRETI,35,发送与接收代码,Send:MOVA,SEND_LEN;发送部分JZRE_ENTER;发送长度=0,则不再发送MOVR0,#SEND_ADDR;取当前指针MOVA,R0;取数MOVSBUF,A;发送DECSEND_LEN;发送长度0,则长度-1INCSEND_ADDR;发送地址+1,为下次作准备SJMPRE_ENTERReceive:MOVA,SBUF;接收部分,取数MOVRecData,A;保存刚收到的数SETBXFlagSJMPRE_ENTEREND,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号