单片机闪烁灯流水灯汇编代码大全.docx

上传人:b****6 文档编号:8314515 上传时间:2023-01-30 格式:DOCX 页数:16 大小:17.01KB
下载 相关 举报
单片机闪烁灯流水灯汇编代码大全.docx_第1页
第1页 / 共16页
单片机闪烁灯流水灯汇编代码大全.docx_第2页
第2页 / 共16页
单片机闪烁灯流水灯汇编代码大全.docx_第3页
第3页 / 共16页
单片机闪烁灯流水灯汇编代码大全.docx_第4页
第4页 / 共16页
单片机闪烁灯流水灯汇编代码大全.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机闪烁灯流水灯汇编代码大全.docx

《单片机闪烁灯流水灯汇编代码大全.docx》由会员分享,可在线阅读,更多相关《单片机闪烁灯流水灯汇编代码大全.docx(16页珍藏版)》请在冰豆网上搜索。

单片机闪烁灯流水灯汇编代码大全.docx

单片机闪烁灯流水灯汇编代码大全

单片机闪烁灯流水灯汇编代码大全

1、单片机AT89C51的P2口接8个发光二极管,让这8个发光二极管显示闪烁功能,即八灯亮2S,熄灭3S,如

此循环。

参考程序:

ORG0000H

start:

MOVP1,#0H

CALLdelay

MOVP1,#0FFH

CALLdelay

CALLdelay

LJMPstart

delay:

MOVR7,#200

d2:

MOVR6,#250

d1:

DJNZR6,d1

DJNZR7,d2

RET

END

;200*250次*2*1us=1000ms=1s

2、单片机AT89C51的P1口接8个发光二极管,让这8

个发光二极管能够双灯左移之后再双灯右移,

形成霹雳灯的效果,如此循环5次后全灭,延时0.5S

灯右移,形成霹雳灯的效果,

如此循环5次后全灭。

延时0.5S。

参考程序1:

ORG0000H

MOVA,#11111100B

start:

MOVP1,A

CALLdelay

RLA

RLA

INCR0

CJNER0,#4,start

MOVR0,#00H

s:

RRA

RRA

MOVP1,A

CALLdelay

INCR0

CJNER0,#4,s

MOVR0,#00H

LJMPstart

delay:

MOVR5,#100

k1:

MOVR6,#250

k2:

MOVR7,#250

k3:

DJNZR7,k3

DJNZR6,k2

DJNZR5,k1

RET

END

参考程序2:

ORG0000H

MOVR0,#5

start:

MOVP2,#11111100B

CALLdelay0_5s

MOVP2,#11110011B

CALLdelay0_5s

MOVP2,#11001111B

CALLdelay0_5s

CALLdelay0_5s

MOVP2,#11001111B

CALLdelay0_5s

MOVP2,#11110011B

CALLdelay0_5s

MOVP2,#11111100B

CALLdelay0_5s

DJNZR0,start

MOVP2,#0FFH

SJMP$

delay0_5s:

MOVR7,#20

d3:

MOVR6,#200

d2:

MOVR5,#250

d1:

NOP

NOP

DJNZR5,d1

DJNZR6,d2

DJNZR7,d3

RET

END

3、单片机AT89C51的P2口接8个发光二极管,让这8

个发光二极管先交互闪烁5次,

然后双灯左移之后再双灯右移,如此循环,形成流水灯

的效果,延时0.5S。

ORG0000H

MOVR0,#5

start:

MOVP1,#10101010B

CALLdelay

MOVP1,#01010101B

CALLdelay

DJNZR0,start

MOVR0,#5

MOVA,#11111100B

51:

MOVP1,A

CALLdelay

RLA

RLA

CJNEA,#11111100B,s1

52:

RRA

RRA

CALLdelay

CJNEA,#11111100B,s2

JMPstart

delay:

MOVR5,#100

k1:

MOVR6,#250

k2:

MOVR7,#250

k3:

DJNZR7,k3

DJNZR6,k2

DJNZR5,k1

RET

END

4、单片机AT89C51的P1口和P2口分别接八个发光二极

管,P2口八灯实现左移,延时0.5S,

要求左移第一次,P1.0对应灯点亮,P2口灯左移第二次,

P1.1对应灯亮,如此延续下去,

直至左移八次后,所有灯全灭。

ORG0000H

MOVR0,#11111110B

start:

MOVA,#11111110B

MOVP2,A

s:

CALLdelay

RLA

MOVP2,A

CALLdelay

CJNEA,#01111111B,s

MOVA,R0

MOVP1,A

RLA

MOVR0,A

JMPstart

delay:

MOVR5,#100

k1:

MOVR6,#250

k2:

MOVR7,#250

k3:

DJNZR7,k3

DJNZR6,k2

DJNZR5,k1

RET

END

5、单片机AT89C51的P2.0、P2.1和P2.2分别接按钮开

关PB1、PB2和PB3;P1.0接一个LED按下PB1,

贝ULED亮;按下PB2则LED灭;按下PB3则LED闪烁。

时为0.1S。

原理图:

参考程序:

ORG0000H

MOVP2,#0FFH

51:

JNBP2.0,s3

JNBP2.1,s2

JNBP2.2,s4

JMPs1

52:

SETBP1.0

JMPs1

53:

CLRP1.0

JMPs1

54:

SETBP1.0

CALLdelay

CLRP1.0

CALLdelay

JNBP2.0,s3

JNBP2.1,s2

JMPs4

k1:

MOVR6,#250k2:

MOVR7,#250

k3:

DJNZR7,k3

DJNZR6,k2

DJNZR5,k1

RET

END

6、单片机AT89C51的P2.0、P2.1和P2.2分别接按钮开

关PB1、PB2和PB3;P1口接8个LED

按下PB1,贝U8个LED闪烁;按下PB2则8个LED单灯右移;按下PB3则8个LED单灯左移。

延时为0.1S。

源代码:

ORG0

MOVP2,#0FFH

LOOP:

JNBP2.0,LOOP_1

JNBP2.1,LOOP_2

JNBP2.2,LOOP_3

JMPLOOP

LOOP_1_1:

MOVA,#10101010B

MOVP0,A

CALLD100MS

MOVA,#01010101B

MOVP0,A

CALLD100MS

MOVP0,#11111111B

DJNZR0,LOOP_1_1

LOOP_1_2:

JBP2.0,LOOP

JMPLOOP_1_2

LOOP_2:

MOVA,#11111110B

MOVR0,#8

LOOP_2_1:

MOVP0,A

RLA

CALLD100MS

DJNZR0,LOOP_2_1

MOVP0,#11111111B

LOOP_2_2:

JBP2.1,LOOP

MOVR0,#8

LOOP_3_1:

MOVP0,A

RRA

CALLD100MS

DJNZR0,LOOP_3_1

MOVP0,#11111111B

LOOP_3_2:

JBP2.2,LOOP

JMPLOOP_3_2

D100MS:

MOVR7,#250

D1:

MOVR6,#200

DJNZR6,$

DJNZR7,D1

RET

END

7、单片机AT89C51的P2口分别接8个指拨开关;P0口

接8个LEQ指拨开关I合之前8个LED全亮,

闭合指拨开关P2.0,则P0.0所对应的LED灭,以此类推。

源代码:

ORG0

MOVA,#00000000B

MOVP0,A

MOVP2,#0FFH

LOOP:

MOVA,P2

CPLA

MOVP0,A

JMPLOOP

END

8、单片机AT89C51的P2口分别接8个指拨开关;P0口接8个LED。

指拨开关闭合之前8个LED单灯左移3次后,全亮,闭合

指拨开关P2.0,

则P0.0所对应的LED灭,以此类推。

延时为0.2S。

原理图:

源代码:

ORG0

MOVR1,#3

LOOP1:

MOVR0,#8

MOVA,#11111110B

LOOP2:

MOVP0,A

RLA

CALLD200MS

DJNZR0,LOOP2

DJNZR1,LOOP1

MOVA,#00000000B

MOVP0,A

MOVP2,#0FFH

LOOP:

MOVA,P2

CPLA

MOVP0,A

JMPLOOP

D200MS:

MOVR7,#250

D1:

MOVR6,#200

D2:

MOVR5,#2

DJNZR5,$

DJNZR6,D2

DJNZR7,D1

RET

END9、单片机AT89C51的P2.0、P2.1和P2.2口分别接一个

按钮开关,

P1口低4位接译码器7447,7447输出部分接共阳极LED

数码管。

要求按一下P2.0口对应按钮,数码管显示数字

“0”;

按一下P2.1口对应按钮,数码管显示数字“8”;按一

下P2.2口对应按钮,数码管所显示的数字被关闭。

原理图:

源代码:

ORG0000H

START:

MOVP2,#0FFH

LOOP:

JNBP2.0,ON

JNBP2.1,ON8

JNBP2.2,OFF

JMPLOOP

ON:

MOVP1,#00H

ON_1:

JBP2.0,LOOP

JMPON_1

ON8:

MOVP1,#08H

ON_8:

JBP2.1,LOOP

OFF:

MOVP1,#0FFH

OFF_1:

JBP2.2,LOOP

JMPOFF_1

END

10、单片机AT89C51的P2口接7447驱动一个共阳极七段

数码管。

让该数码管循环显示数字“9〜0”,延时为1S。

ORG0000H

MOVR0,#10

start:

DJNZR0,s

MOVP2,R0

CALLdelay

MOVR0,#10

JMPstart

s:

MOVP2,R0

CALLdelay

JMPstart

delay:

MOVR5,#100

k1:

MOVR6,#250

k2:

MOVR7,#250

DJNZR6,k2

DJNZR5,k1

RET

END

11、单片机AT89C51的P2口接7447驱动一个共阳极七段数码管。

让该数码管显示数字“2〜6”,之后显示“9〜0”,如

此循环,延时为1S。

ORG0

START:

MOVR0,#5

MOVA,#2

LOOP_1:

MOVP2,A

INCA

CALLD1000MS

DJNZR0,LOOP_1

MOVR0,#10

MOVA,#9

LOOP_2:

MOVP2,A

DECA

CALLD1000MS

JMPSTART

D1000MS:

MOVR7,#250

D1:

MOVR6,#200

D2:

MOVR5,#250

DJNZR5,$

DJNZR6,D2

DJNZR7,D1

RET

END

12、四个集成共阳极七段数码管的公共端以PNP三极管

做开关分别连接到单片机AT89C51的P1低四位,

数码管的各显示引脚a〜dP分别连接到P2.0〜2.7。

让4个

数码管稳定显示“2012”。

ORG0

LOOP:

MOVP1,#11111110B

MOVP2,#10100100B

CALLD4MS

MOVP1,#11111101B

MOVP1,#11111011B

MOVP2,#11111001B

CALLD4MS

MOVP1,#11110111B

MOVP2,#11111001B

CALLD4MS

JMPLOOP

D4MS:

MOVR7,#10

D1:

MOVR6,#200

DJNZR6,$

DJNZR7,D1

RET

END

13、四个集成共阳极七段数码管的公共端以PNP三极管

做开关分别连接到单片机AT89C51的P1低四位,

数码管的各显示引脚a~dP分别连接到P2.0~2.7。

让LED

先稳定显示“2012”,

约1秒之后再稳定显示“12.21”,如此循环。

ORG0

LOOP:

MOVR0,#65

LOOP_1:

MOVP1,#11111110B

MOVP2,#10100100B

CALLD4MS

MOVP1,#11111101B

MOVP2,#11000000B

CALLD4MS

MOVP1,#11111011B

MOVP2,#11111001B

CALLD4MS

MOVP1,#11110111B

MOVP2,#11111001B

CALLD4MS

DJNZR0,LOOP_1

MOVR1,#65

LOOP_2:

MOVP1,#11111110B

MOVP2,#11111001B

CALLD4MS

MOVP1,#11111101B

MOVP1,#11111011B

MOVP2,#10110000B

CALLD4MS

MOVP1,#11110111B

MOVP2,#11000000B

CALLD4MS

DJNZR1,LOOP_2

JMPLOOP

D4MS:

MOVR7,#10

D1:

MOVR6,#200

DJNZR6,$

DJNZR7,D1

RET

END

14、单片机AT89C51的P0口接8个LED,用INT0产生中断。

主程序正常执行时,P0口的8个LED单灯左移。

当进入中断状态时,P0口的8个LED将变成单灯右移,3个循环后,恢复中断前的状态,

即继续执行8个LED单灯左移。

延时为0.5S。

ORG0000H

JMPint_0

main:

SETBIT0

SETBEX0

SETBEA

MOVA,#11111110B

s:

RLA

MOVP2,A

CALLdelay

JMPs

delay:

MOVR7,#100

d3:

MOVR6,#200

d2:

MOVR5,#250

d1:

DJNZR5,d1

DJNZR6,d2

DJNZR7,d3

RET

int_0:

MOVP2,A

k:

RRA

MOVP2,A

CALLdelay

DJNZR0,k

MOVR0,#24

RETI

END

15、功能要求:

用产生中断,主程序正常执行时,数码

管循环显示“0〜9”,

每0.5S增加1。

当进入中断状态时,数码管循环显示

“9〜0”,

每0.5S减少1,一圈之后恢复中断前的状态。

ORG0000H

JMPmain

ORG0003H

JMPint_0

main:

SETBIT0

SETBEX0

SETBEAs:

MOVP2,A

CALLdelay

INCA

CJNEA,#10,s

MOVA,#0

JMPs

delay:

MOVR7,#100

d3:

MOVR6,#200

d2:

MOVR5,#250

d1:

DJNZR5,d1

DJNZR6,d2

DJNZR7,d3

RET

int_0:

MOVA,#10

k:

DECA

MOVP2,A

CALLdelay

CJNEA,#0H,k

RETI

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1