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

2020-02-21 22:15

MOV R1,#0 EXIT: RETI TAB: DB

0FFH,0FAH,0F5H,0AFH,05FH,0AAH,55H,0H,0FF

H

END

10. 开关控制LED的亮灭及速度 ORG 0000H

;程序从0000H开始

执行

AJMP START ;跳转到主程序 ORG 0030H

;以免覆盖中断地

START: MOV R4,#1 ;立即数传送到累加器 LOOP: CLR P3.3 ;进位标志位清零 LOOP1: JNB P3.5,LOOP ;直接寻址位为0

则转移

JB P3.4,LOOP2 ;直接寻址位为1则转

移 JNB P3.4,$

INC R4 ;寄存器增1 LOOP2: CPL P3.3 ;累加器求反 MOV A,R4 ;寄存器内容传送到累加器A

MOV R5,A

;累加器内容传送到累

加器 ACALL DELAY ;调用延时函数

AJMP LOOP1 ;循环 DELAY: MOV R6,#200 DEL: MOV R7,#229 DJNZ R7,$

DJNZ R6,DEL ;寄存器减1,不为0则转移 DJNZ R5,DELAY RET ;子程序返回 END

11. 计数器实验 ORG 0000 SJMP START ORG 001BH LJMP INT_1 START:

MOV SP,#60H

MOV R5,#20

MOV TMOD,#15H MOV TH1,#4BH MOV TL1,#0FDH MOV TH0,#0 MOV TL0,#0 SETB ET1 SETB EA SETB TR1 SETB TR0

MOV DPTR,#0E100H MOV A,#3 MOVX @DPTR,A LOOP:

MOV R0,#50H; MOV R1,#4 MOV R2,#1 LCALL DISPLAY

SJMP LOOP INT_1: MOV TH1,#4BH MOV TL1,#0FDH DJNZ R5,CON MOV R5,#20 PUSH ACC PUSH B MOV A,TL0 MOV B,#10H DIV AB MOV 50H,B MOV 51H,A MOV A,TH0 MOV B,#10H DIV AB MOV 52H,B MOV 53H,A MOV TH0,#0 MOV TL0,#0

POP B

POP ACC CON: RETI 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

12. 串并转换实验 ORG 0000 SJMP START ORG 0030H START:

MOV SP,#60H MOV R1,#0 MOV DPTR,#TAB

LOOP:

MOV A,#0

CLR C

MOV R4,#24 ACALL S164 MOV A,R1

MOVC A,@A+DPTR MOV R4,#8 ACALL S164 INC R1 MOV R5,#10 ACALL DELAY CJNE R1,#10,EXIT

MOV R1,#0 EXIT: SJMP LOOP S164: RRC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R4,S164

RET

DELAY: MOV R6,#200 DEL: MOV R7,#230 DJNZ R7,$ DJNZ R6,DEL DJNZ R5,DELAY RET

TAB:

DB

0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H, 0FEH,0F6H

END

13. 直流电机速度检测 ORG 0000H AJMP MAIN ORG 001BH AJMP INT_1

ORG 0030H MAIN: MOV SP,#60H MOV TMOD,#15H MOV TH1,#4BH MOV TL1,#0FDH MOV R0,#20 MOV TH0,#0 MOV TL0,#0 SETB ET1

SETB EA

SETB TR0 SETB TR1

MOV R2,#00H

UP: MOV A,R2

MOV DPTR,#0A000H //注意片选接YC2,非YC3

MOVX @DPTR,A MOV R5,#1

ACALL DELAY ;100ms INC R2

CJNE R2,#0FFH,UP

DOWN:MOV A,R2

MOV DPTR,#0A000H MOVX @DPTR,A MOV R5,#1 ACALL DELAY ;100ms

DEC R2

CJNE R2,#00H,DOWN AJMP UP

INT_1: MOV TH1,#4BH

MOV TL1,#0FDH DJNZ R0,EXIT MOV R0,#20 PUSH ACC PUSH DPH PUSH DPL MOV A,TL0 ACALL XS MOV TL0,#0 MOV A,TH0 ACALL XS MOV TH0,#0 POP DPL POP DPH

POP ACC

EXIT: RETI

XS: MOV DPTR,#TAB ;MOV A,R2

MOV B,#10 ;显示10进制数 DIV AB XCH A,B ;MOV DPTR,#TAB MOVC A,@A+DPTR

ACALL FS

XCH A,B

;MOV DPTR,#TAB MOVC A,@A+DPTR ACALL FS

RET

FS: MOV R1,#8 YW:RRC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R1,YW

RET

DELAY:MOV R6,#200 DEL:MOV R7,#230 DJNZ R7,$ DJNZ R6,DEL DJNZ R5,DELAY

RET

TAB:DB

0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB

0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH END

14. 8255PB外接8个开关,编程将开关状态显示在数码管上(串并转换动态扫描方式) ORG 0000 AJMP START ORG 0030H

START:

MOV DPTR,#0AC03H MOV A, #82H MOVX @DPTR, A MOV DPTR,#0E100H MOV A,#3 MOVX @DPTR,A LOOP:

MOV DPTR,#0AC01H MOVX A,@DPTR MOV B,#10H DIV AB MOV 10H,B MOV 11H,A MOV R0,#10H MOV R1,#2

MOV R2,#1

ACALL DISPLAY

SJMP 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 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

15. P3.4接开关K,编程将开关拨动次数,通过串并转换的方式进行显示 ORG 0000 SJMP START ORG 0030H START: MOV SP,#60H MOV R5,#0 LOOP:

JB P3.4,$ ACALL DELAY JB P3.4,LOOP INC R5 ACALL XS LOOP1:

JNB P3.4,$ ACALL DELAY JNB P3.4,LOOP1 INC R5 ACALL XS SJMP LOOP

DELAY: MOV R7,#200 DEL: MOV R6,#229

DJNZ R6,$ DJNZ R7,DEL RET

XS:

MOV DPTR,#TAB MOV A,R5 MOV B,#10H

DIV AB MOV R1,A

MOV A,B MOVC A,@A+DPTR MOV R4,#8 ACALL S164 MOV A,R1

MOVC A,@A+DPTR MOV R4,#8 ACALL S164 MOV A,#0 CLR C MOV R4,#16

ACALL S164 RET S164: RRC A MOV P1.0,C

CLR P1.1

SETB P1.1 DJNZ R4,S164 RET TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH

END

16. 比较片内RAM30H、31H两个单元值的大小,将较大的数显示在数码管上 ORG 0000 SJMP START ORG 0030H START:

MOV SP,#60H MOV DPTR,#0E100H MOV A,#3 MOVX @DPTR,A

MOV 30H,#06H ;随便赋两个值,显示较大的

MOV 31H,#11H

MOV A,30H SUBB A,31H JC SMALL MOV B,#10H MOV A,30H DIV AB MOV 30H,B MOV 31H,A BIG: MOV R0,#30H

MOV R1,#2 MOV R2,#1 ACALL DISPLAY SJMP BIG SMALL: MOV B,#10H

MOV A,31H DIV AB MOV 30H,B MOV 31H,A SMALL1:MOV R0,#30H

MOV R1,#2 MOV R2,#1 ACALL DISPLAY

SJMP SMALL1

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

17. 单片机P1口接8个开关,编程将开关状态显示在数码管上(串并转换动态扫描方式)

ORG 0000H


51单片机常见汇编程序实验代码(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:现代自然地理学课后练习及期末复习题

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

马上注册会员

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