单片机习题参考答案 下载本文

DJNZ R7,LOOP

SJMP $

7.设有两个长度为15的数组,分别存放在0200H和0500H为首址的存储区域中,试编写程序求其对应项之和,结果存放在以0600H为首址的存储区域中。

MOV R7,#15

MOV R0,#00H CLR C

LOOP:

MOV P2,,#02H MOVX A,@R0 MOV B,A MOV P2,#05H MOVX A,@R0 ADDC A,B

MOV P2,#06H MOVX @R0,A INC R0

DJNZ R7,LOOP SJMP $

8.分别用数据传送指令和位操作指令编写程序,将内RAM位寻址区的128位单元全部清零。

MOV R0,#20H

MOV R1,#0FH MOV A,#00H

LOOP: MOV @R0,A

INC R0

DJNZ R1,LOOP SJMP $

9.编程求内部RAM中40H~49H10个单元中的内容的平均值,并放人4AH单元中。

START:MOV R3,#0

MOV R4,#0

MOV MOV

LOOP: MOV

ADD

MOV

R2,#10 R0,#40H A,R3 A,@R0 R3,A

CLR A

ADDC A,R4

MOV R4,A INC R0

DJNZ R2,LOOP

;调用单字节无符号除法程序即可

13

10.设内部RAM中30H和31H单元中有2个带符号数,求出其中的大数存放在32单元中。

CLR C

MOV A,30H SUBB A,31H JZ XMAX

JB ACC.7,NEG JB SJMP

NEG: JB YMAX: MOV

SJMP

XMAX: MOV RMAX: MOV

OV,YMAX XMAX OV,XMAX A,31H RMAX A,30H 32H,A

RET

11.请用位操作指令编写下面逻辑表达式值的程序。 (1) P1.7=ACC.0∧ (B.0∨P2.1)∨P3.2 MOV C, B.0 ORL C, P2.1

ANL C, ACC.0 ORL C, P3.2

MOV P1.7,C

(2) PSW.5=P1.3∧ACC.2∨B.5∧P1.1 (3) P2.3=P1.5∧B.4∨ACC.7∧P1.0

12.使用位操作指令实现下列逻辑操作,但不得改变未涉及位的内容。 (1) 使ACC.0置“1” SETB ACC.0

(2) 清除累加器高4位 CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3) 清除ACC.3,ACC.5,ACC.7位。

CLR ACC.7 CLR ACC.5 CLR ACC.3

13.试编程把片外RAM从2040H开始的连续50个单元的内容按降序排列,结果存入3000H开始的存储区中。

START;MOV R0,#50

MOV DPTR,#2040H MOV R1,#20H

A,@ DPTR

MOV @ R1,A INC DPTR

LOOP: MOVX

INC R1

DJNZ R0,LOOP

14

ACALL SORT

MOV DPTR,#3000H MOV R1,#20H

LOOP: MOV A ,@ R1 MOVX @ DPTR, A

INC DPTR INC R1

DJNZ R0,LOOP SJMP $

14.试编一查表程序,从首地址为2000H,长度为100的数据表中,查找出A的ASCII码,将其地址存入2010H和2011H单元中。

MOV R7,#100 MOV B,’A’

MOV DPTR,#2000H LOOP: MOVX A,@DPTR CJNE A,B,NFIND SJMP FIND RET

NFIND: INC DPTR DJNZ R7,LOOP FIND: MOV 2010H,DPL MOV 2011H,DPH

RET

15.设计一个多字节无符号数加法子程序和减法子程序。

N字节无符号数加法程序 ([R0]+[R1])=([R0]) ;入口: R0,R1,R7 ;占用资源: ACC,B

;出口: R0,CF NADDN: MOV B,R0 CLR C

NADN1: MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1

DJNZ R7,NADN1 MOV R0,B RET

;N字节无符号数减法程序 ([R0]-[R1])=([R0]) ;入口: R0,R1,R7 ;占用资源: ACC,B ;出口: R0,CF NSUBN: MOV B,R0 MOV R7,N CLR C

15

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

DJNZ R7,NSUBN1 MOV R0,B

RET 16.在128分支程序中是用AJMP指令实现分支转移的。若用长转移指令LJMP来代替AJMP指令,以便子程序入口地址可在64KB范围内安排。试修改原来的程序,使之能适应新的要求。?

修改后的程序最多能有256个分支

MOV DPTR,#JPTAB

MOV A,R1 MOV B,#03 MUL AB PUSH A MOV A,B ADD A,DPH

POP AJMP @A+DPTR

JPTAB: LJMP PROGRAM0

LJMP PROGRAM1

LJMP PROGRAMN

习题五

一、选择题

(1) MCS-51单片机中断源和可设置的中断优先等级分别为( B )。 A.中断源为2个,中断优先等级为2个 B.中断源为5个,中断优先等级为2个 C.中断源为4个,中断优先等级为1个

D.中断源为3个,中断优先等级为1个

(2) MCS-51单片机定时/计数器的方式0和方式1分别是( A )位定时/计数器。 A.13和16 B.16和13 C.8和16 D.16和8

(3) MCS-51单片机定时/计数器的最大定时时间是( B )(设时钟频率为6MHz)。 A.65.536ms B.131.072ms C.8.192ms D.16.384ms (4) MCS-51单片机定时/计数器方式l时,其最大的计数个数是( A )。 A.65536 D.65635 C.8192 D.256 (5) T1中断源的中断矢量地址是( D )。

A.0003H B.000BH C.0013H D.001BH (6) IE0是( C )的中断标志。

A.T0 B.T1 C.INT0 D.INT1

16