单片机习题 联系客服

发布时间 : 星期三 文章单片机习题更新完毕开始阅读5dd24aef0975f46527d3e14e

11.单片机系统中的定时和计数功能有何区别?分别适用于什么场合?

答: “定时”功能是对片内稳频脉冲(是晶振频率的1/12)的计数,从计数开始到计满溢出为止,可以由计数值×稳频脉冲周期值来得到一个准确的时间值;而“计数”功能则是对单片机引脚上的外来随机脉冲进行计数,一般情况下,难以折算为精确时间。

定时功能适用于需要准确计量一段时间的定时场合;而计数功能适用于对外部事件的计数。 12.单片机用于外界过程控制中,为何要进行A/D、D/A转换?

答: 微型计算机只能处理数字形式的信息,但是在实际工程中大量遇到的是连续变化的物理量。例如温度、压力、流量、光通量、位移量以及连续变化的电压、电流等。对于非电信号的物理量,必须先由传感器进行检测,并且转换为电信号,然后经过放大器放大为0~5V电平的模拟量。所以必须加接模拟通道接口,以实现模拟量和数字量之间的转换。

A/D(模/数)转换就是把输入的模拟量变为数字量,供微型计算机处理;而D/A(数/模)转换就是将微型计算机处理后的数字量转换为模拟量输出。

五、阅读并分析程序(每小题8分,共16分)

1.以下程序段执行后,(A)= 6EH ,(30H)= EEH 。

MOV 30H,#0A4H MOV A,#0D6H MOV R0,#30H MOV R2,#5EH ANL A,R2 ORL A,@R0 SWAP A CPL A

XRL A,#0FEH ORL 30H,A

2.下列程序执行后,结果如何?

MOV R0, #7FH MOV 7EH,#0 MOV 7FH,#40H DEC @R0 DEC R0 DEC @R0

答: (R0)=_ 7E _ H, (7EH)=_ FF__ H, (7FH)=__3F__ H。

3.以下程序段执行后,(40H)= 5EH ,(41H)= 69H 。

CLR C

MOV A,# 56H SUBB A,#0F8H MOV 40H,A MOV A,#78H SUBB A,#0EH

8

MOV 41H,A

4.设(R0)=7EH,(DPTR)=10FEH,内部RAM 7EH和7FH 2单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行结果。

INC @R0; (7EH)=00H INC R0; (R0)=7FH INC @R0; (7FH)=39H INC DPTR; (DPTR)=10FFH INC DPTR; (DPTR)=1100H

INC DPTR; (DPTR)=1101H

5.设(R0)=20H,(R1)=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,(26H)=6FH,(27H)=76H,下列程序执行后,结果如何?

CLR C MOV R2,#3H

LOOP: MOV A,@R0

ADDC A,@R1 MOV @R0, A INC R0 INC R1 DJNZ R2, LOOP

JNC NEXT

MOV @R0, #01H SJMP $

NEXT:DEC R0

SJMP $

答:(20H)= 20H , (21H)= 00H , (22H)= 17H ,

(Cy)= 1 , (A)= 17H , (R0)= 23H , (R1)= 28H

6.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A、R0和内部RAM中50H,51H单元的内容为何值?

MOV A,59H MOV R0,A MOV A,#00H MOV @R0,A MOV A,#25H MOV 51H,A MOV 52H,#70H

答:(A)= 25H 、(R0)= 50H 、(50H)= 00H 、(51H)= 25H

7.已知(A)=7AH,(R0)=30H,内容RAM 30H单元的内容为A5H,请写出下列程序段执行后累加器A的内容。

ANL A,#17H ORL 30H,A

9

XRL A,@R0 CPL A

答:(A)= 5AH

8.阅读分析下列程序,说明它完成的功能。

MOV A,30H ANL A,#3CH RL A RL A

MOV 33H,A ANL 31H,#3 ANL 32H,#0C0H MOV A,31H ORL A,32H RL A RL A

ORL 33H,A

答:将内部RAM 30H的中间4位,31H的低2位,32H的高2位按序拼成一个新字节,存入33H单元。

9.请填写程序执行结果。已知执行前有(A)=02H、(SP)=40H、(41H)=FFH、(42H)=FFH,程序如下:

POP DPH POP DPL

MOV DPTR,#3000H RL A

MOV B,A

MOVC A,@A+DPTR PUSH ACC MOV A,B INC A

MOVC A,@A十DPTR PUSH ACC RET

ORG 3000H

DB 10H,80H,30H,80H,50H,80H

答:(A)= 80H 、(SP)= 40H 、(41H)= 50H 、(42H)= 80H 、(PC)= 8050H 。

10.阅读下列程序段并回答问题:

CLR C

MOV A,#9AH SUBB A,60H ADD A,61H DA A

MOV 62H,A

① 请问该程序执行何种操作?

② 已知初值:(60H)=23H,(61H)=61H,请问运行后:(62H)= ?

10

答:① 程序执行的操作是单字节BCD码减法运算,是将(61H)–(60H) →(62H)。 ② (62H)= 38H 。

六、请写出源程序并加以注释(8分)

1.试编写一个拼字程序(例如将05H和06H拼为56H),设原始数据放在片外数据区的7001H单元和7002H单元中,按顺序拼装后的单字节数放入7002H。 解: 程序段如下:

MOV DPTR,#7001H

MOVX A,@DPTR SWAP A MOV B,A INC DPTR

MOVX A,@DPTR ORL A,B

MOVX @DPTR,A

2.将40H开始存放的10个字节的数与50H开始存放的10个字节的数相减(假设被减数大于减数),编制该程序。设被减数指针为R0,减数指针为R1,差数放回被减数单元,R5存放字节个数。

解: 程序段如下:

SUB: MOV R0,#40H

MOV R1,#50H MOV R5,#10 CLR C

SUB1:MOV A,@R0 SUBB A,@R1 MOV @R0,A INC R0 INC R1

DJNZ R5,SUB1 RET

3.编写求无符号数最小值的子程序。

说明:20H和21H中存放数据块起始地址的低位和高位,22H中存放数据块长度;求得的最小值存入30单元中。

解: 程序段如下: CMP: MOV DPH,21H

MOV DPL,20H MOV 30H,#0FFH LP:MOVX A,@DPTR

CJNE A,30H,CHK SJMP LP1

CHK: JNC LP1

MOV 30H,A

LP1: INC DPTR

DJNZ 22H,LP

11