51单片机经典流水灯(汇编)程序文件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机流水灯汇编程序设计

流水灯汇编程序

8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

;用最直接的方式实现流水灯

ORG 0000H

START:MOV P1,#01111111B ;最下面的LED点亮

LCALL DELAY ;延时1秒

MOV P1,#10111111B ;最下面第二个的LED点亮

LCALL DELAY ;延时1秒

MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略)

LCALL DELAY

MOV P1,#11101111B

LCALL DELAY

MOV P1,#11110111B

LCALL DELAY

MOV P1,#11111011B

LCALL DELAY

MOV P1,#11111101B

LCALL DELAY

MOV P1,#11111110B

LCALL DELAY

MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环

;延时子程序,12M晶振延时约250毫秒

DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms

PUSH PSW ;现场保护指令(有时可以不加)

MOV R4,#2

L3: MOV R2 ,#00H

L1: MOV R3 ,#00H

L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)

DJNZ R2 ,L1 ; 中层循环:256次

DJNZ R4 ,L3 ;外层循环:2次

POP PSW

RET

END

51单片机汇编程序集(二)

2008年12月12日星期五 10:27

辛普生积分程序

内部RAM数据排序程序(升序)

外部RAM数据排序程序(升序)

外部RAM浮点数排序程序(升序)

BCD小数转换为二进制小数(2位)

BCD小数转换为二进制小数(N位)

BCD整数转换为二进制整数(1位)

BCD整数转换为二进制整数(2位)

BCD整数转换为二进制整数(3位)

BCD整数转换为二进制整数(N位)

二进制小数(2位)转换为十进制小数(分离BCD码)

二进制小数(M位)转换为十进制小数(分离BCD码)

二进制整数(2位)转换为十进制整数(分离BCD码)

二进制整数(2位)转换为十进制整数(组合BCD码)

二进制整数(3位)转换为十进制整数(分离BCD码)

二进制整数(3位)转换为十进制整数(组合BCD码)

二进制整数(M位)转换为十进制整数(组合BCD码)

三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7

;二进制整数(2位)转换为十进制整数(分离BCD码)

;入口: R3,R4

;占用资源: ACC,R2,NDIV31

;堆栈需求: 5字节

;出口: R0,NCNT

IBTD21 : MOV NCNT,#00H

MOV R2,#00H

IBD211 : MOV R7,#0AH

LCALL NDIV31

MOV A,R7

MOV @R0,A

INC R0

INC NCNT

MOV A,R3

ORL A,R4

JNZ IBD211

MOV A,R0

CLR C

SUBB A,NCNT

RET

;二进制整数(2位)转换为十进制整数(组合BCD码) ;入口: R3,R4

;占用资源: ACC,B,R7

;堆栈需求: 3字节

;出口: R0

IBTD22 : MOV A,R0

PUSH A

MOV R7,#03H

CLR A

IBD221 : MOV @R0,A

INC R0

DJNZ R7,IBD221

POP A

MOV R0,A

MOV R7,#10H

IBD222 : PUSH A

CLR C

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

MOV B,#03H

IBD223 : MOV A,@R0

ADDC A,@R0

DA A

MOV @R0,A

INC R0

DJNZ B,IBD223

POP A

MOV R0,A

DJNZ R7,IBD222

RET

;二进制整数(3位)转换为十进制整数(分离BCD码) ;入口: R2,R3,R4

;占用资源: ACC,R2,NDIV31

;堆栈需求: 5字节

;出口: R0,NCNT

IBTD31 : CLR A

MOV NCNT,A

LCALL NDIV31

MOV A,R7

MOV @R0,A

INC R0

INC NCNT

MOV A,R2

ORL A,R3

ORL A,R4

JNZ IBD311

MOV A,R0

CLR C

SUBB A,NCNT

MOV R0,A

RET

;二进制整数(3位)转换为十进制整数(组合BCD码) ;入口: R2,R3,R4

;占用资源: ACC,B,R7

;堆栈需求: 3字节

;出口: R0

IBTD32 : MOV A,R0

PUSH A

MOV R7,#04H

CLR A

IBD321 : MOV @R0,A

INC R0

DJNZ R7,IBD321

POP A

MOV R0,A

MOV R7,#18H

IBD322 : PUSH A

CLR C

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

MOV A,R2

RLC A

MOV R2,A

MOV B,#04H

IBD323 : MOV A,@R0

相关文档
最新文档