專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機閃爍燈流水燈匯編代碼大全

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年11月21日   【字體:
1、單片機AT89C51的P2口接8個發(fā)光二極管,讓這8個發(fā)光二極管顯示閃爍功能,即八燈亮2S,熄滅3S,如此循環(huán)。

參考程序:

       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個發(fā)光二極管,讓這8個發(fā)光二極管能夠雙燈左移之后再雙燈右移,
形成霹靂燈的效果,如此循環(huán)5次后全滅,延時0.5S。燈右移,形成霹靂燈的效果,
如此循環(huán)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個發(fā)光二極管,讓這8個發(fā)光二極管先交互閃爍5次,
然后雙燈左移之后再雙燈右移,如此循環(huán),形成流水燈的效果,延時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口分別接八個發(fā)光二極管,P2口八燈實現(xiàn)左移,延時0.5S,
要求左移第一次,P1.0對應燈點亮,P2口燈左移第二次,P1.1對應燈亮,如此延續(xù)下去,
直至左移八次后,所有燈全滅。

       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分別接按鈕開關(guān)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分別接按鈕開關(guān)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個指撥開關(guān);P0口接8個LED。指撥開關(guān)閉合之前8個LED全亮,
閉合指撥開關(guān)P2.0,則P0.0所對應的LED滅,以此類推。



 

    源代碼:

        

 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個指撥開關(guān);P0口接8個LED。
指撥開關(guān)閉合之前8個LED單燈左移3次后,全亮,閉合指撥開關(guān)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口分別接一個按鈕開關(guān),
P1口低4位接譯碼器7447,7447輸出部分接共陽極LED數(shù)碼管。要求按一下P2.0口對應按鈕,數(shù)碼管顯示數(shù)字“0”;
按一下P2.1口對應按鈕,數(shù)碼管顯示數(shù)字“8”;按一下P2.2口對應按鈕,數(shù)碼管所顯示的數(shù)字被關(guān)閉。

原理圖:

      源代碼:

                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驅(qū)動一個共陽極七段數(shù)碼管。讓該數(shù)碼管循環(huán)顯示數(shù)字“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驅(qū)動一個共陽極七段數(shù)碼管。
讓該數(shù)碼管顯示數(shù)字“2~6”,之后顯示“9~0”,如此循環(huán),延時為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、四個集成共陽極七段數(shù)碼管的公共端以PNP三極管做開關(guān)分別連接到單片機AT89C51的P1低四位,
數(shù)碼管的各顯示引腳a~dP分別連接到P2.0~2.7。讓4個數(shù)碼管穩(wěn)定顯示“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、四個集成共陽極七段數(shù)碼管的公共端以PNP三極管做開關(guān)分別連接到單片機AT89C51的P1低四位,
數(shù)碼管的各顯示引腳a~dP分別連接到P2.0~2.7。讓LED先穩(wěn)定顯示“2012”,
約1秒之后再穩(wěn)定顯示“12.21”,如此循環(huán)。

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產(chǎn)生中斷。主程序正常執(zhí)行時,P0口的8個LED單燈左移。
當進入中斷狀態(tài)時,P0口的8個LED將變成單燈右移,3個循環(huán)后,恢復中斷前的狀態(tài),
即繼續(xù)執(zhí)行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、功能要求:用 產(chǎn)生中斷,主程序正常執(zhí)行時,數(shù)碼管循環(huán)顯示“0~9”,
每0.5S增加1。當進入中斷狀態(tài)時,數(shù)碼管循環(huán)顯示“9~0”,
每0.5S減少1,一圈之后恢復中斷前的狀態(tài)。

       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
關(guān)閉窗口

相關(guān)文章