“单片机原理与接口技术”习题答案(1)(4)

2019-08-31 00:20

SJMP $ END 6. 试编写程序,找出片内RAM 30H~5FH单元中无符号数的最大数,并将结果存入60H单元。 答: ORG 0000H MOV R0, #30H MOV R7, #2FH MOV A, @R0 AGAIN: INC R0 MOV B, A CLR C

SUBB A, @R0 JNC L1

MOV A, @R0 AJMP L2 L1: MOV A, B L2: DJNZ R7, AGAIN MOV 60H, A SJMP $ END

7. 从内部RAM 30H单元开始存放了20个数,找出其中的最小数。 答: ORG 0000H MOV R0, #30H MOV R7, #19H MOV A, @R0 AGAIN: INC R0 MOV B,A CLR C

SUBB A, @R0 JC L1

MOV A, @R0 AJMP L2 L1: MOV A, B L2: DJNZ R7, AGAIN MOV 2FH, A SJMP $ END

8. 试编写程序,查找在内部RAM的31H~50H单元中是否有41H这一数据。若有,则将51H

单元置为-1;若未找到,则将51H单元置为0。 答: ORG 0000H MOV R0, #31H MOV R7, #20H MOV A, #41H MOV 51H, #00H AGAIN: MOV B,A

16

CLR C

SUBB A, @R0 JZ L1 INC R0 MOV A, B

DJNZ R7, AGAIN AJMP EXIT L1: MOV 51H, #-1 EXIT: SJMP $ END

9. 编写程序,将片内RAM 40H~6FH单元中的无符号数按照从小到大的次序排列,结果仍然

放在原存储空间。

答: N EQU 30H TAB EQU 40H ORG 0000H SORT: MOV R4, #N-1 LOOP1: MOV A, R4 MOV R3, A MOV R0, #TAB LOOP2: MOV A, @R0 MOV B, A INC R0 CLR C

SUBB A, @R0 JC UNEXCH MOV A, B XCH A, @R0 DEC R0

MOV @R0, A UNEXCH: DJNZ R3, LOOP2 DJNZ R4, LOOP1 SJMP $ END

10.试编写程序,统计片内RAM的20H~5FH单元中出现55H的次数,并将统计结果送60H

单元。

答: TAB EQU 20H ORG 0000H START: MOV 60H, #0 MOV R0, #TAB LOOP2: MOV A, #55H CLR C

SUBB A, @R0 JNZ NEXT INC 60H

17

NEXT: INC R0

CJNE R0, #60H, LOOP2 SJMP $ END

11.编写程序,将片内RAM 30H~7FH单元的内容全部清零。 答: TAB EQU 30H ORG 0000H START: MOV A, #0 MOV R0, #TAB LOOP: MOV @R0, A INC R0

CJNE R0, #80H, LOOP SJMP $ END

12.编写程序,将片外数据存储区中3000H~30FFH单元全部清零。 答: ORG 0000H START: MOV A, #0 MOV R7, #0

MOV DPTR, #3000H LOOP: MOVX @DPTR, A INC DPTR DJNZ R7, LOOP SJMP $ END

13.从内部RAM DATA1单元开始,存放有20H个数据,试编写程序,将这20H个数据逐一移

到片外RAM DATA2单元开始的存储空间。 答: DATA1 EQU 30H

DATA2 EQU 1000H

ORG 0000H

START: MOV R0, #DATA1 MOV DPTR, #DATA2 MOV R7, #20H LOOP: MOV A, @R0 MOVX @DPTR, A INC R0 INC DPTR

DJNZ R7, LOOP SJMP $ END

14. 将外部RAM 8000H开始的20个字节数据传送到外部RAM 8100H开始的地址单元中去。 答: DATA1 EQU 8000H

DATA2 EQU 00H

ORG 0000H

18

START: MOV DPTR, #DATA1 MOV R0, #DATA2 MOV R7, #20 LOOP: MOVX A, @DPTR MOV P2, #81H MOVX @R0, A INC R0 INC DPTR

DJNZ R7, LOOP SJMP $ END

15. 编程统计累加器A中“1”的个数。

答:以下程序将A中“1”的个数放在30H单元。

DAT EQU 37H

ORG 0000H START: PUSH ACC MOV A, #DAT MOV 30H, #0 NEXT: JZ EXIT CLR C RLC A JNC L1 INC 30H L1: AJMP NEXT POP ACC EXIT: SJMP $ END

16. 从内部RAM 30H单元开始,存放有50个数据。试编写程序,将其中的正数、负数分别

送外部RAM 5000H和5500H开始的单元,并分别记下正数和负数的个数送内部RAM 70H和71H单元。

答: BUF EQU 30H

N EQU 50

ORG 0000H START: MOV R0, #BUF MOV R7, #N MOV 70H, #0 MOV 71H, #0 MOV DPTR, #5000H MOV R1, #00H NEXT: MOV A, @R0

JNB ACC.7, POSIT INC 71H

MOV P2, #55H MOVX @R1, A

19

INC R1 AJMP L1 POSIT: INC 70H

MOVX @DPTR, A INC DPTR L1: INC R0

DJNZ R7, NEXT SJMP $ END

17. 利用调子程序的方法,进行两个无符号数相加。请编主程序及子程序。 答: ORG 0000H

START: MOV R6, #56H ;主程序 MOV R7, #7FH ACALL ADD_SUB SJMP $

ADD_SUB: MOV A, R6 ;子程序 ADD A, R7 RET END

18. 计算下面子程序执行的时间(晶振频率为12MHz)。

DL: MOV R3, #15 ;1个机器周期 DL1: MOV R4, #255 ;1个机器周期 DL2: MOV P1, R3 ;2个机器周期

DJNZ R4, DL2 ;2个机器周期 DJNZ R3, DL1 ;2个机器周期 RET ;2个机器周期

答:1个机器周期=1us

延时时间t=1+15×(1+255×(2+2)+2)+2=15348us

19. 编写程序,将30H~34H单元中压缩的BCD码数(每个字节存放两个BCD码数)转换为

ASCII码数,并将结果存放在片内RAM 60H~69H单元。 答: ORG 0000H START: MOV R0, #30H MOV R1, #60H MOV R7, #2 AGAIN: MOV A, @R0 ANL A, #0F0H SWAP A

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

20


“单片机原理与接口技术”习题答案(1)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:律师接待委托人谈话记录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: