MCS51串行通信_第1页
MCS51串行通信_第2页
MCS51串行通信_第3页
MCS51串行通信_第4页
MCS51串行通信_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、行。 【双向,但不同时】 设备a 发送器/ 接收器 设备b 接收器/ 发送器 data flow 6 全双工通信 全双工(full duplex) 特点:能够在两个方向同时进行数据传送。 设备a 发送器/ 接收器 设备b 接收器/ 发送器 7 通信速率 比特率每秒传输的二进制位数,单位为 bps(bit per second )。 波特率每秒传输的离散状态数(也称离散 状态)。 在一个信道上,如果只有高、低电平两种离散 状态(分别代表“1”和“0”),则波特率与比 特率刚好一致。 如果在某个信道中可以传输多种不同的离散状 态,则每个状态可以携带两位或两位以上的二 进制数,此时,波特率就不等于比

3、特率。 波特率有标准值 8 异步(asynchronous)通信字符编码 以字符为单位传输 帧的组成: “起止同步式” 效率、时钟的准确性要求 9 例10-1 某异步通信的波特率为4800,8个数据 位,无校验位,一个停止位。试估算每个 字符传输所需要的时间。 解:起始位1位,8位数据位,无校验 位,一个停止位,则一个字符的编码为 1+8+0+1=10位。波特率为4800,即4800位/ 秒,传输10位所需要的时间是 10/48000.002083秒,即2.083毫秒。 10 同步方式(synchronous) 实现原理:数据线、时钟线 具体实现:增加导线、增加信道、锁相环提 取同步时钟、数据

4、与时钟编码(曼切斯特) 面向位的传输(相对于字符) 效率高,成本高 同步字符(syn1)同步字符(syn2)数据(data) 11 异步串行通信的常用物理标准异步串行通信的常用物理标准 异步串行通信控制器仍然是ttl兼容电平 逻辑“1”和逻辑“0”的电压区分度只有 23v,这不适于稍长距离的传输 rs-232电平标准(eia rs-232-c) 信号线为负逻辑。即:逻 辑“1”(-3 -15v); 逻辑“0”(+3+15v) 波特率9600时,可靠的通信距离15m左右 12 9针接口线的信号说明(db9) 引脚信号名称 符号 流向 功能 1载波检测dcddtedce表示dce接收到远程载波 2

5、接收数据rxddtedcedte接收串行数据 3发送数据txddtedcedte发送串行数据 4数据终端准备好dtrdtedcedte准备好 5信号地gnd信号公共地 6数据设备准备好dsrdtedcedce准备好 7请求发送rtsdtedcedte请求dce将线路切换到发送方式 8允许发送ctsdtedcedce告诉dte线路已接通可以发送数据 9振铃指示ridtedcedce与线路接通,出现振铃 13 串行通信控制器 intel 8250 16c50 16c550 16c552 16c554 intel 8251 z80-pio mcs-51片上串行通信接口 txd rxd 引脚 sbuf

6、 scon pcon寄存器 t1(or t2)波特率发生器 14 mcs-51串行口工作方式 方式0串行移位/ 方式18位异步串行通信(波特率可变) 方式29位异步串行通信(波特率固定) 方式39位异步串行通信(波特率可变) 串行口控制字寄存器 scon(98h),可位寻址。 sm0sm1sm2rentb8rb8tiri 15 sm2多机通信控制位,一般可简单地置0。 ren允许接收控制位。renl/0时,允许/禁止接收数 据。 tb8是9位数据通信(方式2,3)发送时的第9位数据, 是尾随sbuf中的8位数据。tb8作字符发送时的奇偶校 验位,也可作多机通信的地址指示位。 rb8是9位数据通

7、信(方式2,3)时接收到的第9位数据。 ti是发送缓冲器空标志位,也可作中断标志。 ti必须由 软件清0。 ri是接收就绪标志位,也可作中断标志。 ri必须由软 件清0。 sm0sm1sm2rentb8rb8tiri 16 pcon(87h),没有位寻址功能。 当单片机复位时,smod位被清零。 d7d6d5d4d3d2d1d0 smodgf1 gf0 pdidl pcon主要用于控制cmos型mcs51 芯片的低功耗操作。 其中与串行口有关的只有第7位smod。 该位控制串行口方式l、2、3时的波特率。 17 方式0移位寄存器输入输出方式移位寄存器输入输出方式 串行同步方式,多作移位寄存器扩

8、展之用。 rxd作串行数据线i/o(输入或输出)。 txd作串行时钟(输出)。 8位数据输入或输出的顺序是低位在前,高位在后。 下图为方式0的时序图。 18 静态数码显示技术 19 74ls164 20 m_datasegmentdata rsegm_data dispbuf:ds4 dispsegmentcode rsegdisp display:movscon,#00h;串行方式0 clrp3.7 setbp3.7 movb,#4;数据位数 movr0,#dispbuf;取显示缓冲区首址 l:mova,r0;取数 adda,#(table-x);加一个偏移量 movca,a+pc;查表 x

9、:movsbuf,a;标号用于地址计算 jnbti, $;等待送数结束 clrti;清除发送就绪标志 incr0;调整数据指针 djnzb , l1;循环显示4个数据 ret table:db 12h,0f6h,4ah,0c2h,0a6h,83h,03h,0f2h db 02h,82h,22h,07h,1bh,16h,0bh,2bh 21 方式方式18位异步串行通信方式位异步串行通信方式 传送8位数据位 按异步编码格式,自动插入起始位、停止位 txd为发送引脚 rxd为接收引脚 cpu写sbuf激活一个字符的发送过程 发送完成后硬件置ti为1,需软件将ti清0 异步接收需设置ren=1。接收到

10、的字符保存在 sbuf ,并置ri=1。ri需软件清0。 22 异步串行通信的编程参考图 fosc/12t1 or t2 pcon.7 0 1 /2 波特率 sbufbustxd sbufrxdbus ti ri 并/串 串/并 23 例例10-4 t1作为波特率发送器作为波特率发送器 取常用波特率9600,cpu时钟为11.0592mhz,试初始化t1。 一般cpu时钟接近于其工作上限,同时兼顾标准的波特率值。允 许差最大为78%, 常用11.0592mhz的时钟频率,12分频以后为0.9216mhz = 921600hz; 波特率为9600时,波特率时钟为960016=153600hz;

11、如果选smod=0,则中间多出一个2分频,所以t1的输出时钟频 率需要达到波特率时钟的2倍,即1536002 = 307200hz。t1的分 频数为 921600hz307200hz = 3; 如果选smod=1,t1的输出时钟频率就是波特率时钟,即 153600hz。t1的分频数为 921600hz153600hz = 6 24 两种初始化方法 ;smod=0的初始化语句 mova,tmod anla,#0fh orla,#20h movtmod,a movth1,#(-3) movtl1,#(-3) mova,pcon anla,#7fh movpcon,a setbtr1 ;smod=1

12、的初始化语句 mova,tmod anla,# 0fh orla,#20h movtmod,a movth1,#(-6) movtl1,#(-6) mova,pcon orla,#80h movpcon,a setbtr1 25 查询方式数据通信举例 串行通信的初始化 查询方式的发送 查询方式的接收 26 初始化子程序 publicinit_sport public_send_char publicget_char sio_group segmentcode rsegsio_group ;串行口初始化子程序,无参数,无返回值 init_sport:mov scon,# 50h ;串行口通信方式

13、1 mov a,tmod anla,#0fh orla,#20h mov tmod,a mov th1,#(-3) mov tl1,#(-3) mov a,pcon anla,#7fh mov pcon,a setb tr1 ret 27 发送数据 ;发送子程序,参数在r7中,为待发字符,无返回值 _send_char: mova,r7 movsbuf,a jnbti,$;等待直到ti=1 clrti;清除ti ret 28 接收数据 ;接收子程序,无参数,有返回值在r7 get_char:jnbri,$ clrri mova,sbuf movr7,a ret end 29 简单应用主程序(首

14、部) extrncode(init_sport,_send_char,get_char) ?stacksegmentidata rseg?stack;相对的段 ds1;保留一个字节占位 csegat0000h ljmpstart m_jobsegmentcode rsegm_job start:movsp,#?stack-1;设置堆栈 callinit_sport ;初始化串行口 ;在间接寻址段定义堆栈,该说明必须放在主模块 30 续 movb,#19;字符串长度;字符串长度 movdptr,#message;字符串首地址;字符串首地址 print:clra;偏移量恒定,修改;偏移量恒定,修改

15、dptr取数,变通用法取数,变通用法 movca,a+dptr;查表指令读字符串;查表指令读字符串 movr7,a;传递参数;传递参数 call_send_char;调用发送子程序;调用发送子程序 incdptr;修改修改dptr djnzb,print;字符串结束判断字符串结束判断 always:;无限循环;无限循环 callget_char;取读串行口数据,返回值在;取读串行口数据,返回值在r7 incr7;对收到的数变化一下;对收到的数变化一下 call_send_char;再发送出去;再发送出去 sjmpalways message: db“hello,mcs-51world!”;字符

16、串定义;字符串定义 end 31 中断方式数据通信举例 初始化 中断服务程序的安排 现场保护与恢复 一些技巧 32 数据段定义 publicinit_sport publicsend_len publicsend_buf publicrecdata publicxflag sio_bufsegmentdata;内部;内部ram的数据段的数据段 rsegsio_buf;说明为可移动段;说明为可移动段 send_len:ds1;发送数据长度;发送数据长度 send_addr:ds1;发送地址;发送地址 send_buf:ds16;发送数据缓冲区;发送数据缓冲区 recdata:ds1;接收;接收1

17、字节缓冲区字节缓冲区 sio_flagsegmentbit;定义一个位寻址段;定义一个位寻址段 rsegsio_flag;说明为相对的段;说明为相对的段 xflagdbit1;接收到新数据标志;接收到新数据标志 33 中断向量及串口初始化代码 csegat4*8+3;串行通信的中断向量地址;串行通信的中断向量地址 ljmpsport_srv;跳转到中断服务程序的实际入口;跳转到中断服务程序的实际入口 sio_groupsegmentcode ;与串口通信相关的代码段;与串口通信相关的代码段 rsegsio_group ;串行口初始化子程序,无参数,无返回值,中断方式通信;串行口初始化子程序,无

18、参数,无返回值,中断方式通信 init_sport:movscon,#50h ;串行口通信方式;串行口通信方式1 movtmod,#20h;t1方式方式2,波特率发生器,波特率发生器 movth1,#(-3);11.0592mhz时可达时可达9600bps movtl1,#(-3) movpcon,#00h setbtr1;启动波特率定时器启动波特率定时器 setbes;允许串行口中断;允许串行口中断 setbea;允许;允许cpu中断中断 ret 34 串行通信中断服务程序 现场保护与恢复部分代码 using1 sport_srv: pushacc pushpsw setbrs0;选选bank1 clrrs1 re_enter: jbcti,send;重入标号;重入标号 jbcri,receive exit:poppsw popacc reti 35 发送与接收代码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论