《单片机原理及应用》课后习题 答案 下载本文

换成bcd码,并压缩放于片内30H,31H两个单元,其中31H中放bcd码的十位/个位,30H中放bcd码的千位/百位。 MOV A, #00H ;这一句不是必须 MOV R0, #20H MOV R1, #21H

XCHD A, @R0 ;A←(20H)

SWAP A ;A高4位←(20H)的BCD码数字 XCHD A, @R1 ;A低4位←(21H)的BCD码数字 MOV 30H,A

MOV A, #00H ;这一句不是必须 MOV R0, #22H MOV R1, #23H

XCHD A, @R0 ;A←(22H)

SWAP A ;A高4位←(22H)的BCD码数字 XCHD A, @R1 ;A低4位←(21H)的BCD码数字 MOV 31H,A

3-7:片内RAM的30H~32H单元中连续存放了6个压缩BCD码,编制程序将它们转换为ASCII码,存入片外3000H开始的连续存储区中

MOV R0,#30H MOV DPTR,3000H

LOOP: MOV A,@R0 SWAP A ANL A,#0FH

ADD A,#30H ;30H= '0' MOVX @DPTR,A INC DPTR

MOV A,@R0 ANL A,#0FH ADD A,#30H

MOVX @DPTR,A INC DPTR

INC R0 CJNE R0,#33H, LOOP

3-9: 从外部RAM 2000H 单元开始存放着100个无符号数,编写程序统计出:(1)最大数;(2)最小数;(6)大于50,小于50,等于50的个数。 (1)

MOV DPTR, #2000H

MOV 30H, #0 ;先用0当做最大数 (求最小数时,用255) MOV R2, #100

LOOP: MOVX A, @DPTR CJNE A, 20H, TTT ;(A)-(20H)

5

TTT: JNC NEXT ;不够减转移 (求最小数时,用JNC NEXT) MOV 30H, A ;够减,这个数是大数,给(20H) NEXT: INC DPTR DJNZ R2, LOOP SJMP $ END (6)

ORG 0600H

MOV DPTR, #2000H MOV R2, #100 ;总数

MOV R3, #0 ; 小于50的数的个数 MOV R4, #0 ; 等于50的数的个数 MOV R5, #0 ; 大于50的数的个数 LOOP:

MOVX A, @DPTR CLR C

SUBB A, #50 JZ EQU_50 JNC BIG

INC R3 ;小于50的个数 JMP NEXT EQU_50:

INC R4 JMP NEXT BIG:

INC R5 NEXT:

INC DPTR

DJNZ R2, LOOP

MOV 30H,R3 ; 小于50的数的个数 MOV 31H,R4 ; 等于50的数的个数 MOV 32H,R5 ; 大于50的数的个数

SJMP $

3-10 MCS-51片外RAM区1000H~1007H单元中存有8个无符号数,编程求其平均值,将结果存于1008H中。%先加,加的结果可能超出8位,所以存储结果于(30H)和(40H)单元中。

MOV DPTR, #1000H MOV R7, #08H

MOV 30H, #00H MOV 40H, #00H SS1:MOVX A, @DPTR

6

ADD A, 30H MOV 30H, A CLR A ADDC A, 40H MOV 40H, A INC DPTR DJNZ R7, SS1 MOV R7, #03H ;移位3次,等于除以8 SS2:CLR C MOV A, 40H RRC A MOV 40H, A MOV A, 30H RRC A MOV 30H, A DJNZ R7, SS2 MOVX @DPTR, A

3-11下面是以数学公式,X值存于片内20H,Y值存于21H单元中。Y=X2(X>0) 0(X=0) 2X(X<0)

MAIN:MOV A,20H

JZ SUL

JB ACC.7,NEG MOV B,A MUL AB SJMP SUL NEG:CLR C

RLC A

SUL:MOV 21H ,A

3-12试编写程序,将外部 RAM 2000H~20FFH数据块,传送到3000H~30FFH区域。

MOV R6,#0FFH MOV R2,#00H

MOV R3,#20H;暂存2000H地址 MOV R4,#00H

MOV R5,#30H;暂存3000H地址 NEXT:MOV DPL,R2 MOV DPH,R3 MOVX A,@DPTR MOV DPL,R4 MOV DPH,R5 MOVX @DPTR,A INC R2 INC R4

7

DJNZ R6,NEXT

3-13:振荡频率:6MHz(机器周期:2us),

(1)1ms延时 ORG 2000H

MOV R7,#125 LOP1: NOP NOP

DJNZ R7,LOP1 RET (2) 100ms延时 ORG 2000H

MOV R6,#100 LOP2: MOV R7,#125 LOP1: NOP NOP DJNZ R7,LOP1 DJNZ R6,LOP2 RET (3)1s延时 ORG 2000H

MOV R5,#10 LOP3: MOV R6,#100 LOP2: MOV R7,#125 LOP1: NOP NOP

DJNZ R7,LOP1 DJNZ R6,LOP2 DJNZ R5,LOP3 RET

3-14:片内RAM30H有一数(0~15),查表求平方值,存入31H中。ORG 1000H

MAIN: MOV DPTR,#TAB

MOV 30H, #13 ;NUMB=0~15 MOV A, 30H MOVC A,@A+DPTR MOV 31H,A SJMP $

TAB: DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,255

第4章

8