




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南理工学院信息与通信工程学院电子信息教研室制作单片机原理及接口技术单片机原理及接口技术主编:张毅刚主编:张毅刚 主讲:主讲: 张毅刚张毅刚湖南理工学院信息与通信工程学院电子信息教研室制作第第7 7章章 AT89C51单片机的串行口单片机的串行口 在单片机的应用系统中,单机应用非常广泛,但在一些大型、智能化系统中,必须要由多个单片机或者多个单片机和多个其它计算机协同工作才能完成任务,因此,必然涉及到它们之间的信息传递。 AT89C51单片机内有一个全双工串行通信接口。 本章应重点掌握AT89C51中串行通信口的基本原理,有关的特殊功能寄存器,串行通信口的4种工作方式 ,以及串行通信的软件编程。
2、达到对AT89C51中串行通信口的正确使用。(本课件交换次序)。湖南理工学院信息与通信工程学院电子信息教研室制作串行口通信基本知识串行口通信基本知识1、串行通信和并行通信、串行通信和并行通信并行通信并行通信:即数据的各位同时传送;特点:传送速率快,但数据线较多。串行通信:串行通信:即数据一位一位顺序传送。特点:只要一根数据线,设备简单,但传送速率较慢。 计算机1 GND 计算机2 GND并行通信 计算机1 GND 计算机2 GND发送接收串行通信湖南理工学院信息与通信工程学院电子信息教研室制作串行口通信基本知识串行口通信基本知识2、串行通信中的异步通信方式与同步通信方式、串行通信中的异步通信方
3、式与同步通信方式异步通信异步通信:通信双方使用各自的时钟控制发送和接收。由起始位和结束位来实现收、发同步。 在异步通信中,数据是一帧一帧传送的,帧为收发双方传数据的基本单位,一帧数据由一个起始位“0”,58位数据(低位在前),奇偶校验位或多机标志位(可无),最后是一个停止位“1”构成。42H数据帧结构如图所示(8位数据,1位偶校验位)。起始位010000100校验位停止位TXDT1位数据的停留时间D0 D1D7湖南理工学院信息与通信工程学院电子信息教研室制作串行口通信基本知识串行口通信基本知识同步通信:同步通信:收发双方的时钟实现同步。同步传送方式是一种连续传送方式,适合于大量数据的高速传送。
4、 在异步传输中,每一帧数据都要有起始位“0”和停止位“1” ,多占用了1/5的时间。同步通信方式由于收发双方实现时钟同步,所以不需要起始位和停止位,通信效率高,但硬件电路复杂。异步通信方式中起始位和停止位的作用异步通信方式中起始位和停止位的作用 异步通信方式,收发双方时钟频率存在一定的误差,接收方若不及时校准,就会产生接收错误。所以,接收方每接收一帧数据后,利用上帧的停止位“1”和本帧的起始位“0” 的产生的下降沿,校准一次找到数据的中点找到数据的中点。由于每接收一帧数据校准一次,只要收发双方时钟频率误差不大,就不会产生接收错误。湖南理工学院信息与通信工程学院电子信息教研室制作0 0 1 0
5、0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 串行口通信基本知识串行口通信基本知识异步通信方式通过起始位异步通信方式通过起始位“0”校准的作用示意校准的作用示意起始位42H停止位55H一帧数据一帧数据一帧数据AAH同步异步不校准异步校准84HAAH4AH湖南理工学院信息与通信工程学院电子信息教研室制作串行口通信基本知识串行口通信基本知识3、串行通信制式、串行通信制式单工:单工:数据只能单向传送;半双工半双工:数据虽能双向传输,但任一时刻仅能单向传送;全双工双工:收、发各用一根信号线,任何时刻通信双方可以同时双向传输串行数据。即:可以同时收、
6、发。4、波特率、波特率波特率定义:波特率定义:串行口每秒钟发送(或接收)的位数称为波特率。设发送每一位数据所需要的时间为T,则波特率 = 1/T。5、通信协议、通信协议 数据通信的双方进行数据传输的一些约定,包括通信方式,波特率,帧格式,校验方式等,通信的双方必须遵守统一的通信协议。湖南理工学院信息与通信工程学院电子信息教研室制作AT89C51单片机串行通信口单片机串行通信口 AT89C51单片机内有一个全双工全双工的串行通信口,可同时发送、接收数据。 有四种工作方式,帧格式有8、10、11位。 通信波特率可设置。7.1 串行口的结构串行口的结构湖南理工学院信息与通信工程学院电子信息教研室制作
7、AT89C51串行口内部结构如图所示串行口内部结构如图所示,两个物理上独立的发送缓冲器发送缓冲器和接收缓冲器接收缓冲器,可同时收、发数据 (全双工)。两个缓冲器共用共用一个特殊功能寄存器字节地址:SBUF ( 99H )控制寄存器共两个:特殊功能寄存器SCON和PCON。 7.1 串行口的结构串行口的结构MOVSBUF,AMOVA,SBUF发送引脚接收引脚湖南理工学院信息与通信工程学院电子信息教研室制作AT89C51串行口通信口的基本概念串行口通信口的基本概念7.1 串行口的结构串行口的结构RXDTXDRXDTXD89C51 89C51 发送发送发送时,只要将需要发送的字节送到发送缓冲器,发送
8、缓冲器,MOVSBUF,A则串行口自动地按照指定的数据格式、波特率从TXD引脚发送。需要解决的问题需要解决的问题.如何指定发送数据格式和波特率,确定工作方式问题;.如何知道一个字节已经发送完毕,发送完后才能发送下一个字节;.多机通信及其它问题。湖南理工学院信息与通信工程学院电子信息教研室制作AT89C51串行口通信口的基本概念串行口通信口的基本概念7.1 串行口的结构串行口的结构RXDTXDRXDTXD89C51 89C51 接收接收启动接收后,串行口自动接收RXD引脚串行数据,接收完一帧数据后自动送到接收缓冲器,接收缓冲器,只要将接收的字节读出即可。MOVA,SBUF需要解决的问题需要解决的
9、问题.如何启动接收;.如何指定接收数据格式和波特率,确定工作方式问题;.如何知道已经接收了一个字节,以便及时读走;.多机通信及其它问题。通过SFR解决问题湖南理工学院信息与通信工程学院电子信息教研室制作SCON 各位的意义(1). SM0、SM1串行口串行口4种工作方式的选择位种工作方式的选择位 SM0 SM1 方式 功 能 说 明 0 0 0 同步移位寄存器方式(用于扩展I/O口) 0 1 1 8位异步收发,波特率可变(由定时器控制) 1 0 2 9位异步收发,波特率为fosc/64或fosc/32 1 1 3 9位异步收发,波特率可变(由定时器控制)串行口控制寄存器串行口控制寄存器SCON
10、 字节地址98H,可位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工学院信息与通信工程学院电子信息教研室制作(2). SM2 多机通信控制位多机通信控制位 用于方式2或方式3中。 当串行口以方式2或方式3接收时,若SM2=1,表示多机通信功能多机通信功能有效。 方式1时,如果SM2=1,则只有收到停止位时才会激活RI。 方式0时,SM2必须为0。串行口控制寄存器串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工学院信息与通
11、信工程学院电子信息教研室制作(3). REN允许串行接收位允许串行接收位 REN由软件置“1”或清“0”。REN=1,允许串行口接收数据;REN=0,禁止串行口接收数据。 程序中, 执行 SETB REN,就启动串行口接收;执行 CLR REN,就禁止串行口接收。串行口控制寄存器串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工学院信息与通信工程学院电子信息教研室制作(4). TB8发送的第发送的第9位数据位数据 方式2和3时,TB8是要发送的第9位数据,由软件写入,可作奇偶校验位,也可
12、作地址帧或数据帧的标志:1:地址帧,0:数据帧。(5). RB8接收到的第接收到的第9位数据位数据 方式2和3时,RB8存放接收到的第9位数据。在方式1,若SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。串行口控制寄存器串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工学院信息与通信工程学院电子信息教研室制作(6). TI发送中断标志位发送中断标志位 TI =1,表示发送SBUF空,即已将发送SBUF中的一帧数据发送结束,请求给出新发送数据。TI标志,可供软件查询,也可申请中
13、断。 方式0时,串行发送第8位数据结束时由硬件对TI置“1”; 其它工作方式,串行口发送停止位的开始时对TI置“1” ; CPU响应中断后,向发送SBUF写入要发送的下一帧数据。注意:注意:TI必须由软件清0,即在中断服务程序要对 TI 清0。串行口控制寄存器串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工学院信息与通信工程学院电子信息教研室制作(7). RI接收中断标志位接收中断标志位 RI =1,表示接收SBUF满,即一帧数据接收完毕,请求读走接收SBUF的接收数据。RI标志,可供
14、软件查询,也可申请中断。 方式0时,接收完第8位数据时,由硬件对RI置“1”。 其它工作方式,串行接收到停止位时,由硬件对RI置“1”。 CPU响应中断后,读走接收SBUF中接收的一帧数据。注意注意:RI必须由软件清0,即在中断服务程序要对 RI 清0。串行口控制寄存器串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工学院信息与通信工程学院电子信息教研室制作 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1 GF0 PD IDL特殊功能控制寄存器特殊功能控制寄存器
15、PCON 字节地址87H,无位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.2 特殊功能寄存器特殊功能寄存器PCON PCON 各位的意义各位的意义(1). SMOD波特率选择位波特率选择位 例如:方式1的波特率的计算公式为: 方式1波特率= ( 2SMOD/32 )定时器T1的溢出率 也称SMOD位为波特率倍增位。SMOD=1,波特率增加1倍。(2). GF1、GF0通用标志位通用标志位 这两个标志位可供用户使用,可用软件置1或清0。两个标志位用户应充分利用。湖南理工学院信息与通信工程学院电子信息教研室制作 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1
16、 GF0 PD IDL特殊功能控制寄存器特殊功能控制寄存器SCON 字节地址87H,无位寻址,格式如图所示7.1 串行口的结构串行口的结构7.1.2 特殊功能寄存器特殊功能寄存器PCON PCON 各位的意义(3). PD掉电方式位掉电方式位 若PD=1,单片机进入掉电工作方式。(4). IDL待机方式位待机方式位 IDL=1,单片机进入待机工作方式。 有关单片机的掉电工作方式和待机工作方式,请查阅相关资料。湖南理工学院信息与通信工程学院电子信息教研室制作7.2 串行口的串行口的4种工作方式种工作方式 方式1、2、3才是真正意义的全双工异步通信串行接口。在方式1、2、3时,发送数据由TXD输出
17、;接收数据由RXD输入。全双工同时发送和接收。RXDTXDRXDTXD89C51 89C51 发送时,将需要发送的字节送到发送缓冲器,发送缓冲器,MOVSBUF,A 串行口自动按指定的数据格式、波特率从TXD引脚发送。 启动接收后,串行口自动接收RXD引脚串行数据,接收完一帧数据后自动送到接收缓冲器,接收缓冲器,只要将接收的字节读出即可。MOVA,SBUF湖南理工学院信息与通信工程学院电子信息教研室制作方式方式1SM0、SM1=01 一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如图所示7.2 串行口的串行口的4种工作方式种工作方式7.2.2 方式
18、方式1 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位01 方式1波特率=(2SMOD/32)定时器T1的溢出率 SMOD为PCON寄存器的最高位的值(0或1)。溢出率:溢出率:每秒溢出的次数,溢出率=1/定时时间湖南理工学院信息与通信工程学院电子信息教研室制作1. 方式方式1发送发送 当执行一条数据写发送缓冲器数据写发送缓冲器SBUF的指令,就启动发送。 串行口自动自动按如下过程发送:首先将起始位 0 向TXD输出,此后,每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD输出一个数据位。8位数据位全部发送完毕后,置“1” TI。方式1发送数据的时序,如图7-8所示。图中T
19、X时钟是发送的波特率。7.2 串行口的串行口的4种工作方式种工作方式7.2.2 方式方式1 湖南理工学院信息与通信工程学院电子信息教研室制作2. 方式方式1接收接收 定时控制信号有两种:接收移位时钟(RX时钟,频率和波特率相同)和位检测器采样脉冲(频率是RX时钟的16倍)。 当REN=1,启动接收,启动后,串行口自动自动按如下过程接收: (1). 当采样到RXD端从1到0的就启动检测器,然后在接收数据中间3次连续采样(第7、8、9个脉冲时采样),进行表决后确认是否是真正的起始位( )的开始。7.2 串行口的串行口的4种工作方式种工作方式7.2.2 方式方式1 湖南理工学院信息与通信工程学院电子
20、信息教研室制作2. 方式方式1接收接收 (2).当确认起始位后,开始接收一帧数据。每接收一位数据时, 也都进行3次连续采样(第7、8、9个脉冲时采样),接收到值是3次采样中至少2次相同的值,以保证接收到的数据位的准确性。 (3).方式1不考虑多机通信,即SM2=0,当一帧数据接收完后:. 若RI=0,表明上一帧数据接收完成时,RI=1发出的中断请求已被响应,接收SBUF中的数据已被取走,即“接收SBUF”已空,则刚收到的数据装入接收SBUF,且置“1”中断标志中断标志RI。. 若RI=1,则收到的数据不装入接收SBUF,意味着该帧接收数据丢失。7.2 串行口的串行口的4种工作方式种工作方式7.
21、2.2 方式方式1 湖南理工学院信息与通信工程学院电子信息教研室制作方式方式2SM0、SM1=109位异步通信方式位异步通信方式。一帧数据为11位,1个起始位(0),8个数据位,1位可程控的第9位数据和1个停止位(1),先发送或接收最低位。帧格式如图所示7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式201方式2波特率=(2SMOD/64)fOSCSMOD为PCON寄存器的最高位的值(0或1)。起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止位湖南理工学院信息与通信工程学院电子信息教研室制作1. 方式方式2发送发送 发送前,先根据通讯协议由软件设置TB8(第
22、9位数据)。 例如,双机通讯:第9位作奇偶校验位。若是偶检验,一帧数据的9位中,“1”的个数为偶数。 多机通讯:第9位作地址/数据的标志位。1:地址帧;0:数据帧。方式2发送数据波形如图所示。7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 湖南理工学院信息与通信工程学院电子信息教研室制作偶校验方法偶校验方法发送方发送方,保证发送的一帧数据的9位中,“1”的个数为偶数偶数。方法:方法:将要发送的数据放入A,将PPSW.0放入TB8第9位;7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 PSW Cy Ac F0 RS1 RS0 OV PA中“1”的个数为
23、奇数, P=1; A中“1”的个数为偶数,P=0。即: A中“1”的个数和P中“1”的个数一定是偶数偶数。接收方接收方,验证接收的一帧数据的9位中,“1”的个数为偶数偶数。方法:方法:接收数据放入A,将接收的第9位RB8与P比较,相等则正确。例如,例如,发送方发送方发送36H 00110110,(A)=36H P=0,TB8=0若接收方接收方接收数据为34H 00110100,RB8=0, (A)=34H P=1,RB8=0,P=1, RB8P,接收出错。奇偶标志位湖南理工学院信息与通信工程学院电子信息教研室制作例例7-1 方式2发送在双机通信中的应用。 下面给出的方式2发送中断服务程序,是在
24、双机通信中,以TB8作为偶校验位,处理方法为数据写入SBUF之前,先将数据的偶校验位写入TB8,以保证采用偶校验发送。 主程序这里没有给出,作一简要介绍。 主程序中,必须作初始化设置,例如中断设置,串行通信口方式2设置等。 主程序中,先发送第1帧,发送完后,进入中断服务程序,继续发送第2、3、4 的后续帧。 实际的中断服务程序,应对发送帧计数,发完后关中断。7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 湖南理工学院信息与通信工程学院电子信息教研室制作PIPTI: PUSH PSW ;现场保护 PUSH Acc;用到了A,必须保护 SETB RS1 ;选择第2组工作寄存器
25、区 CLR RS0;与主程序工作寄存器不冲突 CLR TI ;发送中断标志清“0” MOV A,R0;取要发送的数据MOV C,P ; A中1的个数为奇数,P=1 MOV TB8,C; 校验位送TB8,采用偶校验 MOV SBUF,A ;启动发送 INC R0 ;数据指针加1CLR RS1;恢复工作寄存器第恢复工作寄存器第0组组 POP Acc ;恢复现场 POP PSW RETI ;中断返回7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 湖南理工学院信息与通信工程学院电子信息教研室制作2. 方式方式2接收接收 当REN=1,就启动接收。这时,当位检测到RXD从1到0的,
26、并判断起始位有效后,开始收一帧信息。 不考虑多机通信 (SM2=0) 时,当接收完完第9位数据后:. 若RI=0,表明上一帧数据接收完成时,RI=1发出的中断请求已被响应,接收SBUF中的数据已被取走,即“接收SBUF”已空,则刚收到的数据装入接收SBUF,第9位数据送入RB8,并置“1”中断标志RI。. 若RI=1,则收到的数据不装入接收SBUF,意味着该帧接收数据丢失。7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 湖南理工学院信息与通信工程学院电子信息教研室制作例例7-2 方式2接收在双机通信中的应用。 本例与例例7-1对应。接收到的第9位数据为偶校验位,放在RB8
27、。若接收到的9位数据中“1”的个数不是偶数,表示接收出错。判断方法:接收数据送A后,若P = RB8,表示偶校验正确。程序中处理: P=1 ,RB8=0,转出错处理P=0 ,RB8=1,转出错处理中断服务程序PIRI: PUSH PSWPUSH AccSETB RS0 ;选择1组寄存器区CLR RS1CLR RI ;软件清接收标志RI7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 湖南理工学院信息与通信工程学院电子信息教研室制作MOV A,SBUF ;收到数据送AMOV C,PJNC L1;C0,即P=0,转L1JNB RB8,ERP ;P=1,RB80,出错AJMP L
28、2;P=1,RB81,正确L1: JB RB8,ERP;P=0,RB81,出错L2: MOV R0,A;接收数据正确,放入接收缓冲区 INC R0;接收缓冲区指针下移CLR RS0;恢复工作寄存器第恢复工作寄存器第0组组 POP Acc POP PSWERP: ;出错处理程序段 RETI7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 湖南理工学院信息与通信工程学院电子信息教研室制作关于数据校验关于数据校验 实际应用中,为了确保接收正确,除了进行奇偶校验外(一帧数据中两位同时错同时错不能判断),通常还要作纵向冗余校验纵向冗余校验。例如,发送方需要发送4字节数据,则将4字节数
29、据异或作为第5字节(冗余帧冗余帧)发出。接收方,除奇偶校验正确外,还要保证接收的5字节数据异或结果为0,才认为接收数据正确。7.2 串行口的串行口的4种工作方式种工作方式7.2.3 方式方式2 50H90H51H 73H52H 38H53H FEH54H 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 101111100 0 0 1 1 1 0 0 01 1 0 1 1 0 1 1 1 1 1 1 1 1 1 00 0 1 0 0 1 0 125HFEH38H90H73H25H1 0 0 1 0 0 0 00 1 1 1 0 0 1 10 0 1 1 1 0 0 01 1 1 1
30、1 1 1 00 0 1 0 0 1 0 1纵向偶校验湖南理工学院信息与通信工程学院电子信息教研室制作方式方式3SM0、SM1=11波特率可变的波特率可变的9位异步通信方式位异步通信方式。除波特率外,方式3和方式2相同。方式3的时序见方式2。 方式3波特率=(2SMOD/32)定时器T1的溢出率 SMOD为PCON寄存器的最高位的值(0或1)。 由于波特率可设置,方式3是最常用的方式。7.2 串行口的串行口的4种工作方式种工作方式7.2.4 方式方式3湖南理工学院信息与通信工程学院电子信息教研室制作 在串行通信中,发送、接收双方的发送或接收波特率必须一致,通过软件对AT89C51单片机串行口可
31、设定4种工作方式。方式0、方式2的波特率是固定的;方式1、方式3波特率由定时器T1的溢出率来确定。波特率定义:波特率定义:串行口每秒钟发送(或接收)的位数称为波特率。设发送每一位数据所需要的时间为T,则波特率 = 1/T。 对于定时器T1的不同工作方式,得到的波特率的范围是不一样的 ,因为定时器的不同工作方式下计数位数不同。7.4 波特率的制定方法波特率的制定方法7.4.1 波特率的定义波特率的定义湖南理工学院信息与通信工程学院电子信息教研室制作串行口工作在方式串行口工作在方式0、方式、方式2的波特率是固定的的波特率是固定的(1). 方式0 波特率 = 时钟频率fosc1/12,不受SMOD位
32、值影响。若fosc=12MHz,波特率为fosc/12即1Mb/s。(2). 方式2 波特率=(2SMOD/64)fosc若fosc=12MHz:SMOD=0 波特率=187.5kb/s; SMOD=1 波特率=375kb/s 串行口工作在方式串行口工作在方式1、方式、方式3波特率由定时器波特率由定时器T1的溢出率来确定的溢出率来确定(3). 方式1、3波特率=(2SMOD/32)T1的溢出率 实际设定波特率时,T1常设置为方式方式2定时(自动装初值)这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差,波特率比较准确。7.4 波特率的制定方法波特率的制定方法7.4.2 定时器定时器T
33、1产生波特率的计算产生波特率的计算湖南理工学院信息与通信工程学院电子信息教研室制作方式方式1、方式、方式3时,由波特率计算定时器时,由波特率计算定时器T1方式方式2的初值的相关公式:的初值的相关公式:7.4 波特率的制定方法波特率的制定方法7.4.2 定时器定时器T1产生波特率的计算产生波特率的计算定时时间溢出率1T1 T112f 2 OSC8定时时间初值溢出率波特率1T322 SMOD波特率溢出率SMOD2 32 1T波特率定时时间322 1TSMOD12f 322 2 OSCSMOD8波特率初值波特率初值384f 2 2 OSCSMOD8湖南理工学院信息与通信工程学院电子信息教研室制作 实
34、际使用时,为避免烦杂的初值计算,常用的波特率和初值X间的关系列成表7-2(P124),以供查用。7.4 波特率的制定方法波特率的制定方法7.4.2 定时器定时器T1产生波特率的计算产生波特率的计算湖南理工学院信息与通信工程学院电子信息教研室制作表表7-2有两点需要注意有两点需要注意:(1). fOSC为12MHz或6MHz,表中初值和相应波特率之间有一定误差。 例如,当fOSC=6MHz ,SMOD=1, 9600波特率查表初值为FDH。实际上,初值FDH的对应的波特率是10416,误差816波特;初值FCH的对应的波特率是7812。误差1788波特。 调整fosc可消除误差,例如fosc为1
35、1.0592MHz。若SMOD=0, 9600波特率查表对应的初值为FDH,并没有误差。(2). 如果串行通讯选用很低的波特率,例如,波特率选为55,可将T1设置为方式方式1定时。但在T1溢出时,需用在中断服务程序中重新装入初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方法加以调整。7.4 波特率的制定方法波特率的制定方法7.4.2 定时器定时器T1产生波特率的计算产生波特率的计算湖南理工学院信息与通信工程学院电子信息教研室制作例例7-3 若8031单片机的时钟振荡频率为11.0592MHz,选用T1为方式2定时作为波特率发生器,波特率为2400b/s,求初值。 上述
36、结果可直接从表7-2中查到。 SMOD=0, 2400波特率查表对应的初值为F4H。 这里时钟振荡频率选为11.0592 MHz,就可使初值为整数,从而产生精确的波特率。计算:7.4 波特率的制定方法波特率的制定方法7.4.2 定时器定时器T1产生波特率的计算产生波特率的计算波特率初值384f 2 2 OSCSMOD8240038410592001 1 256 92160010592001 256 24412 256 = F4H湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程 串行口的的方式0是移
37、位寄存器工作方式,主要用于扩展并行I/O用,并不用于串行通信。 串行口的方式13是用于串行通信的,下面介绍双机串行通信软件编程,应当说明的是,软件编程与上面介绍的各种串行标准的硬件接口电路无关。串行口通信的编程设计步骤串行口通信的编程设计步骤1. 编程前准备编程前准备. 确定工作方式,确定TMOD、SCON、 PCON、 IE、IP等相关SFR的值;. 根据波特率计算或查表定时器初值;湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程串行口通信的编程设计步骤串行口通信的编程设计步骤2. 发送编程发送
38、编程(1).主程序主程序. 主程序初始化各相关SFR设置,开启波特率定时器;.确定发送数据系列,找到第1个发送数据;. 要发送的第9位送TB8,将第1个发送数据放入SBUF。(2).中断服务程序中断服务程序. 判断是TI=1?是,TI清0;. 判断全部数据是否发送完毕;. 未完,找到要发送第i个数据;. 要发送的第9位送TB8,将要发送的第i个数据放入SBUF。湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程串行口通信的编程设计步骤串行口通信的编程设计步骤3. 接收编程接收编程(2).主程序主程序
39、. 主程序初始化各相关SFR设置,开启波特率定时器;. 接收数据放置位置安排,确定指针;. REN置1,启动接收;(2).中断服务程序中断服务程序. 判断是RI=1?是,RI清0;. 从SBUF读出接收数据,并读出RB8进行奇偶校验;. 接收正确的数据放入指定位置,接收错误另行处理;. 判断是否接收完毕,是,REN清0关闭接收。湖南理工学院信息与通信工程学院电子信息教研室制作1串行口方式串行口方式1应用编程应用编程例例7-4 用方式1双机串行通信,收、发双方均采用6MHz晶振,波特率为2400b/s,发送方把以78H、77H单元的内容为首地址首地址,以76H、75H单元内容减1为末地址末地址的
40、数据块通过串行口发送给接收方。题意分析题意分析7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程75H40H76H 20H77H 00H78H 20H发送方要发送的数据块的地址为2000H203FH。发送时先发送地址帧,再发送数据帧;接收方在接收时使用一个标志位来区分接收的是地址还是数据,然后将其分别存放到指定的单元中。当接收地址时,放在78H75H中;接收数据时,放在78H75H指定的地址中。下面仅介绍采用中断方式发送、接收的程序。湖南理工学院信息与通信工程学院电子信息教研室制作例例7-4 6MHz晶振,波特率为2400b/s,每一帧信息为10
41、位,第0位为起始位,第18位为数据位,最后1位为停止位。编程准备编程准备:波特率为2400b/s, SMOD=1, 计算初值为F3H。7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程0 0 1 0 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1 GF0 PD IDLT1作波特率发生器,定时模式,方式21 0 0 0 0 0 0 080H20H串行口方式10 1 0 0/1 0 0 0 040H/50H湖南理工学院信息与通信工程学院电子信息教研室制作例例7-4 发送方甲机程序设计思想发送方甲机程序设计思想
42、(1). 在主程序主程序中,调用发送子程序(2). 发送子程序发送子程序. 初始化处理,设置相关特殊功能寄存器;. 先关闭中断,采用查询的方式发送地址帧,共4帧;. 发送地址帧完成后,作发送数据帧准备,首地址送DPTR;开中断,发送第1帧数据,然后再中断服务子程序中发送其它数据帧;. 判断是否有数据帧发送完毕标志(F0=1),若有标志,返回。(3).中断服务子程序中断服务子程序. 数据指针下移,发送一帧数据;.判断数据帧是否发送完毕,若是设置数据帧发送完毕标志(F0=1) 。7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信
43、工程学院电子信息教研室制作(1). 甲机发送程序甲机发送程序中断方式中断方式ORG 0000H LJMP MAIN ORG 0023H;串行口中断地址 LJMP COM_INT ORG 1000HMAIN:MOV SP,#53H;设置堆栈指针MOV 78H,#20H;设置发送的数据块的首、末地址MOV 77H,#00H MOV 76H,#20H MOV 75H,#40H ACALL TRANS;调用发送子程序HERE:SJMP HERE7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作TRANS:M
44、OV TMOD,#20H ;设置定时器工作方式 MOV TH1,#0F3H;设置计数器初值 MOV TL1,#0F3H MOV PCON,#80H;波特率加倍 SETB TR1;启动T1计数器计数 MOV SCON,#40H;设置串行口工作方式1 MOV IE,#00H;先关中断, 利用查询发送地址帧 CLR F0 MOV SBUF,78H;发送首地址高8位WAIT1:JNB TI,WAIT1 CLR TI MOV SBUF,77H;发送首地址低8位WAIT2:JNB TI,WAIT2 CLR TI7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编
45、程湖南理工学院信息与通信工程学院电子信息教研室制作MOV SBUF,76H;发送末地址高8位WAIT3:JNB TI,WAIT3 CLR TI MOV SBUF,75H;发送末地址低8位WAIT4:JNB TI,WAIT4 CLR TI MOV IE,#90H;开中断, 采用中断方式发送数据 MOV DPH,78H MOV DPL,77H MOVX A,DPTR MOV SBUF,A;发送首个数据WAIT:JNB F0,WAIT;发送等待 RET7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作CO
46、M_INT:CLR TI;发送中断标志位TI清0 INC DPTR;数据指针加1, 准备发送下个数据 MOV A,DPH;判断当前是否发送数据的末地址 CJNE A,76H,END1;不是末地址则跳转 MOVA,DPL;同上 CJNE A,75H,END1 SETB F0;数据发送完毕, 置1标志位 CLR ES ;关串行口中断 CLR EA;关中断 RETI;中断返回END1: MOVX A,DPTR;将要发送的数据送A, 准备发送 MOV SBUF,A;发送数据 RETI;中断返回 END7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南
47、理工学院信息与通信工程学院电子信息教研室制作例例7-4 接收方乙机程序设计思想接收方乙机程序设计思想(1). 在主程序主程序中,调用接收子程序(2). 接收子程序接收子程序. 初始化处理,设置相关特殊功能寄存器;. 设置2个标志,F0=1:地址帧收完,(7FH)=1:表示数据帧接收完;. 开中断,在中断服务子程序中接收;. 判断是否有数据帧接收完毕标志,若有标志,返回。(3).中断服务子程序中断服务子程序. 判断F0,是接收地址,还是数据,分别放入不同位置;. F0=0是地址,判断地址帧是否接收完毕,若接收完毕设置F0=1。. F0=1是数据,判断数据帧是否接收完毕,若接收完毕设置(7FH)=
48、1。7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作(2). 乙机接收程序乙机接收程序中断方式中断方式ORG 0000H LJMPMAINORG 0023HLJMP COM_INTORG 1000HMAIN: MOV SP,#53H;设置堆栈指针ACALL RECEI;调用接收子程序HERE:SJMP HERE7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作RECEI: MOV R0,#78H;设置地
49、址接收区MOV TMOD,#20H;设置定时器/计数器工作方式MOV TH1,#0F3H;设置波特率MOV TL1,#0F3HMOV PCON,#80H;波特率加倍SETB TR1;开计数器MOV SCON,#50H;设置串行口工作方式1,接收MOV IE,#90H;开中断CLR F0;标志位清“0”,先接收的是地址CLR 7FH;=1,表示接收数据结束WAIT:JNB 7F,WAIT;查询标志位等待接收RET7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作COM_INT:PUSH DPL;压栈,
50、 保护现场PUSH DPHPUSH AccCLR RI;接收中断标志位清“0”JB F0,R_DATA; 接收是数据?地址?F0=0地址MOV A,SBUF;接收的是地址帧数据MOV R0,A;将地址帧送指定的寄存器DEC R0CJNE R0,#74H,RETNSETB F0;置标志位, 地址接收完毕RETN: POP Acc;出栈, 恢复现场POP DPHPOP DPLRETI;中断返回7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作R_DATA:MOV DPH,78H;数据接收程序区MOV D
51、PL, 77HMOV A,SBUF;接收数据MOVX DPTR,A;送指定的数据存储单元中INC 77H;地址加1MOV A,77H;判断当前接收的数据的地址JNZ END2;是否应向高8位进位INC 78HEND2: MOV A,76HCJNE A,78H,RETN; 是否最后一帧数据,否则继续MOV A,75HCJNE A,77H,RETN;是最后一帧则各种标志位清“0”7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作CLR ES;关闭串行口中断CLR EA;关中断SETB 7FH;设置数据接
52、收完毕标志SJMP RETN;跳入返回子程序区END7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作2串行口方式串行口方式2应用编程应用编程方式2和方式1有两点不同之处。不同点1:方式2接收/发送11位信息,第0位为起始位;第18位为数据位;第9位是程控位,该位可由用户置TB8决定,在实际应用中第9位通常作为奇偶校验位;第10位是停止位1。不同点2:方式2的波特率基本固定:波特率=振荡器频率/n。 当SMOD=0时,n=64。 当SMOD=1时,n=32。 方式2的使用和方式3基本一样,由于方式3
53、波特率可由定时器的溢出率确定,应用较多。方式2的编程应用,可参照方式3的应用编程。 7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作3串行口方式串行口方式3应用编程应用编程例例* 电路如图所示,甲、乙双机串行通信,要求:波特率9600,采用偶校验;甲机读入P1口的8个开关的状态后,通过串行口发送到乙机,乙机将接收到的甲机的8个开关的状态数据送入P1口,由P1口的8个发光二极管来显示8个开关的状态。双方晶振均采用11.0592MHz。7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行
54、通信软件编程双机串行通信软件编程7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作编程准备编程准备:波特率为9600b/s, SMOD=0, 查表初值为FDH。0 0 1 0 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1 GF0 PD IDLT1作波特率发生器,定时模式方式2 0 0 0 0 0 0 0 000H20H7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研
55、室制作串行口方式31 1 0 0/1 0 0 0 0C0H/D0H中断设置:允许串行口、定时器T0中断1 0 0 1 0 0 0 090H7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作程序设计思想程序设计思想采用中断方式采用中断方式1.发送方发送方(1)主程序主程序设置相关SFR;读出P1口开关状态作为发送数据,确定第9位TB8,将发送数据放入SBUF;(2)中断服务程序中断服务程序 TI清0, 作主程序相同的事。7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机
56、串行通信软件编程2.接收方接收方(1)主程序主程序主程序中,设置相关SFR;(2)中断服务程序中断服务程序 RI清0; 读出SBUF中的接收数据,并进行偶检验:RB8 = P,接收正确, RB8P,接收出错;若接收正确,将接收数据从P1输出控制LED。湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程(1). 甲机发送程序甲机发送程序ORG 0000H LJMP MAIN ORG 0023H;串行口中断地址 LJMP COM_INT湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程
57、和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程MAIN:MOV SP,#60H;设置堆栈指针MOV TMOD,#20H ;设置定时器工作方式 MOV TH1,#0FDH;设置计数器初值 MOV TL1,#0FDH MOV PCON,#00H;波特率不加倍 SETB TR1;启动T1计数器计数 MOV SCON,#0C0H ;设置串行口工作方式3MOV IE,#90H;开中断, 仅允许串行口中断MOVP1,#0FFH;要输入,先输出“1”MOVA,P1;读出P1口MOV C,P ; A中“1” 和P中“1” 一定是偶数偶数 MOV TB8,C; 校验位送TB8,采
58、用偶校验 MOV SBUF,A ; 发送一次HERE:SJMP HERE波特率设置湖南理工学院信息与通信工程学院电子信息教研室制作COM_INT:CLR TI;发送中断标志位TI清0 MOVA,P1MOV C,P ; A中1的个数为奇数,P=1 MOV TB8,C; 校验位送TB8,采用偶校验 MOV SBUF,A ;启动发送RETI;中断返回7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程(2).
59、乙机接收程序乙机接收程序ORG 0000H LJMP MAIN ORG 0023H;串行口中断地址 LJMP COM_INT湖南理工学院信息与通信工程学院电子信息教研室制作7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程MAIN:MOV SP,#60H;设置堆栈指针MOV TMOD,#20H ;设置定时器工作方式 MOV TH1,#0FDH;设置计数器初值 MOV TL1,#0FDH MOV PCON,#00H;波特率不加倍 SETB TR1;启动T1计数器计数 MOV SCON,#0D0H ;设置串行口工作方式,开启接收MOV IE,#90H
60、;开中断, 仅允许串行口中断HERE:SJMP HERE波特率设置湖南理工学院信息与通信工程学院电子信息教研室制作COM_INT:CLR RI; 接收中断标志位RI清0MOV A,SBUF ; 接收的数据送AJNB P,L1; P=0,转L1JNB RB8,L3 ; P=1,RB80,出错SJMP L2; P=1,RB81,正确L1: JB RB8,L3; P=0,RB81,出错L2: MOV P1,A; 接收数据正确,控制LEDL3: RETI 7.5 串行口的编程和应用串行口的编程和应用 7.5.2 双机串行通信软件编程双机串行通信软件编程湖南理工学院信息与通信工程学院电子信息教研室制作7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法人和股东分配协议书
- 药企质保协议书
- 配送餐品协议书
- 苗木卸车协议书
- 小红书业务合作协议书
- 安置房交房标准协议书
- 联合购铺协议书
- 桥梁混凝土施工协议书
- 环卫安全协议书
- 租赁临时协议书
- 2025年保密观知识竞赛题库及答案(各地真题)含答案详解
- 中国成人呼吸系统疾病家庭氧疗指南(2024年)解读课件
- 2024年江苏省高考政治试卷(含答案逐题解析)
- 健康照护教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集
- 最新-临时救助申请审核审批表模板
- 《有效沟通》PPT课件-(2)
- 青春红绿灯教学设计中小学心理健康心理游戏脚本
- 《城镇土地使用税纳税申报表》
- 三年级数学下册口算脱式竖式练习题
- 大榆树沟防洪治理工程初步设计报告
- 8D报告培训教材(共30页).ppt
评论
0/150
提交评论