学习51单片机必备-串口中断_第1页
学习51单片机必备-串口中断_第2页
学习51单片机必备-串口中断_第3页
学习51单片机必备-串口中断_第4页
学习51单片机必备-串口中断_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1 本章主要介绍串行通信概念及51系列单片机的串行口问题 将具体介绍以下内容 计算机串行通信基础 基本概念 标准接口 51单片机串行口 串行口结构 串行口的控制寄存器 串行口的工作方式 应用举例 第七章MCS 51的串行口 2 本章学习目标 串行通信概述 7 1串行口的结构 7 2串行口的4种工作方式 7 3多机通信 7 4串行口的编程和应用 3 通信方式 1 异步通信与同步通信 并行通信方式 空间上区分各位数据及联络控制信号 占用传输线多 速度快 串行通信方式 时间上区分各位数据及联络控制信号 占用传输线少 速度慢 串行通信概述 4 2 串行通信方式 信息传输在一个方向上只占用一跟通信线 它既作为数据线 又作为联络线 信息各式上分 异步通信方式 按字符传输 同步通信方式 按数据块传输 5 3 异步通信方式 0 1 停止位 起始位 低位 高位 7位数据位 奇偶校验 停止位 第N个字符 第N 1个字符 6 异步通信方式利用每一帧的起 止信号建立发送和接收之间的同步 特点 a 每一帧内部各位均采用固定的时间间隔b 帧与帧之间的间隔是随机的c 接收机依靠每一帧的起始位和停止位识别字符传送是否结束 或是一个新字符d 异步传送时不传送同步时钟脉冲 异步传送方式中字符按帧格式传送 7 4 同步通信SYNC SynchronousDataCommunication 在同步通信中 数据或字符开始处是用一同步字符来指示 一般约定为1 2个字符 以实现发送端和接收端同步 一旦检测到约定同步字符 下面就连续按顺序接收数据 8 同步传送方式是一种连续传送方式 特点 a 在被传送的数据块前加上同步字符SYN b 数据之间没有间隙 c 传输速度高 容量大 d 发送方在发送数据的同时 要将时钟信号同时传送 9 5 串行通信的波特率 波特率 bandrate 是异步通信中每秒钟传送的二进制数码的位数 比特数 单位是位 秒 作用 1 反映串行通信的速率 2 反映对传输通道的要求 波特率越高 要求的传输通道的频带宽度就越宽异步通信 波特率为每秒传送的字符数和每个字符位数的乘积 例如 数据传送的速率为120个字符每秒 每个字符由1个起始位 8个数据位和1个停止位组成 则其传送波特率为 10b 120 s 1200b s 1200波特 注意 时钟频率和波特率不是同一个概念 时钟频率比波特率高得多 10 6 串行通信的方式 按照数据传送方向 串行通信可分为半双工 halfduplex 制式和全双工 fullduplex 制式 1 半双工制式在半双工制式下 甲机和乙机之间只有一个通信回路 接收和发送不能同时进行 只能分时发送和接收 2 全双工制式在全双工制式下 甲 乙两机之间数据的发送和接收可以同时进行 称为全双工传送 不管哪种形式的串行通信 在两机之间均应有共地线 11 7 数据传送方向 单工方式 半双工方式 全双工方式 12 MCS 51单片机串行接口的硬件 MCS 51单片机串行接口的控制 MCS 51单片机串行接口工作方式 P3 0位的第二功能 收端RXDP3 1位的第二功能 发端TXD 寄存器SCON PCON SBUF寄存器IE IP 方式0方式2 方式1方式3 7 1串行口的结构 13 有两个数据缓冲寄存器SBUF 一个输入移位寄存器 一个串行控制寄存器SCON和一个特殊功能寄存器PCON等组成 8位SBUF是全双工串行接口寄存器 它是特殊功能寄存器 地址为99H 不可位寻址 串行输出时为发送数据缓冲器 发送寄存器只写不读 数据从发送端TXD P3 1 输出 串行输入时为接收数据缓冲器 接收寄存器只读不写 数据从接收端RXD P3 0 输入 由指令确定是对发送寄存器或接收寄存器作用 14 SM0 SM1 串行接口工作方式定义位 SM0 SM1 00 方式0 8位同步移位寄存器SM0 SM1 01 方式1 10位异步接收发送SM0 SM1 10 方式2 11位异步接收发送SM0 SM1 11 方式3 11位异步接收发送 7 1 1串行口控制寄存器SCON 注意 方式0的特点 方式2 方式3的差异 15 SM2 多机通信控制位 方式2和3 SM2 0 无多机通信SM2 1 允许多机通信 串行口控制寄存器SCON REN 串行口接收数据控制位 REN 1 允许串行口接收数据REN 0 禁止串行口接收数据 由软件置位或清除 16 TB8 发送串行输出数据的第9位 串行口控制寄存器SCON RB8 接收串行输入数据的第9位 双机通信时它可作奇偶校验位 在多机通信中可作为区别地址帧或数据帧的标识位 在方式2和方式3中是接收的第9位数据 17 TI 串行口中发送完一组数据后的中断标志 若串口发送完一组数据 则由硬件自动置TI 1若串口还要发数据 则应手动编程使TI 0 串行口控制寄存器SCON RI 串行口中接收完一组数据后的中断标志 若串口接收完一组数据 则由硬件自动置RI 1若串口还要收数据 则应手动编程使RI 0 18 7 1 2特殊功能寄存器PCON 串行数据传送速率控制寄存器 PCON SMOD 0 定义波特率不变 SMOD 1 定义波特率加倍 注 PCON寄存器的地址为87H 仅b7位有用 不可位寻址 地址 87H TDL 等待方式位 PD 掉电方式 GF1 GF2通用标志位 ANLPCON 7FH 对SMOD位清零 ORLPCON 80H 对SMOD位置位 19 7 2串行口的4种工作方式 SM0SM1 串行口工作方式选择位 20 7 2 1方式0 移位寄存器输入 输出方式 非串行通信用方式 扩展并行I O RXD TXD线的作用 用并入串出移位寄存器扩展并行输入口用串入并出移位寄存器扩展并行输出口 RXD 串 并 并 串数据传送线TXD 同步时钟线 同步时钟为fosc 12 固定波特率 注 为应用串行接口扩展并行接口的方式 串行口为同步移位寄存器方式 21 7 2 2方式1 10位异步接收 发送 波特率可变 方式1的数位 1位起始位 值08位数据位 为有用信息 低位在前 可含1位校验位 1位停止位 值1 异步传送时的速率设置 速率设置的方法 设置定时器T1的初值常用波特率 用T1作为波特率发生器 B 2SMOD 32 T1溢出率 串行口为8位异步通信接口 22 方式1 续 异步发送时的工作过程 发送条件 清SCON中发送中断标志TI 0 发送指令 MOVSBUF A 注 需发送的8位字节数据送串行数据缓冲器SBUF后将启动异步发送开始 起始位0 停止位1在执行发送指令时自动加入 发送传输线 TXD GND 发送10位数据结束 发送中断标志TI 1 注 若需继续发送 置TI 0 送数据到SBUF 23 方式1 续 异步接收时的工作过程 接收条件 清SCON中接收中断标志RI 0置SCON中接收控制标志REN 1 接收传输线 RXD GND 接收同步位 接收传输线RXD有从1到0的信号 接收数据 9位数据送数据接收器 8位字节数据送串行数据缓冲器SBUF1位停止位送入SCON中的RB8 1 接收10位数据结束 接收中断标志RI 1 注 若需继续接收 置RI 0 24 7 2 3方式2 11位异步接收 发送 波特率固定 方式2的数位 1位起始位 值08位数据位 为1字节有用信息1位校验位 对有用信息的奇偶校验1位停止位 值1 异步传送时的速率设置 若PCON中SMOD 0 速率 fosc 32若PCON中SMOD 1 速率 fosc 64 串行口为9位异步通信接口 25 方式2 续 异步发送时的工作过程 异步接收时的工作过程 基本过程同方式11位校验位在发送前应先置入SCON中的TB8 基本过程同方式11位校验位 第9位 送SCON中的RB8 注 RB8中未存放1位停止位 26 7 2 4方式3 11位异步接收 发送 波特率可变 方式3 11位异步接收 发送 波特率可变 基本定义同方式2 速率设置同方式1 注 方式0 固定波特率为fosc 12方式2 固定波特率为fosc 32或fosc 64上述方式与单片机主频有关方式1 可变波特率方式3 可变波特率上述方式与定时器T1的初值有关 27 7 3多机通信 多个MCS 51单片机可以利用串行口进行多机通信 在多机通信中要保证主机与所选择的从机实现可靠地通信 必须保证串行口具有识别功能 控制寄存器SCON的SM2位就是为满足这一条而设置的多机通信控制位 原理 在串行口以方式2 或方式3 接收时 若SM2 1 表示置多机通信功能位 此时可能出现两种情况 接收到的第9位数据为1时 数据才装入SBUF 并置中断标志RI 1 向CPU发出中断请求 接收到的第9位数据为0时 则不产生中断标志 信息抛弃若SM2 0 则接收到的第9位数据不论为0还是1 都产生RI 1中断标志 接收到的数据装入SBUF 28 多机通信系统示意图 多机通信的实现 主要靠主 从机之间正确地设置与判断多机通信控制位SM2和发送或接收的第9数据位 D8 下面简述如何实现多机通信 29 1 主 从机均初始化为方式2或方式3 置SM2 1 允许中断 2 主机置TB8 1 发送要寻址的从机地址 3 所有从机均接收主机发送的地址 并进行地址比较 4 被寻址的从机确认地址后 置本机 SM2 0 向主机返回地址 供主机核对 5 核对无误后 主机向被寻址的从机发送命令 通知从机接收或发送数据 6 通信只能在主 从机之间进行 两个从机之间的通信需通过主机作中介 7 本次通信结束后 主 从机重置SM2 1 主机可再对其他从机寻址 30 例 主机向02号从机发送50H 5FH中的数据 02号从机将接收到的数据放到内RAM30H 3FH单元中 主机程序 ORG0030HMAIN MOVSCON 98HM1 MOVSBUF 02HL1 JNBTI CLRTIJNBRI MOVA SUBFXRLA 02HJZRHTAJMPM1 RHT CLRTB8MOVR0 50HM1 MOVR7 10HL3 MOVA R0MOVSBUF AJNBTI CLRTIINCR0DJNZR7 L3AJMPMAINEND 31 从机程序 ORG0030HMAIN MOVR0 30HMOVR6 10HSI MOVSCON 0B0HSR1 JNBRI CLRRISR2 MOVA SUBFXRLA 02HJNZSR1CLRSM2MOVSBUF 02HJNBTI CLRTI SR3 JNBRI CLRRIJNBTB8 RHTSETBSM2SJMPSR1RHT MOVA SBUFMOV R0 AINCR0DJNZR6 SR3AJMPSIEND 32 7 3波特率的制定方法 1 方式0的波特率在方式0下 串行口通信的波特率是固定的 其值为fosc 12 fosc为主机频率 2 方式2的波特率在方式2下 通信波特率为fosc 32或fosc 64 根据特殊功能寄存器PCON中SMOD位的状态来决定串行口在那个波特率下工作 选择公式为 波特率的定义 串行口每秒钟发送 或接收 的位数 33 3 方式1或方式3的波特率在这两种方式下 串行口波特率是由定时器的溢出率决定的 因而波特率是可变的 波特率的公式为 式中 K为定时器T1的位数 34 定时器T1产生的常用波特率 35 7 3串行口的编程和应用 方式0用于扩展并行I O口 方式1和方式3仅传送数位不同 方式2为固定波特率 方式1和方式3均需设置可变波特率 36 方式0用于扩展并行I O口 串 并方式 扩展并行输出口 电路图 RXDTXD DATACLK 功能线 RXD 接移位寄存器的数据输入端TXD 接移位寄存器的同步时钟端 8031 串入并出移位寄存器 注 注意信号方向 37 方式0用于扩展并行I O口 并 串方式 扩展输入口 电路图 功能线 RXDTXD DATACLK 8031 并入串出移位寄存器 RXD 接移位寄存器的数据输出端TXD 接移位寄存器的同步时钟端 注 注意信号方向 38 方式0用于扩展并行I O口 例10 1 用8031的串口外接1个串入并出移位寄存器芯片CD4094扩展为8位并行输出口 并口接8个LED 并循环轮流显示 电路图 P1 0 DATACLK TBS CD4094 8031 TXD RXD 39 方式0用于扩展并行I O口 编程 ORG0000HLJMPMAINORG0023HLJMPSBRMAIN MOVSCON 00XXXX0XB 方式0 TI 0SETBEASETBESMOVA 10000000B 初值 左边LED亮CLRP1 0 CD4094输出并口关闭MOVSBUF A 数据传出 产生中断LOOP SJMP 40 方式0用于扩展并行I O口 编程 续 SBR SETBP1 0 CD4094输出并口打开 LED亮ACALLDELAYCLRTI 手动清中断标志RRA 循环位移 80H 40H 20H 10H 08H CLRP1 0 CD4094输出并口关闭MOVSBUF A 数据传出 产生中断RETIEND 注 延时子程序DELAY未给出 41 方式0用于扩展并行I O口 例10 2 用8031的串口外接1个并入串出移位寄存器芯片CD4014扩展为8位并行输入口 并口接8个开关量输入 开关K闭合时有效 电路图 P S CD4014 8031 P1 0 K RXD TXD DATA CLK P1 1 42 方式0用于扩展并行I O口 编程 START JBP1 0 START 若K未合上则循环查询SETBP1 1 CD4014并行数据输入有效MOVSCON 00X1XXX0B 方式0 REN 1允许接收 RI 0CLRP1 1 CD4014串行数据输出有效LOOP JNBRI LOOP 若RI 0数据未收完 若RI 1数据已收完CLRRI 手动清RI 准备下次传送数据MOVA SBUF 43 方式1用于串行通信 例10 3 8031串行口双工方式收发ASCII字符 最高1位用来作奇偶校验位 采用奇校验方式 波特率为1200 工作方式 数据区 主频选用 方式1 7位ASCII码 1位校验码 发送数据区首址20H 接收数据区首址40H T1设置 fosc 6MHz 方式2 初值为F4H 查表10 2 44 方式1用于串行通信 主程序 2个单片机均有 ORG0000HLJMPMAINORG0023HLJMPSBR1MOVTMOD 20H 定时器T1设置为方式2MOVTL1 0F4HMOVTH1 0F4H 装定时器T1的初值SETBTR1 启动定时器T1 45 方式1用于串行通信 主程序 2个单片机均有 MOVSCON 50H 串口工作方式1 REN 1MOVR0 20H 发数据区首址MOVR1 40H 收数据区首址SETBET1 开T1中断SETBES 开串口中断SETBEA 开总中断ACALLSOUT 调用发送子程序SJMP 46 方式1用于串行通信 串行口中断服务程序 SBR1 JNBRI SENDACALLSIN 若RI 1 调用接收子程序SJMPNEXTSEND ACALLSOUT 若RI 0 调用发送子程序NEXT RETI 47 方式1用于串行通信 发送子程序 SOUT MOVA R0MOVC PCPLCMOVACC 7 CINCR0MOVSBUF ACLR TIRET 48 方式1用于串行通信 接收子程序 SIN MOVA SBUFMOVC PCPLCANLA 7FHMOV R1 AINCR1CLRRIRET 49 7 3单片机串行口的应用 7 3 1串行口扩展显示器 例7 1 用8位串入并出移位寄存器74HC164扩展显示器 50 功能 把数据从显示缓冲区送到数码管 入口 将要显示的数放在以DIS0为首的8个单元中 出口 把预置的数输出以更新原有的显示 MOVR2 08H 显示8个数码管MOVR0 DIS7 显示缓冲区未地址送入R0DL0 MOVA R0 取要显示数作查表偏移量MOVDPTR TAB 指向字形表首MOVCA A DPTR 查表得字形码MOVSBUF A 发送显示DL1 JNBT1 DL1 等待发送完一帧CLRT1 清中断标志 准备继续发送DECR0 更新显示单元DJNZR2 DL0 重复显示所有数码管TAB DB0C0H 0F9H 0A4H 0B0H 99H 0 1 2 3 4 DB92H 82H 0F8H 80H 90H 5 6 7 8 9 DB88H 83H 0C6H 0A1H 86H A B C D E DB8EH 0BFH 8CH 0FFH F P 暗 51 7 3 2串行口扩展的键盘 在方式0下 串行口作同步移位寄存器用 以8位数据为一帧 先发送或接收最低位 每个机器周期发送或接收一位 故其波特率是固定的 为fosc 12 串行数据由RXD P3 0 端输入或输出 52 CJNER1 08 LP1SJMPRCVIN1 MOVA R0ADDA AJMP A DPTRTAB AJMPOPR0AJMPOPR1 AJMPOPR7OPR0 LJMPSTARTOPR7 LJMPSTARTEND ORG0100HSTART MOVR7 20MOVR0 50HMOVDPTR TABRCVI MOVSCON 10HJNBRI CLRRIMOVA SBUFMOVR0 0MOVR1 0LP1 RRCAJNCN1INCR0INCR1 53 7 3 3双机通信 编程使乙机从甲机接收16个字节数据块 并存入片外3000H 300FH单元 接收过程中要求判奇偶校验标志RB8 若出错则置F0标志为1 若正确则置F0标志为

温馨提示

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

评论

0/150

提交评论