專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)交通燈實(shí)驗(yàn)匯編語(yǔ)言程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月13日   【字體:

    經(jīng)過(guò)幾天的整理,終于將網(wǎng)絡(luò)上得到交通燈仿真文件,用匯編自己編寫(xiě)了一個(gè)程序,實(shí)驗(yàn)結(jié)果完全符合本人的思路,實(shí)驗(yàn)成功。
    程序比較長(zhǎng),估計(jì)還會(huì)用更好的辦法重新寫(xiě)。
    編寫(xiě)心得是:?jiǎn)纹瑱C(jī)編程,不一定要背指令,用時(shí)可以查,也不必去默寫(xiě)子程序,用時(shí)還是可以查,但是,很關(guān)鍵的就是,你的程序,你自己要清楚整個(gè)的執(zhí)行過(guò)程,也就是單片機(jī)的執(zhí)行流程。而在實(shí)際的應(yīng)用中,要注意驅(qū)動(dòng)電路的設(shè)計(jì),特別是單片機(jī)上電復(fù)位輸出高電平可能造成的影響。


程序如下:如果網(wǎng)頁(yè)顯示格式錯(cuò)亂可從http://www.torrancerestoration.com/f/jtda.rar處下載.

         ORG 0000H
START:
          MOV R2,#30
SU0:    MOV P0,#00H
        MOV P1,#00H
        MOV P2,#00H
        MOV P3,#00111111B
      MOV A,R2
        MOV R4,A
        MOV A,R4
        MOV R0,A
        MOV B,#5
        DIV AB
        MOV B,#3
        MUL AB
        MOV R1,A
        SETB P0.4
        SETB P0.7
        SETB P2.2
        SETB P2.5
        AJMP KEY
SU1A:   DEC R0
        DEC R1
SUL5:   CJNE R1,#5,SUL6
    SETB P2.7
SUL6:   CJNE R1,#4,SUL7
    SETB P2.7
SUL7:   CJNE R1,#3,SUL1
    SETB P2.7
SUL1:   CJNE R1,#2,SUL2
    SETB P2.7
SUL2:   CJNE R1,#1,SUL3
    SETB P2.7
SUL3:   CJNE R1,#0,SUL4        
        MOV A,R0
        MOV R1,A
    CLR P2.5
        CLR P0.7
        SETB P0.5
        SETB P2.4
SUL4:   CJNE R0,#0,KEY
        AJMP SU0B        
KEY:  
   JB P3.5,KEY1
       LCALL DELAY
       MOV R2,#45
KEY1:  JB P3.2,KEY2
       LCALL DELAY
       MOV R2,#60
KEY2:  JB P3.3,KEY3
       LCALL DELAY
       MOV A,R2
       ADD A,#5
       MOV R2,A
       CJNE R2,#95,DD
       MOV R2,#95
KEY3:  JB P3.4,DD
       LCALL DELAY
       MOV A,R2
       SUBB A,#5
       MOV R2,A
       CJNE R2,#0,DD
       MOV R2,#0
DD:    MOV R3,#50              ;數(shù)碼1
DD1:  
   MOV P1,#00H
   MOV A,R0
       MOV B,#10
       DIV AB
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.0
       LCALL DELAY1
       CLR P0.0
       MOV A,B
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.1
       LCALL DELAY1
       CLR P0.1              ;數(shù)碼2
       MOV A,R1
       MOV B,#10
       DIV AB
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.2
       LCALL DELAY1
       CLR P0.2
       MOV A,B
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.3
       LCALL DELAY1
       CLR P0.3              ;數(shù)碼3
       MOV A,R2
       MOV B,#10
       DIV AB
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P3.6
       LCALL DELAY1
       CLR P3.6
       MOV A,B
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P3.7
       LCALL DELAY1
       CLR P3.7
       DEC R3
   CJNE R3,#25,SUL11
   CLR P2.7
SUL11:
       CJNE R3,#0,DD1
       AJMP SU1A
SU0B:     MOV P2,#00H
          CLR P0.4
          MOV A,R4
          MOV R1,A
          MOV B,#5
          DIV AB
          MOV B,#3
          MUL AB
          MOV R0,A
          SETB P0.6
          SETB P2.1
          SETB P2.6
          AJMP LKEY
SU1B:          DEC R0
               DEC R1
SUL44:     CJNE R0,#5,SUL45
       SETB P2.3
SUL45:     CJNE R0,#4,SUL46
       SETB P2.3
SUL46:         CJNE R0,#3,SUL40
       SETB P2.3
SUL40:     CJNE R0,#2,SUL41
       SETB P2.3
SUL41:     CJNE R0,#1,SUL42
       SETB P2.3
SUL42:     CJNE R0,#0,SUL43    
               CLR P0.6
     CLR P2.1
               SETB P0.4
               SETB P2.0
               MOV A,R1
               MOV R0,A
SUL43:         CJNE R1,#0,LKEY
               AJMP SU0
LKEY:  ;CLR P2.3
   JB P3.5,LKEY1
       LCALL DELAY
       MOV R2,#45
LKEY1: JB P3.2,LKEY2
       LCALL DELAY
       MOV R2,#60
LKEY2: JB P3.3,LKEY3
       LCALL DELAY
       MOV A,R2
       ADD A,#5
       MOV R2,A
       CJNE R2,#95,LDD
       MOV R2,#95
LKEY3: JB P3.4,LDD
       LCALL DELAY
       MOV A,R2
       SUBB A,#5
       MOV R2,A
       CJNE R2,#0,LDD
       MOV R2,#0
   AJMP LDD
LDD:    MOV R3,#50              ;數(shù)碼1
LDD1:   MOV P1,#00H
       MOV A,R0
       MOV B,#10
       DIV AB
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.0
       LCALL DELAY1
       CLR P0.0
       MOV A,B
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.1
       LCALL DELAY1
       CLR P0.1              ;數(shù)碼2
       MOV A,R1
       MOV B,#10
       DIV AB
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.2
       LCALL DELAY1
       CLR P0.2
       MOV A,B
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P0.3
       LCALL DELAY1
       CLR P0.3              ;數(shù)碼3
       MOV A,R2
       MOV B,#10
       DIV AB
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P3.6
       LCALL DELAY1
       CLR P3.6
       MOV A,B
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P1,A
       SETB P3.7
       LCALL DELAY1
       CLR P3.7
       DEC R3
       CJNE R3,#25,SUL10
       CLR P2.3
SUL10:      
       CJNE R3,#0,LDD1
       AJMP SU1B
        
TAB:
    DB  0C0H        ;"0"
    DB  0F9H        ;"1"
    DB  0A4H        ;"2"
    DB  0B0H        ;"3"
    DB   99H        ;"4"
    DB   92H        ;"5"
    DB   82H        ;"6"
    DB  0F8H        ;"7"
    DB   80H        ;"8"
    DB   90H        ;"9"
DELAY:
       MOV R5,#100
L3:    MOV R6,#100
L1:    MOV R7,#6
L2:    DJNZ R7,L2
       DJNZ R6,L1
       DJNZ R5,L3
       RET
DELAY1:
       MOV R7,#30
D1:    MOV R6,#10
D2:    DJNZ R6,D2
       DJNZ R7,D1
       RET
END
 

關(guān)閉窗口

相關(guān)文章