4指出下列每条指令的寻址方式和功能。 ①MOV A,#50H ②MOV A,50H ③MOV 50H,R3 ④MOVX A,@R0 ⑤MOV C,50H ⑥MOVX A,@DPTR
5 写出下列指令的机器码,并指出执行下列程序段后累加器A的内容是什么? ① MOV A,#20H ② MOV A,#F1H
MOV R0,#30H MOV 30H,#8AH MOV @R0,A MOV R0,30H MOV 40H,R0 ADD A,#20H XCH A,R0 ADDC A,@R0 ③ CLR C ④ MOV A,#78H
MOV 30H,#6BH MOV 30H,#89H MOV A,#83H ADD A,30H MOV R0,#30H DA A SUBB A,@R0 SWAP A 6 写出能完成下列数据传送的指令: ① R1中内容送到R0
②内部RAM40H单元中的内容送到50H单元中
③内部RAM40H单元中的内容送到外部RAM50H单元中 ④内部RAM40H单元中的内容送到外部RAM2500H单元中 ⑤外部RAM50H单元中的内容送到内部40H单元中
⑥外部RAM2500H单元中的内容送到内部RAM40H单元中 ⑦外部ROM4000H单元中的内容送到外部RAM50H单元中 ⑧外部ROM4000H单元中的内容送到内部RAM2500H单元中 7 试利用堆栈操作实现40H与50H单元中的数据交换。
8试编出把外部RAM2500H单元中的内容和2600H单元中的内容相交换的程序。 9试编程求92H+A4H,并分析对PSW相关标志位的影响。
10已知:A=7BH,R0=40H,(40H)=A5H,PSW=80H,试问如下指令执行后的结果是什么? ① ADDC A,40H ②SUBB A,40H
INC 40H INC A ③ SUBB A,#40H ④SUBB A,R0
DEC R0 DEC 40H
11 试编程求 4A75H+6459H,并把结果的高8位放在内部RAM的41H单元中,把结果的低8
位放在40H单元中。
12试编程求5E5DH-24A3H,并把结果存入内部RAM的50H和51H单元中,50H单元存放差的
低8位。
13 已知被乘数是16位无符号数,低8位在M1单元,高8位在M1+1单元,乘数为8位无符
号数存放在M2单元中,试编程将它们相乘,并把结果存入R2、R3、R4中,其中R2中为高8位,R4中为低8位。 14试写出完成如下操作的程序:
①使内部RAM30H单元中的低4位变“1”,其余位不变 ②使内部RAM30H单元中的高3位变反,其余位不变 ③使内部RAM30H单元中的低2位变“0”,其余位不变 ④使内部RAM30H单元中的所有位变反
⑤使外部2000H单元中的低4位变“1”,其余位不变
15 编程完成以RAM20H为首地址的10个数据传送,目的地址为外部RAM以2000H为首地址
的区域。
16 试编程,当寄存器R0的内容分别满足下列条件时,转移到LOOP处执行程序,条件不满
足时停机。
①R0?15 ②R0<15 ③ R0?10 ④R0>20 17 已知SP=50H,PC=378EH,执行ACALL 3A00H后堆栈指令SP,堆栈内容以及程序计数器PC
中的内容是什么?
第9章 习题与思考题
1 程序设计语言有哪三种?各有什么异同?汇编语言有哪两类语句?各有什么特点? 2 在汇编语言程序设计中,为什么要采用标号来表示地址?标号的构成原则是什么?使用
标号有什么限制?注释段起什么作用?
3 MCS-51汇编语言有哪几条常用伪指令?各起什么作用?
4 试编程将内部RAM单元20H~2FH全部清0,而后将30H~3FH单元全置为1。
5 已知:内部RAM BLOCK单元开始存放有一组带符号数,数的个数已在LONG单元,
请编出可以统计其中正数和负数个数并分别存入NUM和NUM+1单元的程序。 6 设:自变量x为一无符号数,存放在内部RAM的VAX单元,函数y存放在FUNC单元,
请编出如下关系满足的程序:
?x?y??5x?2x?x?5050?x?20 x?207 外部RAM的SOUCE(二进制8位)开始有一数块,该数块以“$”字符结尾。请编一
程序,把它们传送到内部RAM的DIST为始址的区域(“$”字符也要传送)。 8 在上例中,若SOUCE为二进制16位,则程序又该如何编?
9 外部RAM从2000H到2100H有一数据块,请编出将它们传送到3000H到3100H区域
的程序。
10 设有一始址为FIRST+1的数据块,存放在内部RAM单元,数据块长度在FIRST单元
而且不为0,要求统计该数据块中正偶数和负偶数的个数,并将它们分别存放在PAPE单元和NAOE单元,试画出能实现上述要求的程序流程和编出相应程序。
11 请编出一个能在内部RAM的BLOCK为始址的100个无符号数中找出最小值和把它送
入MIN单元的程序。
12 已知在内部RAM中,共有六组无符号四字节被加数和加数分别存放在FIRST和
SECOND为始址的区域(低字节在前,高字节在后)。请编程求和(设和也为四字节),并把和存于SUM开始的区域。
13 在内部RAM中,有一个以BLOCK为始址的数块,块长在LEN单元。请用查表指令编
一程序,先检查它们是否是16进制数,若是16进制数,则把它们变为ASCII码,若不是16进制数,则把它们变为00H。
14 在内部RAM中,BLOCK开始的存储区有10个单字节十进制数(每字节有两个BCD
数),请编程求BCD数之和(和为三位BCD数),并把它们存于SUM和SUM+1单元(低字节在SUM单元)。
15 在上例中,若改为10个双字节十进制数求和(和为4位BCD数),结果仍存于SUM
开始的连续单元(低字节在前)。请修改相应程序。
16 已知MNA和MNB内分别存有两个小于10的整数,请用查表子程序实现C=a2+2ab
+b2,并把和存于MNC和MNC+1单元(MNC中放低字节)。
17 已知外部RAM始址为STR数块中有一回车符CR结束的ASCII码。请编一程序,把
它们的二进制代码放在始址为BDATA的内部RAM存储区。 18 设晶振频率为6MHz,试编一能延时20ms的子程序。
19 已知内部RAM的MA(被减数)和MB(减数)中分别有两个带符号数(16位)。请
编一减法子程序,并把差存入RESULT和RESULT+1(低8为在RESULT单元)中。 20 设8031单片机外部RAM从1000H单元开始存放100个无符号8位二进制数。要求编
一子程序能把它们从大到小依次存入内部RAM从10H开始的存储区,请画出程序流程图。
第10章 习题与思考题
1 I/O数据有哪四种传送方式?各在什么场合下使用?
2 什么叫中断?中断通常可以分为哪几类?计算机采用中断有什么好处? 3 什么叫中断源?8031有几个中断源?各有什么特点?
4 什么叫中断嵌套?什么叫中断系统?中断系统的功能是什么?
5 8031有几个中断源,各中断标志是如何产生的?又如何清“0”的?CPU响应中断时,
对应的中断服务程序入口地址各是什么?
6 中断允许寄存器IE各位定义是什么?请写出允许定时器/计数器T1溢出中断的指令。 7 试写出设定INT0和INT1上中断请求为高优先级和它们中断的程序。此时,若INT0和
INT1引脚上同时有中断请求信号输入,试问MCS-51先响应哪个引脚上中断请求?为
什么?
8 MCS-51响应中断的条件是什么?中断响应的全过程如何?
9 试写出INT0为边沿触发方式的中断初始化程序。
第11章 选题与思考题
1 定时器/计数器的作用是什么?有什么特点?
2 MCS-51单片机有几个定时器/计数器?各是多少位?计数脉冲的来源有哪些? 3 MCS-51单片机的定时器/计数器有哪几种工作方式?各有什么特点?
4 定时器/计数器用作定时器时,定时时间与哪些因素有关?定时器/计数器用作计数时,
对输入信号频率有哪些限制?
5 以定时器/计数器1对外部事件计数。每计数1000各脉冲后,定时器/计数器1转为定时工作方式。定时10ms后,又转为计数方式,如此循环不止。假定单片机晶振频率为6MHz,请使用模式1编程实现。
6 一个定时器的定时时间有限,如何计算某种工作方式下的最大定时时间?如何实现两个定时器的串行定时,以满足较长定时时间的要求?
7 使用一个定时器,如何通过软、硬件结合的方法,实现较长时间的定时? 8 8051定时器的门控信号GATE设置为1时,定时器如何启动?
9 已知8051单片机的fosc=6MHz,请利用T0和P1.0输出矩形波。矩形波高电平宽50μs,
低电平宽度300μs。
10 已知8051单片机的fosc=12MHz,用T1定时,试编程由P1.0和P1.1引脚分别输出周期为2ms和500μs的方波。
第12章 练习与思考题
1 存储器扩展时,8051的ALE线的作用是什么?不执行MOVX指令时,ALE的输出频
率是多少?执行MOVX指令时,ALE信号有何变化? 2 请简述外部程序存储器的操作时序。
3 设有2片1K×4SRAM存储芯片(2114),请设计一个位扩展存储系统(1K×8);要求
用138译码器片选;首地址为1000H。
4 已知有1片2732,2片6116,请设计一个字扩展存储系统,要求用138译码器片选;2732
首地址为0000H;2片6116地址与2732地址重叠。
5 试用线选法画出8031对一片62128的连线图,要求基本地址范围为8000H~BFFFH;并
求出62128的重叠地址;若改用2片6264,地址范围不变,如何画出电路。
6 已知某计算机系统的数据总线16位(D15~D0);若有4片6116,请用2--4译码器,设计出字位全扩展存储系统,要求首地址为2000H。 什么是“哈佛”结构?
第13章 练习与思考题
1. 8051单片机的四个I/O端口的内部结构有什么不同?它们的功能有什么区别? 2. 对8051端口操作时,什么是“读—修改—写”操作?举例说明。 3. 8051和片外RAM/ROM连接时,为什么P0口需要采用片外地址锁存器? 4. 8031片内无ROM,在应用中,P0和P2口能否直接做输入/出口?为什么? 5. P1、P3口做输入口时的条件是什么?如何实现该条件?
6. 在实现并行接口扩展时,接口也需要地址译码,为什么?接口的地址译码对扩展的存储
器地址编码各有什么联系?
7. 用三态输出缓冲器(74LS244)和8D锁存器(74LS373)作简单的输入/出接口有什么
实际意义?用它们如何构成最简单的输入/出接口?并举例说明。
8. 当8255的A口工作于方式2时,能否使B口工作于选通方式的输入/出?为什么? 9. 设计一个电路,使8255与8031连接,使8255的A口做基本输入,与2位BCD拨码
盘连接,并用该数据控制B口的2位LED输出,请画出电路并编写出驱动程序,要求用线选法对8255片选,编码地址为8000H~8003H。
10. 用8155作扩展定时器使用时,若输入的时间常数为奇数,输出波形不对称,为什么? 11. 8155作200分频器,设命令字寄存器端口地址为20H,请编出8155的初始化程序。 12. 设计一个电路,使8155与8031连接,并编写一段程序,将8155中的RAM置成“FFH”,
要求用R0(或R1)寄存器间接寻址,8155用线选法片选,片内RAM编码地址为00H~FFH,并根据所画电路,求出各端口的地址。
13. 独立式键盘和行列式键盘各有什么特点?各使用于什么场合?
14. 用8031、74LS244、74LS373设计一个4×8的行列式键盘电路,用流程图描述键盘键
号的形成过程,并用程序实现。
15. 什么叫显示缓冲区?显示缓冲区一般设置在什么地方?请简述显示缓冲区的应用过程。 16. 简述LCD的驱动原理?什么是占空比?什么是偏压比?它们对驱动LCD有什么意义? 17. 请掌握LCD驱动芯片7211(AM)的使用方法,简述7211和7211AM在使用中有什么
区别?
18. 若用LCD显示图形或曲线,应选择什么显示方式的LCD显示模块?请自查资料,找出
能完成上述功能的显示模块,并举例实现。
第14章 练习与思考题
1. 异步通信和同步通信的主要区别是什么?
2. 什么是半双工、全双工方式?MCS-51单片机属于哪种传送方式? 3. 对于远距离传送,可借助于电话网络,要用MODEM,其作用是什么? 4. 简述MCS-51串行口发送和接受数据的过程。
5. 简述MCS-51串行口在四种工作方式下的字符格式及波特率计算。
6. 请用中断法编出串行口方式1下的发送程序。设单片机主频为6MHz,波特率为1200bps,
发送数据缓冲区在外部RAM,始址为Tblock,数据块长度为30,采用偶校验,放在发送数据第8位(数据块长度不发送)。
7. 请用查询法编出串行口方式1下的接受程序,主频为6MHz,波特率为1200bps,接受
数据缓冲区在外部RAM,始址为RBlock,接受数据区长度为30,采用奇校验(数据块长度不发送)。
8. 请用查询法编出串行口方式2下的接受程序,设波特率为fosc/64,发送数据缓冲区在
外部RAM,始址为Tblock,数据长度为30,采用奇校验,放在发送数据第9位上(数据块长度不发送)。
9. 请用中断法编出串行口方式2下的接受程序,设波特率为fosc/64,接受数据缓冲区在
外部RAM,始址为RBlock,数据长度为30,放在接受数据第9位上(数据块长度不发送)。
第15章 练习与思考题
1. 什么是D/A、A/D转换?它们的作用是什么?各用在什么场合?它们常用的性能指标是
什么?
2. D/A转换器为什么通常不采用权电阻解码网络,而多采用T型电阻网络?简述T型电
阻网络的特点。
3. DAC0832和51单片机连接时有哪三种工作方式?各有什么特色?各适合在什么场合下
使用?
4. 根据图15.3电路,请按如下要求编写程序: