《单片机串口通信PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《单片机串口通信PPT讲稿.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机串口通信第1页,共32页,编辑于2022年,星期五2.同步方式同步方式同步方式仅在开始用若干字符作为同步号令开始用若干字符作为同步号令,然后连续发送数据,如图所示。由于没有在每一个字符中,配置起始、停止位,所以结构紧凑,传输效率高、速度快,其组成如下图所示:同步传输方式比异步传输方式速度快,这是它的优同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复个时钟来协调收发器的工作,所以它的设备也较复杂。杂。例如例如IIC通信,通信,SPI通信等通信等第2页,共32页,编
2、辑于2022年,星期五三串行通信的数据通路形式:1.1.单单工工方方式式:指通信双方,一方只能发送,另一方只能接收,传送方向是单一的。2.2.半半双双工工方方式式:通信双方只有一根传输线(共地),但任何一方都可以发送,当一方发送时,另一方只能接收。3.3.全全双双工工方方式式:需要通信双方连接两条传输线(共地),一条是将数据从甲方送到乙方,另一条是从乙方送到甲方。允许双向同时发送。第3页,共32页,编辑于2022年,星期五MCS-51串行通信接口单片机串口的特点单片机串口的特点:全双工全双工、异步异步、串口串口单片机串口由单片机串口由RXD和和TXD构成。构成。MCS-51单片机是单片机是 位
3、位CPU;串行通信接口中,数据是串行通信接口中,数据是一位一一位一位位按顺序向外传送的。按顺序向外传送的。单片机是如何将数据进行串单片机是如何将数据进行串-并并以及并以及并-串的转换?串的转换?第4页,共32页,编辑于2022年,星期五7.2.1 7.2.1 通用的异步接收通用的异步接收/发送器发送器UARTUART 在串行通信中,数据是在串行通信中,数据是一位一位一位一位按顺序进行传送的,而按顺序进行传送的,而计计算机内部的数据是并行传输算机内部的数据是并行传输的。因此当计算机向外发送数据的。因此当计算机向外发送数据时,必须先时,必须先将并行数据转换为串行数据将并行数据转换为串行数据,然后再
4、发送;反之,然后再发送;反之,当计算机接收数据时,又必须先将当计算机接收数据时,又必须先将串行数据转换为并行数据串行数据转换为并行数据,然后再输入计算机内部。然后再输入计算机内部。MCS-51MCS-51单片机串口有一个核心部件单片机串口有一个核心部件通用的通用的异步接收异步接收/发送器发送器,简称,简称UARTUART(Universal Asynohronous Universal Asynohronous Receiver/TransmitterReceiver/Transmitter),就是完成),就是完成并并串串或串或串并并变换的硬变换的硬件电路,其结构如图件电路,其结构如图7-67
5、-6所示。所示。第5页,共32页,编辑于2022年,星期五图7-6 硬件UART结构图第6页,共32页,编辑于2022年,星期五工作原理:v接收数据接收数据时,串行数据由时,串行数据由RXDRXD端(端(Receive DataReceive Data)经接收门进入)经接收门进入移移位寄存器位寄存器,再经移位寄存器输出,再经移位寄存器输出并行数据并行数据到接收缓冲器到接收缓冲器SBUFSBUF,最,最后通过数据总线送到后通过数据总线送到CPUCPU,是一个,是一个双缓冲双缓冲结构,以避免接收过程中结构,以避免接收过程中出现帧重叠错误。出现帧重叠错误。v发送信息时,发送信息时,CPUCPU将将数
6、据数据经过数据总线送给经过数据总线送给发送缓冲器发送缓冲器S SBUFBUF后后,直,直接由控制器接由控制器控制控制SBUFSBUF移位移位,经发送门输出至,经发送门输出至TXDTXD,为,为单缓冲单缓冲结构,结构,由于(由于(CPUCPU主动)不会发生帧重叠错误,主动)不会发生帧重叠错误,v发送缓冲器与接收缓冲器在物理上发送缓冲器与接收缓冲器在物理上是相互独立的是相互独立的,但在逻辑上只有一个,但在逻辑上只有一个,共用地址单元共用地址单元99H99H。对。对发送发送缓冲器只缓冲器只存在写操存在写操作,对作,对接收接收缓冲器缓冲器只只能读能读操作。操作。v接收和发送数据的接收和发送数据的速度速
7、度由由控制器发出的移位脉冲控制器发出的移位脉冲所控制,其可由内所控制,其可由内部定时器部定时器T1T1产生的时钟获得,此时定时器产生的时钟获得,此时定时器T1T1作为波特率发生器使作为波特率发生器使用。用。第7页,共32页,编辑于2022年,星期五二、串行通信的传送速度 串行通信的数据传送是按位进行的,每秒所传送的位数称为波特率,如果数据传送的速度为每秒120帧,每个帧包含10位,则每秒传送1200位,即波特率为1200。10120=l200bit/s=1200baut 每位传送的时间T等于波特率的倒数,如上例波特率为1200则每位传送时间为T=0.833ms国际上规定的标准波特率系列为300
8、、600、1200、1800、2400、4800、9600和19200bit/s。第8页,共32页,编辑于2022年,星期五波特率的计算例:某异步通讯接口的例:某异步通讯接口的波特率为波特率为120,则该接口每秒种传,则该接口每秒种传送送 数据。数据。例:某串口异步通信接口,其字符帧格式为例:某串口异步通信接口,其字符帧格式为1个起始位,个起始位,1个校验位,个校验位,8个数据位和一个停止位,当通信接口每分个数据位和一个停止位,当通信接口每分钟传送钟传送1200位数据时,其传送波特率为位数据时,其传送波特率为 。A.4800位位 B.20位位 C.600位位D.30位位第9页,共32页,编辑于
9、2022年,星期五四、串行通信的校验方式四、串行通信的校验方式,奇校验:根据数据中1的个数,决定校验位是否置1。以使1的个数总和为奇数。偶校验,根据数据中1的个数,决定校验位是否置1,以使1的个数总和为偶数。2.2.一组数据的校验方法一组数据的校验方法 在一组数据之后发送数据代数和或在一组数据之后加发数据异或值。1.1.异步通信中单个字符的校验方法异步通信中单个字符的校验方法 通常是在单个字符末位后面,附加一个校验位。第10页,共32页,编辑于2022年,星期五一、数据缓冲器一、数据缓冲器SBUF发送数据发送数据通过指令MOVSBUF,A将数据写入SBUF,然后串口口自动自动将数据按事先设置的
10、方式及速率从TXD(P3.1)端口输出,数据发送完毕,串口向CPU申请中断,且通过硬件将TI置1,表示发送已经结束,等待写入第二帧数据。接收数据接收数据当有数据送给单片机串口时,串口按事先设置的方式及速率自动从自动从端口TXD(P3.1)接收数据,数据校验正确后送SBUF,一帧数据接收完毕RI=1,串口向CPU请求中断且表示接收已经结束。单片机只要通过执行:MOVA,SBUF第11页,共32页,编辑于2022年,星期五 串行口的控制寄存器串行口的控制寄存器 MCS-51MCS-51的串行口有的串行口有四种四种工作方式,用户可以通过对串行控制寄工作方式,用户可以通过对串行控制寄存器存器SCONS
11、CON编程来设定。此外,还有波特率控制寄存器编程来设定。此外,还有波特率控制寄存器PCONPCON,必须详,必须详细了解这些特殊功能寄存器,才能正确应用串行通信接口。细了解这些特殊功能寄存器,才能正确应用串行通信接口。1 1串行口控制寄存器串行口控制寄存器SCONSCON 特殊功能寄存器特殊功能寄存器SCONSCON的地址为的地址为98H98H,具有位地址,可,具有位地址,可位寻址位寻址,复,复位时为位时为00H00H,其格式如下:,其格式如下:SM0SM0、SM1SM1:串行口的方式选择位,见表:串行口的方式选择位,见表7-17-1。第12页,共32页,编辑于2022年,星期五SM2SM2:
12、方式:方式2 2和方式和方式3 3的多机通信控制位;的多机通信控制位;RENREN:允许串行接收位。:允许串行接收位。TB8TB8:在方式:在方式2 2和方式和方式3 3中,发送的第中,发送的第9 9位数据,需要时由软件置位或位数据,需要时由软件置位或复位。复位。RB8RB8:在方式:在方式2 2和方式和方式3 3中,接收到的第中,接收到的第9 9位数据;位数据;在方式在方式1 1时,时,RB8RB8是接收到的停止位;在方式是接收到的停止位;在方式0 0,不使用,不使用RB8RB8。TITI:发送中断标志。:发送中断标志。TI必须由软件清必须由软件清“0”RIRI:接收中断标志,:接收中断标志
13、,RIRI必须由软件清必须由软件清“0”“0”。第13页,共32页,编辑于2022年,星期五 2 2特殊功能寄存器特殊功能寄存器PCONPCON 特殊功能寄存器特殊功能寄存器PCONPCON的地址为的地址为87H87H,没有,没有位地址位地址。其格式如下:其格式如下:PCONPCON的最高位是串行口波特率系数控制位的最高位是串行口波特率系数控制位SMODSMOD,当,当SMODSMOD为为“1”“1”时时,方方式式2 2,3 3中使波特率加倍。中使波特率加倍。PCONPCON的其他位为掉电方式控制位,详见的其他位为掉电方式控制位,详见2.42.4节。节。第14页,共32页,编辑于2022年,星
14、期五单片机串行接口的工作方式一一、串串行行口口工工作作方方式式0 0:串串口口扩扩展展为为并并口口1)波特率固定为 发送位数据等于一个机器周期。2)不 论 是 发 送 还 是 接 收,数 据 都 是 从RXD(P3.0)端出入。TXD端而作为同步移位脉冲输出端。3)工作于方式0时,可将串行接口扩展为并行接口,第15页,共32页,编辑于2022年,星期五7.2.3 7.2.3 串行接口的工作方式串行接口的工作方式 串行通信接口有串行通信接口有4 4种种工作方式,它们由工作方式,它们由SCONSCON中的中的SM0SM0、SM1SM1决定。下面从决定。下面从应用的角度,重点讨论各种工作方式的功能特
15、性和工作原理。应用的角度,重点讨论各种工作方式的功能特性和工作原理。1 1方式方式00移位寄存器方式移位寄存器方式 方式方式0 0通过外接一个移位寄存器扩展一个通过外接一个移位寄存器扩展一个并行并行的输入的输入/输出口。输出口。(1 1)发送)发送 方式方式0 0发送时,串行口上外接发送时,串行口上外接74LS16474LS164移位寄存器。其接口如图移位寄存器。其接口如图7-77-7所示。所示。(2 2)接收)接收 方式方式0 0接收时,串行口上外接并行输入串行输出移位寄存器接收时,串行口上外接并行输入串行输出移位寄存器74LS16674LS166,其接口如图,其接口如图7-7-8 8所示。
16、所示。图图7-7 7-7 方式方式0 0发送发送接口图接口图 图图7-8 7-8 方式方式0 0接收接收接口图接口图 DATA第16页,共32页,编辑于2022年,星期五必须注意必须注意:在:在接收接收时,除了设置时,除了设置SCONSCON控制字为控制字为方式方式0 0外,还应设置允许接收控制位外,还应设置允许接收控制位RENREN为为“1”“1”,清除,清除RIRI中断标志,才能启动接收器工作。中断标志,才能启动接收器工作。方式方式0 0工作时,必须使工作时,必须使SCONSCON控制字的控制字的SM2SM2位(多机通信控制位)位(多机通信控制位)为为“0“0”,从而不影响,从而不影响TB
17、8TB8和和RB8RB8位。由于位。由于波特率固定波特率固定,故无需用定时器提供。但以中断方式传输数据时,故无需用定时器提供。但以中断方式传输数据时,CPUCPU响应中断响应中断不会自动清除不会自动清除TITI、RIRI标志标志,所以在中断服务程序中,必须由指令将,所以在中断服务程序中,必须由指令将TITI、RIRI清清“0”“0”。方式方式1 1:方式方式1 1为为8 8位异步通信位异步通信接口,接口,1 1帧信息为帧信息为1010位,即位,即1 1位起始位位起始位(0 0)、)、8 8位数据(低位在前)及位数据(低位在前)及1 1位停止位(位停止位(1 1),),如图如图7-97-9所示。
18、所示。TXDTXD为发送端,为发送端,RXDRXD为接收端,为接收端,波特率由定波特率由定时器时器T1T1的溢出率的溢出率来决定。来决定。图图7-9 7-9 方式方式1 1数据格式数据格式第17页,共32页,编辑于2022年,星期五(1 1)发送:)发送:CPUCPU向发送缓冲器向发送缓冲器SBUFSBUF写入一个数据后,便启动串行口在写入一个数据后,便启动串行口在TXDTXD端输出帧信息,先发送起始位端输出帧信息,先发送起始位“0”“0”,接着从,接着从低位低位开始依次输开始依次输出出8 8位数据,最后输出停止位。发送完一帧信息后,发送中断标志位数据,最后输出停止位。发送完一帧信息后,发送中
19、断标志TITI置置“1”“1”,向,向CPUCPU请求中断。请求中断。(2 2)接收:)接收:当当允许接收位允许接收位RENREN置置“1”“1”后,接收器便采样后,接收器便采样RXDRXD端电平,端电平,当当采样到采样到“1”“1”到到“0”“0”的跳变时,启动接收器接收。计数器的的跳变时,启动接收器接收。计数器的1616个状个状态把态把1 1位时间等分成位时间等分成1616份,并在第份,并在第7 7、8 8、9 9个计数状态时,采样个计数状态时,采样RXDRXD电电平。因此,每一位的数值采样三次,取其中至少有两次相同的值为平。因此,每一位的数值采样三次,取其中至少有两次相同的值为确认值。启
20、动后,如果三次采样的确认值不是确认值。启动后,如果三次采样的确认值不是“0”“0”,则起始位无效,则起始位无效,复位接收电路重新检测。如果确认值为复位接收电路重新检测。如果确认值为“0”“0”,起始位有效,则开始,起始位有效,则开始按从按从低位到高位低位到高位的顺序接收一帧的数据信息。的顺序接收一帧的数据信息。必须注意必须注意,在,在方式方式1 1接收中接收中设置有设置有数据辨识功数据辨识功能:只有同时满足以下能:只有同时满足以下两个条件时,接收到的数据才有效,才会将数据装入两个条件时,接收到的数据才有效,才会将数据装入SBUFSBUF,并置,并置RIRI为为“1”“1”,向,向CPUCPU请
21、求中断;否则,所接收的数据帧无效。当请求中断;否则,所接收的数据帧无效。当SM2=1SM2=1时,接收到的停止位时,接收到的停止位“1”“1”装入装入RB8RB8中。中。RI=0 RI=0。接收到停止位为接收到停止位为“1”“1”。第18页,共32页,编辑于2022年,星期五 方式方式1 1的特点:的特点:1)波特率可变 串口波特率由定时器T1产生,T1T1工工作作于于方方式式2 2,并决定于T1定时时间,而T1的定时时间决定于装入的时间常数N,因此可根据时间常数N推出波特率,即2)传送数据为8位,连同一位起始位、一位停止位组成一帧,即一帧为10位,发送由TXD输出,接收由RXD输入,可构成全
22、双工的串行通信端口。例:设计波特率为4800b/s,晶振频率为11.0592MHz,定时器T1工作在方式2,SMOD0,则计数器初值为。第19页,共32页,编辑于2022年,星期五 3 3方式方式2 2、方式、方式3 3 串行口工作在串行口工作在方式方式2 2、方式、方式3 3时时,为,为9 9位异步位异步通信口,通信口,1 1帧信息由帧信息由1111位位组成,即组成,即1 1位起始位起始位、位、8 8位数据位数据D0D0D7D7(低位在前)、(低位在前)、1 1位可编程的第位可编程的第9 9位位D8D8(发送时,第(发送时,第9 9位为位为SCONSCON中的中的TB8TB8;接收时,第;接
23、收时,第9 9位为位为SCONSCON中的中的RB8RB8)及)及1 1位停止位,如图位停止位,如图7-107-10所示。所示。图图7-10 7-10 方式方式2 2、方式、方式3 3数据格式数据格式(1 1)发送:)发送:当当CPUCPU向发送缓冲器向发送缓冲器SBUFSBUF写入一个数据后,便立即启动发送器发送。先发送起始位写入一个数据后,便立即启动发送器发送。先发送起始位“0”“0”,接着从,接着从低位开始依次输出低位开始依次输出8 8位数据,再发送位数据,再发送SCONSCON中的中的TB8TB8,最后输出停止位。发送完一帧信息后,发送中断标志,最后输出停止位。发送完一帧信息后,发送中
24、断标志TITI置置“1”“1”,向,向CPUCPU请求中断。请求中断。(2 2)接收:)接收:使用与方式使用与方式1 1类似的方法识别起始位。类似的方法识别起始位。必须注意必须注意,方式,方式2 2、方式、方式3 3接收中也接收中也设置有数据辨识功能:只有同时满足以下两个条件时,接收到的数据才有效,才能将设置有数据辨识功能:只有同时满足以下两个条件时,接收到的数据才有效,才能将接收到的数据装入接收到的数据装入SBUFSBUF和和RB8RB8,并置,并置RIRI为为“1”“1”;否则,所接收的数据帧无效。;否则,所接收的数据帧无效。RI=0 RI=0。接收到的停止位为接收到的停止位为“1”“1”
25、。方式方式2 2、方式、方式3 3的区别的区别:方式:方式2 2的波特率为的波特率为f fosc/32osc/32或或f fosc/64osc/64,而方式,而方式3 3的波特率可变。的波特率可变。第20页,共32页,编辑于2022年,星期五三、串口工作方式三、串口工作方式 2 2、3 3方式方式2 2、3 3的工作性能的工作性能 1)方式2波特率固定,并等于。方式3波特率计算方法同方式1,即等于。2)一帧数据为11位,包括1位起始位、8位数据位、1位可编程位、1位停止位。数据位低位在前高位在后,第9位可编程位发送时从SCON中的TB8取出,接收时第9位存SCON中的RB8。返回本章首页第21
26、页,共32页,编辑于2022年,星期五第四节串口初始化编程 一、一、计算波特率计算波特率串口方式0串口方式1和串口方式3串口方式2第22页,共32页,编辑于2022年,星期五二、对二、对SCON、PCON、TMOD初始化初始化 以设计一8051单片机控制系统为例,设主振频率为12MHz,要求串口发送数据为8位、波特率为1200bps.则初始化步骤为:1.先按波特率要求,计算T1的时间常数N,设SMOD=1。已知主振频率为12MHz,波特率为1200bps.,串口工作于方式1,按式7-4可求得N=203.920CCH 2.写出初始化程序 MOV SCON,#50H ;串行口工作于方式1 MOV
27、PCON,#80H ;SMOD=1,MOV TMOD,#20H ;T1工作方式2定时方式MOV THl,#0CCH ;设置时间常间为N MOV TLl,#0CCH ;自动装入时间常数SETB TR1;启动T1返回本章首页第23页,共32页,编辑于2022年,星期五单片机双机通信实验1号单片机键盘上输入的数字可以在2号单片机的显示器LED上显示出来。第24页,共32页,编辑于2022年,星期五第25页,共32页,编辑于2022年,星期五第26页,共32页,编辑于2022年,星期五1 1甲乙两机点到点通信甲乙两机点到点通信 设甲、乙二机为相距很近(设甲、乙二机为相距很近(1m1m之内)之内)的的M
28、CS-51MCS-51应用系统应用系统,则可将它们的串行口直接相连,以实现全双工的双则可将它们的串行口直接相连,以实现全双工的双机通信,如图机通信,如图7-197-19所示。当需要所示。当需要增加通信距离时,增加通信距离时,可可以采用以采用RS-232RS-232或或RS-422RS-422标准进行双机通信。为了减少标准进行双机通信。为了减少线路干扰,在收、发的数据端还可以采用光电隔离器线路干扰,在收、发的数据端还可以采用光电隔离器(见图(见图7-167-16)。)。图7-19 双机通信第27页,共32页,编辑于2022年,星期五【例例】设有甲、乙两台设有甲、乙两台单片机单片机f fosc=1
29、1.059MHzosc=11.059MHz,用调用子程,用调用子程序的方法编程序。序的方法编程序。1 1机(发送机):从机(发送机):从内部内部RAMRAM单元单元20H20H25H25H中取出中取出6 6个个ASCIIASCII码数据,在最码数据,在最高位高位加上加上奇偶校验位奇偶校验位后由串行口发后由串行口发送。采用送。采用8 8位位异步通信异步通信,波特率为,波特率为1200b/s1200b/s。2 2机(接收机):接收器把接收到的机(接收机):接收器把接收到的6 6个个ASCIIASCII码数据,先码数据,先进行奇偶校验。若传送正确,则将数据依次存放在内部进行奇偶校验。若传送正确,则将
30、数据依次存放在内部RAMRAM区区20H20H25H25H单元中。若奇偶出错,则将单元中。若奇偶出错,则将“0FFH”“0FFH”存入相应的单存入相应的单元中。元中。解:图解:图7-207-20为甲机发送、乙机接收程序流程图。为甲机发送、乙机接收程序流程图。第28页,共32页,编辑于2022年,星期五图7-20 单工通信流程图第29页,共32页,编辑于2022年,星期五(1 1)1 1机,主程序:机,主程序:ORG 0000H ORG 0000H AJMP MAINT AJMP MAINT ORG 0030H ;ORG 0030H ;主程序入口地址主程序入口地址MAINT:MOV SP,#60
31、HMAINT:MOV SP,#60H MOV TMOD,#20H MOV TMOD,#20H;置定时器置定时器T1T1为工作方式为工作方式2 2 MOV TH1,#0E8H MOV TH1,#0E8H;置波特率置波特率1200b/s1200b/s的计数初值的计数初值 MOV TL1,#0E8H MOV TL1,#0E8H MOV SCON,#40H MOV SCON,#40H;串行口工作方式串行口工作方式1 1 SETB SETB TR1 TR1;启动定时器启动定时器T1T1工作工作 MOV R0,#20H MOV R0,#20H;数据首地址数据首地址R0R0 MOV R7,#06H MOV
32、R7,#06H;传送字节数传送字节数R7R7LOOP:MOV A,R0LOOP:MOV A,R0;取一个待传送的数据字节取一个待传送的数据字节 LCALL OUT1 LCALL OUT1;调用串行口发送子程序调用串行口发送子程序 INC R0 INC R0;修改地址指针修改地址指针 DJNZ R7,LOOP DJNZ R7,LOOP ;若未全部发送完,则转若未全部发送完,则转LOOPLOOP继续继续 SJMP$SJMP$第30页,共32页,编辑于2022年,星期五发送子程序发送子程序OUT1OUT1:OUT1:MOV C,POUT1:MOV C,P;设置奇偶校验位(设置奇偶校验位(补奇)补奇)
33、CPL CCPL C MOV ACC.7,C MOV ACC.7,C MOV SBUF,A MOV SBUF,A;启动串行口发送数据启动串行口发送数据 JNB TI,$JNB TI,$;等待数据字节发送完毕等待数据字节发送完毕 CLR TICLR TI ;清发送标志清发送标志TITI为下一数据串行发送做准备为下一数据串行发送做准备 RETRET;子程序返回子程序返回(2 2)乙机,主程序:)乙机,主程序:ORG 0000HORG 0000H AJMP MAIND AJMP MAIND ORG 0030H ORG 0030H ;主程序入口地址主程序入口地址MAIND:MOV SP,#60HMAI
34、ND:MOV SP,#60H MOV TMOD,#20H MOV TMOD,#20H ;置定时器置定时器T1T1为工作方式为工作方式2 2 MOV TH1,#0E8H MOV TH1,#0E8H;置波特率置波特率1200b/s1200b/s的计数初值的计数初值 MOV TL1,#0E8HMOV TL1,#0E8H SETB SETB TR1 TR1;启动定时器启动定时器T1T1工作工作 MOV R0,#20HMOV R0,#20H;数据首地址数据首地址R0R0 MOV R7,#06H MOV R7,#06H;传送字节数传送字节数R7R7 MOV SCON,#50H ;MOV SCON,#50H
35、 ;置串行口工作方式置串行口工作方式1 1,并使,并使REN=1REN=1 第31页,共32页,编辑于2022年,星期五 JNB RI,$JNB RI,$LOOP:LCALL IN1LOOP:LCALL IN1;调用接收子程序调用接收子程序 JC ERROR JC ERROR;若若C=1C=1,则出错,则出错 MOV R0,A MOV R0,A;将接收的数据送指定将接收的数据送指定RAMRAM单元中单元中 LOOP1:INC R0 LOOP1:INC R0;修改地址指针修改地址指针 DJNZ R7,LOOP DJNZ R7,LOOP;若未全部接收完毕,则转若未全部接收完毕,则转LOOPLOOP
36、继续继续 SJMP NEXT SJMP NEXT ERROR:MOV R0,#0FFH ERROR:MOV R0,#0FFH;将出错字符将出错字符“FF”“FF”送指定送指定RAMRAM单元单元 SJMP LOOP1 SJMP LOOP1 NEXT:SJMP NEXT NEXT:SJMP NEXT 接收子程序接收子程序IN1IN1:IN1:IN1:;等待一个数据字节接收完毕等待一个数据字节接收完毕 CLR RI ;CLR RI ;清标志清标志RIRI,为接收下一个数据字节做准备,为接收下一个数据字节做准备 MOV A,SBUF MOV A,SBUF;接收到的数据字节接收到的数据字节AA MOV C,P MOV C,P;检查奇校验位检查奇校验位 CPL C CPL C ANL A,#7FH ANL A,#7FH;消去奇校验位消去奇校验位 RET RET;子程序返回子程序返回第32页,共32页,编辑于2022年,星期五