51单片机常见汇编程序实验代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 将片外8000H-80FFH单元写入数据AB (1)
2. 将片内RAM20H单元中数据在数码管
上显示出来 (1)
3. 将片内ARM30H-40H单元清零 (2)
4. 将六位数显示在数码管上 (2)
5. 8255并口芯片的应用:交通灯控制系统
的设计 (3)
6. 将交通灯点亮 (3)
7. AD转换实验 (4)
8. DA转换实验 (5)
9. 定时器的应用 (5)
10. 开关控制LED的亮灭及速度 (6)
11. 计数器实验 (6)
12. 串并转换实验 (7)
13. 直流电机速度检测 (7)
14. 8255PB外接8个开关,编程将开关状
态显示在数码管上(串并转换动态扫描方式) (8)
15. P3.4接开关K,编程将开关拨动次数,
通过串并转换的方式进行显示 (9)
16. 比较片内RAM30H、31H两个单元值
的大小,将较大的数显示在数码管上· 10 17. 单片机P1口接8个开关,编程将开关
状态显示在数码管上(串并转换动态扫描
方式) (10)
18. 将片内50H单元的值显示在数码管上11
19. 开关K1接P1.0,K2接P1.1,编程实
现当按下K1时在数码管上显示50H单元
的值,按下K2在数码管上显示51H单元
的值 (12)
1. 将片外8000H-80FFH单元写入数据AB
ORG 0000H ;程序从0000H开始执行
AJMP MAIN ;跳转到主程序
ORG 0030H ;以免覆盖中断地址
MAIN: MOV SP,#60H; 避免堆栈和工作寄存
器区冲突
MOV DPTR,#8000H
MOV R0,#0
LOOP: MOV A,#0ABH
MOVX @DPTR,A
INC DPTR
INC R0
CJNE R0,#0,LOOP ; 判断
AJMP $; 等待
END ;调试-视图-M存储器(输入地址X:8000H)
2. 将片内RAM20H单元中数据在数码管上显示
出来
ORG 0000H ;程序从0000H开始执行
AJMP MAIN ;跳转到主程序
ORG 0030H ;以免覆盖中断地址
MAIN: MOV SP,#60H ;避免堆栈和工作寄存器区冲突
MOV DPTR,#0E100H ;指向命令口地址
MOV A,#03H ;PA、PB口输出
MOVX @DPTR,A ;所有并口显示程序先进行8155初始化
MOV 20H,#34H
MOV A,20H
ACALL CHAI
LOOP: MOV R0,#10H ;第一个显示数的地址送R0
MOV R1,#2 ;显示2个数
MOV R2,#1 ;从倒数第一个数码管开始显示
ACALL DISPLAY
LJMP LOOP ;判断
CHAI: MOV B,#10H
DIV AB
MOV 10H,B
MOV 11H,A
RET
DISPLAY: MOV A,@R0
MOV 0FH,#8
ACALL P164
ACALL PBIT
ACALL DELAY
MOV A,#0
MOVX @DPTR,A
INC R0
DJNZ R1,DISPLAY
RET
P164: MOV DPTR,#TAB
MOVC A,@A+DPTR
P164_1: RRC A
MOV R3,A
MOV ACC.0,C
ANL A,#0FDH
MOV DPTR,#0E102H
MOVX @DPTR,A
ORL A,#0FEH
MOVX @DPTR,A
MOV A,R3
DJNZ 0FH,P164_1
MOV 0FH,#8
RET
PBIT: MOV DPTR,#0E101H
MOV A,R2
MOVX @DPTR,A
RL A
MOV R2,A
RET
DELAY: MOV R6,#4
DEL: MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL
RET
TAB: DB
0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H
DB
0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH
END
3. 将片内ARM30H-40H单元清零
ORG 0000H ;程序从0000H开始执行
AJMP MAIN ;跳转到主程序
ORG 0030H ;以免覆盖中断地址MAIN: MOV SP,#60H ;避免堆栈和工作寄存器区冲突
MOV R0,#30H
MOV A,#0
LOOP: MOV @R0,A
INC R0
CJNE R0,#41H,LOOP ;判断
AJMP $ ;等待
END ;地址D:30H
4. 将六位数显示在数码管上
ORG 0000H ;程序从0000H开始执行
AJMP MAIN ;跳转到主程序
ORG 0030H ;以免覆盖中断地址
MAIN: MOV SP,#60H ;避免堆栈和工作寄存器区冲突
MOV DPTR,#0E100H ;指向命令口地址
MOV A,#03H ;PA、PB口输出
MOVX @DPTR,A ;所有并口显示程序先进行8155初始化
LOOP: MOV R0,#10H ;第一个显示数的地址送R0
MOV 10H,#0H
MOV 11H,#3H
MOV 12H,#1H
MOV 13H,#2H
MOV 14H,#1H
MOV 15H,#1H
MOV R1,#6 ;显示6个数
MOV R2,#1 ;从倒数第一个数码管开始显示
ACALL DISPLAY
LJMP LOOP
DISPLAY: MOV A,@R0
MOV 0FH,#8
ACALL P164
ACALL PBIT
ACALL DELAY
MOV A,#0
MOVX @DPTR,A
INC R0
DJNZ R1,DISPLAY
RET
P164: MOV DPTR,#TAB
MOVC A,@A+DPTR
P164_1: RRC A
MOV R3,A
MOV ACC.0,C