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

下载本文档

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

文档简介

1 10mcs 51的串行通信 通信的概念mcs 51的串行通信控制器通信及其应用 2 基本概念 通信方式串行与并行单工 半双工 全双工波特率异步通信的字符编码同步与异步 3 串行与并行 并行通信 字符各位同时传输串行通信 同一字符的各位依次传输字符与字符之间总是串行传输优缺点比较同等技术条件下的速度成本 硬件成本 传输协议的兼容性 4 单工通信 单工 simplex 特点 仅能进行一个方向的数据传送 5 半双工通信 半双工 halfduplex 特点 数据可以在两个方向上进行传送 但是这种传送绝不能同时进行 双向 但不同时 6 全双工通信 全双工 fullduplex 特点 能够在两个方向同时进行数据传送 7 通信速率 比特率 每秒传输的二进制位数 单位为bps bitpersecond 波特率 每秒传输的离散状态数 也称离散状态 在一个信道上 如果只有高 低电平两种离散状态 分别代表 1 和 0 则波特率与比特率刚好一致 如果在某个信道中可以传输多种不同的离散状态 则每个状态可以携带两位或两位以上的二进制数 此时 波特率就不等于比特率 波特率有标准值 8 异步 asynchronous 通信字符编码 以字符为单位传输帧的组成 起止同步式 效率 时钟的准确性要求 9 例10 1 某异步通信的波特率为4800 8个数据位 无校验位 一个停止位 试估算每个字符传输所需要的时间 解 起始位1位 8位数据位 无校验位 一个停止位 则一个字符的编码为1 8 0 1 10位 波特率为4800 即4800位 秒 传输10位所需要的时间是10 4800 0 002083秒 即2 083毫秒 10 同步方式 synchronous 实现原理 数据线 时钟线具体实现 增加导线 增加信道 锁相环提取同步时钟 数据与时钟编码 曼切斯特 面向位的传输 相对于字符 效率高 成本高 同步字符 syn1 同步字符 syn2 数据 data 11 异步串行通信的常用物理标准 异步串行通信控制器仍然是ttl兼容电平逻辑 1 和逻辑 0 的电压区分度只有2 3v 这不适于稍长距离的传输rs 232电平标准 eiars 232 c 信号线为负逻辑 即 逻辑 1 3 15v 逻辑 0 3 15v 波特率9600时 可靠的通信距离15m左右 12 9针接口线的信号说明 db9 13 串行通信控制器 intel825016c5016c55016c55216c554intel8251z80 piomcs 51片上串行通信接口txdrxd引脚sbufsconpcon寄存器t1 ort2 波特率发生器 14 mcs 51串行口工作方式 方式0 串行移位 方式1 8位异步串行通信 波特率可变 方式2 9位异步串行通信 波特率固定 方式3 9位异步串行通信 波特率可变 串行口控制字寄存器scon 98h 可位寻址 sm0 sm1 sm2 ren tb8 rb8 ti ri 15 sm2多机通信控制位 一般可简单地置0 ren允许接收控制位 ren l 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 ti ri 16 pcon 87h 没有位寻址功能 当单片机复位时 smod位被清零 pcon主要用于控制cmos型mcs 51芯片的低功耗操作 其中与串行口有关的只有第7位smod 该位控制串行口方式l 2 3时的波特率 17 方式0 移位寄存器输入输出方式 串行同步方式 多作移位寄存器扩展之用 rxd作串行数据线i o 输入或输出 txd作串行时钟 输出 8位数据输入或输出的顺序是低位在前 高位在后 下图为方式0的时序图 18 静态数码显示技术 19 74ls164 20 m datasegmentdatarsegm datadispbuf ds4dispsegmentcodersegdispdisplay 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 db12h 0f6h 4ah 0c2h 0a6h 83h 03h 0f2hdb02h 82h 22h 07h 1bh 16h 0bh 2bh 21 方式1 8位异步串行通信方式 传送8位数据位按异步编码格式 自动插入起始位 停止位txd为发送引脚rxd为接收引脚cpu写sbuf激活一个字符的发送过程发送完成后硬件置ti为1 需软件将ti清0异步接收需设置ren 1 接收到的字符保存在sbuf 并置ri 1 ri需软件清0 22 异步串行通信的编程参考图 fosc 12 t1ort2 pcon 7 0 1 2 波特率 sbuf bus txd sbuf rxd bus ti ri 并 串 串 并 23 例10 4t1作为波特率发送器 取常用波特率9600 cpu时钟为11 0592mhz 试初始化t1 一般cpu时钟接近于其工作上限 同时兼顾标准的波特率值 允许差最大为7 8 常用11 0592mhz的时钟频率 12分频以后为0 9216mhz 921600hz 波特率为9600时 波特率时钟为9600 16 153600hz 如果选smod 0 则中间多出一个2分频 所以t1的输出时钟频率需要达到波特率时钟的2倍 即153600 2 307200hz t1的分频数为921600hz 307200hz 3 如果选smod 1 t1的输出时钟频率就是波特率时钟 即153600hz t1的分频数为921600hz 153600hz 6 24 两种初始化方法 smod 0的初始化语句mova tmodanla 0fhorla 20hmovtmod 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 串行口初始化子程序 无参数 无返回值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 接收数据 接收子程序 无参数 有返回值在r7get char jnbri clrrimova sbufmovr7 aretend 29 简单应用主程序 首部 extrncode init sport send char get char stacksegmentidatarseg stack 相对的段ds1 保留一个字节占位csegat0000hljmpstartm jobsegmentcodersegm jobstart movsp stack 1 设置堆栈callinit sport 初始化串行口 在间接寻址段定义堆栈 该说明必须放在主模块 30 续 movb 19 字符串长度movdptr message 字符串首地址print clra 偏移量恒定 修改dptr取数 变通用法movca a dptr 查表指令读字符串movr7 a 传递参数call send char 调用发送子程序incdptr 修改dptrdjnzb print 字符串结束判断always 无限循环callget char 取读串行口数据 返回值在r7incr7 对收到的数变化一下call send char 再发送出去sjmpalwaysmessage db hello mcs 51world 字符串定义end 31 中断方式数据通信举例 初始化中断服务程序的安排现场保护与恢复一些技巧 32 数据段定义 publicinit sportpublicsend lenpublicsend bufpublicrecdatapublicxflagsio bufsegmentdata 内部ram的数据段rsegsio buf 说明为可移动段send len ds1 发送数据长度send addr ds1 发送地址send buf ds16 发送数据缓冲区recdata ds1 接收1字节缓冲区sio flagsegmentbit 定义一个位寻址段rsegsio flag 说明为相对的段xflagdbit1 接收到新数据标志 33 中断向量及串口初始化代码 csegat4 8 3 串行通信的中断向量地址ljmpsport srv 跳转到中断服务程序的实际入口sio groupsegmentcode 与串口通信相关的代码段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 选bank1clrrs1re enter jbcti send 重入标号jbcri receiveexit poppswpopaccret

温馨提示

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

评论

0/150

提交评论