




免费预览已结束,剩余53页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一节串行通讯口概述第二节串行口结构与工作原理第三节波特率设计第四节串行通讯工作方式第五节串行口应用举例第六节多机串行通讯技术 第7章串行通讯口 作业讲解1 RET指令必须作子程序的最后一条指令 RETI必须作中断服务程序的最后一条指令 RETI指令除恢复断点地址外 还恢复CPU响应中断时硬件自动保护的现场信息 执行RETI指令后 将清除中断响应时所置位的优先级状态触发器 使得已申请的同级或低级中断申请可以响应 而RET指令只能恢复返回地址 作业讲解2 用表格说明方式0的最短定时常数 8191 送入TH0 TL0的常数 FF1F 作业讲解3 晶振为12MHz 在方式1下 最大的定时时间Tmax为 Tmax 65536 s 65 536ms另设两个软件计数器方案 T1定时50ms 软件计数器1 秒计数 用片内50H作为循环次数20 软件计数器2 分计数 用片内51H单元作为循环次数60 设置TMOD计算T1的初始值XX 65536 50000 s 1 s 15536D 3CB0H 作业讲解3 MOV50H 14H 20 50ms 1sMOV51H 3CH 60 1s 1minMOVTMOD 10H 设定时器1为方式1MOVTH1 3CH 赋初值MOVTL1 0B0HSETBTR1 启动T1L2 JBCTF1 L1 50ms到 SJMPL2L1 MOVTH1 3CHMOVTL1 0B0HDJNZ50H L2 未到1s继续循环MOV50H 14HDJNZ51H L2 未到1min继续循环MOV51H 3CHCPLP1 2 1min到P1 2端取反SJMPL2 反复循环 作业讲解3 1 无说明 2 中断响应子程序中利用A作为存放中间值 需要保护 一般用直接地址比较好 划分一个RAM区 3 定时初值需要重置 循环初值也需要重置 4 需要注明出口和入口 第一节串行通讯口概述 串行通讯 所传送数据的各位按顺序一位一位地发送或接收 经济 但速度慢 并行通讯 所传送数据的各位同时发送或接收 速度快 但价格贵 串行通讯中的几个概念 一 传送编码因为单根通讯线仅能表示0和1两种状态 而需传送的信息中有字母 数字和字符等 这就要用二进制数对传送字符编码 常用的主要有美国标准信息交换码ASCII和扩展的BCD码EBCDIC 后一种是8位编码 较常用在同步通信中 二 同步和异步方式1 异步通讯ASYNC AsynchronousDataCommunication 数据以一个字符为单位进行传送 一帧一帧地传送 在帧格式中先用一个起始位 0 表示字符的开始 5 8位数据 规定低位在前 高位在后 奇偶校验位 可省略 停止位 1 表示字符的结束 D0 D1 D2 D3 D4 D5 D6 D7 P D0 D0 10 10 N 1第N个字符 一串行帧 N 1 2 同步通讯 速度快 但硬件结构要求高 在数据或字符开始处用一同步字符来指示 常约定1 2个 由时钟来实现发送端和接收端同步 一旦检测到与规定的同步字符符合 下面就连续按照顺序传送数据 SYN字符1SYN字符2连续传送的数据 三 波特率波特率是异步通讯中对数据传送速率的规定 其意义是每秒钟传送多少位二进制数 例如 数据传送的速率每秒为120个字符 每个字符由1个起始位 8个数据位和1个停止位组成 则其传送波特率为 10 120 1200b s 1200波特每一位的传送时间即为波特率的倒数 Td 1 1200 0 833ms异步通讯的传送速度一般在50到9600波特之间 四 通讯方向1 单工传送 只能发送或接收 这种单向传送的方法称单工传送 2 半双工传送 数据可在两机之间双向传送 但接收和发送不能同时进行 只能分时接收和发送 3 全双工传送 两机的发送和接收可以同时进行 图串行通信数据传送的三种方式 a 单工方式 b 半双工方式 c 全双工方式 五 信号的调制与解调异步通讯有距离的限制 传输距离较远时 信号衰减 频带不够宽 因此 用调制器把数字信号转换成模拟信号 并加以放大再传送 这个过程叫调制 在接收时 再用解调器检测此模拟信号 并把它转换成数字信号再送入计算机接口 这个过程即解调 第二节串行口结构与工作原理 一 功能与结构 图串行口方式0结构示意图 1 输入数据先进入输入移位寄存器 再送入接收SBUF 在此采用了双缓冲结构 这是为避免在接收到第二帧数据之前 CPU未及时响应接收器的前一帧中断请求 没把前一帧数据读走 而造成两帧数据重叠的错误 MOVSBUF A2 对于发送器 因为发送时CPU是主动的 不会产生写重叠问题 一般不需要双缓冲器结构 以保持最大传送速率 MOVA SBUF3 8051串行口通过编程可设置4种工作方式 三种帧格式 方式0 以8位数据为一帧 不设起始位和停止位 先发送或接收最低位 D0D1D2D3D4D5D6D7方式1 以10位为一帧传输 设有一个起始位 0 8个数据位和一个停止位 1 0D0D1D2D3D4D5D6D71起始停止 方式2和3 以11位为一帧传输 设有一个起始位 0 8个数据位 1个可编程位 第九数据位 D8和一个停止位 1 0D0D1D2D3D4D5D6D7D81起始停止可编程位D8由软件置1或清0 该位可作校验位 也可作它用 一般用在多机通讯中 二 串行口控制寄存器SCONCPU专用寄存器SCON为串行口控制字 方式选择 接收和发送控制以及串行口的状态标志 复位时 SCON所有位均清0 SCON 98H SM0SM1SM2RENTB8RB8TIRI位地址 9FH9EH9DH9CH9BH9AH99H98H 1 串行方式选择SM0 SM1 由软件置位或清零 用于选择串行口四种工作方式 SM0SM1工作方式功能波特率00方式0移位寄存器方式fosc 1201方式18位异步通信方式可变10方式29位异步通信方式fosc 64或fosc 3211方式39位异步通信方式可变 2 TI 发送中断标志位 在方式0时 当发送数据第8位结束后 或在其它方式发送停止位后 由内部硬件使TI置位 向CPU请求中断 CPU在响应中断后 必须用软件清零 此外 TI也可供查询使用 3 RI 接收中断标志位 在方式0时 当接收数据的第8位结束后 或在其它方式接收到停止位的中间由内部硬件使RI置位 向CPU请求中断 同样 在CPU响应中断后 也必须用软件清零 RI也可供查询使用 4 REN 允许串行接收控制位 若REN 0 则禁止接收 REN 1 则允许接收 该位由软件置位或复位 5 TB8 发送数据D8位 在方式2和方式3时 TB8为所要发送的第9位数据 在多机通信中 以TB8位的状态表示主机发送的是地址还是数据 TB8 0为数据 TB8 1为地址 也可用作数据的奇偶校验位 该位由软件置位或复位 6 RB8 接收数据D8位 在方式2和方式3时 接收到的第9位数据 可作为奇偶校验位或地址帧或数据帧的标志 方式1时 若SM2 0 则RB8是接收到的停止位 在方式0时 不使用RB8位 7 SM2 方式2 方式3时用于多机通信的控制位 方式2或方式3处于接收时 若SM2 1且接收到的第9位数据 RB8 为0时 不启动接收中断标志RI 即RI 0 并且将接收到的前8位数据丢弃 若SM2 1且收到的第9位RB8为1时 才将接收到的前8位数据送入SBUF 并置位RI 产生中断请求 若SM2 0 则不论第9位数据为0或1 都将前8位数据装入SBUF中 并产生中断请求 方式1中 当处于接收时 若SM2 1 则只有接收到有效的停止信号为止 RI才置 1 方式0中SM2应置 0 三 专用寄存器PCON CPU专用寄存器PCON为电源控制寄存器 PCON 87H SMODXXXGF1GF0PDIDLPCON的最高位SMOD是串行口波特率系数控制位 SMOD 1时 波特率增大一倍 其余各位与串行口无关 SMOD 0时 方式2波特率为fosc 64 SMOD 1时 方式2波特率为fosc 32 SMOD还影响方式1 方式3波特率的计算公式 第三节波特率设计串行口编程可约定4种工作方式 其中方式0和方式2的波特率是固定的 而方式1和方式3的波特率是可变的 由定时器T1的溢出率控制 一 方式0和方式21 方式0 每个机器周期发送或接收一位数据 因此波特率固定为时钟频率的1 12 且不受SMOD的影响 2 方式2的波特率取决于PCON中的SMOD之值 当SMOD 0时 波特率为时钟频率的1 64 若SMOD 1 则波特率为时钟频率的1 32 方式2波特率 2SMOD 64 Fosc 二 方式1和方式3串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时决定 波特率 2SMOD 32 T1的溢出率 其中 T1的溢出率取决于计数速率和定时器的预置值 1 计数速率 当TMOD中C T 0 定时方式 计数速率 Fosc 12 1 计数方式 计数速率取决于外部输入时钟频率 3 溢出率为溢出周期之倒数 波特率 2SMOD 32 Fosc 12 256 X 4 定时器T1方式2的初始值为 X 256 fosc SMOD 1 384 波特率 2 溢出周期 当定时器T1作波特率发生器使用时 通常是选用自动重装载模式 即模式2 在模式2中 TL1作计数用 而自动重装载的值放在TH1内 设计数初值为X 那么每过 256 X 个机器周期 定时器T1就会产生一次溢出 为了避免因溢出而产生不必要的中断 此时应禁止T1中断 溢出周期为 12 Fosc 256 X 例 已知8051单片机时钟振荡器为11 0592MHZ 选用定时器T1工作方式2作波特率发生器 波特率为2400波特 求初值 解 设SMOD 0 X 256 11 0592 106 1 384 2400 244 F4H所以TH1 TL1 F4H如果串行通讯选用很低的波特率 可将定时器T1置于方式0或方式1 即13位或16位定时方式 但在这种情况下 T1溢出时 需重装初值 从而对波特率产生一定的误差 表 常用波特率与定时 计数器1各参数关系见书中P123 第四节串行通讯工作方式一 方式01 在方式0下 串行口作同步移位寄存器用 其波特率是固定的 为fosc 12 2 串行数据由RXD P3 0 端输入或输出 3 同步移位脉冲由TXD P3 1 端送出 4 这种方式常用于扩展I O口 发送 当一个数据写入发送缓冲寄存器SBUF 串行口即把8位数据以fosc 12的波特率从RXD端送出 低位在前 发送完置中断标志TI为1 接收 REN是串行口接收器允许接收控制位 REN 0 禁止接收 REN 1 允许接收 当软件置REN为1时 即开始从RXD端以fosc 12波特率输入数据 低位在前 当接收到8位数据时 置中断标志RI为1 这种扩展方法输入输出的速度是不高的 如fosc 12MHZ 则每移动一位需1us 注意 1 串行控制寄存器中TB8或RB8位在方式0中未用 2 每当发送或接收完8位数据时 由硬件将发送中断TI或接收中断RI标志置位 3 CPU响应TI或RI中断请求时 不会清除TI或RI标志 必须由用户用软件清0 4 方式0时 SM2位必须为0 二 方式11 串行口为8位通用异步接口 一帧信息为10位 2 1位起始位0 8位数据位和1位停止位1 3 传送波特率可调发送 数据从TXD端输出 当数据写入发送缓冲器SBUF时 就启动发送器发送 当发送完一帧数据后 就把TI标志置1 并申请中断 接收 由REN置1允许接收 串行口采样引脚RXD 当采到1至0的跳变时 确认是起始位 0 就开始接收一帧数据 当RI 0且停止位为1或者SM2 0时 停止位进入RB8位 同时置位中断标志RI 否则 信息将丢失 所以通常方式1下 设SM2 0 三 方式21 串行口为9位通用异步接口 一帧信息为11位 2 1位起始位0 8位数据位 1位可编程位和1位停止位1 3 传送波特率与SMOD有关 发送 发送前 先根据通讯协议由软件设置TB8 如作奇偶校验位或地址 数据标识位 然后将要发送的数据写入SBUF 即启动发送器 发送过程 是执行任何一条以SBUF作为目的寄存器的指令而启动的 写SBUF 信号 把8位数据装入SBUF 同时还把TB8装到发送移位寄存器的第9位位置上 并通知发送控制器 要求进行一次发送 然后即从TXD端输出一帧信息 接收 先置位REN为1 使串行口处于允许接收状态 同时还要将RI清0 在满足这个条件的前提下 再根据SM2的状态 因为SM2是方式2和方式3的多机通讯控制位 和所接收到的RB8的状态才能决定此串行口在信息到来后是否会使RI置1 并申请中断 接收数据 当SM2 0时 不管是RB8为0还是为1 RI都置1 此串行口将接收发来的信息 当SM2 1时 且RB8为1时 表示在多机通讯情况下 接收的信息为地址帧 此时RI置1 串行口将接收发来的信息 当SM2 1时 且RB8为0时 表示接收的信息为数据帧 但不是发给本从机的 此时RI不置1 因此所接收的数据帧将丢失 四 方式3方式3为波特率可变的11位异步通讯方式 除波特率外 方式3和方式2完全相同 第五节串行口应用举例一 方式0举例 用串行口扩展I O口例1用并行输入8位移位寄存器74LS165作为扩展输入口 下图是利用8051的3根口线扩展为16根输入口线的实用电路 其由2块74LS165串接而成 前级的数据输出位QH与后级的信号输入端SIN相连 现编程从16位扩展口读入20个字节数据 读十次 并把它们转存到内部RAM的50H 63H中 MOVR7 14H 设置读入字节数MOVR0 50H 设片内RAM指针SETBF0 设置读入字节奇偶数标志RCV0 CLRP1 0 并行口输入数据 允许74165串行移位SETBP1 0RCV1 MOVSCON 10H 设串行口方式0并启动接收JNBRI 等待接收一帧数据CLRRI 清接收中断标志MOVA SBUF 取缓冲器数据MOV R0 AINCR0CPLF0JBF0 RCV2 判是否接收完偶数帧 接收完则重新并行置入DECR7SJMPRCV1 否则再接收一帧RCV2 DJNZR7 RCV0 判是否已读入预定的字节数 程序中F0作为读入字节的奇偶性标志 由于每次由扩展口并行输入到移位寄存器的是两个字节数据 置入一次 串行口应接收二帧数据 故已接收的数据字节数为奇数时F0 0 不再并行输入数据就直接启动接收过程 否则F0 1 在启动接收过程前 应该先在外部移位寄存器中输入新的数据 例2用8位并行输出串行移位寄存器74LS164作为扩展输出口 由于74LS164无并行输出控制端 在串行输入过程中 其输出端的状态会不断变化 故在某些场合 在74LS164与输出装置之间 还应加上输出可控的缓冲级 如74LS244 以便串行输入过程结束后再输出 图中的输出装置是2位共阳级七段显示发光二极管 采用静态显示方式 由于74LS164在低电平输出时 允许通过电流可达8mA 故不需再加驱动电路 与动态扫描显示比较 静态显示方式的优点是CPU不必频繁的为显示服务 软件设计比较简单 很容易做到显示不闪烁 编程把片内20H 21H中的数字取出 由串行口送给显示器 显示相应的数字 5V MOVR7 02H 设置显示位数MOVR0 20H 设显示数据区指针MOVSCON 00H 设串行口方式0DISP1 MOVA R0MOVDPTR TABHMOVCA A DPTR 取显示码MOVSBUF A 启动串行口发送过程JNBTI 等待接收一帧数据CLRTI 清串行口发送中断标志INCR0 修改指针取下一个数DJNZR7 DISP1RETTAB DBC0H F9H A4H B0H 99H 0 1 2 3 4的显示代码DB92H 82H F8H 80H 98H 5 6 7 8 9的显示代码 方式1举例例 双机通信 甲机发送乙机接收 波特率2400 晶振6MHz T1作为波特率发生器 串行口工作在方式1 甲机送出数据为50H开始的16个字节数据 乙机接收数据存放在3000H 300FH单元中 外部RAM 解 双机通信串行口工作在方式1 定时器T1工作在方式2 定时常数 X 256 fosc SMOD 1 384 波特率 若SMOD 0 则X 249 49 误差较大 取SMOD 1 则X 242 98 243 F3H 误差较小 发送程序 MOVTMOD 20H 定时器 波特率 初始化MOVTL1 0F3HMOVTH1 0F3HSETBTR1MOVSCON 40H 串行口初始化MOVPCON 80HMOVR0 50HMOVR7 10HTRS MOVA R0MOVSBUF AWAIT JBCTI CONTAJMPWAITCONT INCR0DJNZR7 TRSRET 接收程序 MOVTMOD 20H 定时器 波特率 初始化MOVTL1 0F3HMOVTH1 0F3HSETBTR1MOVSCON 50H 串行口初始化MOVPCON 80HMOVDPTR 3000HMOVR7 10HWAIT JBCRI READAJMPWAITREAD MOVA SBUFMOVX DPTR AINCDPTRDJNZR7 WAITRET 例 方式3举例编程把甲机片内RAM50H 5FH单元中的数据块从串行口输出 乙机从甲机接收16字节数据块 并存入片外3000H 300FH单元 接收过程要求判断奇偶校验标志RB8 若出错置F0标志为1 正确置F0标志为0 然后返回 要求 定义工作方式3发送 TB8作奇偶校验位 采用定时器1方式2作波特率发生器 波特率为1200 Fosc 11 0592MHZ分析 预置值TH1 0E8H 发送 MOVTMOD 20H 设置定时器1为方式2MOVTL1 0E8H 设置预置值 MOVTH1 0E8HSETBTR1 启动定时器1MOVSCON 0C0H 设置串行口为方式3MOVPCON 00H SMOD 0MOVR0 50H 设数据块指针MOVR7 10H 设数据长度TRS MOVA R0 取数据到A MOVC PMOVTB8 C 奇偶位P送TB8 MOVSBUF A 数据送SBUF 启动发送WAIT JBCTI CONT 判一帧是否发送完AJMPMAIT 未完等待CONT INCR0 更新数据单元DJNZR7 TRS 循环发送至结束RET 返回 接收 MOVTMOD 20H 设置定时器1为方式2MOVTL1 0E8H 设置预置值MOVTH1 0E8HSETBTR1 启动定时器1MOVSCON 0C0H 设置串行口为方式3MOVPCON 00H SMOD 0MOVDPTR 3000H 设置数据块指针MOVR7 10H 设数据块长度SETBREN 允许接收WAIT JBCRI READ 判一帧是否接收完AJMPWAIT 未完继续等待READ MOVA SBUF 读入一帧数据JNBPSW 0 PZ 奇偶位P为0则转JNBRB8 ERR P 1 RB8 0则出错SJMPYES 二者全为1则正确 PZ JBRB8 ERR P 0 RB8 1则出错YES MOVX DPTR A 正确 存放数据INCDPTR 修改地址指针DJNZR7 WAIT 判断数据块接收完否CLRPSW 5 接收正确 且接收完清F0标志RET 返回ERR SETBPSW 5 出错置F0标志为1RET 返回 第六节多机串行通讯技术一 多机通讯的基本原理 图主从式多机通讯系统 MCS 51系列单片机的串行通讯方式2和方式3具有多机通讯功能 可构成各种分布式通讯系统 在多机通讯系统中 为保证主机 发送 与多台从机 接收 之间能可靠通信 串行通讯必须具备识别能力 MCS 51的串行通讯控制寄存器SCON中设有多机通讯选择位SM2 当程控设置SM2 1 串行通讯工作于方式2或方式3 发送端通过对TB8的设置以区别于发送的是地址帧 TB8 1 还是数据帧 TB8 0 接收端通过对接收到的RB8进行识别 当SM2 1 若接收到的RB8 1 则被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生社会实践报告心得体会
- 大学生劳动课程个人总结
- 小儿神经修复学课件
- 小儿淋巴结肿大课件
- 定制跳舞广告服务合同协议
- 农村房屋翻新合同协议书
- 卖房能否签独家协议书合同
- 商业光伏水泵维修合同范本
- 二手龙椅转让合同协议书
- 农村宅基地买房合同范本
- 2024-2025学年江苏省数学七年级第一学期期末考试试题含解析
- 部编人教版三年级上册道德与法治全册教案
- 2025年河北省石家庄市长安区石家庄市第八十一中学小升初数学试卷
- 药品研发项目管理制度
- 2025年度LNG船运分析报告
- 利用过程状态和设备参数预测电解铜箔产品质量的技术
- 一例支气管哮喘患者的护理个案
- 抢险物资规章管理制度
- 热控检修规程(2018修订版)
- 大疆无人机租赁合同协议
- GB/T 45455-2025成型模带头导套和带头定位导套
评论
0/150
提交评论