流水灯c语言代码大全,单片机闪烁灯流水灯汇编代码大全

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

参考程序:

ORG 0000H

start:       MOV P1,#0H

CALL delay

MOV P1,#0FFH

CALL delay

CALL delay

LJMP start

delay:

MOV R7,#200

d2:   MOV R6,#250

d1:   DJNZ R6,d1

DJNZ R7,d2

RET

END

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

2、单片机AT89C51的P1口接8个发光二极管,让这8个发光二极管能够双灯左移之后再双灯右移,

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

如此循环5次后全灭。延时0.5S。

参考程序1:

ORG 0000H

MOV A,#11111100B

start:

MOV P1,A

CALL delay

RL A

RL A

INC R0

CJNE R0,#4,start

MOV R0,#00H

s:

RR A

RR A

MOV P1,A

CALL delay

INC R0

CJNE R0,#4,s

MOV R0,#00H

LJMP start

delay:     MOV R5,#100

k1: MOV R6,#250

k2: MOV R7,#250

k3:   DJNZ R7,k3

DJNZ R6,k2

DJNZ R5,k1

RET

END

参考程序2:

ORG 0000H

MOV R0,#5

start:

MOV P2,#11111100B

CALL delay0_5s

MOV P2,#11110011B

CALL delay0_5s

MOV P2,#11001111B

CALL delay0_5s

MOV P2,#00111111B

CALL delay0_5s

MOV P2,#11001111B

CALL delay0_5s

MOV P2,#11110011B

CALL delay0_5s

MOV P2,#11111100B

CALL delay0_5s

DJNZ R0,start

MOV P2,#0FFH

SJMP $

delay0_5s:

MOV R7,#20

d3: MOV R6,#200

d2: MOV R5,#250

d1: NOP

NOP

DJNZ R5,d1

DJNZ R6,d2

DJNZ R7,d3

RET

END

3、单片机AT89C51的P2口接8个发光二极管,让这8个发光二极管先交互闪烁5次,

然后双灯左移之后再双灯右移,如此循环,形成流水灯的效果,延时0.5S。

ORG 0000H

MOV R0,#5

start:

MOV P1,#10101010B

CALL delay

MOV P1,#01010101B

CALL delay

DJNZ R0,start

MOV R0,#5

MOV A,#11111100B

s1:   MOV P1,A

CALL delay

RL A

RL A

CJNE A,#11111100B,s1

s2:     RR A

RR A

MOV P1,A

CALL delay

CJNE A,#11111100B,s2

JMP start

delay:     MOV R5,#100

k1: MOV R6,#250

k2: MOV R7,#250

k3:   DJNZ R7,k3

DJNZ R6,k2

DJNZ R5,k1

RET

END

4、单片机AT89C51的P1口和P2口分别接八个发光二极管,P2口八灯实现左移,延时0.5S,

要求左移第一次,P1.0对应灯点亮,P2口灯左移第二次,P1.1对应灯亮,如此延续下去,

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

ORG 0000H

MOV R0,#11111110B

start:       MOV A,#11111110B

MOV P2,A

s:     CALL delay

RL A

MOV P2,A

CALL delay

CJNE A,#01111111B,s

MOV A,R0

MOV P1,A

RL A

MOV R0,A

JMP start

delay:     MOV R5,#100

k1: MOV R6,#250

k2: MOV R7,#250

k3:   DJNZ R7,k3

DJNZ R6,k2

DJNZ R5,k1

RET

END

5、单片机AT89C51的P2.0、P2.1和P2.2分别接按钮开关PB1、PB2和PB3;P1.0接一个LED。按下PB1,

则LED亮;按下PB2则LED灭;按下PB3则LED闪烁。延时为0.1S。

原理图:

参考程序:

ORG 0000H

MOV P2,#0FFH

s1:   JNB P2.0,s3

JNB P2.1,s2

JNB P2.2,s4

JMP s1

s2:   SETB P1.0

JMP s1

s3:   CLR P1.0

JMP s1

s4:     SETB P1.0

CALL delay

CLR P1.0

CALL delay

JNB P2.0,s3

JNB P2.1,s2

JMP s4

delay:     MOV R5,#100

k1: MOV R6,#250

k2: MOV R7,#250

k3:   DJNZ R7,k3

DJNZ R6,k2

DJNZ R5,k1

RET

END

6、单片机AT89C51的P2.0、P2.1和P2.2分别接按钮开关PB1、PB2和PB3;P1口接8个LED。

按下PB1,则8个LED闪烁;按下PB2则8个LED单灯右移;按下PB3则8个LED单灯左移。延时为0.1S。

源代码:

ORG          0

MOV          P2,#0FFH

LOOP:     JNB          P2.0,LOOP_1

JNB          P2.1,LOOP_2

JNB          P2.2,LOOP_3

JMP          LOOP

LOOP_1:   MOV          R0,#2

LOOP_1_1: MOV          A,#10101010B

MOV          P0,A

CALL         D100MS

MOV          A,#01010101B

MOV          P0,A

CALL         D100MS

MOV          P0,#11111111B

DJNZ         R0,LOOP_1_1

LOOP_1_2: JB           P2.0,LOOP

JMP          LOOP_1_2

LOOP_2:   MOV          A,#11111110B

MOV          R0,#8

LOOP_2_1: MOV          P0,A

RL           A

CALL         D100MS

DJNZ         R0,LOOP_2_1

MOV          P0,#11111111B

LOOP_2_2: JB           P2.1,LOOP

JMP          LOOP_2_2

LOOP_3:   MOV          A,#01111111B

MOV          R0,#8

LOOP_3_1: MOV          P0,A

RR           A

CALL         D100MS

DJNZ         R0,LOOP_3_1

MOV          P0,#11111111B

LOOP_3_2: JB           P2.2,LOOP

JMP          LOOP_3_2

D100MS:   MOV          R7,#250

D1:       MOV          R6,#200

DJNZ         R6,$

DJNZ         R7,D1

RET

END

7、单片机AT89C51的P2口分别接8个指拨开关;P0口接8个LED。指拨开关闭合之前8个LED全亮,

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

[page]

源代码:

ORG          0

MOV          A,#00000000B

MOV          P0,A

MOV          P2,#0FFH

LOOP:    MOV          A,P2

CPL           A

MOV          P0,A

JMP            LOOP

END

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

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

则P0.0所对应的LED灭,以此类推。延时为0.2S。

原理图:

源代码:

ORG          0

MOV          R1,#3

LOOP1:     MOV          R0,#8

MOV          A,#11111110B

LOOP2:    MOV          P0,A

RL           A

CALL         D200MS

DJNZ         R0,LOOP2

DJNZ         R1,LOOP1

MOV          A,#00000000B

MOV          P0,A

MOV          P2,#0FFH

LOOP:     MOV          A,P2

CPL          A

MOV          P0,A

JMP          LOOP

D200MS:

MOV          R7,#250

D1:        MOV          R6,#200

D2:        MOV          R5,#2

DJNZ         R5,$

DJNZ         R6,D2

DJNZ         R7,D1

RET

END

9、单片机AT89C51的P2.0、P2.1和P2.2口分别接一个按钮开关,

P1口低4位接译码器7447,7447输出部分接共阳极LED数码管。要求按一下P2.0口对应按钮,数码管显示数字“0”;

按一下P2.1口对应按钮,数码管显示数字“8”;按一下P2.2口对应按钮,数码管所显示的数字被关闭。

原理图:

源代码:

ORG 0000H

START:  MOV P2,#0FFH

LOOP:   JNB P2.0,ON

JNB P2.1,ON8

JNB P2.2,OFF

JMP LOOP

ON:        MOV P1,#00H

ON_1:       JB      P2.0,LOOP

JMP     ON_1

ON8:        MOV P1,#08H

ON_8:       JB      P2.1,LOOP

JMP     ON_8

OFF:        MOV P1,#0FFH

OFF_1:      JB      P2.2,LOOP

JMP OFF_1

END

10、单片机AT89C51的P2口接7447驱动一个共阳极七段数码管。让该数码管循环显示数字“9~0”,延时为1S。

ORG 0000H

MOV R0,#10

start:

DJNZ R0,s

MOV P2,R0

CALL delay

MOV R0,#10

JMP start

s:     MOV P2,R0

CALL delay

JMP start

delay:     MOV R5,#100

k1: MOV R6,#250

k2: MOV R7,#250

k3:   DJNZ R7,k3

DJNZ R6,k2

DJNZ R5,k1

RET

END

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

让该数码管显示数字“2~6”,之后显示“9~0”,如此循环,延时为1S。

ORG       0

START:     MOV       R0,#5

MOV       A,#2

LOOP_1:  MOV       P2,A

INC       A

CALL      D1000MS

DJNZ      R0,LOOP_1

MOV       R0,#10

MOV       A,#9

LOOP_2:   MOV       P2,A

DEC       A

CALL      D1000MS

DJNZ      R0,LOOP_2

JMP       START

D1000MS:

MOV       R7,#250

D1:        MOV       R6,#200

D2:        MOV       R5,#250

DJNZ      R5,$

DJNZ      R6,D2

DJNZ      R7,D1

RET

END

12、四个集成共阳极七段数码管的公共端以PNP三极管做开关分别连接到单片机AT89C51的P1低四位,

数码管的各显示引脚a~dP分别连接到P2.0~2.7。让4个数码管稳定显示“2012”。

ORG          0

LOOP:

MOV          P1,#11111110B

MOV          P2,#10100100B

CALL         D4MS

MOV          P1,#11111101B

MOV          P2,#11000000B

CALL         D4MS

MOV          P1,#11111011B

MOV          P2,#11111001B

CALL         D4MS

MOV          P1,#11110111B

MOV          P2,#11111001B

CALL         D4MS

JMP          LOOP

D4MS:

MOV          R7,#10

D1:       MOV          R6,#200

DJNZ         R6,$

DJNZ         R7,D1

RET

END

13、四个集成共阳极七段数码管的公共端以PNP三极管做开关分别连接到单片机AT89C51的P1低四位,

数码管的各显示引脚a~dP分别连接到P2.0~2.7。让LED先稳定显示“2012”,

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

ORG          0

LOOP:     MOV          R0,#65

LOOP_1:  MOV          P1,#11111110B

MOV          P2,#10100100B

CALL         D4MS

MOV          P1,#11111101B

MOV          P2,#11000000B

CALL         D4MS

MOV          P1,#11111011B

MOV          P2,#11111001B

CALL         D4MS

MOV          P1,#11110111B

MOV          P2,#11111001B

CALL         D4MS

DJNZ         R0,LOOP_1

MOV          R1,#65

LOOP_2:

MOV          P1,#11111110B

MOV          P2,#11111001B

CALL         D4MS

MOV          P1,#11111101B

MOV          P2,#00100100B

CALL         D4MS

MOV          P1,#11111011B

MOV          P2,#10110000B

CALL         D4MS

MOV          P1,#11110111B

MOV          P2,#11000000B

CALL         D4MS

DJNZ         R1,LOOP_2

JMP          LOOP

D4MS:    MOV          R7,#10

D1:       MOV          R6,#200

DJNZ         R6,$

DJNZ         R7,D1

RET

END

14、单片机AT89C51的P0口接8个LED,用INT0产生中断。主程序正常执行时,P0口的8个LED单灯左移。

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

即继续执行8个LED单灯左移。延时为0.5S。

ORG 0000H

JMP main

ORG 0003H

JMP int_0

main:

SETB IT0

SETB EX0

SETB EA

MOV A,#11111110B

s:     RL A

MOV P2,A

CALL delay

JMP s

delay:

MOV R7,#100

d3:   MOV R6,#200

d2:   MOV R5,#250

d1:   DJNZ R5,d1

DJNZ R6,d2

DJNZ R7,d3

RET

int_0:

MOV P2,A

MOV R0,#24

k:     RR A

MOV P2,A

CALL delay

DJNZ R0,k

MOV R0,#24

RETI

END

15、功能要求:用 产生中断,主程序正常执行时,数码管循环显示“0~9”,

每0.5S增加1。当进入中断状态时,数码管循环显示“9~0”,

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

ORG 0000H

JMP main

ORG 0003H

JMP int_0

main:

SETB IT0

SETB EX0

SETB EA

s:     MOV P2,A

CALL delay

INC A

CJNE A,#10,s

MOV A,#0

JMP s

delay:

MOV R7,#100

d3:   MOV R6,#200

d2:   MOV R5,#250

d1:   DJNZ R5,d1

DJNZ R6,d2

DJNZ R7,d3

RET

int_0:

MOV A,#10

k:        DEC A

MOV P2,A

CALL delay

CJNE A,#0H,k

RETI

END

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值