51单片机常见汇编程序实验代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档