《单片机原理与应用第2版课后答案第6章习题答案.doc》由会员分享,可在线阅读,更多相关《单片机原理与应用第2版课后答案第6章习题答案.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章习题答案1异步通信和同步通信的主要区别是什么?MCS-51串行口有没有同步通信功能?答案:异步通信因为每帧数据都有起始位和停止位,所以传送数据的速率受到限制。但异步通信不需要传送同步脉冲,字符帧的长度不受限制,对硬件要求较低,因而在数据传送量不很大。同步通信一次可以连续传送几个数据,每个数据不需起始位和停止位,数据之间不留间隙,因而数据传输速率高于异步通信。但同步通信要求用准确的时钟来实现发送端与接收端之间的严格同步。MCS-51串行口有同步通信功能。2解释下列概念:(1) 并行通信、串行通信。(2) 波特率。(3) 单工、半双工、全双工。(4) 奇偶校验。答案:(1)并行通信:数据的各
2、位同时进行传送。其特点是传送速度快、效率高,数据有多少位,就需要有多少根传输线。当数据位数较多和传送距离较远时,就会导致通信线路成本提高, 因此它适合于短距离传输。串行通信:数据一位一位地按顺序进行传送。其特点是只需一对传输线就可实现通信,当传输的数据较多、距离较远时,它可以显著减少传输线,降低通信成本,但是串行传送的速度慢。(2)波特率:每秒钟传送的二进制数码的位数称为波特率(也称比特数),单位是bps(bit per second),即位/秒。(3)单工:只允许数据向一个方向传送,即一方只能发送,另一方只能接收。半双工:允许数据双向传送,但由于只有一根传输线,在同一时刻只能一方发送,另一方
3、接收。全双工:允许数据同时双向传送,由于有两根传输线,在A站将数据发送到B站的同时,也允许B站将数据发送到A站。(4)奇偶校验:为保证通信质量,需要对传送的数据进行校验。对于异步通信,常用的校验方法是奇偶校验法。采用奇偶校验法,发送时在每个字符(或字节)之后附加一位校验位,这个校验位可以是“0”或“1”,以便使校验位和所发送的字符(或字节)中“1”的个数为奇数称为奇校验,或为偶数称为偶校验。接收时,检查所接收的字符(或字节)连同奇偶校验位中“1”的个数是否符合规定。若不符合,就证明传送数据受到干扰发生了变化,CPU可进行相应处理。3MCS-51串行口控制寄存器SCON中SM2、TB8、RB8有
4、何作用?主要在哪几种方式下使用?答案:SM2:多机通信控制位,主要在方式1、2、3下使用;TB8:存放发送数据的第9位,主要在方式2、3下使用;RB8:存放接收数据的第9位或停止位,主要在方式1、2、3下使用。4试分析比较MCS-51串行口在四种工作方式下发送和接收数据的基本条件和波特率的产生方法。答案:发送数据的基本条件:方式0、1、2、3:CPU执行一条将数据写入发送缓冲器SBUF的指令;接收数据的基本条件:方式0:用软件使REN=1(同时RI=0);方式1:用软件使REN=1,一帧数据接收完毕后,必须同时满足以下两个条件:RI=0;SM2=0或接收到的停止位为1,这次接收才真正有效,将8
5、位数据送入SBUF,停止位送RB8,置位RI。否则,这次接收到的数据将因不能装入SBUF而丢失。方式2、3:软件使REN=1,同时满足以下两个条件: RI=0; SM2=0或接收到的第9位数据为1(SM2=1),则这次接收有效,8位数据装入SBUF,第9位数据装入RB8,并由硬件置位RI。否则,接收的这一帧数据将丢失。波特率的产生方法:在方式0下,串行口的波特率是固定的,即波特率=fosc /12;在方式1、3下,串行口波特率由定时器T1的溢出率和SMOD值同时决定。相应公式为:波特率=2SMODT1溢出率/32;在方式2下,串行口的波特率可由PCON中的SMOD位控制:若使SMOD=0,则所
6、选波特率为fosc/64;若使SMOD=1,则波特率为fosc/32。即2SMOD64fosc波特率=5为何T1用作串行口波特率发生器时常用模式2?若fosc=6MHz,试求出T1在模式2下可能产生的波特率的变化围。答案:定时器T1作为波特率发生器可工作于模式0、模式1和模式2。其中模式2在T1溢出后可自动装入时间常数,避免了重装参数,因而在实际应用中除非波特率很低,一般都采用模式2。若fosc=6MHz,T1在模式2下可能产生的波特率的变化围为:61.04 bps 15625 bps。6简述多机通信原理。答案:当主机选中与其通信的从机后,只有该从机能够与主机通信,其他从机不能与主机进行数据交
7、换, 而只能准备接收主机发来的地址帧。上述要通过SCON寄存器中的SM2和TB8来实现的。当主机发送地址帧时使TB8=1,发送数据帧时使TB8=0,TB8是发送的一帧数据的第9位,从机接收后将第9位数据作为RB8,这样就知道主机发来的这一帧数据是地址还是数据。另外,当一台从机的SM2=0时,可以接收地址帧或数据帧,而当SM2=1时只能接收地址帧,这就能实现主机与所选从机之间的单独通信。7试用8051串行口扩展I/O口,控制16个发光二极管自右向左以一定速度轮流发光,画出电路并编写程序。答案:电路如下:程序如下:ORG 0000H AJMP MAINORG0023HAJMPSBS; 转向串行口中
8、断服务程序ORG2000HMAIN: MOV SCON, #00H; 串行口设置为方式0MOV A, #01H; 最右边一位发光二极管先亮CLRP1.0; 关闭并行输出,熄灭显示CLRP1.1MOV SBUF,A; 开始串行输出LOOP:SJMPLOOP; 等待中断SBS:INC R0CJNE R0, #11H, DSPMOV R0, #01HDSP : CJNE R0, #08H, DSPRSETBP1.1 ; 启动高8位并行输出DSPR: SETBP1.0 ; 启动低8位并行输出ACALLDELY; 显示延迟1sCLRTI; 清发送中断标志RLA; 准备点亮下一位CLRP1.0; 关闭并行
9、输出,熄灭显示CLRP1.1MOV SBUF, A; 串行输出ZDFH: RETIDELY:MOV R2, #05H; 延时1s子程序(fosc=6MHz)DELY0:MOV R3, #0C8HDELY1:MOV R4, #0F8HNOPDELY2:DJNZR4, DELY2DJNZ R3, DELY1DJNZ R2, DELY0RETEND8试设计一个8051单片机的双机通信系统,串行口工作在方式1,波特率为2400bps,编程将甲机片RAM中40H4FH的数据块通过串行口传送到乙机片RAM的40H4FH单元中。答案:双方约定的通信协议如下:甲机先发送请求乙机接收信号“0AAH”,乙机收到该
10、信号后,若为准备好状态,一个则发送数据“0BBH”作为应答信号,表示同意接收。当甲机发送完16个字节后,再向乙机发送一个累加校验和。校验和是针对数据块进行的,即在数据发送时,发送方对块中的数据简单求和,产生一个单字节校验字符(校验和),附加到数据块结尾。在数据接收时,接收方每接收一个数据也计算一次校验和;接收完数据块后,再接收甲机发送的校验和,并将接收到的校验和与乙机求出的校验和进行比较,向甲机发送一个状态字,表示正确(00H)或出错(0FFH),出错则要求甲机重发。甲机收到收到乙机发送的接收正确应答信号(00H)后,即结束发送,否则,就重发一次数据。甲机采用查询方式进行数据发送,乙机采用中断
11、方式进行数据接收。双方约定传输波特率为2400bps,两机主频均为11.059MHz,双机串行口都工作于方式1,查表6-2可知SMOD=0,定时器T1采用工作模式2,初值为F4H。甲机发送子程序:ORG2000HSEND:MOV TMOD, #20H; 定时器1设为模式2MOV TL1, #0F4HMOV TH1, #0F4H; 置定时器初值SETB TR1; 启动T1MOV SCON, #50H; 设串行口为方式2MOV PCON, #00H; SMOD=0TLLS: MOV SBUF, #0AAH; 发送请求接收信号WFS1: JBCTI, RYD1 ; 等待发送SJMP WFS1RYD1
12、: JBCRI, RYD2 ; 等待乙机回答SJMP RYD1RYD2: MOV A, SBUF ; 接收应答信号XRL A, #0BBH JNZ TLLS ; 乙机未准备好,继续联络SDD1: MOV R0, #40H; 首地址40HR0MOV R1, #10H; 数据个数R1MOV R2, #00H; 清校验和寄存器SDD2: MOV SBUF, R0; 发送一个数据MOV A, R2ADD A, R0; 求校验和MOV R2, A; 保存校验和INC R0 WFS2: JBCTI, SDD3 ; 等待发送SJMP WFS2SDD3: DJNZ R1, SDD2; 数据块是否发送完MOV
13、SBUF, R2; 发送校验和WFS3:JBCTI, RYD3 SJMP WFS3 RYD3:JBCRI, RYD4 ; 等待乙机回答SJMP RYD3RYD4: MOV A, SBUFJNZ SDD1 ; 回答出错则重发RET乙机接收子程序:ORG2000HRECV:MOV TMOD, #20H; 定时器1设为模式2MOV TL1, #0F4HMOV TH1, #0F4H; 置定时器初值SETB TR1; 启动T1MOV SCON, #50H; 设串行口为方式2MOV PCON, #00H; SMOD=0MOV R0, #40H ; 首地址40HR0MOV R1, #10H; 数据个数R1M
14、OV 50H, #00H; 清校验和寄存器SETB 7FHSETB 7EH; 标志位初始置1SETB ES ; 允许接收中断SETB EA; 开中断LOOP:SJMPLOOP; 等待中断中断服务子程序:CLR EA CLR RI ; 清中断 7FH, RCMD; 是请求接收信号吗 7EH, DATA; 是数据块吗MOV A, SBUF; 接收校验和CJNE A, 50H, ERR; 判断发送是否正确MOV A, #00H MOV SBUF, A; 正确,发00HWFS1: JNBTI, WFS1 ; 等待发送CLR TISJMP RETNERR: MOV A, #0FFH MOV SBUF,
15、A; 出错,发0FFHWFS2: JNBTI, WFS2 ; 等待发送CLR TISJMP AGANRCMD: MOVA, SBUF ; 接收甲机请求信号XRL A, #0AAH JZ TYDX SJMP RETNTYDX: MOVSBUF, #0BBH ; 发送应答信号0BBHWFS3: JNBTI, WFS3 ; 等待发送CLR TICLR 7FHSJMP RETNDATA: MOVA, SBUF ; 接收数据MOV R0, AINC DPTRADD A, 50H; 求校验和MOV 50H, A; 保存校验和DJNZ R1, RETN CLR 7EH ; 数据接收完后清数据标志位SJMP
16、RETNAGAN: SETB7FH SETB 7EH; 恢复标志位MOV DPTR, #2000H; 首地址2000HDPTRMOV R1, #10; 数据个数R1MOV 50H, #00H; 清校验和寄存器RETN: SETB EA; 开中断RETI98051以方式2进行串行通信,假定波特率为1200bps,第9位作奇偶校验位,以中断方式发送。请编写程序。答案:主程序:ORG2000HMAIN:MOV SCON, #80H; 将串行口设置为方式2,REN=1MOV PCON, #00H; SMOD=0MOV R0, #30H; 发送数据区首地址R0MOV R1, #50H; 接收数据区首地址
17、R1MOV R2, #20; 置发送数据个数R2SETB ESSETB EA; 开中断LOOP:SJMPLOOP; 等待中断中断服务子程序:ORG0023HAJMPSOUT; 转至中断服务程序ORG0200HSOUT: CLRTI; 清发送中断标志DJNZ R2, LOOP1; 数据未发送完,继续发送SJMP RR1; 发送完返回LOOP1: MOV A, R0 ; 取发送数据到AMOV C, PSW.0 MOV TB8, CMOV SBUF, A; 发送数据INCR0; 指向下一个数据RR1: RETI108051以方式3进行串行通信,假定波特率为1200bps,第9位作奇偶验位,以查询方式
18、接收。请编写程序。答案:ORG2000HRECV:MOV TMOD, #20H; 定时器1设为模式2MOV TL1, #0E8HMOV TH1, #0E8H; 置定时器初值SETB TR1; 启动T1MOV SCON, #0D0H; 将串行口设置为方式3,REN=1MOV PCON, #00H; SMOD=0MOV R1, #20H; 接收数据区首地址R1MOV R2, #16; 置发送数据个数R2WAIT:JBC RI, PRI; 等待接收到数据SJMP WAITPRI: MOV A, SBUF; 读接收数据JNB PSW.0, PZEO ; P=0则跳转JNB RB8, ERR ; P=1
19、,RB8=0转至出错SJMP RIGHT ; P=1,RB8=1转至正确PZEO: RB8, ERR ; P=0,RB8=1转至出错RIGHT: MOV R1, A; 存放数据INCR1; 指向下一个存储单元DJNZ R2, WAIT ; 未接收完则继续接收CLR F0 ; F0=0 RETERR:CLR RENSETB F0 ; 置F0=1RET11RS-232C总线标准是如何定义其逻辑电平的?实际应用中可以将MCS-51单片机串行口和PC机的串行口直接相连吗?为什么?答案:RS-232C采用负逻辑,即逻辑1用5V15V表示,逻辑0用5V15V表示。PC机配置的是RS-232C标准接口,与MCS-51单片机输入、输出电平不兼容。因此实际应用中不能将MCS-51单片机串行口和PC机的串行口直接相连。12为什么RS-485总线比RS-232C总线具有更高的通信速率和更远的通信距离?答案:RS-232C由于发送器和接收器之间具有公共信号地,不可能使用双端信号,因此共模噪声会耦合到信号系统中,从而限制了RS-232C的信号传输速率和通信距离。而RS-485总线无论发送还是接收数据,均用两条线传送双端(差分)信号,因而大大提高了通信速率和通信距离。