单片机编程练*题(含部分答案)

发布于:2021-09-25 10:31:42

编程练*题

1. 编一程序将片内存储单元 20H~3FH 单元的内容复制到 40H~5FH 单元。

MOV R0,#20H

MOV R1,#40H

MOV R7,#32

LOOP: MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R7,LOOP

SJMP $

2. 编一程序将片内存储器 40H 单元的内容与 41H 单元的内容进行比较,若相等

将 50H 置 00H,若不等将 50H 置 0FFH。

3. 在片内数据存储单元 30H~4FH 中存有 32 个同学的数学成绩,编一程序计算

有多少同学成绩不及格(成绩低于 60 为不及格)。若 20H 作为计数存储单元

MOV R0,#30H

MOV 20H,#0

MOV R0,#30H

MOV R7,#32

MOV 20H,#0

LOOP: MOV A,@R0

MOV R7,#32

SUBB A,#60

LOOP: CJNE @R0,#60,NE

JNC GE

NE: JNC GE

INC 20H

INC 20H

GE: INC R0

GE: INC R0

DJNZ R7,LOOP

DJNZ R7,LOOP

SJMP $

SJMP $

4. 内部 RAM 中分别以地址 20H 和 30H 开始的连续 16 个单元,按顺序依次将两 组中相应单元的内容相加(不考虑溢出),并将和存入外部 RAM 2000H 开始 的单元中。 MOV R0,#20H MOV R1,#30H MOV DPTR,#2000H MOV R7,#16
LOPP: MOV A,@R0 ADD A,@R1 MOVX @DPTR,A INC R0 INC R1 INC DPTR DJNZ R7,LOOP SJMP $
5. 设内部 RAM 20H 单元为数据块的起始地址,数据块长度为 10H,数据为 8 位 无符号数,试编程找出数据块中的最小值,并将其存入 40H 单元。

MOV R0,#20H MOV 40H,#255 MOV R7,#10H LOOP: MOV A,@R0 SUBB A,40H JNC NJW MOV 40H,@R0 NCW: INC R0 DJNZ R7,LOOP SJMP $ 6. 比较两个 ASCII 码字符串是否相等。字符串长度在内部 RAM 2FH 单元,两字 符串的首地址分别为 30H、50H。如果两个字符串相等,置 CY=1,否则,置 CY=0。 MOV R0,#30H MOV R1,#50H LOOP: MOV 20H,@R0 CJNE @R1,20H,NE INC R0 INC R1 DJNZ 2FH,LOOP SETB C SJMP $ NE: CLR C SJMP $ 7. 内部 RAM 30H 和 31H 单元中各存放一个“0-9”数字的 ASCII 码,将其转换为 压缩 BCD 码(30H 的 BCD 码在高 4 位),结果存入外部 RAM 2300H 单元中。 8. 将内部 RAM 40H 为起始地址的 32 个连续单元中的十六进制数转换成 ASCⅡ码 存入外部 RAM 3000H 开始的存储单元中。 0~9 +30H A~F +37H 9. 设时钟频率为 6MHz 或 12MHz,分别编写一个延时 1ms、5ms、20ms、100ms 子程序。 10. 图示电路,若 fosc=12MHz,数码管为共阳极,分别用延时法和定时器两种 方法编程实现数码管从 0~9 的交替轮流显示,时间间隔为 1 秒。(数字 0~9 共阳极段选码为 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H。)
定时器中断法:

ORG 0000H LJMP MAIN ORG OOOBH MOV TH0,#3CH ;定时 50ms MOV TL0,#0B0H DJNZ R7,NEXT MOV R7,#20 ;黄色块程序每 1s 执行一次 MOV A,R6 MOVC A,@A+DPTR MOV P1,A INC R6 CJNE R6,#10,NEXT MOV R6,#0 NEXT:RETI MAIN:MOV TMOD,#01H MOV TH0,#3CH ;定时 50ms MOV TL0,#0B0H MOV IE,#82H MOV R7,#20 MOV R6,#0 ;显示内容初值为 0 MOV DPTR,#TAB SETB TR0 SJMP $ TAB:DB *********


相关推荐

最新更新

猜你喜欢