单片机编程练习题(含部分答案)
编程练习题
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
单片机编程100例详解 子程序。
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 *********
感谢您的阅读,祝您生活愉快。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论