MCS-51单片机串行接口.ppt

上传人:sh****n 文档编号:6382248 上传时间:2020-02-24 格式:PPT 页数:47 大小:1.24MB
返回 下载 相关 举报
MCS-51单片机串行接口.ppt_第1页
第1页 / 共47页
MCS-51单片机串行接口.ppt_第2页
第2页 / 共47页
MCS-51单片机串行接口.ppt_第3页
第3页 / 共47页
点击查看更多>>
资源描述
2 7串行接口 教学目的 1 了解单片机串行通信的基本概念与串行通讯程序的编制2 掌握单片机的串行通信工作及方式字的设定3 掌握51单片机串行口的四种工作方式和对应的波特率的设定方法重点 单片机串行口的四种工作方式和对应的波特率的设定方法难点 串口的工作及方式字的设定 实际应用中 计算机的CPU与其外部设备之间常常要进行信息的交换 计算机之间也需要交换信息 所有这些信息的交换均称为 通信 1 通信的基本方式 并行通信 并行通信 是指数据的各位同时进行传送的方式特点 传输速度快 但当距离较远 位数又多时导致了通讯线路复杂且成本高 如图所示 2 7 1串行通信的基本概念 串行通信 串行通信 是指数据一位一位地顺序传送特点 通讯线路简单 只要一对传输线就可以实现通讯 并可以利用电话线 从而大大地降低了成本 特别适用于远距离通讯 但传送速度慢 如图所示 2 串行通信中数据的传送方向 单工通信方式 半双工通信方式 全双工通讯方式 A端为发送站 B端为接收站 数据仅能从A站发至B站 数据可以从A发送到B 也可以由B发送到A 不过同一时间只能作一个方向的传送 其传送方式由收发控制开关K来控制 每个站 A B 既可同时发送 又可同时接收 3 串行通讯的两种基本方式 异步通信 同步传送 数据 数据 数据 数据 数据 数据 在异步数据传送中 CPU与外设之间事先必须约定两项事宜 字符格式 双方要约好字符的编码形式 奇偶校验形式 以及起始位和停止位的规定 波特率 Baudrate 波特率是衡量位传送速率的指标 它要求发送站和接收站都要以相同的数据传送速率工作 4 波特率 例 假设传送速率是120字符 秒 假如每一个字符为10位 则其传送的波特率为 10位 字符 120字符 秒 1200位 秒 1200波特 定义 每秒钟传送二进制代码的位数 单位 波特 b s bps 注意 波特率和有效数据传送率并不一致 如上述字符帧的10位中真正有效的数据位只有8位 所以 有效数据位的传送速率为 8 120 960位 秒 串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定 如 同步方式 通讯速率 数据块格式 信号电平 等 不同 形成了多种串行通信的协议与接口标准 常见的有 通用异步收发器 UART 51系列单片机的串口形式 通用串行总线 USB I2C总线 CAN总线 SPI总线 RS 485 RS 232C RS422A标准 等等 2 7 2串行口的结构 1 串行口结构 两个同名的接收 发送缓冲寄存器SBUF指令MOVSBUF A启动一次数据发送 可向SBUF再发送下一个数指令MOVA SBUF完成一次数据接收 SBUF可再接收下一个数 接收 发送数据 无论是否采用中断方式工作 每接收 发送一个数据都必须用指令对RI TI清0 以备下一次收 发 串行口相关的SFR SCON PCON SM0 SM1 串行口4种工作方式的选择位 00方式0 8位同步移位寄存器 波特率固定为fosc 1201方式1 10位UART 1 8 1位 波特率可变 按公式计算10方式2 11位UART 1 8 1 1位 波特率固定 foscx 1 32 或 1 64 11方式3 11位UART 1 8 1 1位 波特率可变 按公式计算 2 串行口控制寄存器SCON 98H SM0 SM1 SM2 TB8 RB8 RI REN SCON 7 SCON 0 SCON 6 TI SM2 串行口多机通信控制位 若SM2 1 则允许多机通信 若第9位数据为1 说明本帧数据为地址 若第9位为0 则本帧为数据帧 SM2 0 即不属于多机通信 则接收一帧数据后 不管第9位数值是0还是1 都置RI 1 接收到的数据装入SBUF中 作为方式2 方式3的附加控制位 2 串行口控制寄存器SCON 98H SM0 SM1 SM2 TB8 RB8 RI REN SCON 7 SCON 0 TI SCON 5 SM2 REN 串行口接收允许控制位 REN 1表示允许接收 REN 0禁止接收 由软件置 1 或清 0 2 串行口控制寄存器SCON 98H SM0 SM1 SM2 TB8 RB8 RI REN SCON 7 SCON 0 TI SCON 3 SM2 SCON 4 SCON 2 TB8 方式2 3中 是要发送的第9位数据 多机通信中 TB8 0表示发送的是数据 TB8 1表示发送的是地址 奇偶校验 根据需要由软件置位或复位 RB8 在方式2 3中 是收到的第9位数据 在多机通信中 用作区别地址帧 数据帧的标志 奇偶校验 TI 发送中断标志 在一帧数据发送完时被置位 串行口收 发数据申请中断标志位 在方式0串行发送到第八位结束时 或其他方式串行发送到停止位的开始时由硬件置位 可用软件查询 必须由软件清 0 TI 1申请中断 TI 0不申请中断 2 串行口控制寄存器SCON 98H SM0 SM1 SM2 TB8 RB8 RI REN SCON 7 SCON 0 TI SM2 SCON 1 RI 接收中断标志 在接收到一帧有效数据后由硬件置位 在方式0中第八位数据发送结束时 由硬件置位 在其他方式中 则在接收到停止位中间时由硬件置位 可用软件查询 必须由软件清 0 RI 1申请中断 RI 0不申请中断 SMOD 在串行口工作方式1 2 3中 是波特率倍增位SMOD 1时 波特率加倍SMOD 0时 波特率不加倍 在PCON中只有这一个位与串口有关 2 电源控制寄存器PCON 87H SMOD PCON 7 PCON 0 2 7 3串行口工作方式 工作方式0 8位移位寄存器I O方式 SM0SM1 00 发送 SBUF中的串行数据由RxD逐位移出 低位在前 高位在后 TxD输出移位时钟 频率 fosc1 12 每送出8位数据TI就自动置1 需要用软件清零TI 接收 串行数据由RxD逐位移入SBUF中 TxD输出移位时钟 频率 fosc1 12 每接收8位数据RI就自动置1 需要用软件清零RI 经常配合 串入并出 并入串出 移位寄存器一起使用扩展接口 方式0工作时 多用查询方式编程 发送 MOVSBUF A接收 JNBRI JNBTI CLRRICLRTIMOVA SBUF 工作方式0 8位移位寄存器I O方式 续 复位时 SCON已经被清零 缺省值 方式0 接收前 务必先置位REN 1允许接收数据 数据输出 数据输入 74LS164是串入并出芯片 74LS165是并入串出芯片 串行口方式0的扩展应用 CLR用于清0 例1 用并行输入8位移位寄存器74HC165扩展16位并行输入口 编程实现从16位扩展口读入20个字节数据 S L负脉冲将并行数据装入 高电平时启动单片机进行数据输入 MOVR7 20MOVR0 50HSETBF0RCV0 CLRP1 0SETBP1 0RCV1 MOVSCON 10JNBRI CLRRIMOVA SBUFMOV R0 A INCR0CPLF0JBF0 RCV2DECR7SJMPRCV1RCV2 DJNZR7 RCV0 常用于串行通讯 除发 收8位数据外 还在D0位前有一个起始位 0 在D7位后有一个停止位 1 方式1工作时 发送端自动添加一个起始位和一个停止位 接收端自动去掉一个起始位和一个停止位 接收时 停止位进入SCON的RB8 工作方式1 10位UART 1 8 1位 波特率可变 SM0SM1 01 波特率可变 用定时器T1作波特率发生器 公式 波特率 2SMOD 32 T1的溢出率 TXD与RXD分别用于发送与接收数据 波特率 2SMOD 32 T1的溢出率 溢出率 T1溢出的频繁程度即 T1溢出一次所需时间的倒数 初值X 2n 2SMOD fosc32 波特率 12 波特率 2SMOD fosc32 12 2n X 其中 X是定时器初值 初值X 2n 2SMOD fosc32 波特率 12 例 计算波特率 要求用T1工作于方式2来产生波特率1200 已知晶振频率 6MHz 要求出T1的初值 初值X 28 20 6 10632 1200 12 256 256 13 02 6 106460800 243 0F3H 结果后面要用到 串行发送 写SBUF启动发送过程 串行接收 置REN 1启动接收过程 T1作波特率发生器时初始化包括 选定时器工作方式2 TMOD选8位自动重装 将计算 或查表 出的初值X赋给TH1 TL1 启动T1 SETBTR1 对T1不要开中断 工作方式1的接收 发送 串行口的初始化包括 对SCON选工作方式对PCON设波特率加倍位 SMOD 缺省值 0 如果是接收数据 仍要先置 1 REN位 例 要求T1工作于方式2 使串行口工作在方式1时产生波特率1200bps 已知fosc 6MHz SM0SM1SM2RENTB8RB8TIR1 SCON 01010000 MAIN ORG0023HMOVTMOD 20HSBR1 JNBRI SENDMOVTL1 0F3HLCALLSINMOVTH1 0F3HSJMPNEXTSETBTR1SEND LCALLSOUTMOVSCON 50HNEXT RETI SETBEASIN SETBESRETLCALLSOUTSOUT SJMP RET 发送子程序接收子程序SOUT SIN MOVA R0MOVA SBUFINCR0MOV R1 AMOVSBUF AINCR1CLRTICLRRIRETRET 例 续 由于波特率固定 常用于单片机间通讯 数据由8 1位组成 通常附加的一位 TB8 RB8 用于 奇偶校验 工作方式2 11位UART 1 8 1 1位 两种波特率 方式2的波特率 fosc 2SMOD 64即 fosc 1 32或fosc 1 64两种 奇偶校验是检验串行通信双方传输的数据正确与否的一个措施 并不能保证通信数据的传输一定正确 换言之 如果奇偶校验发生错误 表明数据传输一定出错了 如果奇偶校验没有出错 绝不等于数据传输完全正确 奇校验 8位有效数据连同1位附加位中 二进制 1 的个数为奇数偶校验 8位有效数据连同1位附加位中 二进制 1 的个数为偶数 约定接收采用奇校验若接收到的9位数据中 1 的个数为奇数 则表明接收正确 取出8位有效数据即可 若接收到的9位数据中 1 的个数为偶数 则表明接收出错 应当进行出错处理 约定发送采用奇校验若发送的8位有效数据中 1 的个数为偶数 则要人为添加一个附加位 1 一起发送 若发送的8位有效数据中 1 的个数为奇数 则要人为添加一个附加位 0 一起发送 采用偶校验时 处理方法与奇校验相反 回顾 程序状态字寄存器PSW中有一个奇偶状态位P CY AC F0 RS0 OV P RS1 PSW 7 PSW 0 P PSW 0 奇偶状态位 P 1表示目前累加器中 1 的个数为奇数P 0表示目前累加器中 1 的个数为偶数CPU随时监视着Acc的 1 的个数并自动反映在P 工作方式2的奇偶校验用法 选用偶校验方式发送PIPL PUSHPSW 保护现场PUSHACCCLRTI 清发送中断标志以备下次发送MOVA R0 取由R0所指向的单元中的数据MOVC P 将奇偶标志位通过C放进TB8MOVTB8 C 一起发送出去MOVSBUF A 启动发送INCR0 指针指向下一个数据单元POPACC 恢复现场POPPSWRETI 中断返回 串口方式2的奇偶校验用法 选用偶校验方式发送如果A中1的个数是奇数 P 1 将TB8写成 1 一起发出去 反之 若 P 0 则写TB8 0 发出去 选用偶校验方式接收若收到的数中P 0 且检查到RB8 0就可能对了若收到的数中P 1 且检查到RB8 1就可能对了若P 0且RB8 1或P 1且RB8 0就一定出错了 串口方式2的奇偶校验用法 SM0SM1SM2RENTB8RB8TIR1 SCON 串行口控制寄存器SCON TB8RB8 选用偶校验方式接收 PIPL PUSHPSW 保护现场PUSHACCCLRRI 清接收中断标志以备下次接收MOVA SBUF 读进收到的数据MOVC P 奇偶标志位 C JNBP L1JNCL1 C 0时转到L1P 0时转到L1JNBRB8 ERR P 1时转到L2 若RB8 0 出错 SJMPL2 RB8 0则表明接收正确 转L2L1 JBRB8 ERR P 0且RB8 1表明 出错 L2 MOV R0 A P 0且RB8 0表明接收正确INCR0 指针指向下一个数据单元POPACC 恢复现场POPPSWRETI 中断返回ERR 出错处理 RETI 工作方式3 当SM0 SM1为11时 串行口工作于方式311位UART 1 8 1 1位 波特率可变 串口方式3和方式2唯一的区别是波特率机制不同 方式2的波特率固定为时钟周期的32或64分频 不可变 此工作方式与其他串行通讯设备连接困难 因此不常用 方式3的波特率可变 按前面的公式计算 波特率 2SMOD 32 T1的溢出率 波特率 2SMOD fosc32 12 2n X 其中 X是定时器初值 波特率的设计小结 根据串行口的四种工作方式可知 方式0为移位寄存器方式 波特率是固定的 其波特率为fosc 12 方式2为10位UART 波特率为2SMOD 64 fosc 波特率仅与PCON中SMOD的值有关 当SMOD 0时 波特率为fosc 64 当SMOD 1时 波特率为fosc 32 波特率的设计小结 方式1和方式3的波特率是可变的 由定时器T1的溢出速率控制 方式1和方式3波特率 2SMOD 32 T1溢出率 其中当SMOD 0时 波特率为1 32 T1溢出率 当SMOD 1时 波特率为1 16 T1溢出率 定时器T1的溢出率定义为单位时间内定时器T1溢出的次数 即每秒钟时间内定时器T1溢出多少次 在串行通讯时 定时器T1作波特率发生器 经常采用8位自动装载方式 方式2 这样不但操作方便 也可避免重装时间常数带来的定时误差 并且T0可使用定时器方式3 这时T1作波特率发生器 定时器T0可拆为两个8位定时 计数器用 和串行口相关的寄存器 1 PCON 2 SCON 3 TMOD 4 TCON 串行口设置步骤 1 决定波特率 2 设置TMOD 3 对THL和TL1填入初值 4 启动定时器 5 决定SCON的值 6 决定是否产生串行中断 有需要时另依中断设置步骤做好各项程序中断前的准备工作 7 清除RI TI标志 并设置REN 1 例1 若定时器T1设置成模式2作波特率发生器 已知fosc 6MHz 求可能产生的最高和最低的波特率 例2 串行接口工作在方式1和3时 其波特率与fosc 定时器T1工作模式2的初值及SMOD位的关系如何 设fosc 6MHz 现利用定时器T1工作模式2产生的波特率为110b s 试计算定时器初值 课堂小节 1 单片机串行通信的两种方式2 单片机工作方式字的设定3 单片机的四种工作方式4 单片机波特率的设定
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!