WFS1: MOV CLR JNB SBUF, A TI, WFS1 ; 正确,发 00H
; 等待发送
ERR: SJMP MOV RETN
TI A, #0FFH
WFS2: MOV CLR JNB SBUF, A T TI, WFS2 ; 出错,发 0FFH
; 等待发送
RCMD: SJMP XRL MOV AGAN
I A, SBUF ; 接收甲机请求信号JZ A, #0AAH
TYDX: SJMP TYDX WFS3: CLR MOV RETN
JNB SBUF, #0BBH ; 发送应答信号0BBH CLR TI TI, WFS3 ; 等待发送
DATA: SJMP 7FH MOV MOV RETN
A, SBUF ; 接收数据
INC R0, A ADD DPTR MOV A, 50H DJNZ 50H, A ; 求校验和 CLR R; 保存校验和 7EH 1, RETN AGAN: SJMP RETN ; 数据接收完后清数据标志位 SETB SETB 7FH MOV 7EH
MOV DPTR, #2000H ; 恢复标志位; 首地址2000H
→DPTR RETN: MOV R1, #10 50H, #00H ; 数据个数→R1 RETI
SETB EA ; ; 清校验和寄存器开中断
9.8051以方式2进行串行通信,假定波特率为1200bps,第9位作奇偶校验位,以中断方式发送。请编写程序。 答案:
主程序:
MAIN: ORG
MOV SCON, #80H
2000H
; 将串行口设置为方式2,REN=1
MOV MOV PCON, #00H MOV R0, #30H R1, #50H ; SMOD=0
MOV ; ; 发送数据区首地址→SETB R2, #20
; 接收数据区首地址→R0 置发送数据个数→R2
R1 LOOP: SETB E SJMP ES LOOP A
; ; 开中断等待中断
31
中断服务子程序:
ORG 0023H
AJMP SOUT ; 转至中断服务程序 ORG 0200H
SOUT: CLR TI ; 清发送中断标志
DJNZ R2, LOOP1 ; 数据未发送完,继续发送 SJMP RR1 ; 发送完返回
LOOP1: MOV A, @R0 ; 取发送数据到A
MOV C, PSW.0 MOV TB8, C
MOV SBUF, A ; 发送数据
INC R0 ; 指向下一个数据 RR1: RETI
10.8051以方式3进行串行通信,假定波特率为1200bps,第9位作奇偶验位,以查询方式接收。请编写程序。 答案:
ORG 2000H
RECV: MOV TMOD, #20H ; 定时器1设为模式2
MOV TL1, #0E8H
MOV TH1, #0E8H ; 置定时器初值 SETB TR1 ; 启动T1
MOV SCON, #0D0H ; 将串行口设置为方式3,REN=1 MOV PCON, #00H ; SMOD=0
MOV R1, #20H ; 接收数据区首地址→R1 MOV R2, #16 ; 置发送数据个数→R2 WAIT: JBC RI, PRI ; 等待接收到数据
SJMP WAIT
PRI: MOV A, SBUF ; 读接收数据
JNB PSW.0, PZEO ; P=0则跳转
JNB RB8, ERR ; P=1,RB8=0转至出错 SJMP RIGHT ; P=1,RB8=1转至正确 PZEO: JB RB8, ERR ; P=0,RB8=1转至出错 RIGHT: MOV @R1, A ; 存放数据
INC R1 ; 指向下一个存储单元
DJNZ R2, WAIT ; 未接收完则继续接收 CLR F0 ; F0=0 RET
ERR: CLR REN
SETB F0 ; 置F0=1 RET
11.RS-232C总线标准是如何定义其逻辑电平的?实际应用中可以将MCS-51单片机串行口和PC机的串行口直接相连吗?为什么?
答案:
32
RS-232C采用负逻辑,即逻辑1用-5V~-15V表示,逻辑0用+5V~+15V表示。 PC机配置的是RS-232C标准接口,与MCS-51单片机输入、输出电平不兼容。因此实际应用中不能将MCS-51单片机串行口和PC机的串行口直接相连。
12.为什么RS-485总线比RS-232C总线具有更高的通信速率和更远的通信距离? 答案:
RS-232C由于发送器和接收器之间具有公共信号地,不可能使用双端信号,因此共模噪声会耦合到信号系统中,从而限制了RS-232C的信号传输速率和通信距离。而RS-485总线无论发送还是接收数据,均用两条线传送双端(差分)信号,因而大大提高了通信速率和通信距离。
第7章习题答案
1.通常8031给用户提供的I/O口有哪几个?为什么? 答案:
MCS-51系列单片机虽然有4个8位I/O口P0、P1、P2、P3,但4个I/O口实际应用时,并不能全部留给用户作系统的I/O口。因为当单片机在外部扩展了程序存储器、数据存储器时,就要用P0和P2口作为地址/数据总线,而留给用户使用的I/O口只有P1口和一部分P3口。
2.在MCS-51单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而不会发生冲突,为什么?外部I/O接口地址是否允许与存储器地址重叠?为什么?
答案:
因为单片机访问外部程序存储器与访问外部数据存储器(包括外部I/O口)时,会分别产生PSEN与RD/WR两类不同的控制信号,因此外接程序存储器和数据存储器的地址空间允许重叠而不会发生冲突。
外部扩展I/O口占用数据存储器地址空间,与外部数据存储器统一编址,单片机用访
33
问外部数据存储器的指令来访问外部扩展I/O口。因此外部I/O接口地址是否允许与程序存储器地址重叠不允许与数据数据存储器地址重叠。
3.外部存储器的片选方式有几种?各有哪些特点? 答案:
外部存储器的片选方式有线选法和译码法两种。线选法的特点是连接简单,不必专门设计逻辑电路,但是各个扩展芯片占有的空间地址不连续,因而地址空间利用率低。适用于扩展地址空间容量不太大的场合。译码法的特点是在P2口未被扩展芯片地址线占用的地址总线数量相同的情况下,可以比线选法扩展更多的芯片,而且可以使各个扩展芯片占有的空间地址连续,因而适用于扩展芯片数量多、地址空间容量大的复杂系统。
4.简述MCS-51单片机CPU访问外部扩展程序存储器的过程。 答案:
P0口作为地址/数据复用的双向三态总线,用于输出程序存储器的低8位地址或输入指令,P2口具有输出锁存功能,用于输出程序存储器的高8位地址。当ALE有效(高电平)时,高8位地址从P2口输出,低8位地址从P0口输出,在ALE的下降沿把P0口输出的低8位地址锁存起来,然后在PSEN有效(低电平)期间,选通外部程序存储器,将相应单元的数据送到P0口,CPU在PSEN上升沿完成对P0口数据的采样。
5.简述MCS-51单片机CPU访问外部扩展数据存储器的过程。 答案:
第一个机器周期是从外部程序存储器读取MOVX指令操作码,第二个机器周期才是执行MOVX指令访问外部数据存储器。在该周期中,若是读操作,则RD信号有效(低电平),P0口变为输入方式,被地址信号选通的外部RAM某个单元中的数据通过P0口输入CPU;若是写操作,则WR信号有效(低电平),P0口变为输出方式,CPU内部数据通过P0口写入地址信号选通的外部RAM的某个单元中。
34
6.现要求为8031扩展2片2732作为外部程序存储器,试画出电路图,并指出各芯片的地址范围。
答案: 电路图如下:
各芯片的地址范围:
2732(1):0B800H ~0BFFFH; 2732(2):7800H ~7FFFH。
7.现要求为8031外扩1片2864A,兼作程序存储器和数据存储器,请画出硬件连接图。
答案:
35
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机原理及应用教程第3版习题课后答案(7)在线全文阅读。
相关推荐: