【精品课件】串行通信接口技术_第1页
【精品课件】串行通信接口技术_第2页
【精品课件】串行通信接口技术_第3页
【精品课件】串行通信接口技术_第4页
【精品课件】串行通信接口技术_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、10.1 串行口通信方式 10.2 pc机与单片机的通信 第第10 10章章 串行通信接口技术串行通信接口技术 串行通信基础知识 1数据通信数据通信 计算机与外界的信息交换称为通信。通信方式有:并行通信和 串行通信。 2. 2. 串行通信的数据传送方向串行通信的数据传送方向 a. 是单工配置,即只允许某机的通信接口只能发送或接收. b.半双工配置,可以传送或接收数据,但同一时刻只能有 一个站发送. c.全双工配置,允许两机的发送和接收可以同时进行. 10.1 串行口通信方式串行口通信方式 3异步通信和同步通信异步通信和同步通信 (1 1)异步通信)异步通信 在异步通信中,数据或字符是分为一帧一

2、帧地传送。下面是一种11 位的帧格式: 第n个字符n-1 n+1 p10d0d1d2d3d4d5d6d7p10d0 在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验 位和停止位。 (2 2)同步通信)同步通信 同步传送时,字符与字符之间没有间隙,也不用起始位和停止位, 仅在数据块开始时用同步字符sync来指示,同步传送格式如下: sync字符 数据 4波特率波特率(baud rate) 波特率,即数据传送速率,表示每秒钟传送二进制代码的位 数,单位是位秒。 假如数据传送的速率每秒为120个字符,每个字符包含10个代 码位(一个起始位、8个数据位、一个停止位),这时,传送的波特 率为

3、: 10120位秒1200波特(bps) 10.1.2 串行口控制寄存器串行口控制寄存器 sm0,sm1:串行口操作方式选择位。 sm2:在方式2和方式3中,用于主从式多机通信的控制位,若sm21,则允许 接收到的第9位数据(rb8)为0,则接收中断标志ri不会被激活。在方式1中, 若sm21,则只有接收到有效停止位时,中断标志ri才置1。 ren:允许接收控制位,用软件置1或清0。 tb8:在方式2和方式3中为准备发送的第9位数据位。它可作为数据的奇偶校验位, 或在多机通信中作为地址帧或数据帧的标志。 rb8:在方式2和方式3中为接收到的第9位数据,既可以作为约定好的奇偶校验位, 也可以作为

4、多机通信时的地址帧或数据帧标志。 ti: 发送中断标志位。 ri: 接收中断标志位。 scon 9fh 9eh 9dh 9ch 9bh 9ah 99h 98h (98h)sm0sm1sm2rentb8rb8tiri 2电源控制寄存器电源控制寄存器pcon pcon是为了在chmos的mcs-51单片机上实现电源控制而设置的其 中只有smod与串行口工作有关。它的格式和功能如下: smod称为波特率选择位。在工作方式l、2和3时,若smod1,则 波特率提高一倍;若smod0,则波特率不加倍。整机复位时, smod0 pscon d7 d6 d5 d4 d3 d2 d1 d0 (87h)smod

5、-gf1gf0pdidl 10.1.3 波特率的设计波特率的设计 方式0的波特率fosc/12 方式2的波特率2smodt1/64 方式1和方式3的波特率 2smodt1/32溢出率 其中,t1的溢出率取决于t1的工作方式和初值。如果计数初值为x,则每过 “256-x” 个机器周期,定时器t1就会产生一次溢出。为了避免因溢出而引起中断, 此时应禁止t1中断。 这时, 波特率2smod /32 fosc/(12(256-x) 例例 已知805l单片机时钟振荡频率为11.0592mhz,选用定时器t1工作方式2作波特率发生 器,波特率为2400波特,求初值x。 解:设波特率控制位smod0,则有:

6、 所以,(thl)(tll)f4h。 串行口工作方式 串行口的操作方式由sm0、sm1定义,编码和功能如表10-2所示。 表表10-2 串行口工作方式串行口工作方式 sm1 sm0工作方式工作方式说说 明明波特率波特率 0 0 0 1 1 0 1 1 0 1 2 3 同步移位寄存器 10位异步收发 11位异步收发 11位异步收发 fosc/12 可变 fosc/32或fosc/64 可变 1方式方式0 图10-1 利用74ls164或74ls165扩展 数据输出 rxd 1 2 74ls164 移位脉冲 txd 8 3 4 5 6 10 11 12 13 8051 d7d6 d5d4 d3 d

7、2 d1d0 数据输入 rxd 9 移位脉冲 74ls165 txd 2 6 5 4 3 14 1312 11 8051 d0d1 d2d3 d4 d5d6 d7 10.1.5 串行口应用举例串行口应用举例 上图中,下面的程序将内部ram区中20h和21h单元的内容经串行口由74lsl64 并行送出。 start: mov r6,#02h ;置发送字节数 mov r0,#20h ;设置片内ram指针 mov scon, #00h ;设置串行口方式0 send: mov a,r0 mov sbuf,a ;启动串行口发送 wait: jnb ti,wait ;末发送完一帧,等待 clr ti ;清

8、发送中断标志 inc r0 ;取下一个数 djnz r6,send ;判是否发送完 2设计一程序,实现两片mcs-51串行通信,将8051(1)片内ram的50h5fh 中的数据串行发送到805l(2)中,并储于805l(2)片内ram40h4fh单元中。 假设两单片机晶振均为11.0592mhz。 根据题目要求,选择串行口方式3通信。 奇偶校验的过程是这样实现的:在发送端,tb8作奇偶校验位。在数据写入缓 冲发送器之前,先将数据的奇偶位写入tb8,作为第9位数据传送,这个奇偶性数 据传送到接收一方rb8位上。在接收一方,接收到一个字符(8位二进制信息与奇偶 校验位)后,从sbuf转移到a中时

9、,状态标志寄存器会产生已接收到数据的奇偶值 ,将此奇偶值与rb8中的奇偶值相比较,两者应该相符,否则接收字符有错。发现 错误要通知对方重发。 如果选择波特率为9600bps、且选择t1方式2定时,则发送与接收程序如下: (1)单片机(1)发送程序: tttt: mov tmod,#20h ;定时器1方式2 mov tl1,#0fdh mov thl, #0fdh ;置定时器初值,选定9600bps mov scon,0c0h ;选择通信方式3 setb tr1 ;启动定时器1 mov r0,#50h ;首地址50hr0 mov r7,#10h ;数据长度10hr7 loop: mov a,r0

10、 ;取数据a mov c,psw.0 mov tb8,c ;ptb8 mov subf,a ;数据sbuf启动发送 jbc ti,cont ;判断发送中断标志 sjmp wait cont: inc r0 djnz r7,loop (2) 单片机(2)接收程序 rrrr: mov tmod,#20h ;定时器1方式2 mov tl1,#0fdh mov thl, #0fdh ;置定时器初值,选定9600bps mov scon,0c0h ;选择通信方式3,允许接收(ren=1) setb tr1 ;启动定时器1 mov r0, #40h ;首地址40hr0 mov r7,#10h ;数据长度1

11、0hr7 loop: jbc ri,rece sjmp loop ;等待接收 rece: mov a,subf ;数据sbuf启动发送 jb psw.0,onee ;判断接收数据奇偶性 jb rb8,errr ;判断发送瑞奇偶性 sjmp rigt onee: jnb rb8,errr rigt: mov r0,a ;接收正确 inc r0 djnz r7,loop errr: ;接收错误 图10-4 8250的引脚及功能框图 10.2 pc机与单片机的通信机与单片机的通信 异步通信芯片8250 以下为各部分的功能及引脚含义: (1) 数据输入/输出缓冲器 八条三态双向数据线(d0d7)实现8

12、250芯片与处理机之间的双向通信,包括数据,控制 字及状态信息的传输。 (2) 读/写控制逻辑 主要提供芯片与处理机之间的数据传输,并接受cpu的编程。包括如下引脚功能: 芯片选择(cs0、cs1、 ) 当cs0、cs1为高, 为低时,8250芯片被选中。 地址选通( ) 当 为低时,则锁存片选信号(cs0、cs1、 )和寄存器选择信号(a0、a1、a2),即 允许芯片和处理器进行数据传输。 寄存器选择(a0、a1、a2) 芯片内部可供处理机访问的十个寄存器可由这三个信号和线路控制寄存器最高位dlab共 同来选择。 数据输入选通(distr、 ) 当distr为高电平,或 为低电平(只需其中一

13、个有效),且芯片被选中,则允许处 理机从选定的寄存器中读出数据或状态信息。 数据输出选通(dostr、 ) 当dostr为高或 为低时,且该片被选中,则允许处理机将数据或控制命令写到选定 的寄存器中。 收发器禁止(ddis) 该端输出为高电平时,禁止处理器对8250写操作。 2cs 2cs ads ads2cs distr distr dostr dostr 主复位(mr) 当mr为高电平时,除接受缓冲器、发送保持寄存器、除数锁存器之外,其余寄存器和控 制逻辑均被复位。 外部时钟输入/输出(xtal1、xtal2) 由外部基准定时振荡器提供时钟。 片选输出(csout) 当csout为高电平时

14、,8205已被cs0、cs1、 信号选中,数据传送可以开始。 中断(intrpt) 每当任一种中断类型变成有效,且中断允许时,该输出端为高电平。 (3) 调制解调器(modem)控制逻辑 实现8250与modem之间通信传输的控制。该逻辑包括如下引脚功能: 数据装置准备好( )输入信号。 为低时,表示modem已作好准备与8250进行数据传输。 信号的状态可由调制解调 器状态寄存器的第5位(dsr)检测出来。 清除发送( ),输入信号 每当modem状态寄存器的cts位改变状态时,如果允许modem状态中断,则产生一次中断。 数据终端准备好( ),输出信号 当 为低电平时,通知modem,82

15、50准备好通信。 请求发送( ),输出信号 当 低电平时,通知modem,8250准备好发送数据。 接收线路信号检测( ),输入信号 若为低时,表示modem已经检测出数据载波。每当modem状态寄存器的plsd位改变状态时, 如果允许modem状态中断,则产生一次中断。 2cs dsr dsrdsr dtr dtr cts rts rts rlsd 振铃指示(ri) 该端时modem控制功能的输入,若为低时,表示modem已收到一个电话响铃信号。若modem 状态中断被允许,每当modem状态寄存器的ri位由高变低时产生一次中断。 输出1( ) 用户指定的modem控制功能的输出。通过对mo

16、dem控制寄存器第2位编程置1, 引脚就 变成低电平。 输出2( ) 用户指定的modem控制功能的输出。通过对modem控制寄存器第3位编程置1, 引脚 就变成低电平。 (4) 接收器逻辑 该逻辑包括接收器移位器和数据寄存器及相应的接收控制逻辑。其引脚功能如下: 接收器时钟(rclk) 输入接收波特率的16倍时钟信号。 串行输入(sin) 来自通信链路(如外设、modem、数据设备)的串行数据输入。 (5) 发送器逻辑 该逻辑包括发送器保持寄存器和移位器及相应的发送控制逻辑。其引脚功能如下: 波特输出(baudout) 输出发送波特率的16倍时钟信号。 串行输出(sout) 送到通信链路(如

17、外设、modem、数据设备)的串行数据输出。 1out 2out 1out 2out 8250的内部寄存器 表表10-5 8250寄存器的端口地址寄存器的端口地址 i/oi/o端口端口in/outin/out寄存器名称寄存器名称 3f8h*out数据发送保持寄存器 3f8h*in数据接收缓冲寄存器 3f8h*out除数锁存器(低位) 3f9h*out除数锁存器(高位) 3f9h*out中断允许寄存器 3fahin中断识别寄存器 3fbhout通信线控制寄存器 3fchoutmodem控制寄存器 3fdhin通信线状态寄存器 3fehinmodem状态寄存器 *通信线控制寄存器7位(dlab)0

18、 * *dlab=1 (1) 通信线控制寄存器(3fbh,只写) 图10-5 通信线控制寄存器 (2) 通信线状态寄存器(3fdh,只读) 发送移位寄存器空 间断检测 格式错 奇偶错 接收数据就绪 若某位1,则 存在该状态 不用 (恒为0) 7 6 5 4 3 2 1 0 超越错 发送保持寄存器空 图10-6 通信线状态寄存器 (3) 据发送保持寄存器(3 f 8h,只写) 该寄存器包含将要串行发送的数据,其中第0位是串行发送的第1位。 (4) 数据接收缓冲寄存器(3f8h,只读) 该寄存器存放接收到的数据,其中第0位是串行接收的第1位。 (5) 除数锁存器(3f8h/3f9 h,只写) 除数

19、锁存器为16位,由高8位和低8位锁存器组成,对时钟输入 (1.8432mhz)进行分频,产生16倍波特率的波特率发生器(即 baudout)。除数可由下面公式算出: 除数1.8432106(波特率16) 除数锁存器的值必须在8250初始化时预置。为此必须先把通信线控制寄 存器的最高位(dlab)置1,然后通过i/o口3f8h和3f9h访问除数锁存器 的低8位和高8位。 (6) 中断允许寄存器(3f9h,只写) 对8250初始化的工作一般分成三步: (1) 设置波特率(假设为1200) mov al, 10000000b ;置dlab=1 mov dx, 3fbh ;写入通信线控制寄存器 out

20、 dx, al mov al, 60h ;置产生1200波特率除数低位 mov dx, 3f8h out dx, al ;写入除数锁存器低位 mov al, 00h ;置产生1200波特率除数高位 mov dx, 3f9h out dx, al ;写入除数锁存器高位 (2) 设置通信数据格式 假设7个数据位,1个停止位,偶校验,编程如下: mov al, 00011010b ;设置数据格式 mov dx, 3fbh ;写入通信线控制寄存器 out dx, al (3) 设置操作方式 pc机异步通信适配器中的8250中断输出(intrpt)外接成受引脚输出的三态门控制。 只有当信号为低时,并有i

21、ntrpt产生,中断信号才可通过此三态门。因此只要控 制输出,即可控制是否允许中断信号通过。对modem控制寄存器写入所要求的控制 字,置位3为1,便可使为低电平,三态门变成常通状态,可在中断方式下工作 (中断是否产生,受中断允许寄存器控制)。编程示例如下: ;不允许中断输出 mov al, 03h ;使 为高, 、 有效 mov dx, 3fch out dx, al ;允许中断输出 mov dx, 3fch mov al, 0bh ;使 为低, 、 有效 out dx, al ;自测试工作方式 mov al, 13h ;自测试下若允许中断则应为1bh mov dx, 3fch out dx

22、, al 2out 2out dtr dtr (4) 设置中断允许寄存器 假设禁止中断,编程如下: mov al, 00h ;禁止所有中断的控制字 mov dx, 3f9h out dx, al ;写入中断允许寄存器 10.2.2 pc机与机与8051双机通信技术双机通信技术 图10-10 pc机与单片机串行通信接口线路图 mc1488将ttl电平转换为rs-232c电平,供电电压为12v; mc1489则是把rs-232c标准电平转换为ttl电平,供电电 压为5v 简单、经济的接口电路,省去了12v电源和1488、1489电平转换芯片 图10-11 pc机与8031通信接口电路 1. 通信软

23、件设计通信软件设计 列举一个实用的通信测试软件。其功能是:pc机键盘的输入,将发送 给单片机,单片机接收到pc机发来的数据后,回送同一数据给pc机,并 在屏幕上显示出来。只要屏幕上所显示的字符与所键入的字符相同,即 可表明pc机与单片机间通信正常。双方约定: 波特率:2400波特。 信息格式:8个数据位,一个停止位。 传送方式:pc机采用查询方式收发数据,51机采用中断方式 接收信息。 在屏幕上显示? n n n 开始 8250初始化 取键盘字符 向单片机发送字符 读接收寄存器内容 在屏幕上显示接收到的字符 接收正确? 收到单片机回答? 发送寄存器空否? 有键输入否? 清接收寄存器 n 转错误

24、处理 图10-12 pc机通信程序框图 pc机通信软件机通信软件 通信软件采用8086/8088汇编语言编写。 程序清单如下: stack segment para stackstack db 256dup(0) stack ends code segment para public code start proc far assume cs:code,ss:stack push ds mov ax, 0 push ax cli initout: mov dx, 3fbh ; 通信线控制寄存器第7位置1(dlab=1), 以便设置波特率 mov al, 80h mov dx, 3f8h ;设置

25、除数锁存器低位 mov al, 30h out dx, al mov dx, 3f9h ;设置除数锁存器高位 mov al, 0 out dx, al mov dx, 3fbh ;设定数据格式,8数据位,1停 止位,无校验 mov al, 03h out dx, al mov dx, 3fch ;设置modem控制信号 mov al, 03h out dx, al mov dx, 3f9h ;禁止所有8250中断(四种类型) mov al, 0 out dx, al forever: mov dx, 3 ;发送保持寄存器不空则循环等待 in al, dx test al, 20h jz for

26、ever wait: mov ah, 1 ;检查键盘缓冲区,无字符则循环等待 int 16h jz wait mov ah, 0 ;若有,取键盘字符 int 16h sendchar: mov dx, 3f8h ;发送键入的字符 out dx, al receive: mov dx, 3fdh ;检查接收数据,未准备好继续检查 in al, dx test al, 01h jz receive test al, 1ah ;判接收数据是否出错,有错则转错误处理 jnz error mov dx, 3f8h ;从接收寄存器中读取数据 in al, dx and al, 7fh ;去掉无效位,得到数

27、据 push ax m0v bx, 0 ;显示接收到的字符 m0v ah, 14 int 10h pop ax cmp al, 0dh ;得到的数据若不是回车符则返回 jnz orever mov al, oah ;是回车行则回车换行 m0v bx, 0 m0v ah, 14 int 1oh jmp forever error: mov dx, 3f8h in al, dx mov al,? ;功能调用,显示“?”号 mov bx, o m0v ah, 14 int 10h jmp forever start ends code ends end start 2mcs-51单片机通信软件单片机

28、通信软件 mcs-5l单片机通过中断方式接收pc机发送过来的字符,并回送 给主机。 程序约定: 波特率设置;t1方式2工作,计数常数f3h,smod=1,波特率为 2400波特。 串行口初始化:方式1,允许接收。 中断服务程序入口: 0023h。 程序流程框图: 开中断,恢复现场 将数据间接送pc机 接收pc机发来数据 保护现场 清接收中断标志ri 关中断 中断服务子程序 返回 主程序开始 启动定时器 开中断 定时器t1初始化 串行口初始化 转入主程序 图10-13 8051单片机通信框图 程序清单: org 0000h ljmp initout ;转到初始化程序 org 0023h ljmp

29、 serve ;串行口中断服务程序入口 org 0050h initout: mov tmod, #20h ;定时器t1初始化 mov th1, #0f3h mov tl1, #0f3h mov scon, #50h ;串行口初始化 mov pcon, #80h ;smod=1 setb tr1 ;启动定时器tl setb ea ;开中断 setb es ;允许串行口中断 limp main ;转主程序,本例略 serve: clr ea ;关中断 clr ri ;清接收中断标志 pushdph ;保护现场 pushdpl push acc receive:mov a,sbuf ;接收pc机发

30、来的数据 sendback:mov sbuf,a ;将数据回送给pc机 wait:jnb ti,wait ;发送器不空则循环等待 clr ti return:popacc ;恢复现场 popdpl popdph setb ea ;开中断 reti ;返回 10.2.3 pc机与机与805l多机通信技术多机通信技术 图10-14 pc机与单片机构成多机系统 通信接口 8031 1# 8031 2# 8031 3# 8031 4# 8031 n# pc/xt (主机) 测量或控制仪表 (从机) 1. 多机通信原理多机通信原理 805l系列单片机的全双工串行io接口支持四种串行通信工 作方式。其中方

31、式2和方式3是专为mcs-51单片机的多机通信而设 置的。在方式2和方式3中,用户通过使用多机通信控制位sm2,可 以方便地实现主机一从机的一对一通信。 pc机的串行通信接口是以8250为核心部件组成的。虽然 8250本身并不具备805l系列单片机的多机道通讯功能,但通过软件 的办法,可使得8250满足单片机多机通信的要求。 2. 通信接口设计通信接口设计 图10-15 通讯接口 接收端电平转 换电路 发送驱动电平 转换电路 3. 通信软件设计通信软件设计 ()pc机通信软件 pc机采用80868088汇编语言编制通信软件。程序约定: )波特率设置:9600波特。 )数据传输格式:1个起始位,

32、8个数据位1个可编程位(奇偶位)、1个停止位。 )校验方式:由于奇偶校验位被用作发送地址码或数据的特征位,故数据通信的校 核采用累加和校验方法。 )数据传送方式: pc机采用查询方式发送和接收数据。 y y y y n n 重 发 发送数据 延 时 发送地址码 (通道号) 8250初始化 c 延 时 收到回送 数据否? 收到回答 信号否? 开 始 错 误 发送校验码 取接收数据 c 延 时 回答信 号=00h 传送结束否? 收到回答 信号否? 结 束 重 发 重 发 n n n 图10-16 pc机通信软件框图 程序清单如下: comuni:movdx, 3fbh;设置波特率(8250初始化)

33、 moval, 80h outdx, al movdx, 3f8h moval, 0ch outdx, al movdx, 3f9h moval, 0 outdx, al movdx, 3fbh moval, 2bh;设置8位数据位,1位停止位 outdx, al movdx, 3fch;奇偶位为“1” moval, 03h outdx, al;状态寄存器初始化 movdx, 3f9h moval, 0 outdx, al;禁止中断 movax, 0 movbx, 00ffh ;设置传送字节数 movsi, source;设置发送数据指针 movdi, dest;设置接收数据指针 movdx,

34、 3fdh leep:movcx, 2801h ;延时常数 leep1:inal, dx testal, 20h jzleep1 movdx, 3f8h moval, number ;发送地址码 outdx, al leep2:loopleep2 ;延时 movdx, 3fdh leep3:inal, dx testal,01h jzleep;没收到回答信号重发 testal,1eh inzerror movdx,3f8h inal,dx ;接收回答信号 jnzerror movdx,3fbh moval,3bh ;奇偶位为“0” outdx, al start:movdx, 3fdh mov

35、cx, 2801h send:inal, dx testal, 20h jzsend movdx, 3f8h moval, si;发送数据 outdx, al addal, ah;累加和 movah, al recv:looprecv movdx, 3fdh inal, dx testal, 01h jzsend testal, 1eh jnzerror movdx, 3f8h ;读入数据 inal, dx movdi, al decbx jzend ;没完,继续 incsi incdi jmpstart error: movdx, offset error1 movah, 9 int21h

36、int20h end:movdx, 3fdh ;数据传送结束后发校验位 movcx, 2801h end1:inal, dx testal, 20h jzend1 movdx, 3f8h moval, ah outdx, al movdx, 3fdh end2:loop end2 inal, dx testal, 01h jzend movdx, 3f8h inal, dx ;接收回答信号 andal, al jzend3 jmperror end3:int28h (2) 单片机通信软件 单片机的数据通信由串行口完成,定时器t1作为波特率发生器。程序规定: )波特率设置:9600波特。 )数据传输格式:1位起始位,8位数据位,1位可编程位(tbs),l位停止 位。 )工作方式设置:定时器t1设置为方式2,串行口设置为工作方式3。 )数

温馨提示

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

评论

0/150

提交评论