
用两台单片机实现双机通信 门答题 1,串行数据传送的主要优点和用途是什么? 答案: 串行数据传送的主要优点是硬件接口简单,接口端口少(2个)。主要用于多个单片机 系统之间的数据通信。 2.以方式一为例,简述串行口接收和发送数据的过程。 容案: 发送:数据位由TXT端输出。发送1航信息为10为,当Q刊执行1条数据写发送缓冲 器5下的指令,就启动发送。发送开始时,内部发送控制信号/5ED变为有效,将起始位 想T知输出,此后,每经过1个TX时钟周期。梗产生1个移位脉冲,并由D输出1个数 据位。8位数据位全部完毕后,置1中断标志位T1,然后/SE信号失效。接收:当检测到 起始位的负践变时,则开始接收。接受时,定时控制信号有2种,一种是位检测器采样脉冲, 它的频率是双时中的16倍,也镜是在1位数据期间。有16个采样脉冲,以波特率的16 倍的速率采样D引脚状态,当采样到XD瑞从1到0的跳变时藏启动检测器,接收的慎是 3次连续采样。取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消 除干扰引起的影响,以保证可靠无误的开始接受数据。 3,串行口有几种工作方式?有几种航格式?各种工作方式的波特率知何确定? 容案: 串行口有3种工作方式:方式0、方式1、方式2、方式3:有3种领格式,方式2和3 具有相同的锁格式:方式0的发送和接收都以f0sc/12为固定被特率, 方式1的泼特率=2s0/32×定时器T1的溢出率 方式2的被特率-2s30/61×fsc 方式3的液特率-2s00/32×定时器T1的溢出率 4假定串行口串行发运的字符格式为1个起位。8个数据位,1个奇校验位,1个停 止位,请画出传送字符“A”的顺格式。 容案: 起始位do0止位 5,为什么定时器/计数器T1用做串行口波特率发生器时,采用方式2?若己知时种频
1 用两台单片机实现双机通信 问答题 1.串行数据传送的主要优点和用途是什么? 答案: 串行数据传送的主要优点是硬件接口简单,接口端口少(2 个)。主要用于多个单片机 系统之间的数据通信。 2.以方式一为例,简述串行口接收和发送数据的过程。 答案: 发送:数据位由 TXT 端输出,发送 1 帧信息为 10 为,当 CPU 执行 1 条数据写发送缓冲 器 SBUF 的指令,就启动发送。发送开始时,内部发送控制信号/SEND 变为有效,将起始位 想 TXD 输出,此后,每经过 1 个 TX 时钟周期,便产生 1 个移位脉冲,并由 TXD 输出 1 个数 据位。8 位数据位全部完毕后,置 1 中断标志位 TI,然后/SEND 信号失效。接收:当检测到 起始位的负跳变时,则开始接收。接受时,定时控制信号有 2 种,一种是位检测器采样脉冲, 它的频率是 RX 时钟的 16 倍。也就是在 1 位数据期间,有 16 个采样脉冲,以波特率的 16 倍的速率采样 RXD 引脚状态,当采样到 RXD 端从 1 到 0 的跳变时就启动检测器,接收的值是 3 次连续采样,取其中 2 次相同的值,以确认是否是真正的起始位的开始,这样能较好地消 除干扰引起的影响,以保证可靠无误的开始接受数据。 3.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定? 答案: 串行口有 3 种工作方式:方式 0、方式 1、方式 2、方式 3;有 3 种帧格式,方式 2 和 3 具有相同的帧格式;方式 0 的发送和接收都以 fosc/12 为固定波特率, 方式 1 的波特率=2SMOD/32×定时器 T1 的溢出率 方式 2 的波特率=2SMOD/64×fosc 方式 3 的波特率=2SMOD/32×定时器 T1 的溢出率 4. 假定串行口串行发送的字符格式为 1 个起始位,8 个数据位,1 个奇校验位,1 个停 止位,请画出传送字符“A”的帧格式。 答案: 起始位 0 1 0 0 0 0 0 0 校验位 停止位 5.为什么定时器/计数器 T1 用做串行口波特率发生器时,采用方式 2 ?若已知时钟频

率、通讯波特率,如何计算其初值? 容案: 因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口被特率发生器设置 时,就避免了重装参数的操作。 波特率=20w 己知时钟频率,通讯液特率,根据公式 32“ 2×(256-X),计算出 初值。 6.使用AT89然52的申行口按工作方式1进行申行数据通讯。假定波特率为2400处/s: 以中断方式传送数据,。请编写全双工通讯程序。 容案: 发送程序: :外部品罹透为11.059,定时器T1工作在模式2, START:MOV T0D,20 ;T1工作在模式2 0WTL1.#0E8别 :装载定时器初值 0尔 T1,0E8 SETB TRI TS0W,#40 :串口工作在模式1 0 0,#20用 ;数据区首地址 7,20阳 :数据块长度 LOOP:MOV A.R0 :取数据 MOV C.P ;取奇偶校验位 CPL n AOC.7,C N SBUF.A DONE:JNB TI.DONE CLR TI INC 0 DINZ R7.0P AIMP START 接收程序:
2 率、通讯波特率,如何计算其初值? 答案: 因为定时器/计数器在方式 2 下,初值可以自动重装,这样在做串口波特率发生器设置 时,就避免了重装参数的操作。 已知时钟频率、通讯波特率,根据公式: 32 12 (256 ) 2 X fOSC SMOD − 波特率= ,计算出 初值。 6.使用 AT89S52 的串行口按工作方式 1 进行串行数据通讯,假定波特率为 2400b/s, 以中断方式传送数据,请编写全双工通讯程序。 答案: 发送程序: ;外部晶振选为 11.059,定时器 T1 工作在模式 2。 START:MOV TMOD,#20H ;T1 工作在模式 2 MOV TL1,#0E8H ;装载定时器初值 MOV TH1,#0E8H SETB TR1 MOV SCON,#40H ;串口工作在模式 1 MOV R0,#20H ;数据区首地址 MOV R7,#20H ;数据块长度 LOOP:MOV A,@R0 ;取数据 MOV C,P ;取奇偶校验位 CPL C MOV ACC.7,C MOV SBUF,A DONE:JNB TI,DONE CLR TI INC R0 DJNZ R7,LOOP AJMP START 接收程序:

START:MOV T00,=20H :T1工作在核式2 0WTL1.40E8 :装载定时落初值 0 TH1.#0e8 SETB TRI 0TS00N,430 ;串口工作在模式1 镇N 0.#20阳 :数据区首地址 7,20阳 :数据块长度 DONE:JNB RI.DONE ;等特接收结束 CLR RI 0四 A,S下 :取数据 MOV C.P ;检查奇偶校验位 CPL 四 ACC.7.C JC ERROR :转去出错处理 镇 0。A !保存所接收数据 INC 0 DJNZ R7.0E 2家8OR:nnn.。 ;出销处理程序 二,填空圈 1.轴格式为1个起始位,8个数据位和】个停止位的异步申行通信方式是方式《), 容案: 1 2.某AT8962串行口,传运数据的格式为1个起始位(0),7个数据位,1个偶校验 位和1个停止位(1)相成。当该串行口每分钟传送1800个字符时,被特率为() 答案: 240/5 3.在串行通调中。收发双方对波特率的设定应该是(》的。 答案: 相同的 4,如果串行接口电路要实现接收数据,。则要实现()转换:如果要发送数据,要实
3 START:MOV TMOD,#20H ;T1 工作在模式 2 MOV TL1,#0E8H ;装载定时器初值 MOV TH1,#0E8H SETB TR1 MOV SCON,#50H ;串口工作在模式 1 MOV R0,#20H ;数据区首地址 MOV R7,#20H ;数据块长度 DONE:JNB RI,DONE ;等待接收结束 CLR RI MOV A,SBUF ;取数据 MOV C,P ;检查奇偶校验位 CPL C MOV ACC.7,C JC ERROR ;转去出错处理 MOV @R0,A ;保存所接收数据 INC R0 DJNZ R7,DONE ERROR:……….. ;出错处理程序 二、填空题 1.帧格式为 1 个起始位,8 个数据位和 1 个停止位的异步串行通信方式是方式( )。 答案: 1 2.某 AT89S52 串行口,传送数据的帧格式为 1 个起始位(0),7 个数据位,1 个偶校验 位和 1 个停止位(1)组成。当该串行口每分钟传送 1800 个字符时,波特率为( )。 答案: 240B/S 3.在串行通讯中,收发双方对波特率的设定应该是( )的。 答案: 相同的 4.如果串行接口电路要实现接收数据,则要实现( )转换;如果要发送数据,要实

现 《)转换。能够实现这些转换的设备称为()。 容案 串并:并串:移位寄存器 5.若品体振荡器为11.0592z,串行口工作于方式1,被特率为4800h/s,写出用T卫 作为被特率发生器的方式控制字()和计数初值(): 容案: 20:5w0-1时计数初值为下H,S0D-0时计数初值为F 三、选择题 1.串行口工作方式1的该特率是:() (4)图定的,为w/32 (倒固定的,为g16 可变的,通过定时器/计数器1的溢出率设定。D)固定的。为64 容案,C 2.下列说法不正确的是〔): 《A)串行口通信的第9数据位的功能可由用户定义。 发送数据的第9数据位的内容在S0N寄存器的T路位预先准备好的。 C)串行通说发送时,指令把T路位的状态送入发送S下: )串行通讯接收到的第9位数据送S0W客存器的即路中保存。 容案,A 3。通过串行口发送或接收数据时,在程序中应使用:() (A)C指令(B)W江指令(C)W指令(D)ICHD指令 容案:C 4角定串行通信速率的位是: 》字符/秒 位/秒 (C0/ 秒 D)航/分 容案:B 5物格式为1】位二进制数的异步串行通信方式是: 》方式0 (B間方式1 (C)方式 D)方式3
4 现 ( )转换。能够实现这些转换的设备称为( )。 答案: 串并;并串;移位寄存器 5.若晶体振荡器为 11.0592MHz,串行口工作于方式 1,波特率为 4800b/s,写出用 T1 作为波特率发生器的方式控制字( )和计数初值( )。 答案: 20H;SMOD=1 时计数初值为 F4H,SMOD=0 时计数初值为 FAH 三、选择题 1.串行口工作方式 1 的波特率是:( ) (A)固定的,为 fOSC / 32 (B) 固定的,为 fOSC /16 可变的,通过定时器/计数器 T1 的溢出率设定。 (D) 固定的,为 fOSC / 64 。 答案:C 2. 下列说法不正确的是( ) : (A)串行口通信的第 9 数据位的功能可由用户定义。 (B) 发送数据的第 9 数据位的内容在 SCON 寄存器的 TB8 位预先准备好的。 (C ) 串行通讯发送时,指令把 TB8 位的状态送入发送 SBUF。 (D) 串行通讯接收到的第 9 位数据送 SCON 寄存器的 RB8 中保存。 答案:A 3.通过串行口发送或接收数据时,在程序中应使用:( ) (A)MOVC 指令 (B)MOVX 指令 (C)MOV 指令 (D)XCHD 指令 答案:C 4. 确定串行通信速率的位是: (A) 字符/秒 (B) 位/秒 (C) 帧/ 秒 (D) 帧/分 答案:B 5. 帧格式为 11 位二进制数的异步串行通信方式是: (A) 方式 0 (B) 方式 1 (C) 方式 2 (D) 方式 3

答案:C、D 四、实我练习 用两台单片机实现串型通讯。一台为A机,一台为B机,把A机内存40阳开始单元的 10个字节数传送给B机,成入B机团开始的单元。若传送错误,B机发送传送错误的信息, 请求A机重新发送。若传送正确,B机发送传送正确的信息。 答案: A机发运程序: ORG 0000H JP MAIN ORG 0040Im SIMH DATA 51H S以L DATA 50H MAIN: 0 S,#30阳 MOY O0N,#80 MOV S00N,000川 :置串行口工作方式3,52-1 T 日1,83阳 :置定时器1定时常数,使波特率为2位/秒 MOV 几1,#8阳 0 S0L,000 N Snl.00月 MOV 00,20I :定时器1工作于方式2 MOv 1E,#80H :关串行中断和定时墨1中断 0 6,0A祖 S就TBTR1 LOOP1 0,#40阳 LOOP: 镇0W A.eRD :准备发递数据 四 SBUF.A JNB TI,S :等待发送完成 5
5 答案:C、D 四、实践练习 用两台单片机实现串型通讯。一台为 A 机,一台为 B 机,把 A 机内存 40H 开始单元的 10 个字节数传送给 B 机,放入 B 机 40H 开始的单元。若传送错误,B 机发送传送错误的信息, 请求 A 机重新发送。若传送正确,B 机发送传送正确的信息。 答案: A 机发送程序: ORG 0000H JMP MAIN ORG 0040H SUMH DATA 51H SUML DATA 50H MAIN: MOV SP,#30H MOV PCON,#80H MOV SCON,#0E0H ;置串行口工作方式 3,SM2=1 MOV TH1,#83H ;置定时器 1 定时常数,使波特率为 2 位/秒 MOV TL1,#83H MOV SUMH,#00H MOV SUML,#00H MOV TMOD,#20H ;定时器 1 工作于方式 2 MOV IE,#80H ;关串行中断和定时器 1 中断 MOV R6,#0AH SETB TR1 LOOP1: MOV R0,#40H LOOP: MOV A,@R0 ;准备发送数据 MOV SBUF,A JNB TI,$ ;等待发送完成

CLR TI D A.SUVL :计算累加和 M SUML,A N A.SUVH ADDC A.300H W SUMH.A INC 0 :雀备下一个将发送的数据 DJXZ 6,.00 ;全部数据发送完了马? W A.SUVL :发送累加和 SBUF,A JNB TI,$ CLR T A,SUVH 0四 SBUF,A JNB TI,$ :等待累加和发送完 CLR TI SETB JNB RI,$ :等特接收B机的目应信息 W A,SBUF CINE A.#80 LOOPI :回应不正确转向重新发送 SJMP END B机接牧程序 ORG 0000H JMP MAIN ORG 0040H 5以H DATA 51H STL. DATA 50H MAIN: 四 5,#30阳
6 CLR TI ADD A,SUML ;计算累加和 MOV SUML,A MOV A,SUMH ADDC A,#00H MOV SUMH,A INC R0 ;准备下一个将发送的数据 DJNZ R6,LOOP ;全部数据发送完了吗? MOV A,SUML ;发送累加和 MOV SBUF,A JNB TI,$ CLR TI MOV A,SUMH MOV SBUF,A JNB TI,$ ;等待累加和发送完 CLR TI SETB REN JNB RI,$ ;等待接收 B 机的回应信息 MOV A,SBUF CJNE A,#80H,LOOP1 ;回应不正确转向重新发送 SJMP $ END B 机接收程序: ORG 0000H JMP MAIN ORG 0040H SUMH DATA 51H SUML DATA 50H MAIN: MOV SP,#30H

球四 P0aN.#80间 MOV S00N.030 :置审行口工作方式3,S21 N T日1,#83阳 :置定封器1定时常数,使波特率为20位/秒 MOV 1.1,#83组 MOV n且.00 镇W S0L.00期 T球3D,20H :定时器1工作于方式2 0 1E,#80日 :关串行中断和定时器1中断 W 6,#0月 SETB REN SETB TRI LOOP1: 0,#40H LOOP: JNB RI,$ :等特接收数据完成 CLR I Mn A:S以F :保存接收来的数据 0,A ADD A.SUVL :计算累加和 示 SUIL,A 四 A.SUVH ADDC A,00H 0四 SUIHL.A INC 0 DJNZ R6.L00 JNB RI,多 :接收B机发送的紧加和 CLR RI MOV A,SE以E :保存累加和低8位 MOV 60圆,A JNB RI
7 MOV PCON,#80H MOV SCON,#0E0H ;置串行口工作方式 3,SM2=1 MOV TH1,#83H ;置定时器 1 定时常数,使波特率为 250 位/秒 MOV TL1,#83H MOV SUMH,#00H MOV SUML,#00H MOV TMOD,#20H ;定时器 1 工作于方式 2 MOV IE,#80H ;关串行中断和定时器 1 中断 MOV R6,#0AH SETB REN SETB TR1 LOOP1: MOV R0,#40H LOOP: JNB RI,$ ;等待接收数据完成 CLR RI MOV A,SBUF ;保存接收来的数据 MOV @R0,A ADD A,SUML ;计算累加和 MOV SUML,A MOV A,SUMH ADDC A,#00H MOV SUMH,A INC R0 DJNZ R6,LOOP JNB RI,$ ;接收 B 机发送的累加和 CLR RI MOV A,SBUF ;保存累加和低 8 位 MOV 60H,A JNB RI,$

CLR RI A.SBUF :保存累加和高8位 0 61H,A CJNE A.SV用.E0R :判断接收正确吗? W A.60H CJNE A.SUVL.ERROR CLR A,=80H :接收正确向A机发送正确码 0四 SBUF,A INB TI,S CLR 0 SJMP EXROR: 四 A.00阳 O SBUF.A J阳 TI,$ CLR TI SET用 LJMP LOOPI END
8 CLR RI MOV A,SBUF ;保存累加和高 8 位 MOV 61H,A CJNE A,SUMH,ERROR ;判断接收正确吗? MOV A,60H CJNE A,SUML,ERROR CLR REN MOV A,#80H ;接收正确向 A 机发送正确码 MOV SBUF,A JNB TI,$ CLR TI SJMP $ ERROR: MOV A,#00H MOV SBUF,A JNB TI,$ CLR TI SETB REN LJMP LOOP1 END