内容发布更新时间 : 2024/11/1 7:18:33星期一 下面是文章的全部内容请认真阅读。
思考题与习题
1.8051单片机内包含哪些主要逻辑功能部件?
一个8位的CPU、128B/256B的片内数据存储器、4KB/8KB程序存储器、四个8位并行I/O接口、两个定时/计数器、5个中断源的中断控制系统、一个全双工UART的串行I/O口、片内振荡器和时钟产生电路。
2.8051的EA端有何用途?
当EA为低电平时,CPU只能访问外部的程序存储器。
当EA为高电平时,CPU能访问内部的程序存储器,并当PC的值超过0FFFH时,自动转向访问片外的程序存储器。
3.8051的存储器分为哪几个空间?如何区别不同空间的寻址? 4.简述8051RAM的空间分配。 5.
6.如何简便地判断8051正在工作?
当8051上电正常工作时,ALE引脚输出fosc/6的正脉冲,可用示波器查看及判断。 7.8051如何确定和改变当前工作寄存器组?
CPU通过程序状态字PSW中RS1、RS0来确定和改变当前工作寄存器组。 8. 9. 10.
11.8051单片机由哪些信号需要芯片以第二功能的方式提供?
RXD、TXD、INT0、INT1、T0、T1、WR、RD这些信号分别由P3.0~P3.7以第二功能的方式提供。 12. 13.
14.开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?
开机复位后,CPU使用0组工作寄存器。 它们的地址是00H~07H。
CPU通过程序状态字PSW中RS1、RS0来确定和改变当前工作寄存器组。 15.程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么? PSW中存放着程序执行后的状态信息,供程序查询或判断。 常用的标志有:
进(借)位位:C=0无进(借)位;C=1有进(借)位。 半进(借)位位:AC=0无进(借)位;AC=1有进(借)位。 用户标志位:由用户自己定义。
工作寄存器组选择控制位:选择当前工作寄存器组。 溢出标志位:判断是否溢出。OV=0无溢出;OV=1有溢出。
奇偶标志位:判断结果中有奇数或偶数个“1”P=0则累加器A中有偶数个1;P=1则累加器A中有奇数个1。
16. 17. 18. 19. 思考题与习题 1. 2. 3. 4.
5.要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式。 特殊功能寄存器:直接寻址、位寻址(部分特殊功能寄存器) 片外数据存储器:寄存器间接寻址MOVX(@R1、@R2、@DPTR)
6.在8051片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。 指 令 源操作数的寻址方式 执行结果 MOV A,40H 直接寻址 A=48H MOV R0,A 寄存器寻址 R0=48H MOV P1,#FOH 立即数寻址 P1=48H MOV @R0,30H 直接寻址 (48H)=38H MOV DPTR,#3848H 立即数寻址 DPTR=3848H MOV 40H,38H 直接寻址 (40H)=40H MOV R0,30H 直接寻址 R0=38H MOV P0,R0 寄存器寻址 P0=38H MOV 18H,#30H 立即寻址 (18H)=30H MOV A,@R0 寄存器间接寻址 A=40H MOV P2,P1 寄存器寻址 P2=48H 7.
8.指出下列指令的本质区别? MOV A,DATA
MOV A,#DATA 前一条指令源操作数的寻址方式是直接寻址,把地址为DATA的内存单元中的内容传送到累加器A中。
后一条指令源操作数的寻址方式是立即寻址,把DATA这个立即数赋给寄存器A。 MOV DATA1,DATA2
MOV 74H,#78H 前一条指令源操作数的寻址方式是直接寻址,把地址为DATA2的内存单元中的内容传送到地址为DATA1的内存单元中。
后一条指令源操作数的寻址方式是立即寻址,把78H这个立即数传送到内存单元74H中。 9.设R0的内容为32H,A的内容为48H,片内RAM的32H单元内容为80H,40H单元内容为08H。请指出在执行下列程序段后上述各单元内容的变化。
MOV A,@R0 A=80H;R0=32H;(32H)=80H;(40H)=08H MOV @R0,40H A=80H;R0=32H;(32H)=08H;(40H)=08H MOV 40H,A A=80H;R0=32H;(32H)=80H;(40H)=80H MOV R0,#35H A=80H;R0=35H;(32H)=80H;(40H)=08H 10.
11.如何访问外部RAM单元,可使用哪些寻址方式?
使用MOVX指令,可采用寄存器间接寻址方式(@R0,@R1,@DPTR) 12. 13. 14. 15.
16.设A=83H,R0=17H,(17H)=34H。问执行以下指令后,A=? ANL A,#17H ;A=03H
ORL 17H,A ;A=03H,(17H)=37H XRL A,@R0 ;A=34H CPL A ;A=0CBH
17.使用位操作指令实现下列逻辑操作。要求不得改变未涉及位的内容。 ⑴使ACC.0置1。 SETB ACC.0 ⑵清除累加器高4位。 CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4
⑶清除ACC.3,ACC.4,ACC.5,ACC.6。 CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3
18.编程实现把内部RAM R0~R7的内容传送到20H~27H单元。 MOV 20H,R0 MOV 21H,R1 MOV 22H,R2 MOV 23H,R3 MOV 24H,R4 MOV 25H,R5 MOV 26H,R6 MOV 27H,R7
19.设逻辑表达式为:Y=A(B+C)+D(E+F),试编一程序以软件方法实现上述逻辑功能。
20.试编写程序,将内部RAM的20H,21H,22H三个连续单元的内容依次存入2FH,2EH,2DH中。 MOV 2FH,20H
MOV 2EH,21H MOV 2DH,22H
21.编写程序,进行两个6位数的减法:6F5DH-13B4H,结果的高8位和低8位分别存入内部RAM的31H、30H单元中。 CLR C MOV A,#5DH SUBB A,#B4H MOV 30H,A MOV A,#6FH SUBB A,13H MOV 31H,A
22.编写程序,若累加器A的内容分别满足下列条件时,则程序转至LABEL存储单元。设A中存放的是无符号数。
⑴A≥10 ⑵A>10 ⑶A≤10 CJNE A,#10,L1 LABEL: … SJMP L2 L1: JNC LABEL L2: …
CJNE A,#11,L1 LABEL: … SJMP L2 L1: JNC LABEL L2: …
CJNE A,#10,L1 LABEL: … SJMP L2 L1: JC LABEL L2: 23. 24. 25.
26.试编写程序,查找在内部RAM的20H~50H单元中是否有0AAH这一数据。若有则将51H单元置为01H;若未找到,则将51H置为0。 MOV R0,#31H MOV R1,#20H MOV 51H,#00H L1: CJNE @R1,#0AAH,L2
MOV 51H,#01H SJMP L3 L2: INC R1 DJNZ R0,L1 L3: …
27.试编写程序,查找在内部RAM的20H~50H单元中有多少个00H这一数据,并将查找结果存入51H单元。
MOV R0,#31H MOV R1,#20H MOV R2,#00H L1: CJNE @R1,#00H,L2 INC R2 L2: INC R1 DJNZ R0,L1 L3: MOV 51H,R2
28.外部数据RAM中有一个数据块,存有若干个字符、数字,首地址为SOURCE。要求将该数据块传送到内部RAM以DIST开始的区域,直到遇到字符“$”时结束(“$”也要传送,它的ASCII码为24H)。 MOV DPTR,#SOURCE MOV R1,#DIST L1: MOVX A,@DPTR INC DPTR MOV @R1,A INC R1
CJNE A,#24H,L1 …
29.已知R3,R4中存放一个16位的二进制数,高位在R3中,低位在R4中。试编一程序将其求补,结果存回原处。 方法一 方法二 CLR C CLR C
MOV A,#00H MOV A,R3 SUBB A,R4 CPL A MOV R4,A MOV R3,A MOV A,#00H MOV A,R4 SUBB A,R3 CPL A MOV R3,A ADD A,1 MOV R4,A MOV A,R3 ADDC A,#00H