为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C51单片微机的串行口原理及应用06112lixinqu

2022-05-11 90页 ppt 2MB 1阅读

用户头像 机构认证

希望图文

公司秉着用户至上的原则服务好每一位客户,专注课件、范文、教案设计制作

举报
C51单片微机的串行口原理及应用06112lixinqu普通高等教育“十一五”国家级规划教材单片微型计算机原理与接口技术(第二版)高锋编著科学出版社北京第七章80C51单片微机的串行口原理及应用通信:计算机与外界的数据传送。单台仪器仪表或控制器往往会带有不止一个的单片微机,多个智能仪器仪表或控制器在单片微机应用系统中又常常会构成一个分布式采集、控制系统,上层由PC进行集中管理等。7.1串行数据通信概述⒈传送方式 ⑴并行传送方式 在数据传输时,一个数据编码字符的所有各位都同时发送、并排传输,又同时被接收。并行传送方式要求物理信道为并行内总线或者并行外总线。⑵串行传送方式 在数据传输时...
C51单片微机的串行口原理及应用06112lixinqu
普通高等教育“十一五”国家级规划教材单片微型计算机原理与接口技术(第二版)高锋编著科学出版社北京第七章80C51单片微机的串行口原理及应用通信:计算机与外界的数据传送。单台仪器仪表或控制器往往会带有不止一个的单片微机,多个智能仪器仪表或控制器在单片微机应用系统中又常常会构成一个分布式采集、控制系统,上层由PC进行集中管理等。7.1串行数据通信概述⒈传送方式 ⑴并行传送方式 在数据传输时,一个数据编码字符的所有各位都同时发送、并排传输,又同时被接收。并行传送方式要求物理信道为并行内总线或者并行外总线。⑵串行传送方式 在数据传输时,一个数据编码字符的所有各位按一定顺序,一位接着一位在信道中被发送和接收。◆串行传送方式的物理信道为串行总线。计算机与外界的数据传送大多是串行的,其传送距离可以从几米直到几千公里。⒉单工方式、半双工方式、全双工方式 ⑴单工方式 信号(不包括联络信号)在信道中只能沿一个方向传送。 ⑵半双工方式 通信的双方均具有发送和接收信息的能力,信道也具有双向传输性能,通信的任何一方在指定的时刻,只能沿某一个方向传送信息。⑶全双工方式若信号在通信双方之间沿两个方向同时传送,任何一方在同一时刻既能发送又能接收信息。⒊异步传输和同步传输在数据通信中,要保证发送的信号在接收端能被正确地接收,必须采用同步技术。常用的同步技术有两种方式,一种称为异步传输也称起止同步方式,另一种称为同步传输也称同步字符同步方式。 ⑴异步传输 以字符为单位进行数据传输,每个字符都用起始位、停止位包装起来,在字符间允许有长短不一的间隙。 ⑵同步传输对数据块进行传输,一个数据块中包含着许多连续的字符,在字符之间没有空闲。同步传输可以方便地实现某一通信要求的帧格式。⒋波特率(BAUDRATE) 串行通信的传送速率用于说明数据传送的快慢,“波特率”表示每秒种传输离散信号事件的个数,或每秒信号电平的变化次数,单位为band(波特)。“比特率”是指每秒传送二进制数据的位数,单位为比特/秒,记作bits/s或b/s或bps。在二进制的情况下,波特率与比特率数值相等。串行通信常用的标准波特率在RS-232C标准中已有规定,如波特率为600、1200、2400、4800、9600、19200等等。假若数据传送速率为120字符/s,而每一个字符帧已规定为10个数据位,则传输速率为120×10=1200bit/s,即波特率为1200,每一位数据传送的时间为波特率的倒数:T=1÷1200=0.833ms7.280C51串行口及控制7.2.180C51串行口结构串行数据通信主要有两个技术问,一个是数据传送,另一个是数据转换。数据传送主要解决传送中的标准、数据帧格式及工作方式等。数据转换要解决把数据进行串、并行的转换,这种转换通常由通用异步接收发送器(UART)电路来完成。数据发送端,要把并行数据转换为串行数据,而在数据接收端,要把串行数据转换为并行数据。80C51中已集成有UART。8XC552中就增加了具有I2C总线功能的串行口。80C51中的串行口是一个全双工的异步串行通信接口,它可作UART(通用异步接收和发送器)用,也可作同步移位寄存器用。口内的接收缓冲器和发送缓冲器在物理上是隔离的。可以通过访问特殊功能寄存器SBUF,来访问接收缓冲器和发送缓冲器。接收缓冲器具有双缓冲的功能,即它在接收第一个数据字节后,能接收笫二个数据字节。但是在接收完第二个字节后,若笫一个数据字节还未取走,那么该数据字节将丢失。80C51串行口基本结构如图7–1所示。⒈波特率发生器 由T1、T2及内部的一些控制开关和分频器所组成。它提供串行口的时钟信号为TXCLOCK和RXCLOCK。◆控制波特率发生器的特殊功能寄存器:TMOD、TCON、T2CON、PCON、TL1、TH1、TL2、TH2等。⒉串行口内部 ⑴串行数据缓冲寄存器SBUF有接收缓冲器SBUF和发送缓冲器SBUF,占用同一个地址(99H)。⑵串行口控制寄存器SCON⑶串行数据输入/输出引脚接收方式下,串行数据从RXD引脚输入,串行口内部在接收缓冲器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,可以避免在数据接收过程中出现帧重叠错误。在发送方式下,串行数据通过TXD引脚输出。⑷串行口控制逻辑·接受来自波特率发生器的时钟信号TXCLOCK和RXCLOCK;·控制内部的输入移位寄存器将外部的串行数据转换为并行数据;·控制内部的输出移位寄存器将内部的并行数据转换为串行数据输出;·控制串行中断(RI和TI)。7.2.280C51串行口控制⒈串行口状态控制寄存器SCON 控制串行通信的方式选择、接收,指示串行口的中断状态。位地址9FH9EH9DH9CH9BH9AH99H98H位功能SM0SM1SM2RENTB8RB8TIRI⑴SM0、SM1—串行口工作方式选择位。其功能见表7–1。⑵SM2—允许方式2、3中的多处理机通信位。方式0时,SM2=0。方式1时,若SM2=l,只有接收到有效的停止位,接收中断RI才置1。方式2和方式3时,●SM2=1,则只有当接收到的第9位数据RB8为1时,才将接收到的前8位数据送入缓冲器SBUF中,并把RI置1、同时向CPU申请中断;如果接收到的第9位数据RB8为0,RI置0,将接收到的前8位数据丢弃。●SM2=0时,则不论接收到的笫9位数据是0或1,都将前8位数据装入SBUF中,并申请中断。⑶REN——允许串行接收位。REN=1时,允许串行接收;REN=0时,禁止串行接收。⑷TB8—方式2和方式3中要发送的第9位数据。在通信协议中,常规定TB8作为奇偶校验位。在80C51多机通信中,TB8=0用来表示数据帧;TB8=1表示是地址帧。⑸RB8—方式2和方式3中接收到的第9位数据。方式1中接收到的是停止位。方式0中不使用这一位。⑹TI—发送中断标志位。方式0中,在发送第8位末尾置位;在其它方式时,在发送停止位开始时设置。由硬件置位,用软件清除。⑺RI—接收中断标志位。方式0中,在接收第8位末尾置位;在其它方式时,在接收停止位中间设置。由硬件置位,用软件清除。⒉电源控制及波特率选择寄存器PCON 最高位SMOD与串行口控制有关,其它位与低功耗工作方式有关。D7D6D5D4D3D2D1D0SMOD——WLFGF1GF0PDIDLSMOD—串行通信波特率系数控制位。当SMOD=1时,使波特率加倍。复位后,SMOD=0。⒊串行数据寄存器SBUF 包含在物理上是隔离的两个8位寄存器:发送数据寄存器和接收数据寄存器,它们共用一个地址——99H。D7D6D5D4D3D2D1D0SD7SD6SD5SD4SD3SD2SD1SD0★读SBUF(MOVA,SBUF),则访问接收数据寄存器;★写SBUF(MOVSBUF,A),则访问发送数据寄存器。7.3串行口的工作方式在串行口控制寄存器SCON中,SM0和SM1位决定串行口的工作方式。80C51串行口共有4种工作方式。7.3.1串行口方式0同步移位寄存器方式SM0=0、SM1=0。同步移位寄器方式。·数据传输波特率固定为(1/12)fosc。·由RXD引脚输入或输出数据,·由TXD引脚输出同步移位时钟。·接收/发送的是8位数据,传输时低位在前。帧格式如图7-2所示。方式0时工作原理图的如图7-3所示。⑴发送当执行任何一条写SBUF的指令(MOVSBUF,A)时,就启动串行数据的发送。在执行写入SBUF的指令时,选通内部D触发器置1,构成发送移位寄存器的第9位,并使发送控制器开始发送。当发送脉冲有效之后,移位寄存器的内容由RXD引脚串行移位输出;移位脉冲由TXD引脚输出。在发送有效的期间,每个机器周期,发送移位寄存器右移一位,在其左边补0。当数据最高位移到移位寄存器的输出位时,原写入第9位的l正好移到最高位的左边一位,由此向左的所有位均为0,零器通知发送控制器要进行最后一次移位,并撤销发送有效,同时使发送中断标志TI置位,若CPU响应中断,则执行从0023H开始的串行口发送中断服务程序。⑵接收当REN=1且RI位清除时,就会启动一次接收过程。在下一机器周期的S6P2时刻,接收控制器将11111110写入接收移位寄存器,并在下一时钟周期S1P1使接收控制器的接收有效,打开“与非门”,同时由TXD引脚输出移位脉冲。在移位脉冲控制下,接收移位寄存器的内容每一个机器周期左移一位,同时由RXD引脚接收一位输入信号。每当接收移位寄存器左移一位,原写入的11111110也左移一位。当最右边的0移到最左边时,标志着接收控制器要进行最后一次移位。在最后一次移位即将结束时,接收移位寄存器的内容送入接收数据缓冲寄存器SBUF,然后在启动接收的第10个机器周期的S1P1时,清除接收信号,置位SCON中的RI,发出中断申请。完成一帧数据的接收过程。若CPU响应中断,则执行从0023H开始的串行口接收中断服务程序7.3.2串行口方式18位UARTSM0=0、SM1=l。·数据传输波特率由T1和T2的溢出决定,可用程序设定。当T2CON寄存器中的RCLK和TCLK置位时,采用T2作为串行口接收和发送的波特率发生器。而当RCLK和TCLK都为零时,采用T1作为串行口接收和发送的波特率发生器。·由TXD引脚发送数据。·由RXD引脚接收数据。·发送或接收一帧信息为10位:1位起始位(0)、8位数据位(低位在前)和l位停止位(1)。帧格式如图7-4所示。⑴发送:方式1时,发送的工作原理图如图7-5所示。 当执行任何一条写SBUF的指令时,就启动串行数据的发送。在执行写入SBUF的指令时,也将1写入发送移位寄存器的第9位(由SBUF和1个独立的D触发器构成),并通知发送控制器有发送请求。开始发送后的一个位周期,发送信号有效,开始将起始位送TXD引脚。一位时间后,数据信号有效。发送移位寄存器将数据由低位到高位顺序输出至TXD引脚。一位时间后,第一个移位脉冲出现将最低数据位从右边移出,同时0从左边挤入。当最高数据位移至发送移位寄存器的出端时,先前装入的第9位的l,正好在最高数据位的左边,而它的右边全部为0。这种状态被零检测器检测到,在第10个位周期(16分频计数器回0时),发送控制器进行最后一次移位,清除发送信号,同时使SCON寄存器中TI置位,完成了一帧数据发送的全过程。若CPU响应中断,则执行从0023H开始的串行口发送中断服务程序。⑵接收方式1时,接收的工作原理图如图7-6所示。 当REN=1且清除RI后,若在RXD引脚上检测到一个1到0的跳变,立即启动一次接收。同时,复位16分频计数器,使输入位的边沿与时钟对齐,并将1FFH(即9个l)写入接收移位寄存器。接收控制器以波特率的16倍的速率继续对RXD引脚进行检测,计数器的16个状态把每一位的时间分为16份,对每一位时间的第7、8、9个计数状态,位检测器对RXD端的值采样,这3个状态理论上对应于每一位的中央值。若发送端与接收端的波特率有差异,就会发生偏移,只要这种差异在允许范围内,就不至于发生错位或漏码。在上述3个状态下,取得3个采样值,其中至少有两个值是一致的,即采用3取2的多数表决法,,可抑制噪声。如果在第1个时钟周期中接收到的不是0,说明它不是一帧数据的起始位,则复位接收电路,继续检测RXD引脚上l到0的跳变。如果接收到的是起始位,就将其移入接收移位寄存器,然后接收该帧的其它位。接收到的位从右边移入,原来写入的1,从左边移出,当起始位移到最左边时,接收控制器将控制进行最后一次移位,把接收到的9位数据送入接收数据缓冲器SBUF和RB8,而且置位RI。在进行最后一次移位时,能将数据送入接收数据缓冲器SBUF和RB8,而且置位RI的条件是:·RI=0即上一帧数据接收完成时发出的中断请求已被响应,SBUF中数据已被取走。·SM2=0或接收到的停止位=1。若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息。7.3.3串行口方式2和39位UARTSM0=1、SM1=0,选择方式2;SM1=1、SM0=1,选择方式3。·由TXD引脚发送数据。·由RXD引脚接收数据。·发送或接收一帧信息为11位:1位起始位(0)、8位数据位(低位在前)、1位可编程位和1位停止位(l)。发送时可编程位TB8可设置为1或0,接收时可编程位进入SCON寄存器的RB8位。·方式2的波特率是固定的,为振荡器频率的1/32或1/64。.方式3的波特率则由T1和T2的溢出决定,可用程序设定。帧格式如如图7-7所示。方式2时的工作原理图如图7-8所示。在进行最后一次移位时,能将数据送入接收数据缓冲器SBUF和RB8,而且置位RI的条件是:·RI=0;·SM2=0或接收到的停止位=1。若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息。7.4多处理机通信方式SM2:多处理机通信位。当串行口以方式2或方式3接收时,若SM2=1,只有当接收到的第9位数据RB8为1时,才将数据送入接收缓冲器SBUF,并使RI置1,申请中断,否则数据将丢失;若SM2=0,则无论第9位数据RB8是1还是0,都能将数据装入SBUF,并且发中断。利用这一特性,便可实现主机与多个从机之间的串行通信。图7-9为多机通信连线示意图,系统中左边的80C51为主机,其余的为1~n号从机,并保证每台从机在系统中的编号是惟一的。系统初始化时,将所有从机中的SM2位均设置为1,并处于允许串行口中断接收状态。主机欲与某从机通信,先向所有从机发出所选从机的地址,从机地址符合后,接着才发送命令或数据。·在主机发地址时,置第9位数据(RB8)为1,表示主机发送的是地址帧;·当主机呼叫某从机联络正确后,主机发送命令或数据帧时,将第9位数据(RB8)清0。各从机由于SM2置1,将响应主机发来的第9位数据(RB8)为1的地址信息。从机响应中断后,有两种不同的操作:·若从机的地址与主机点名的地址不相同,则该从机将继续维持SM2为l,从而拒绝接收主机后面发来的命令或数据信息,等待主机的下一次点名。·若从机的地址与主机点名的地址相同,该从机将本机的SM2清0,继续接收主机发来的命令或数据,响应中断。7.5串行口的应用7.5.1串行口的波特率发生器及波特率计算串行口的波特率发生器如图7-10所示。·方式0时的波特率由振荡器的频率(fosc)所确定:波特率为fosc/12。·方式2时的波特率由振荡器的频率(fosc)和SMOD位确定:当SMOD位=1时,波特率=fosc/32;当SMOD=0时,波特率=fosc/64。 ·方式1和3时的波特率由定时器T1和T2的溢出率和SMOD确定。(1)用定时器T1(=0)产生波特率·定时器T1工作于方式0:T1为13位计数器。式中:TC——13位计数器初值;X——中断服务程序的机器周期数,在中断服务程序中重新对定时器置数。·定时器T1工作于方式1:T1为16位的计数器。式中:TC——16位计数器初值;X——中断服务程序的机器周期数,在中断服务程序中重新对定时器置数。·定时器Tl工作于方式2:T1为8位可重装的方式,用TL1计数,用TH1装初值。7.5.2方式0的编程和应用例:使用74LS164的并行输出端接8只发光二极管,利用它的串入并出功能,把发光二极管从左向右依次点亮,并不断循环之。发光二极管扩展连接路如图7-11所示。MOVSCON,#00H;设串行口为方式0,CLRES;禁止串行口中断MOVA,#80H;先显示最左边发光二极管LED:MOVSBUF,A;串行输出JNBTI,$;输出等待CLRTI;软件清中断标志ACALLDELAY;轮显间隔RRA;发光右移AJMPLED;循环DELAY:……;延时子程序RET7.5.3方式1的编程和应用例:试编写双机通信程序。甲、乙双机均为串行口方式1,并以定时器T1的方式2为波特率发生器,波特率为2400。波特率的计算:这里使用6MHz晶振,以T1的方式2制定波特率。计算定时器T1的计数初值:波特率=2smod×fosc×1321228-TH1TH1=28-(2SMOD×fosc)÷(波特率×32×12)=256-(20×6×106)÷(2400×32×12)=256-6.5=249.5=FAH⑴甲机发送:将以片内RAM的78H及77H的内容为首地址、以76H及75H的内容减1为末地址的数据块内容,通过串行口传至乙机。例:(78H)=20H;首地址高位(77H)=00H(76H)=20H;末地址高位(75H)=20H即要求程序将片外RAM的2000H~20lFH中的内容输出到串行口。对数据块首、末地址的传送以查询方式进行,而数据的传送以中断方式进行。ORG0000HSJMPTRANSORG0023H;串行口中断入口AJMPSINTORG0030HTRANS:MOVTMOD,#20H;置T1为定时器方式2MOVTL1,#0FAH;置T1定时常数(波特率为;2400)MOVTH1,#0FAHSETBEA;允许中断CLRES;关串行口中断MOVPCON,#00H;波特率不倍增CLRTI;清发送中断MOVSCON,#40H;置串行口方式1MOVSBUF,78H;输出首地址WAIT1:JNBTI,WAITI;查询等待发送结束CLRTIMOVSBUF,77HWAIT2:JNBTI,WAIT2;查询等待发送结束CLRTIMOVSBUF,76H;输出末地址WAIT3:JNBTI,WAIT3CLRTIMOVSBUF,75HWAIT4:JNBTI,WAIT4CLRTISETBES;允许串行口中断MOVDPH,78H;输出数据块中第1个数据MOVDPL,77HMOVXA,@DPTRCLRTIMOVSBUF,ASJMP$;中断等待ORG0200H;串行口中断服务程序SINT:PUSHDPL;保护现场PUSHDPHPUSHAINC77H;地址加1MOVA,77HJNZJP1INC78HJP1:MOVA,78HCJNEA,76H,END1;判数据传送是否结束,未;结束则转END1MOVA,77HCJNEA,75H,END1CLRES;结束,关串行口中断ESCOM:POPA;恢复现场POPDPHPOPDPLRETI END1:MOVDPH,78H;数据输出未结束,则继续发送MOVDPL,77HMOVXA,@DPTRCLRTIMOVSBUF,ARETI⑵乙机接收乙机通过RXD引脚接收甲机发来的数据,接收波特率与甲机一样。接收的第1、2字节是数据块的首地址,第3、4字节是数据块的末地址减1,第5字节开始是数据,接收到的数据依次存入数据块首地址开始的存储器中。ORG0000HSJMPRECEIVE;乙机接收ORG0023HAJMPRSINT;串行口中断入口ORG0030HRECEIVE:MOVTMOD,#20H;设T1为定时器方式2MOVTL1,#0FAH;置T1定时常数MOVTH1,#0FAHSETBEA;允许中断SETBES;允许串行口中断CLRTI;清发送中断MOVSCON,#50H;置串行口方式1、接收CLR20H;置地址标志(20H=0,为;地址;20H=1,为数据)MOV70H,#78HSJMP$;中断等待ORG0200HRSINT:PUSHDPL;保护现场PUSHDPHPUSHACCMOVA,R0PUSHACCJB20H,DATA;判别接收的是地址还是数据,;是数据,转移MOVR0,70H;是地址,分别送入78H~75H中去MOVA,SBUFMOV@R0,ADEC70HCLRRIMOVA,#74HCJNEA,70H,RETURN;是地址,转结束SETB20H;地址已接收完,置接收数据标志RETURN:POPACC;恢复现场MOVR0,APOPACCPOPDPHPOPDPLRETIDATA:MOVDPH,78H;接收数据MOVDPL,77HMOVA,SBUFMOVX@DPTR,A;将数据送入片外RAMCLRRIINC77H;地址加1MOVA,77HJNZDATA1INC78HDATA1∶MOVA,76HCJNZA,78H,RETURNMOVA,75HCJNEA,77H,RETURNCLRES;结束,关串行口中断AJMPRETURNASCII码由7位组成,其最高位可作为奇偶校验位用。数据块通过串行口发送和接收,采用8位异步通信,波特率为1200,已知fosc=11.0592MHz。从内部RAM单元20H~3FH中取出ASCII码加上奇偶校验位之后发出。设串行口为方式1,T1为方式2作为串行口的波特率发生器。∵SMOD=0∴TH1=232=E8H例通过串行口发送带奇偶校验位的数据块ORG0000HMOVTMOD,#20H;设T1为方式2MOVTL1,#0E8H;T1定时常数MOVTH1,#0E8HMOVSCON,#01000000B;设串行口为方式1MOVR0,#20H;设发送数据区首址MOVR7,#32;发送32个ASCII码数据LOOP:MOVA,@R0;取ASCII码数据ACALLSP-OUT;调用串行口发送子程序INCR0;未发送完,则继续DJNZR7,LOOP…串行口发送子程序SP-OUT:MOVC,P;设奇校验位CPLCMOVACC.7,CMOVSBUF,A;带校验位发送JNBTI,$;发送等待CLRTIRET把接收到的32个字节数据存放到20H~3FH中,波特率为1200,若奇校验出错,将进位标志C置1。ORG0000HMOVTMOD,#20H;设T1为定时器方式2MOVTL1,#0E8H;设T1时间常数MOVTH1,#0E8HMOVR0,#20H;接收缓冲区首址MOVR7,#32;接收字节计数器例通过串行口接收带奇偶校验位的数据块LOOP:ACALLSP-IN;调用带奇校验的串行口接;收子程序JCERROR;校验错,转出错处理MOV@R0,A;存入INCR0DJNZR7,LOOP;未接收完,则继续ERROR:…;校验错,处理SP-IN:MOVSCON,#01010000B;设串行口为方式;1,启动接收JNBRI,$CLRRIMOVA,SBUF;接收一个字节MOVC,P;检查奇校验位,若出错,C=1CPLCANLA,#7FH;去掉校验位后的ASCII码数据RET7.5.4方式2和3的编程和应用方式2接收/发送的一帧信息是11位:第0位是起始位(0);第1~8位是数据位;第9位是程控位,可由用户置TB8决定;第10位是停止位。·方式2的波特率为:波特率=振荡器频率/n其中:当SMOD=0时,n=64;当SMOD=l时,n=32。方式2和方式3基本一样,仅波特率设置不同。工作方式2发送的一帧信息为11位:1位起始位,8位数据位,1位可编程为1或0的第9位(可用作奇偶校验位或数据/地址标志位)和1位停止位。奇偶校验位的发送是在将发送数据写入发送缓冲器SBUF之前,先将奇偶标志写入SCON的TB8位。例:试编写串行接口以工作方式2发送数据的中断服务程序ORG0023HAJMPSPINT SPINT:CLREA;关中断PUSHPSW;保护现场PUSHACCSETBEA;开中断SETBPSW.4;切换寄存器工作组CLRTI;清除发送中断请求标志MOVA,@R0;取数据,置奇偶标志位MOVC,P;奇偶标志位P送TB8MOVTB8,CMOVSBUF,A;数据写入发送缓冲器,启动发送INCR0;数据地址指针加1CLR0AFH;恢复现场POPACCPOPPSWSETB0AFHCLRPSW.4;切换寄存器工作组RETI;中断返回例:方式3和方式1的不同在于接收/发送的信息位数不同,而与方式2的不同仅在于波特率设置不同。这里以双机通信为例。串行口以方式3进行接收和发送,以T1为波特率发生器,选择定时器方式2。程序首先发送数据存放地址,而地址的高位存放在78H中,地址的低位存放在77H中;然后发送00H,01H,02H,…,FEH,共255个数据以后结束。甲机的发送程序:ORG0023HCLRTIRETITRANSFER:MOVTMOD,#20H;置T1为定时方式2MOVTL1,#0F0H;置T1定时常数MOVTH1,#0F0HSETBEA;允许中断CLRES;禁止串行口中断CLRET1;禁止定时器T1中断MOVSCON,#0E0H;置串行口方式3SETBTB8;表示发送的是地址MOVSBUF,78H;发送地址JNBTI,$CLRTIMOVSBUF,77HJNBTI,$CLRTIMOVIE,#90H;允许串行口中断CLRSM2;以后发送的是数据MOVA,#00H;发送数据LOOP:MOVSBUF,AINCAJNBTI,$CLRTICJNZA,#0FFH,LOOP;判是否结束CLRES;禁止串行口中断CLREA;关中断HERE:AJMPHERE乙机接收程序:把接收到的头两个字节作为存放数据的首地址,再接收到的255个字节的数据存放入相应的单元中。ORG0023HAJMPSINT;串行口中断入口RECEIVE:MOVTL1,#0F0H;置定时常数MOVTH1,#0F0HMOVTMOD,#20H;置定时方式2SETBES;允许串行口中断CLRET1;禁止定时器T1中断SETBEA;开中断MOVSCON,#0F0H;置串行口方式3接收MOVR0,#0FEH;数据个数RWAIT:AJMPRWAITORG1000HSINT:MOVC,SM2JNCPD+2;输入是否为地址INCR0NOPMOVA,R0JZPDMOVDPH,SBUF;输入的是高位地址AJMPPD+1PD:MOVDPL,SBUF;输入的是低位地址CLRSM2;下一次输入是数据PD+l:CLRRIRETIPD+2:MOVA,SBUF;是数据MOVX@DPTR,AINCDPTRCLRRICJNZA,#0FEH,RETURN;判是否结束CLRES;结束,关中断RETURN:RETIEND图7-180C51串行口结构图图7-2串行口方式0的数据帧格式图7-3串行口工作方式0工作原理图图7-4串行口方式1的数据帧格式图7-5串行口方式1发送工作原理图图7-6串行口方式1接收工作原理图图7-7串行口方式2的数据帧格式图7-8串行口工作方式2工作原理图图7-980C51多机分布式系统示意图图7-10串行口的波特率发生器图7-11发光二极管扩展连接路表7-1串行口工作方式选择SM0SM1工作方式特点波特率00方式08位同步移位寄存器fosc/1201方式110位UART可变10方式211位UARTfosc/64或fosc/3211方式311位UART可变
/
本文档为【C51单片微机的串行口原理及应用06112lixinqu】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索