1、第第9 9章:串口通信章:串口通信本章基本要求:本章基本要求:基本概念基本概念 51 51的串行接口的串行接口*串行接口的应用串行接口的应用*9.1串行通信基础串行通信基础所谓所谓“通信通信”是指是指计算机与其他设备之间进计算机与其他设备之间进行的信息交换行的信息交换。通信的方式分为并行通信和串行通信两种。通信的方式分为并行通信和串行通信两种。并行通信并行通信是构成一组数据的各位同时进行传是构成一组数据的各位同时进行传送,例如送,例如8 8位数据或位数据或1616位数据并行传送。位数据并行传送。其特点是传输速度快其特点是传输速度快,但当距离较远、位数又但当距离较远、位数又多时导致了通信线路复杂
2、且成本高。多时导致了通信线路复杂且成本高。串行通信串行通信是数据一位接一位地顺序传送。其是数据一位接一位地顺序传送。其特点是通信线路简单特点是通信线路简单,只要一对传输线就可以实现只要一对传输线就可以实现通信通信(如电话线如电话线),可大大地降低成本,可大大地降低成本,适用于远距适用于远距离通信。缺点是传送速度慢。离通信。缺点是传送速度慢。9.1串行通信基础串行通信基础下图为以上两种通信方式的示意图。由图可知下图为以上两种通信方式的示意图。由图可知,假设并行假设并行传送传送N N位数据所需时间为位数据所需时间为T,T,那么串行传送那么串行传送的时间至少为的时间至少为NT,NT,实际上总是大于实
3、际上总是大于NTNT的。的。9.1串行通信基础串行通信基础9.1.19.1.1串行通信的分类串行通信的分类1 1、异步通信、异步通信异步传送的特点是数据在线路上的传送不连异步传送的特点是数据在线路上的传送不连续。在传送时续。在传送时,数据是以一个字符为单位进行传送数据是以一个字符为单位进行传送的。它用一个起始位表示字符的开始的。它用一个起始位表示字符的开始,用停止位表用停止位表示字符的结束。异步传送的字符格式如图所示。示字符的结束。异步传送的字符格式如图所示。字符帧:也叫数据帧,字符帧:也叫数据帧,由起始位、数据位、奇由起始位、数据位、奇偶校验位和停止位偶校验位和停止位4 4个部分组成。个部分
4、组成。9.1串行通信基础串行通信基础9.1串行通信基础串行通信基础波特率:波特率:就是数据的传送速率就是数据的传送速率,即每秒钟传送的即每秒钟传送的二进制位数,单位:位二进制位数,单位:位/秒。秒。说明:说明:要求发送端与接收端的波特率必须一要求发送端与接收端的波特率必须一致。波特率越高,传送速度越快。致。波特率越高,传送速度越快。例:设字符传送的速率为例:设字符传送的速率为120120字符字符/秒秒,而每而每1 1个字符个字符为为1010位位,那么传送的波特率为:那么传送的波特率为:1010位位/字符字符120120字字符符/秒秒=1200=1200位位/秒秒=1200=1200波特。每波特
5、。每1 1位二进制位的传位二进制位的传送时间送时间TdTd就是波特率的倒数,就是波特率的倒数,例中:例中:T Td d=1/1200=0.833ms=1/1200=0.833ms9.1串行通信基础串行通信基础2 2、同步通信、同步通信在异步传送中在异步传送中,每一个字符都要用起始位和停每一个字符都要用起始位和停止位作为字符开始和结束的标志止位作为字符开始和结束的标志,占用了一定的占用了一定的时间。为了提高传送速度时间。为了提高传送速度,有时就去掉这些标志有时就去掉这些标志,而采用同步传送而采用同步传送,即即1 1次传送次传送1 1组数据。在这组数据。在这1 1组数组数据的开始处要用同步字符据的
6、开始处要用同步字符SYNSYN来加以指示来加以指示,如图示:如图示:9.1.29.1.2串行通信的制式串行通信的制式串行通信的数据传送方向有三种形式。串行通信的数据传送方向有三种形式。9.1串行通信基础串行通信基础 1、单工制式(、单工制式(Simplex)单工制式是指甲乙双方通信时只能单向传送数据,单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。发送方和接收方固定。单工:单工:广播广播9.1串行通信基础串行通信基础 2 2、半双工制式、半双工制式 半双工制式是指通信双方都具有发送器和接收器,既半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,
7、发送时不能接可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。收,接收时不能发送。半双工:对讲机半双工:对讲机9.1串行通信基础串行通信基础 全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送。3 3、全双工制式全双工制式双工:电话双工:电话9.1串行通信基础串行通信基础9.1.39.1.3 调制解调器调制解调器计算机通信是一种数字信号的通信计算机通信是一种数字信号的通信,如图所示。如图所示。它要求传送线的频带很宽它要求传送线的频带很宽,而在长距离通讯时而在长距离通讯时,
8、通通常是利用电话线来传送的常是利用电话线来传送的,该线不可能有这样宽的该线不可能有这样宽的频带。如果用数字信号经过传送线直接通讯频带。如果用数字信号经过传送线直接通讯,信号信号就会畸变。就会畸变。9.1串行通信基础串行通信基础因此要在发送端用调制器因此要在发送端用调制器(Modulator)(Modulator)把数字把数字信 号 转 换 为 模 拟 信 号信 号 转 换 为 模 拟 信 号,在 接 收 端 用 解 调 器在 接 收 端 用 解 调 器(Demodulator)(Demodulator)检测此模拟信号检测此模拟信号,再把它转换成数再把它转换成数字信号字信号,如图所示。如图所示。
9、9.2MCS-51单片机串行接口单片机串行接口5151单片机内部有一个功能很强的全双工串行单片机内部有一个功能很强的全双工串行口口,可同时发送和接收数据。它有四种工作方式,可同时发送和接收数据。它有四种工作方式,可供不同场合使用。波特率由软件设置可供不同场合使用。波特率由软件设置,通过片内通过片内的定时的定时/计数器产生。接收、发送均可工作在查询计数器产生。接收、发送均可工作在查询方式或中断方式方式或中断方式,使用十分灵活。使用十分灵活。5151的串行口除了用于数据通信外的串行口除了用于数据通信外,还可以非常还可以非常方便地构成方便地构成1 1个或多个并行输入个或多个并行输入/输出口或作串并输
10、出口或作串并转换转换,用来驱动键盘与显示器。用来驱动键盘与显示器。51单片机的串行接口单片机的串行接口硬件结构硬件结构SBUF(发)(发)SBUF(收)(收)发送控制器发送控制器 TI接收控制器接收控制器 RI移位寄存器移位寄存器波波特特率率发发生生器器T1+A累累加加器器移位寄存器移位寄存器RxDP3.0TxD P3.1去申请中断去申请中断引脚引脚引脚引脚CPU内部内部1 1、发送和接收电路、发送和接收电路SBUFSBUF是两个在物理上独立的接收、发送缓冲器是两个在物理上独立的接收、发送缓冲器,可同时可同时发送、接收数据。两个缓冲器只用一个字节地址发送、接收数据。两个缓冲器只用一个字节地址9
11、9H,99H,可通可通过指令对过指令对SBUFSBUF的读写来区别是对接收缓冲器的操作还是对的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。发送缓冲器的操作。MOV SBUF,AMOV SBUF,A ;CPU ;CPU写写SBUF,SBUF,就是修改发送缓冲器就是修改发送缓冲器;MOV A,SBUFMOV A,SBUF ;CPU ;CPU读读SBUF,SBUF,就是读接收缓冲器。就是读接收缓冲器。串行口对外也有两条独立的收发信号线串行口对外也有两条独立的收发信号线RXD(P3.0)RXD(P3.0)和和TXD(P3.1),TXD(P3.1),因此可以同时发送、接收数据因此可以同时发送、
12、接收数据,实现全双工传实现全双工传送。送。9.2MCS-51单片机串行接口单片机串行接口发送和接收过程都是在发送和接收时钟控制下发送和接收过程都是在发送和接收时钟控制下进行的,必须与设定的波特率保持一致。进行的,必须与设定的波特率保持一致。一般,一般,5151单片机的串口时钟是由内部定时器单片机的串口时钟是由内部定时器的溢出率经的溢出率经1616分频后提供。分频后提供。2 2、串行口控制寄存器、串行口控制寄存器SCONSCON、PCONPCONSCONSCON用来控制串行口的工作方式和状态(可用来控制串行口的工作方式和状态(可位寻址)。位寻址)。在复位时所有位被清在复位时所有位被清0,0,字地
13、址为字地址为98H98H。PCONPCON主要是为主要是为CHMOSCHMOS型单片机的电源控制而设型单片机的电源控制而设置的专用寄存器置的专用寄存器,单元地址为单元地址为87H,87H,不能不能位寻址。位寻址。SCONSCON、PCONPCON的格式和内容如下图。的格式和内容如下图。9.2MCS-51单片机串行接口单片机串行接口串行口控制寄存器串行口控制寄存器SCONSCON(98H98H)1 1、SM0SM0、SM1 SM1 控制串行口方式控制串行口方式 2 2、SM2 SM2 允许方式允许方式2 2、3 3的多机通讯特征位的多机通讯特征位 在方式在方式2、3中若中若SM2=1表示接收的第
14、九位数据表示接收的第九位数据(RB8)为)为1时时,激活激活RI。在方式在方式0,10,1中中SM2SM2必须为必须为0 0。SM0 SM1工作方式工作方式功功 能能 简简 述述波特率波特率 0 0方式方式08位位 同步移位寄存器同步移位寄存器fosc/12 0 1方式方式110位位 UART可变可变 1 0方式方式211位位 UARTfosc/32或或/64 1 1方式方式311位位 UART可变可变 3 3、REN REN 允许串行接收位,由软件置允许串行接收位,由软件置/复位复位 1 1:允许接收:允许接收 0 0:不允许接收:不允许接收4 4、TB8 TB8 在方式在方式2 2、3 3
15、中要发送的第九位数据,由软件置中要发送的第九位数据,由软件置/复位复位 5 5、RB8 RB8 在方式在方式2 2、3 3中是接收的第九位数据中是接收的第九位数据 在方式在方式0 0中不用中不用RB8RB8。串行口控制寄存器串行口控制寄存器SCONSCON(98H98H)6 6、RI RI 接收中断标志(必须由软件清除)接收中断标志(必须由软件清除)在方式在方式0 0中串行接收到第中串行接收到第8 8位结束时自动置位。位结束时自动置位。在方式在方式1 1、2 2、3 3中串行接收到停止位的中间时置位。中串行接收到停止位的中间时置位。1 111111SBUF1111 1111RxD1RI=17
16、7、TI TI 发送中断标志(必须由软件清除)发送中断标志(必须由软件清除)在方式在方式0 0中串行发送第中串行发送第8 8位结束时自动置位。位结束时自动置位。在方式在方式1 1、2 2、3 3中串行发送停止位的开始时置位。中串行发送停止位的开始时置位。串行口控制寄存器串行口控制寄存器SCONSCON(98H98H)电源控制寄存器电源控制寄存器PCONPCONPCOND7D6D5D4D3D2D1D0位名称SMODGF1GF0PDIDLSMOD=1SMOD=1,串行口波特率加倍。串行口波特率加倍。PCONPCON寄存器不能进行位寻址。寄存器不能进行位寻址。SMODSMOD:在串行口工作方式:在串
17、行口工作方式 1 1、2 2、3 3 中,是中,是波特波特率加倍位率加倍位 =1=1 时,波特率加倍时,波特率加倍 =0=0 时,波特率不加倍。时,波特率不加倍。(在在PCONPCON中只有这一个位与串口有关中只有这一个位与串口有关)9.2.29.2.2串行口的工作方式串行口的工作方式5151的的串行口有四种工作方式串行口有四种工作方式,它是由它是由SCONSCON中的中的SM0SM0、SM1SM1来定义的来定义的,如下表和下屏表格所示。如下表和下屏表格所示。9.2MCS-51单片机串行接口单片机串行接口SM0 SM1工作方式工作方式功功 能能 简简 述述波特率波特率 0 0方式方式08位位
18、同步移位寄存器同步移位寄存器fosc/12 0 1方式方式110位位 UART可变可变 1 0方式方式211位位 UARTfosc/32或或/64 1 1方式方式311位位 UART可变可变SM0 SM1工作方式工作方式说说 明明波特率波特率0 0方式方式0(扩展扩展I/O口口)移位输入移位输入/输出输出(用于用于扩展扩展I/O引脚引脚)方式方式为为f foscosc(振荡频振荡频率率)的的1/121/12。0 1方式方式1(常用常用)波特率可变的波特率可变的8位异位异步串行通信方式步串行通信方式1 0方式方式2(不常用不常用)波特率固定的波特率固定的9位异位异步串行通信方式步串行通信方式1
19、1方式方式3(常用常用)波特率可变的波特率可变的9位异位异步串行通信方式步串行通信方式3221SMODT溢出率642SMODOSCf3221SMODT 溢出率9.2MCS-51单片机串行接口单片机串行接口1 1、方式、方式0 0为同步移位寄存器方式为同步移位寄存器方式,其波特率是固定的其波特率是固定的,为为f foscosc(振振荡频率荡频率)的的1/121/12。方式方式0 0发送:数据从发送:数据从RXDRXD引脚串行输出引脚串行输出,TXD,TXD引脚输出同步引脚输出同步脉冲。当脉冲。当1 1个数据写入串行口发送缓冲器时个数据写入串行口发送缓冲器时,串行口将串行口将8 8位位数据以数据以
20、f foscosc/12/12的固定波特率从的固定波特率从RXDRXD引脚输出引脚输出,从低位到高位。从低位到高位。发送发送完后置中断标志完后置中断标志TITI为为1,1,呈中断请求状态呈中断请求状态,在再次发送在再次发送数据之前数据之前,必须用软件将必须用软件将TITI清清0 0。9.2MCS-51单片机串行接口单片机串行接口方式方式0 0接收:接收:在满足在满足REN=1(REN=1(允许接收)、允许接收)、RI=0RI=0的的条件下条件下,串行口处于方式串行口处于方式0 0输入。此时输入。此时,RXD,RXD为数据输为数据输入端入端,TXD,TXD为同步信号输出端为同步信号输出端,接收器
21、也以接收器也以fosc/12fosc/12的的波特率采样波特率采样RXDRXD引脚输入的数据信息。当接收器接引脚输入的数据信息。当接收器接收完收完8 8位数据后,置中断标志位数据后,置中断标志RI=1RI=1为请求中断为请求中断,在再在再次接收之前次接收之前,必须用软件将必须用软件将RIRI清清0 0。9.2MCS-51单片机串行接口单片机串行接口说明:说明:在方式在方式0 0工作时工作时,必须使必须使SCONSCON寄存器中的寄存器中的SM2SM2位位为为“0”,0”,这并不影响这并不影响TB8TB8位和位和RB8RB8位。方式位。方式0 0发送或发送或接收完接收完8 8位数据后由硬件置位位
22、数据后由硬件置位TITI或或RIRI中断请求标中断请求标志志,CPU,CPU在响应中断后要用软件清除在响应中断后要用软件清除TITI或或RIRI标志。标志。若串行口要作为并行口输入输出若串行口要作为并行口输入输出,这时必须设置这时必须设置“串入并出串入并出“或或”并入串出并入串出”的移位寄存器来配的移位寄存器来配合使用合使用(如如74HC16474HC164或或74HC16574HC165等等)。9.2MCS-51单片机串行接口单片机串行接口2 2、方式、方式1 1该方式为波特率可变的该方式为波特率可变的8 8位异步通信接口。位异步通信接口。方式方式1 1发送:数据位由发送:数据位由TXDTX
23、D端输出端输出,发送发送1 1帧帧信息为信息为1010位位,其中其中1 1位起始位位起始位”0”0”、8 8位数据位位数据位(先低位后高位先低位后高位)和一个停止位和一个停止位“1”1”。CPUCPU执行执行1 1条数据写入发送缓冲器条数据写入发送缓冲器SBUFSBUF的指令的指令,就启动发送器发送。当发送完数据就启动发送器发送。当发送完数据,就置中断标就置中断标志志TITI为为1 1。9.2MCS-51单片机串行接口单片机串行接口方式方式1 1所传送的波特率取决于定时器所传送的波特率取决于定时器T1T1的溢出的溢出率和特殊功能寄存器率和特殊功能寄存器PCONPCON中中SMODSMOD的值的
24、值,即方式即方式1 1的的波特率波特率=(2=(2SMODSMOD/32/32)定时器定时器T1T1的溢出率。的溢出率。方式方式1 1接收:当串行口置为方式接收:当串行口置为方式1,1,且且REN=1REN=1时时,串行口处于方式串行口处于方式1 1输入状态。它以所选波特率输入状态。它以所选波特率的的1616倍的速率采样倍的速率采样RXDRXD引脚状态。引脚状态。9.2MCS-51单片机串行接口单片机串行接口3 3、方式方式2 2该方式为该方式为1111位异步通信接口。位异步通信接口。方式方式2 2发送:发送数据由发送:发送数据由TXDTXD端输出端输出,发送发送1 1帧信息为帧信息为1111
25、位位,其中其中1 1位起始位位起始位(0)(0)、8 8位数据位位数据位(先低位后高位先低位后高位)、1 1位可控位为位可控位为1 1或或0 0的第的第9 9位数据、位数据、1 1位停止位。附加的第位停止位。附加的第9 9位数据为位数据为SCONSCON中的中的TB8,TB8,它由软件置位或清它由软件置位或清0,0,可作为多机通信中地址可作为多机通信中地址/数数据信息的标志位据信息的标志位,也可作为数据的奇偶校验位。也可作为数据的奇偶校验位。9.2MCS-51单片机串行接口单片机串行接口PIPL:PIPL:PUSHPUSHPSWPSW;保护现场保护现场PUSHPUSHACCACCCLRCLRT
26、ITI;清清0 0发送中断标志发送中断标志MOVMOVA,R0A,R0;取数据取数据MOVMOVC,PC,P;奇偶位送奇偶位送C CMOVMOVTB8,CTB8,C;奇偶位送奇偶位送TB8TB8MOVMOVSBUF,ASBUF,A;数据写入发送缓冲器数据写入发送缓冲器,启动发送启动发送INCINCR0R0;数据指针加数据指针加1 1POPPOPACCACC;恢复现场恢复现场POPPOPPSWPSWRETIRETI;中断返回中断返回9.2MCS-51单片机串行接口单片机串行接口方式方式2中使用中使用TB8作为发送数据的奇偶校验位,作为发送数据的奇偶校验位,发送程序如下:发送程序如下:方式方式2
27、2接收:当串行口置为方式接收:当串行口置为方式2,2,且且REN=1REN=1时时,串行口以方式串行口以方式2 2接收数据。方式接收数据。方式2 2的接收与方式的接收与方式1 1基本相似。数据由基本相似。数据由RXDRXD端输入端输入,接收接收1111位信息位信息,其其中中1 1位起始位位起始位(0)(0)、8 8位数据位、位数据位、1 1位附加的位附加的第第9 9位数位数据、据、1 1位停止位位停止位(1)(1)。方式方式2 2的波特率的波特率=(2=(2SMODSMOD/64)/64)f foscosc若附加的第若附加的第9 9位数据为奇偶校验位位数据为奇偶校验位,在接收中在接收中断服务程
28、序中应作检验处理断服务程序中应作检验处理,参考程序如下:参考程序如下:9.2MCS-51单片机串行接口单片机串行接口PIPL:PIPL:PUSHPUSHPSWPSW;保护现场保护现场PUSHPUSHACCACCCLRCLRRIRI;清清0 0接收中断标志接收中断标志MOVMOVA,SUBFA,SUBF;接收数据接收数据MOVMOVC,PC,P;取奇偶校验位取奇偶校验位JNCJNCL1L1;偶校验时转偶校验时转L1L1JNBJNBRB8,ERRRB8,ERR;奇校验时奇校验时RB8RB8为为0 0转出错处理转出错处理SJMPSJMPL2L2L1:L1:JBJBRB8,ERRRB8,ERR;偶校验
29、时偶校验时RB8RB8为为1 1转出错处理转出错处理L2:L2:MOVMOVR0,AR0,A;奇偶校验对时存入数据奇偶校验对时存入数据INCINCR0R0;修改指针修改指针POPPOPACCACC;恢复现场恢复现场POPPOPPSWPSWRETIRETI;中断返回中断返回ERR:ERR:;出错处理出错处理RETIRETI;中断返回中断返回9.2MCS-51单片机串行接口单片机串行接口方式方式2中使用中使用RB8作为接收数据的奇偶校验位,作为接收数据的奇偶校验位,接收程序如下:接收程序如下:4 4、方式方式3 3方式方式3 3为波特率可变的为波特率可变的9 9位异步通信方式位异步通信方式,除了除
30、了波特率有所区别之外波特率有所区别之外,其余方式都与方式其余方式都与方式2 2相同。相同。方式方式3 3的波特率的波特率=(2=(2SMODSMOD/32)/32)(定时器定时器T1T1的溢出率的溢出率)9.2MCS-51单片机串行接口单片机串行接口9.2.39.2.3串行口的通信波特率串行口的通信波特率串行通信的四种工作方式对应着三种波特率。串行通信的四种工作方式对应着三种波特率。对于方式对于方式0,0,波特率是固定的波特率是固定的,为单片机时钟的十二分之为单片机时钟的十二分之一一,即即f foscosc/12/12。对于方式对于方式2,2,波特率有两种可供选择波特率有两种可供选择,即即f
31、foscosc/32/32和和f foscosc/64/64。对应于以下公式:。对应于以下公式:波特率波特率=f=foscosc2 2SMODSMOD/64/649.2MCS-51单片机串行接口单片机串行接口对于方式对于方式1 1和方式和方式3,3,波特率都由波特率都由定时器定时器T1T1的的溢出率来决定溢出率来决定,使用下面公式:使用下面公式:波特率波特率=(2=(2SMODSMOD/32)/32)(定时器定时器T1T1的溢出率的溢出率)而定时器而定时器T1T1的溢出率则和所采用的定时器工的溢出率则和所采用的定时器工作方式有关作方式有关,并可用以下公式表示:并可用以下公式表示:定时器定时器T
32、1T1的溢出率的溢出率=f=foscosc/12/12(2(2n n-X)-X)其中其中X X为定时器为定时器T1T1的计数初值的计数初值,n,n为定时器为定时器T1T1的的位数位数,对于定时器方式对于定时器方式0 0,取,取n=13n=13;对于定时器方;对于定时器方式式1 1,取,取n=16n=16;对于定时器方式;对于定时器方式2 2、3 3,取,取n=8n=8。9.2MCS-51单片机串行接口单片机串行接口常用波特率和定时器常用波特率和定时器T1T1初值初值9.2MCS-51单片机串行接口单片机串行接口注意:如果选定的波特率对应的初值注意:如果选定的波特率对应的初值C C不是整不是整数
33、,则实际波特率与标准值就存在偏差,若晶振数,则实际波特率与标准值就存在偏差,若晶振频率为频率为12MHz12MHz,则标准波特率,则标准波特率96009600对应的初值对应的初值C C为为252.745(SMOD1252.745(SMOD1为为0 0时的计算值时的计算值),由于初值,由于初值C C只能只能取最接近计算值的整数,因此,取最接近计算值的整数,因此,C C取取253(FDH)253(FDH)。而。而当当C=253C=253时,实际波特率为时,实际波特率为1041710417,与理论值相对,与理论值相对误差为:约误差为:约5.7%5.7%。9.2MCS-51单片机串行接口单片机串行接口
34、实践表明:当两个串行通信设备之间的波特实践表明:当两个串行通信设备之间的波特率误差超过率误差超过2.5%2.5%时,串行通信将无法进行,且通时,串行通信将无法进行,且通信速率越高,发送、接收波特率的允许误差范围信速率越高,发送、接收波特率的允许误差范围就越小。因此,当单片机控制系统需要与就越小。因此,当单片机控制系统需要与PCPC机通机通信时,单片机控制系统的晶振频率信时,单片机控制系统的晶振频率f foscosc往往不是整往往不是整数数(如如6MHz6MHz、12MHz)12MHz),而是某一特定值,如,而是某一特定值,如11.0592 MHz11.0592 MHz就是常用的一种晶振频率之一
35、。就是常用的一种晶振频率之一。9.2MCS-51单片机串行接口单片机串行接口9.3MCS-51串行口的应用串行口的应用串行口的编程串行口的编程串行口需初始化后串行口需初始化后,才能完成数据的输入、输才能完成数据的输入、输出。其初始化过程如下出。其初始化过程如下:按选定串行口的操作方式设定按选定串行口的操作方式设定SCONSCON的的SM0SM0、SM1SM1两位二进两位二进制编码。制编码。对于操作方式对于操作方式2 2或或3,3,应根据需要在应根据需要在TB8TB8中写入待发送的第中写入待发送的第 9 9位数据。位数据。若选定的操作方式不是方式若选定的操作方式不是方式0,0,还需设定接收还需设
36、定接收/发送的波发送的波特率。设定特率。设定SMODSMOD的状态的状态,以控制波特率是否加倍。若选定以控制波特率是否加倍。若选定操作方式操作方式1 1或或3,3,则应对定时器则应对定时器T1T1进行初始化以设定其溢出进行初始化以设定其溢出率。率。9.3.19.3.1串口在方式串口在方式0 0下的应用下的应用当串行口工作于方式当串行口工作于方式0 0时,串行口本身相当于时,串行口本身相当于“并入串出并入串出”(发送状态发送状态)或或“串入并出串入并出”(接收状接收状态态)的移位寄存器。的移位寄存器。8 8位串行数据位串行数据b0b0b7b7依次从依次从RDX RDX(P3.0)(P3.0)引脚
37、输出或输入,移位脉冲信号来自引脚输出或输入,移位脉冲信号来自TXD TXD(P3.1)(P3.1)引脚,输出引脚,输出/输入移位脉冲频率固定为系统输入移位脉冲频率固定为系统时钟频率时钟频率f foscosc的的1212分频分频.9.3MCS-51串行口的应用串行口的应用1 1、方式、方式0 0的串行输出:使用的串行输出:使用74LS16474LS164,如下图,如下图最简的程序可以写为:最简的程序可以写为:MOVMOVSCON,#00000000BSCON,#00000000B;定义串行工作方式定义串行工作方式CLRCLRTITI;清除发送中断标志清除发送中断标志MOVMOVSUBF,ASUB
38、F,A;输出串行数据输出串行数据LOOP:LOOP:JNBJNBTI,LOOPTI,LOOP;等待一帧数据发送结束等待一帧数据发送结束 RXDP3.0TXDP3.1串 行 数 据MCS-51ABCLK128移 位 脉 冲QHQGQFQEQDQCQBQA74LS164扩 展 的 并 行 输 出 口1312111065439R2.2 k 5 VCLR9.3MCS-51串行口的应用串行口的应用说明:说明:使用中断方式时,在中断处于开放状态下使用中断方式时,在中断处于开放状态下(串串行中断允许行中断允许ESES为为1 1,中断允许,中断允许EAEA为为1)1),当,当TITI有效时,有效时,将产生串行
39、中断请求。值得注意是将产生串行中断请求。值得注意是CPUCPU响应串行中响应串行中断后,不会自动清除断后,不会自动清除TITI,需要用,需要用“CLR TI”CLR TI”指令指令清除清除TITI,以便输出新的串行数据。,以便输出新的串行数据。9.3MCS-51串行口的应用串行口的应用2 2、方式、方式0 0的串行输入:使用的串行输入:使用74LS16574LS165 ,如下图,如下图RxDRxD引脚接引脚接74LS16574LS165芯片的串行数据输出端,芯片的串行数据输出端,TxDTxD引脚接引脚接74LS16574LS165芯片的移位脉冲芯片的移位脉冲CLKCLK。其工作。其工作过程见如
40、下说明:过程见如下说明:RX DP3.0TX DP3.1串 行 数 据 输 入M CS-51ABCLK92移 位 脉 冲Q H74LS165并 行 输 入131211146543R2.2 k 5 VCDEFGH15CLK INHP1.7送 数 控 制 端1710SH/LDQHSER9.3MCS-51串行口的应用串行口的应用说明:在接收中断标志说明:在接收中断标志RIRI为为0(0(即无效,表明即无效,表明串行数据输入缓冲器串行数据输入缓冲器SBUFSBUF空空)情况下,当情况下,当REN=1REN=1时,时,即可启动串行接收过程:在移位脉冲即可启动串行接收过程:在移位脉冲(来自来自TXDTXD
41、引引脚脚)作用下,作用下,165165芯片并行数据芯片并行数据b0b0b7b7逐一移到逐一移到RDXRDX引脚,并保存到引脚,并保存到CPUCPU内的串行接收缓冲器内,当接内的串行接收缓冲器内,当接收到收到b7b7位数据时,串行接收中断标志位数据时,串行接收中断标志RIRI为为1 1,表明,表明已接收了一帧数据,已接收了一帧数据,CPUCPU可以读可以读SBUFSBUF寄存器。这样,寄存器。这样,在在RENREN为为1 1后,可通过查询后,可通过查询RIRI标志来确定接收过程标志来确定接收过程是否完成。当然,在中断处于开放状态下是否完成。当然,在中断处于开放状态下(串行中串行中断允许断允许ES
42、ES为为1 1,中断允许,中断允许EAEA为为1)1),当,当RIRI有效时,将有效时,将产生串行中断请求。注意:产生串行中断请求。注意:CPUCPU响应串行中断后,响应串行中断后,不会自动清除不会自动清除RIRI,需要用,需要用“CLR RI”CLR RI”指令清除指令清除RIRI,以便接收新的数据。以便接收新的数据。参考程序如下:参考程序如下:MOVMOVSCON,#00000000BSCON,#00000000B;定义串行工作方式定义串行工作方式0 0CLRCLRP1.7P1.7;输出送数脉冲输出送数脉冲(允许允许165165芯片芯片;接收并锁存并行输入端数据接收并锁存并行输入端数据)N
43、OPNOPSETBSETBP1.7P1.7;延迟一个机器周期后,延迟一个机器周期后,;取消送数负脉冲取消送数负脉冲CLRCLRRIRI;清除接收中断标志清除接收中断标志RIRISETBSETBRENREN;允许接收允许接收LOOP:LOOP:JNBJNBRI,LOOPRI,LOOP;等待一帧数据接收结束等待一帧数据接收结束MOVMOVA,SBUFA,SBUF;读串行输入数据读串行输入数据9.3MCS-51串行口的应用串行口的应用9.3.29.3.2 串行口在其他方式下的应用串行口在其他方式下的应用在方式在方式1 1、2 2、3 3下,串口用于异步通信,不同下,串口用于异步通信,不同之处在帧格式
44、和波特率的差异。之处在帧格式和波特率的差异。方式方式1 1为为8 8位数据位位数据位,方式方式3 3为为9 9位数据位位数据位,两种两种方式的波特率都是受定时器方式的波特率都是受定时器T1T1的溢出率控制。的溢出率控制。在用方式在用方式1 1或方式或方式3 3实现串行异步通信时实现串行异步通信时,初始初始化程序要设定串行口的工作方式化程序要设定串行口的工作方式,并对定时器并对定时器T1T1进进行初始化行初始化,即设定定时器方式和定时器初值。此外即设定定时器方式和定时器初值。此外,还要编写发送子程序和接收子程序。还要编写发送子程序和接收子程序。9.3MCS-51串行口的应用串行口的应用1 1、方
45、式、方式1 1当当SM1SM1、SM0SM0为为0101时,选中串行口工作在方式时,选中串行口工作在方式1 1,8 8位的异步串行通信方式,其中位的异步串行通信方式,其中TXDTXD是发送端,是发送端,RXDRXD是接收端。发送或接收一帧信息包括是接收端。发送或接收一帧信息包括1 1位起始位位起始位(固定为固定为0)0)、8 8位串行数据位串行数据(低位在前,高位在后低位在前,高位在后)和一位停止位和一位停止位(固定为固定为1)1)共共1010位,波特率与定时器位,波特率与定时器T1(T1(或或T2)T2)溢出率、溢出率、SMODSMOD位有关位有关(可变可变)。9.3MCS-51串行口的应用
46、串行口的应用方式方式1 1的发送过程如下:的发送过程如下:在在TITI为为0 0的情况下的情况下(表示当前不处于发送状态,串行口表示当前不处于发送状态,串行口发送控制电路处于空闲状态发送控制电路处于空闲状态),任何写串行数据输出缓冲,任何写串行数据输出缓冲器器SBUFSBUF指令指令(如如MOV SBUF,A)MOV SBUF,A)均会触发串行发送过程:均会触发串行发送过程:5151串行口串行口自动自动在在8 8个串行数据位的前、后分别插入一个串行数据位的前、后分别插入一个起始位个起始位(0)(0)和一个停止位和一个停止位(1)(1),构成,构成1010位信息帧,然后按位信息帧,然后按设定的波
47、特率依次输出起始位设定的波特率依次输出起始位(0)(0)、8 8个数据位个数据位(顺序为顺序为b0b0b7)b7)和停止位和停止位(1)(1)。当。当8 8位数据位数据(即即b7b7位位)发送结束后发送结束后(即即开始发送停止位开始发送停止位),串行口自动将发送中断标志,串行口自动将发送中断标志TITI置置1 1。这样执行了写这样执行了写SBUFSBUF寄存器操作后,可通过查询寄存器操作后,可通过查询TITI标志标志来确定发送过程是否已完成。若中断处于开放状态下,来确定发送过程是否已完成。若中断处于开放状态下,TITI有效时,将产生串行中断请求。有效时,将产生串行中断请求。9.3MCS-51串
48、行口的应用串行口的应用方式方式1 1的接收过程如下:的接收过程如下:在接收中断标志在接收中断标志RIRI为为0(0(即串行数据输入缓冲器即串行数据输入缓冲器SBUFSBUF处处于空闲状态于空闲状态)情况下,当情况下,当RENREN位为位为1 1时,串行口即处于接收时,串行口即处于接收状态。状态。在接收状态下,存在两个定时信号:一个是移位脉冲在接收状态下,存在两个定时信号:一个是移位脉冲信号信号(即发送波特率即发送波特率);另一个是;另一个是RXDRXD引脚电平状态检测信引脚电平状态检测信号号(也称为数据检测脉冲也称为数据检测脉冲),它的频率是移位脉冲的,它的频率是移位脉冲的1616倍。倍。进入
49、接收状态后,串行口便按数据检测脉冲速率不断检测进入接收状态后,串行口便按数据检测脉冲速率不断检测RXDRXD引脚的电平状态,引脚的电平状态,当发现当发现RXDRXD引脚由高电平变为低电平后引脚由高电平变为低电平后表明发送表明发送端开始发送起始位端开始发送起始位(0)(0),启动接收过程,并复位接收波特,启动接收过程,并复位接收波特率发生器,使数据检测脉冲与接收移位脉冲保持同步,然率发生器,使数据检测脉冲与接收移位脉冲保持同步,然后按设定波特率顺序读出数据位和停止位。后按设定波特率顺序读出数据位和停止位。9.3MCS-51串行口的应用串行口的应用当接收完一帧信息当接收完一帧信息(即接收到停止位即
50、接收到停止位)后,如果后,如果RIRI位为位为0 0,便将,便将“接收移位寄存器接收移位寄存器”中的内容装入串行数据输入中的内容装入串行数据输入缓冲寄存器缓冲寄存器SBUFSBUF中,停止位装入中,停止位装入SCONSCON寄存器的寄存器的RB8RB8位中,位中,并将串行接收中断标志并将串行接收中断标志RIRI置置1 1。这样通过查询这样通过查询RIRI标志即可确定接收过程是否已完成。标志即可确定接收过程是否已完成。若中断处于开放状态下,若中断处于开放状态下,RIRI有效时,也产生串行中断请求。有效时,也产生串行中断请求。不过值得注意是不过值得注意是CPUCPU响应串行中断后,不会自动清除响应
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。