51单片机经典流水灯汇编程序.docx
- 文档编号:1742412
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:13
- 大小:17.42KB
51单片机经典流水灯汇编程序.docx
《51单片机经典流水灯汇编程序.docx》由会员分享,可在线阅读,更多相关《51单片机经典流水灯汇编程序.docx(13页珍藏版)》请在冰点文库上搜索。
51单片机经典流水灯汇编程序
单片机流水灯汇编程序设计
流水灯汇编程序
8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
;用最直接的方式实现流水灯
ORG0000H
START:
MOVP1,#01111111B ;最下面的LED点亮
LCALLDELAY ;延时1秒
MOVP1,#10111111B ;最下面第二个的LED点亮
LCALLDELAY ;延时1秒
MOVP1,#11011111B ;最下面第三个的LED点亮(以下省略)
LCALLDELAY
MOVP1,#11101111B
LCALLDELAY
MOVP1,#11110111B
LCALLDELAY
MOVP1,#11111011B
LCALLDELAY
MOVP1,#11111101B
LCALLDELAY
MOVP1,#11111110B
LCALLDELAY
MOVP1,#11111111B ;完成第一次循环点亮,延时约0.25秒
AJMPSTART ;反复循环
;延时子程序,12M晶振延时约250毫秒
DELAY:
;大约值:
2us*256*256*2=260ms,也可以认为为250ms
PUSHPSW ;现场保护指令(有时可以不加)
MOVR4,#2
L3:
MOVR2,#00H
L1:
MOVR3,#00H
L2:
DJNZR3,L2 ;最内层循环:
(256次)2个周期指令(R3减一,如果比1大,则转向L2)
DJNZR2,L1 ;中层循环:
256次
DJNZR4,L3 ;外层循环:
2次
POPPSW
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:
MOVNCNT,#00H
MOVR2,#00H
IBD211:
MOVR7,#0AH
LCALLNDIV31
MOVA,R7
MOV@R0,A
INCR0
INCNCNT
MOVA,R3
ORLA,R4
JNZIBD211
MOVA,R0
CLRC
SUBBA,NCNT
MOVR0,A
RET
;二进制整数(2位)转换为十进制整数(组合BCD码)
;入口:
R3,R4
;占用资源:
ACC,B,R7
;堆栈需求:
3字节
;出口:
R0
IBTD22:
MOVA,R0
PUSHA
MOVR7,#03H
CLRA
IBD221:
MOV@R0,A
INCR0
DJNZR7,IBD221
POPA
MOVR0,A
MOVR7,#10H
IBD222:
PUSHA
CLRC
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
MOVB,#03H
IBD223:
MOVA,@R0
ADDCA,@R0
DAA
MOV@R0,A
INCR0
DJNZB,IBD223
POPA
MOVR0,A
DJNZR7,IBD222
RET
;二进制整数(3位)转换为十进制整数(分离BCD码)
;入口:
R2,R3,R4
;占用资源:
ACC,R2,NDIV31
;堆栈需求:
5字节
;出口:
R0,NCNT
IBTD31:
CLRA
MOVNCNT,A
IBD311:
MOVR7,#0AH
LCALLNDIV31
MOVA,R7
MOV@R0,A
INCR0
INCNCNT
MOVA,R2
ORLA,R3
ORLA,R4
JNZIBD311
MOVA,R0
CLRC
SUBBA,NCNT
MOVR0,A
RET
;二进制整数(3位)转换为十进制整数(组合BCD码)
;入口:
R2,R3,R4
;占用资源:
ACC,B,R7
;堆栈需求:
3字节
;出口:
R0
IBTD32:
MOVA,R0
PUSHA
MOVR7,#04H
CLRA
IBD321:
MOV@R0,A
INCR0
DJNZR7,IBD321
POPA
MOVR0,A
MOVR7,#18H
IBD322:
PUSHA
CLRC
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
MOVA,R2
RLCA
MOVR2,A
MOVB,#04H
IBD323:
MOVA,@R0
ADDCA,@R0
DAA
MOV@R0,A
INCR0
DJNZB,IBD323
POPA
MOVR0,A
DJNZR7,IBD322
RET
第七个试验:
流水灯数字显示综合练习----51单片机汇编语言试验教程
该程序运行结果为个位数码管轮流现实0,1,2,3,4,5,6,7,8
然后十位数码管轮流现实0,1,2,3,4,5,6,7,8反复循环
P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,依次点亮然后轮流点亮
小喇叭不停发出滴答声:
注意该程序配套为我站的倚天版开发套件:
如果是标准版:
因他的数码管接法不同。
显示的数字不对。
该程序在本站XP开发套件上调试通过,以下是程序运行在XP版时的照片.
数码管显示数字
注意0为点亮1为灭
显示数字p0.7p0.6p0.5p0.4p0.3p0.2p0.1p0.016进制代码
00010100028H
1011111107EH
210100010A2H
30110001062H
40111010074H
50110000161H
60010000121H
7011110107AH
80010000020H
90110000060H
代码表的意思和方法参照前面的教程;注意0为点亮1为灭然后我们可以把代码送到P0口,就可以是数码管显示需要的数字;当然,必须有位选,因为我们的实验板是动态扫描数码管,两个8的位选分别是P2.6P2.7.
LOOP:
;标号
CLRP2.6;选中p2.6数码管左边的8字使能
SETBP2.7;p2.7不使能。
右边的数码管消隐
MOVP0,#28H;把28h送p0口;数码管显示0
LCALLDELAY;延时
MOVP0,#0FFH;0ffh送p0口,数码管清除
CLRP1.0;点亮p1.0发光管
MOVP0,#7EH;把7eh送p0口;数码管显示1
LCALLDELAY
MOVP0,#0FFH
CLRP1.1;点亮p1.0发光管
CLRP1.0;点亮p1.0发光管
MOVP0,#0A2H;数码管显示2
LCALLDELAY
MOVP0,#0FFH
CLRP1.2
CLRP1.1
CLRP1.0
MOVP0,#62H;数码管显示3
LCALLDELAY
MOVP0,#0FFH
CLRP1.3
CLRP1.2
CLRP1.1
CLRP1.0
MOVP0,#74H;;数码管显示4
LCALLDELAY
MOVP0,#0FFH
CLRP1.4
CLRP1.3
CLRP1.2
CLRP1.1
CLRP1.0
MOVP0,#61H;数码管显示5;
LCALLDELAY
MOVP0,#0FFH
CLRP1.5
CLRP1.4
CLRP1.3
CLRP1.2
CLRP1.1
CLRP1.0
MOVP0,#21H;数码管显示6
LCALLDELAY
MOVP0,#0FFH
CLRP1.6
CLRP1.5
CLRP1.4
CLRP1.3
CLRP1.2
CLRP1.1
CLRP1.0
MOVP0,#7AH;数码管显示7
LCALLDELAY
MOVP0,#0FFH
CLRP1.7
CLRP1.6
CLRP1.5
CLRP1.4
CLRP1.3
CLRP1.2
CLRP1.1
CLRP1.0
MOVP0,#20H;数码管显示8
LCALLDELAY
MOVP0,#0FFH
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
;程序到此结果为左边的数码管显示0,1,2,3,4,5,6,7,8
;p1.0------------p1.7指示灯依次点亮
SETBP2.6;左边的8消隐
CLRP2.7;选中p2.7数码管右边的8字使能,;
MOVP0,#28H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.0
MOVP0,#7EH
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.1
MOVP0,#0A2H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.2
MOVP0,#62H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.3
MOVP0,#74H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.4
MOVP0,#61H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.5
MOVP0,#21H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.6
MOVP0,#7AH
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
CLRP1.7
MOVP0,#20H
LCALLDELAY
MOVP0,#0FFH
MOVP1,#0FFH
MOVP0,#0FFH
MOVP1,#0FFH
;这一段和上一段基本相同,不同的是右边的数码管依次显示012345678,左边的不亮;
;同时p1口的灯流动显示:
AJMPLOOP;注意:
程序运行到此跳转到开始标号,重复执行:
DELAY:
;延时子程序;参考前面的教程:
CLRP3.3;注意小喇叭在3.3口,这里可以使小喇叭发出嗒,嗒声
MOVR7,#255
NOP
NOP
D1:
MOVR6,#255
setbp3.3
D2:
DJNZR6,D2
clrp3.3
DJNZR7,D1
SETBP3.3
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 经典 流水 汇编程序