专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

花样流水灯的设计4(单片机-汇编)

作者:佚名   来源:本站原创   点击数:  更新时间:2012年12月20日   【字体:
;This program will show you cycle glitter between 8 led lamps
;     maker:Chen Weiwu
;     date:2012-11-08
;     version:1.0.0
;-------------------------------------------------------------
;Define
Ledprt     equ          p0
SegDisplay   equ          p2
Button     equ        p1
ButtonState   equ        30h
;----------------------
;Set the initiation address which the program runing
;----------------------
        org        0
        ajmp       main
;-----------------------      
Cycle:
        mov        a,#low(Tables)
        add        a,r1
        mov        dpl,a
        clr        a
        addc       a,#high(Tables)
        mov        dph,a
        ;----------------------           Get Table's Address
        clr        a
        movc       a,@a+dptr
        mov        r1,a 
        mov        a,#1
        movc       a,@a+dptr
        mov        dpl,a
        mov        dph,r1         
        ;----------------------
        clr        a
        movc       a,@a+dptr           ;Get the count of data in table
        mov        r0,a
        inc        dptr
        ;----------------------
        mov        ButtonState,button    ;Save button
Loop:                    
        mov        a,button
        cjne       a,ButtonState,ExitCycle  ;Buttion is change
        clr        a
        movc       a,@a+dptr
        mov         Ledprt,a
        acall       delay
        inc        dptr
        djnz       r0,Loop
ExitCycle:
        ret
;-----------------------
;-----------------------
;delay sub
delay:     mov        r5,#50
delay1:     mov        r6,#100
DELAY2:     mov        r7,#10
        djnz       r7,$
        djnz       r6,delay2
        djnz       r5,delay1
        ret
;-----------------------
ButtonTable:
        ;--------ONE BUTTON--------
        db        11111110B
        DB        11111101B
        db        11111011B
        DB        11110111B
        ;--------TWO BUTTON--------
        DB        11111100B
        db        11111010B
        DB        11110110B
        DB        11111001B
        db        11110101B
        DB        11110011B
        ;-------THREE BUTTON-------
        DB        11111000B
        DB        11110100B
        DB        11110010B
        DB        11110001B
        ;-------FOUR BUTTON-------
        DB        11110000B
        DB        0
        
;-----------------------
Tables:     dw        Table1,Table2,Table3,Table4
        dw        Table5,Table6,Table7,Table8,Table9,Table10
        dw        Table11,Table12,Table13,Table14
        dw        Table15
        dw        0
;-----------------------
Table1:     db        Table2-$-1
        db        11101111b
        db        11011111b
        db        10111111b
        db        01111111b
        db        11111110b
        db        11111101b
        db        11111011b
        db        11110111b
        db        11111011b
        db        11111101b
        db        11111110b
        db        01111111b
        db        10111111b
        db        11011111b
        
Table2:     db        Table3-$-1
        db        01111110b
        db        10111101b
        db        11011011b
        db        11100111b
        db        11011011b
        db        10111101b
                
Table3:     db        Table4-$-1   
        db        01010101b
        db        00000000b
        db        10101010b
        db        00000000b 
                
Table4:     db        Table5-$-1
        db        11111110b
        db        11111100b
        db        11111000b
        db        11110000b
        db        11100000b
        db        11000000b
        db        10000000b
        db        00000000b         
        db        00000001b
        db        00000011b
        db        00001111b
        db        00011111b
        db        00111111b
        db        01111111b
        db        11111111b                      
Table5:     db        Table6-$-1   
        db        00000000b
        db        11111111b
Table6:     db        Table7-$-1   
        db        00001111b
        db        00011110b
        db        00111100b
        db        01111000b
        db        11110000b
        db        01111111b
        db        00111111b
        db        00011111b        
Table7:     db        Table8-$-1   
        db        00110110b
        db        01010110b
        db        01100110b
        db        01101010b
        db        01101100b
        db        01101010b
        db        01100110b
        db        01010110b 
Table8:     db        Table9-$-1
        db        01110111b
        db        10110111b
        db        11010111b
        db        11100111b
        db        11101011b
        db        11101101b
        db        11101110b
        db        11101101b
        db        11101011b
        db        11100111b
        db        11010111b
        db        10110111b
        
Table9:     db        Table10-$-1   
        db        11100111b
        db        11000011b
        db        10100101b
        db        01100110b      
Table10:    db        Table11-$-1   
        db        01111111b
        db        10111111b
        db        11011111b
        db        11101111b
        db        11110111b
        db        11111011b
        db        11111101b
        db        11111110b
        db        01111110b
        db        10111110b
        db        11011110b
        db        11101110b
        db        11110110b
        db        11111010b
        db        11111100b
        db        01111100b
        db        10111100b
        db        11011100b
        db        11101100b
        db        11110100b
        db        11111000b
        db        01111000b
        db        10111000b
        db        11011000b
        db        11101000b
        db        11110000b
        db        01110000b
        db        10110000b
        db        11010000b
        db        11100000b
        db        01100000b
        db        10100000b
        db        11000000b
        db        01000000b
        db        10000000b
        db        10000000b
        db        10000000b                
        db        01000000b
        db        11000000b
        db        10100000b
        db        01100000b
        db        11100000b
        db        11010000b
        db        10110000b
        db        01110000b
        db        11110000b
        db        11101000b
        db        11011000b
        db        10111000b
        db        01111000b
        db        11111000b
        db        11110100b
        db        11101100b
        db        11011100b
        db        10111100b
        db        01111100b
        db        11111100b
        db        11111010b
        db        11110110b
        db        11101110b
        db        11011110b
        db        10111110b
        db        01111110b
        db        11111110b
        db        11111101b
        db        11111011b
        db        11110111b
        db        11101111b
        db        11011111b
        db        10111111b
        db        01111111b
        db        11111111b
        db        11111111b
        db        11111111b 
        db        11111111b
        db        11111111b
        db        11111111b
        db        11111111b
        db        11111111b
        db        11111111b 
        db        11111111b
        db        11111111b
        db        11111111b                      
Table11:    db        Table12-$-1   
        db        11111110b
        db        01111111b
        db        11111101b
        db        10111111b
        db        11111011b
        db        11011111b
        db        11110111b
        db        11101111b
        db        11110111b
        db        11101111b        
        db        11111011b
        db        11011111b
        db        11111101b
        db        10111111b
Table12:    db        Table13-$-1   
        db        00111100b
        db        11111111b
        db        11100111b
        db        11111111b
        db        11011011b
        db        11011011b
        db        11011011b
        db        11011011b        
Table13:    db        Table14-$-1   
        db        01111110b
        db        11111111b
        db        10111101b
        db        11111111b
        db        10111101b
        db        11111111b
        db        11011011b
        db        11111111b
        db        11011011b
        db        11111111b
        db        11011011b
        db        11111111b
        db        11100111b
        db        11111111b
        db        11100111b
        db        11111111b
        db        11100111b
        db        11111111b
        db        11100111b
        db        11111111b
        db        00000000b
Table14:    db        Table15-$-1   
        db        11111110b
        db        11111100b
        db        11111010b
        db        11110100b
        db        11101100b
        db        11011010b
        db        10111010b 
        db        01110101b
        db        01110101b
        db        01101101b
        db        01101101b
        db        01011011b
        db        01011011b
        db        00111011b
        db        00111011b
        db        00110111b
        db        00110111b
        db        00110111b
        db        00110111b
        db        00101111b
        db        00101111b
        db        00101111b
        db        00101111b
        db        00011111b
        db        00011111b
        db        00011111b
        db        00011111b
        db        00011111b
        db        00011111b
        
Table15:    db        TableEnd-$-1   
        db        01111110b
        db        10111110b
        db        11011101b
        db        11101101b
        db        11110011b
        db        11101101b
        db        11011101b
        db        10111110b                
        
TableEnd:
;-----------------------
main: 
        mov        Ledprt,#11111111B         
        mov        r2,#0
        mov        SegDisplay,#00H      ;Initiate the SegDisplay
        MOV        DPTR,#ButtonTable
ToNext:
        inc        r2            ;Button Number
        CLR        A
        MOVC       A,@A+DPTR
        JZ        MAIN
        INC        DPTR
        cjne       a,button,ToNext      ;Check whether the button is enable or not
        mov        SegDisplay,r2       ;button is enable,Show on the SegDisplay
        mov        a,r2
        rl        a
        clr        c
        subb       a,#2           ;Location in the Tables
        mov        r1,a
        acall       Cycle    
        ajmp       Main
;-----------------------
        end
;-------------------------------------------------------------
关闭窗口

相关文章