单片机原理和应用习题答案 下载本文

内容发布更新时间 : 2024/6/1 23:41:43星期一 下面是文章的全部内容请认真阅读。

如有帮助欢迎下载支持

单片机原理及应用习题

第一章

1-3:单片机与普通计算机的不同之处在于其将( )( )和( )三部分集成于一块芯片上。 1-8:8051与8751的区别是: A、内部数据存储但也数目的不同 B、内部数据存储器的类型不同 C、内部程序存储器的类型不同 D、内部的寄存器的数目不同

第二章

2-4:在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为( )。 2-6:内部RAM中,位地址为30H的位,该位所在字节的字节地址为( )。 2-7:若A中的内容为63H,那么,P标志位的值为( )。 2-8:判断下列说法是否正确: A、8031的CPU是由RAM和EPROM所组成。

B、区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。 C、在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。 D、PC可以看成使程序存储器的地址指针。

2-9:8031单片机复位后,R4所对应的存储单元的地址为( ),因上电时PSW=( )。这时当前的工作寄存器区是( )组工

作寄存器区。

2-11:判断以下有关PC和DPTR的结论是否正确? A、DPTR是可以访问的,而PC不能访问。

B、它们都是16位的存储器 C、它们都有加1的功能。

D、DPTR可以分为两个8位的寄存器使用,但PC不能。

2-13:使用8031芯片时,需将/EA引脚接( )电平,因为其片内无( )存储器。 2-14:片内RAM低128个单元划分为哪3个主要部分?各部分的主要功能是什么? 2-15:判断下列说法是否正确

A、 程序计数器PC不能为用户编程时直接使用,因为它没有地址。

B、 内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用。

C、 8031共有21个特殊功能寄存器,它们的位都是可以用软件设置的,因此,是可以进行位寻址的。 2-16:PC的值是 A、当前正在执行指令的前一条指令的地址 B、当前正在执行指令的地址 C、当前正在执行指令的下一条指令的地址 D、控制器中指令寄存器的地址

2-17:通过堆栈操作实现子程序调用,首先就要把( )的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保

护的断点送回到( )。

2-19:MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此

其寻址的范围为( )KB。

2-20:当MCS-51单片机运行出错或程序陷入死循环时,如何来摆脱困境? 2-21:判断下列说法是否正确?

A、 PC是1个不可寻址的特殊功能寄存器。 B、 单片机的主频越高,其运算速度越快。

C、 在MCS-51单片机中,1个机器周期等于1us。

D、 特殊功能寄存器SP内装的是栈顶首地址单元的内容。

2-22:如果手中仅有一台示波器,可通过观察哪个引脚的状态,来大致判断MCS-51单片机正在工作?

第三章

3-1:判断下列指令的正误: 1)MOV 28H,@R2 2)DEC DPTR 3)INC DPTR 4)CLR R0 5)CPL R5 6)MOV R0,R1 7)PUSH DPTR 8)MOV F0,C 9)MOV F0,ACC.3 10)MOVX A,@R1 11)MOV C,30H 12)RLC R0 3-2:判断下列说法是否正确。

A、 立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。 B、 指令周期是执行一条指令的时间。

C、 指令中直接给出的操作数称为直接寻址。

3-3:在基址加变址寻址方式中,以( )作变址寄存器,以( )或( )作基址寄存器。 3-7:指令格式是由( )和( )所组成,也可能仅由( )组成。 3-8:假定累加器A中的内容为30H,执行指令 1000H:MOVC A,@A+PC 后,把程序存储器( )单元的内容送入累加器A中。

3-9:在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问( )存储器提供地址,而DPTR是为访问( )存储器

提供地址。

1

如有帮助欢迎下载支持

3-10:在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的( )。 3-11:下列程序段的功能是什么? PUSH A PUSH B POP A POP B

3-12:已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序执行后: POP DPH POP DPL MOV DPTR,#4000H RL A MOV B,A MOVC A,@A+DPTR PUSH A MOV A,B INC A MOVC A,@A+DPTR PUSH A RET ORG 4000H DB 10H,80H,30H,50H,30H,50H 请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( )。 3-14:假定A=83H,(R0)=17H,(17H)=34H,执行以下指令: ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 后,A的内容为( )。

3-15:假定A=55H,R3=0AAH,在执行指令ANL A,R3后,A=( ),R3=( )。 3-16:如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后: POP DPH POP DPL POP SP 则:DPH=( ),DPL=( ),SP=( )

3-17:假定,SP=60H,A=30H,B=70H,执行下列指令: PUSH A PUSH B 后,SP的内容为( ),61H单元的内容为( ),62H单元的内容为( )。

第四章

4-6:试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。 4-7:已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后: POP DPH POP DPL MOV DPTR,#3000H RL A MOV B,A MOVC A,@A+DPTR PUSH A MOV A,B INC A MOVC A,@A+DPTR PUSH A RET ORG 3000H DB 10H,80H,30H,80H,50H,80H 请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( )。

4-8:计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为 12MHz)。 MOV R3,#15H ;1个机器周期 DL1:MOV R4,#255 ;1个机器周期 DL2:MOV P1,R3 ;2个机器周期 DJNZ R4,DL2 ;2个机器周期 DJNZ R3,DL1 ;2个机器周期 RET ;2个机器周期

2

如有帮助欢迎下载支持

4-9:假定A=83H,(R0)=17H,(17H)=34H,执行以下指令: ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 后,A的内容为( )。

4-10:试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未

找到,则将51H单元置为“00H”。

4-11:试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。并将查找到的结果存入41H单元。 4-12:若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行指令如下: 2000H LCALL LABEL 后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL 直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?

第五章

5-4:外部中断1所对应的中断入口地址为( )H。 5-5:下列说法错误的是:

A、 各中断发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中。 B、 各中断发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中。 C、 各中断发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中。

D、 各中断发出的中断请求信号,都会标记在MCS-51系统的TCON与SCON寄存器中。 5-7:中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是:

A、 当前正在执行高优先级中断处理 B、 当前正在执行RETI指令

C、 当前指令是DIV指令,且正处于取指令的机器周期 D、 当前指令是MOV A,R3

5-8:8031单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把( )的内容压入堆栈,以进行断点

保护,然后把长调用指令的16位地址送( ),使程序执行转向( ) 中的中断地址区。 5-9:编写出外部中断1为跳沿触发的中断初始化程序。 5-10:在MCS-51中,需要外加电路实现中断撤除的是: A、定时中断 B、脉冲方式的外部中断 C、外部串行中断 D、电平方式的外部中断 5-12:下列说法正确的是:

A、 同一级别的中断请求按时间的先后顺序响应。

B、 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。

C、 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。 D、 同级中断不能嵌套。

5-13:中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?

答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断

第六章 MCS-51的定时/计数器

1. 如果采用晶振的频率为3MHz,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少?

2. 定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? 3. 定时/计数器用作定时器时,对外界计数频率有何限制?

4.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。

解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。编写程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#06H ;定时器/计数器T0为计数方式2 MOV TL0,#156 ;计数100个脉冲的初值赋值 MOV TH0,#156 SETB GATE ;打开计数门 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断

3