LOGO单片机基础教程主讲人:李月华南华大学口扩展第2章80C51单片机的硬件结构第8章80C51单片机串行通信第3章80C51单片机指令系统第9章单片机串行扩展第4章80C51单片机汇编语言程序设计第10章单片机A/D及D/A转换接口第5章80C51单片机的中断与定时第11章8位单片机的发展第6章单片机并行存储器扩展第12章单片机应用、并行通信和串行通信通信的基本方式:并行通信:数据的各位同时送出。传送距离:小于30米。串行通信:数据的各位逐位送出,只需一对传送线即可完成传送。传送距离:几米~几千公里。、串行通信(1)串行通信的数据传送方向。单工、半双工、全双工三种方式(2)串行通信的工作方式同步方式:数据按块传送,包括同步字符、数据块。异步方式:数据按字符传送,每一个字符均按固定的字符格式传送,又被称为帧,如图。包含字符的起始位、数据位、校验位、停止位四个部分。、串行通信的波特率(Baudrate)(1)波特率:传送数据位的速率,一般指每秒种传送二进制代码的位数。单位:bps。(2)通用异步接收/发送器(UART):用于数据串、并转换的串行接口电路。包括串行化电路(发送器)、并行化电路(接收器)、控制电路3部分。串行口全双工的串行口(P3.0、P3.1):能同时进行发送和接收。既可作UART用,也可作同步移位寄存器使用,还可用于网络通信,其帧格式可有8位、10位和11位,并能设置各种波特率。、串行口的结构MCS-51单片机的串行口主要由2个物理上独立的串行数据缓冲器SBUF、输入移位寄存器和控制器等组成。还有2个SFR寄存器SCON和PCON,用于串行口的初始化编程。结构如图所示。的名义进行读或写,它们共用一个地址99H。发送:执行写命令MOVSBUF,A指令,发送完后使中断标志TI置“1”。接收:当RI=0时,置“1”允许接收位时,即启动接收,并时使RI=1。执行读命令MOVA,SBUF时,即可从接收SBUF取出信息并由内部总线送CPU。2、串行口控制寄存器SCON用于存放串行口的控制和状态信息,PCON用于改变串行口的通信波特率,波特率发生器可由定时器T1方式2构成。(1)串行控制寄存器SCON单元地址98H,位地址9FH~98H。寄存器及位地址表示如下:SM0、SM1:用于定义串行口的操作模式,两个选择位对应4种模式,见表6.2。其中fOSC是振荡器频率,UART为通用异步接收和发送器的英文缩写。SM2:多机通信时的接收允许标志位。在模式2和3中,若SM2=1,且接收到的第9位数据(RB8)是0,则接收中断标志(RI)不会被激活。在模式1中,若SM2=1且没有接收到有效的停止位,则RI不会被激活。在模式0中,SM2必须是0。可变(T1溢出率)fOSC/64或fOSC/32可变(T1溢出率)表6.1串行口操作模式选择(2)电源控制寄存器PCON特殊功能寄存器PCON中,只有一位(最高位)SMOD与串行口的工作有关,该位是串行口波特率系数的控制位:SMOD=1时,则使工作在方式1、2、3时的波特率加倍,否则不加倍。PCON的地址为87H,不可位寻址,因此初始化时需要字节传送。——同步移位寄存器方式方式设定:SM0SM1=00,通过执行MOVSCON,#00H。此时:RXD(P3.0):数据的发送或接收口。TXD(P3.1):输出同步移位脉冲。发送、接收的是8位数据,不设起始位和停止位,低位在前,波特率固定为fosc/12。。在串行方式0时,是将串行口变成并行口使用。并要有串并转换芯片74LS164、74LS165转换。(1)模式0输出状态(2)模式0输入状态。(1)接收过程用软件清除RI后,当允许接收位REN被置位1时,接收器以选定波特率的16倍的速率采样RXD引脚上的电平,即在一个数据位期间有16个检测脉冲,并在第7、8、9个脉冲期间采样接收信号,然后用三中取二的原则确定检测值,以抑制干扰。并且采样是在每个数据位的中间,避免了信号边沿的波形失真造成的采样错误。当检测到有从“1”到“0”的负跳变时,则启动接收过程,在接收移位脉冲的控制下,接收完一帧信息。当最后一次移位脉冲产生时能满足下列两个条件:①RI=0;②接收到的停止位为1或SM2=0。、3串行口工作于模式2和模式3时,被定义为9位异步通信接口。它们的每帧数据结构是11位的:最低位是起始位(0),其后是8位数据位(低位在先),第10位是用户定义位(SCON中的TB8或RB8),最后一位是停止位(1)。模式2和模式3工作原理相似,唯一的差别是模式2的波特率是固定的,即为fOSC/32或fOSC/64;而模式3的波特率是可变的,与定时器T1的溢出率有关。(1)模式2和模式3的发送过程。发送过程是由执行任何一条SBUF为目的寄存器的指令来启动的。由“写入SBUF”信号把8位数据装入SBUF,同时还把TB8装入发送移位寄存器的第9位,并通知发送控制器要求进行一次发送。发送开始,把一个起始位“0”送到TXD端。移位后,数据由移位寄存器送到TXD端。再过一位,出现第一个移位脉冲。第一次移位时,把一个停止位“1”由控制器的停止位发生端送入移位寄存器的第9位。此后,每次移位时,把0送入第9位。因此,当TB8的内容送到移位寄存器的输出位置时,其左面一位是停止位“1”,而再往左的所有位全为“0”。这种状态由零检测器检测到后,就通知发送控制器作最后一次移位,然后置TI=1,请求申请中断。第9位数据(TB8)由软件置位或清零,可以作为数据的奇偶校验位,也可以作为多机通信中的地址、数据标志位。如把TB8作为奇偶校验位,可以在发送程序中,在数据写入SBUF之前,先将数据位写入TB8。(2)模式2和模式3接收过程。与模式1类似,模式2和模式3接收过程始于在RXD端检测到负跳变时,为此,CPU以波特率16倍的采样速率对RXD端不断采样。一检测到负跳变,16分频计数器就立刻复位,同时把1FFH写入输入移位寄存器。计数器的16个状态把一位时间等分成16份,在每一位的第7、8、9个状态时,位检测器对RXD端的值采样。如果所接收到的起始位无效(为1),则复位接收电路,等待另一个负跳变的到来。若起始位有效(为0)则起始位移入移位寄存器,并开始接收这一帧的其余位。当起始位0移到最左面时,通知接收控制器进行最后一次移位。把8位数据装入接收缓冲器SBUF,第9位数据装入SCON中的RB8,并置中断标志RI=1。的信号只有在产生最后一个移位脉冲且同满足下列两个条件,才会产生:①RI=0;②SM2=0或接收到的第9位数据为“1”。上述两个条件中任一个不满足,所接收的数据帧就会丢失,不再恢复。两者都满足时,第9位数据装入RB8,前8位数据装入SBUF。注意:与模式1不同,模式2和3中装入RB8的是第9位数据,而不是停止位。所接收的停止位的值与SBUF、RB8和RI都没有关系,利用这一特点可用于多机通信中。串行通信数据传输速率波特率:串行口每秒钟发送或接收的数据位数称为波特率。假设发送一位数据所需时间为T,则波特率为1/T。(1)模式0的波特率等于单片机晶振频率的1/12,即每个机器周期接收或发送一位数据。(2)模式2的波特率与电源控制器PCON的最高位SMOD的写入值有关:即SMOD=0,波特率为(1/64)fOSC;SMOD=1,波特率为(1/32)fOSC。)1256(12322322131THfTOSCSMODSMOD的溢出率的波特率或模式(3)模式1和模式3的波特率除了与SMOD位有关之外,还与定时器T1的溢出率有关。定时器T1作为波特率发生器,常选用定时方式2(8位重装载初值方式),并且禁止T1中断。此时TH1从初值计数到产生溢出,它每秒钟溢出的次数称为溢出率。于是单片机系统,串行口工作于模式3,要求传送波特率为1200Hz,作为波特率发生器的定时器T1工作在方式2时,请求出计数初值为多少?设单片机的振荡频率为6MHz。因为串行口工作于模式3时的波特率为)1256(123223THfOSCSMOD的波特率模式)2/32(122561SMODOSCfTH波特率=0时,初值TH1=256-6×106/(1200×12×32/1)=243=0F3H当SMOD=1时,初值TH1=256-6×106/(1200×12×32/2)=230=0E6H串行通信应用一、串行口的编程串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下:(1)按选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码。(2)对于操作模式2或3,应根据需要在TB8中写入待发送的第9(3)若选定的操作模式不是模式0,还需设定接收/发送的设定SMOD的状态,若选定操作模式1或3,则应对定时器T1进行初始化以设定其溢出率。二、串行口的应用例1用8051串行口外接74LS165移位寄存器扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。电路示意如图6.11所示。当开关K合上时,表示要求输入数据。输入8位开关量,处理不同的程序。程序如下:START:JBP1.0,$;开关K未合上,CLRP1.1;165SETBP1.1;MOVSCON,#10H;串行口模式0并启动接收JNBRI,$;查询RICLRRI;查询结束,清RIMOVA,SBUF;;根据ASJMPSTART;准备下一次接收。甲机发送(采用查询方式):MOVSCON,#80H;设置工作方式2MOVPCON,#00;置SMOD=0,MOVR0,#40H;MOVR2,#10H;LOOP:MOVA,@R0;MOVC,P;奇偶位送TB8MOVTB8,CMOVSBUF,A;送串口并开始发送数据检测是否发送结束并清TISJMPWAITNEXT:INCR0;DJNZR2,LOOPRET乙机接收(查询方式):MOVSCON,#90H;模作模式2,MOVPCON,#00H;置SMOD=0MO