word完美格式
单片机流水灯汇编程序设计
流水灯汇编程序
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
精心整理 学习帮手
word完美格式
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 MOV R0,A
精心整理 学习帮手
word完美格式
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
IBD311 : MOV R7,#0AH
精心整理 学习帮手