Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "p18F4520.inc"
- CONFIG OSC = HS
- CONFIG PWRT = OFF
- CONFIG WDT = OFF
- CONFIG PBADEN = OFF
- CONFIG LVP = OFF
- org 0x000000
- PORST GOTO MAIN
- org 0x000020
- ;*****SUBRUTINER*****
- COUNTER equ 0x4
- ANTALB equ 0x5
- ;----Quick DELAY------------------
- IDONCE equ 0x7
- QDELAY MOVLW 0x11
- MOVWF IDONCE
- QLOOP DECFSZ IDONCE
- GOTO QLOOP
- RETURN
- ;----END OF QUICK DELAY------------------
- ;*****100K LOOP****
- R1 EQU 0x1
- R2 EQU 0x2
- R3 EQU 0x3
- COUNT1 EQU D'20' ; Ändra här för mer delay
- COUNT2 EQU D'100'
- COUNT3 EQU D'10'
- DELAY MOVLW 0x55
- MOVLW COUNT3
- MOVWF R3
- LAP3 MOVLW COUNT2
- MOVWF R2
- LAP2 MOVLW COUNT1
- MOVWF R1
- LAP1 CALL LGHTSHW
- DECF R1,F
- BNZ LAP1
- DECF R2,F
- BNZ LAP2
- DECF R3,F
- BNZ LAP3
- RETURN
- ;******
- ;*****Initialize 8x8 display 7-segment*******
- LEDINIT CLRF TRISD ; PORTD output
- BCF TRISC,0 ; Port C0 = output. CS1
- MOVLW 0xD1 ; Bit 5,3,2 och 1 = 0
- MOVWF TRISA ; Port A5, A3, A2 och A1 = output. CS5-8
- MOVLW 0xF8 ; Bit 2,1 och 0 = 0
- MOVWF TRISE ; Port E2, E1 och E0 = output. CS 2-4
- CLRF PORTD ; Nollställer alla portvärden
- CLRF PORTA
- CLRF PORTE
- BCF PORTC,0
- RETURN
- ;********Initializing complete**********
- ;*****Lägger in olika siffror för displayen i vissa adresser****
- LDECHARS LFSR 0,0x020 ; FSR0 pekar på 0x020
- MOVLW b'01010000' ; lilla R
- MOVWF POSTINC0 ; ..i 0x020 och öka pointern
- MOVLW b'01011100' ; lilla O
- MOVWF POSTINC0 ; ..i 0x021 och öka pointern
- MOVLW b'01011100' ; lilla O
- MOVWF POSTINC0 ; ..i 0x022 och öka pointern
- MOVLW b'01101101' ; stora S
- MOVWF INDF0 ; ..i 0x023
- LFSR 0,0x020 ; Pekar från början igen
- RETURN
- ; ******** Siffer INIT complete **********
- ;**************Bokstäver för intern LOOP
- LDICHARS LFSR 1,0x030 ; FSR0 pekar på 0x020
- MOVLW b'01010000' ; lilla R
- MOVWF POSTINC1 ; ..i 0x020 och öka pointern
- MOVLW b'01011100' ; lilla O
- MOVWF POSTINC1 ; ..i 0x021 och öka pointern
- MOVLW b'01011100' ; lilla O
- MOVWF POSTINC1 ; ..i 0x022 och öka pointern
- MOVLW b'01101101' ; stora S
- MOVWF INDF1 ; ..i 0x023
- LFSR 0,0x030 ; Pekar från början igen
- RETURN
- ;***********Ladda Lampkombination i FSR2*************
- LDLGHTS LFSR 2,0x040
- MOVLW b'00000001'
- MOVWF POSTINC2 ; 0x040
- MOVLW b'00000010'
- MOVWF POSTINC2 ; 0x041
- MOVLW b'00000100'
- MOVWF POSTINC2 ; 0x042
- MOVLW b'00001000'
- MOVWF POSTINC2 ; 0x043
- MOVLW b'00010000'
- MOVWF POSTINC2 ; 0x044
- MOVLW b'00100000'
- MOVWF POSTINC2 ; 0x045
- MOVLW b'01000000'
- MOVWF POSTINC2 ; 0x046
- MOVLW b'10000000'
- MOVWF POSTINC2 ; 0x047
- ; Första bokstaven på plats
- MOVLW b'10000001'
- MOVWF POSTINC2 ; 0x047
- MOVLW b'10000010'
- MOVWF POSTINC2 ; 0x048
- MOVLW b'10000100'
- MOVWF POSTINC2 ; 0x049
- MOVLW b'10001000'
- MOVWF POSTINC2 ; 0x04A
- MOVLW b'10010000'
- MOVWF POSTINC2 ; 0x04B
- MOVLW b'10100000'
- MOVWF POSTINC2 ; 0x04C
- MOVLW b'11000000'
- MOVWF POSTINC2 ; 0x04D
- ; Andra bokstaven på plats
- MOVLW b'11000001'
- MOVWF POSTINC2 ; 0x04D
- MOVLW b'11000010'
- MOVWF POSTINC2 ; 0x04E
- MOVLW b'11000100'
- MOVWF POSTINC2 ; 0x04F
- MOVLW b'11001000'
- MOVWF POSTINC2 ; 0x050
- MOVLW b'11010000'
- MOVLW b'11100000'
- MOVWF POSTINC2 ; 0x052
- ; Tredje bokstaven på plats
- MOVWF POSTINC2 ; 0x051
- MOVLW b'11100001'
- MOVWF POSTINC2 ; 0x052
- MOVLW b'11100010'
- MOVWF POSTINC2 ; 0x053
- MOVLW b'11100100'
- MOVWF POSTINC2 ; 0x054
- MOVLW b'11101000'
- MOVWF POSTINC2 ; 0x055
- MOVLW b'11110000'
- MOVWF POSTINC2 ; 0x056
- LFSR 2, 0x040 ; Pekar på början igen
- RETURN
- ;************LADDAT LAMPKOMBINATIONERNA****************
- ;******************************************************
- ;******Vilka ska lysa**********************
- LGHTSHW LFSR 1, 0x030
- BTFSC INDF2,0
- CALL LAMP1
- BTFSC INDF2,1
- CALL LAMP2
- BTFSC INDF2,2
- CALL LAMP3
- BTFSC INDF2,3
- CALL LAMP4
- BTFSC INDF2,4
- CALL LAMP5
- BTFSC INDF2,5
- CALL LAMP6
- BTFSC INDF2,6
- CALL LAMP7
- BTFSC INDF2,7
- CALL LAMP8
- RETURN
- ; ******* SLUT PÅ LJUS *********
- LAMP1 BSF PORTA,1
- CALL QDELAY
- BCF PORTA,1
- GOTO SLUT
- LAMP2 BSF PORTA,2
- CALL QDELAY
- BCF PORTA,2
- GOTO SLUT
- LAMP3 BSF PORTA,3
- CALL QDELAY
- BCF PORTA,3
- GOTO SLUT
- LAMP4 BSF PORTA,5
- CALL QDELAY
- BCF PORTA,5
- GOTO SLUT
- LAMP5 BSF PORTE,0
- CALL QDELAY
- BCF PORTE,0
- MOVFF INDF0,PORTD
- GOTO SLUT
- LAMP6 MOVLW 0x02
- BTFSC ANTALB,5
- MOVFF PLUSW1,PORTD
- BSF PORTE,1
- CALL QDELAY
- BCF PORTE,1
- MOVFF INDF0,PORTD
- GOTO SLUT
- LAMP7 MOVLW 0x01
- BTFSC ANTALB,6
- MOVFF PLUSW1,PORTD
- BSF PORTE,2
- CALL QDELAY
- BCF PORTE,2
- MOVFF INDF0,PORTD
- GOTO SLUT
- LAMP8 MOVFF INDF1,PORTD
- BSF PORTC,0
- CALL QDELAY
- BCF PORTC,0
- MOVFF INDF0,PORTD
- SLUT RETURN
- ;****************************************************************
- ;*******************Första bokstaven*****************************
- ;****************************************************************
- FIRST MOVFF INDF0, PORTD
- MOVLW 0x08 ; 8..
- MOVWF COUNTER ; ..till räknaren
- LOOP CALL DELAY ; Tändlamporna ett tag
- MOVF POSTINC2,0 ; Egentligen bara peka vidare
- DECF COUNTER ; Räkna ner
- BNZ LOOP ; Igen om inte 0 på räknaren
- RETURN
- ;********************* ANDRA************************************
- SECOND BSF ANTALB,7 ; Bokstav 1 klar, check
- MOVFF PREINC0, PORTD ; Nästa bokstav laddas
- MOVLW 0x07 ; 7..
- MOVWF COUNTER ; ..till räknaren
- LOOP2 MOVFF INDF0,PORTD ; Bokstaven o börjar alltid
- CALL DELAY ; Tändlamporna ett tag
- MOVF POSTINC2,0 ; Egentligen bara peka vidare
- DECF COUNTER ; Räkna ner
- BNZ LOOP2 ; Igen om inte 0 på räknaren
- MOVLW 0x01
- MOVFF INDF0, PLUSW1 ; Laddar o till interna
- RETURN
- ;***************************************************************
- ;*************************;Tredje*******************************
- THIRD BSF ANTALB,6 ; Bokstav 2 klar, check
- MOVFF PREINC0, PORTD ; Nästa bokstav laddas
- MOVLW 0x06 ; 6..
- MOVWF COUNTER ; ..till räknaren
- LOOP3 MOVFF INDF0,PORTD ; Bokstaven o börjar alltd
- CALL DELAY ; Tändlamporna ett tag
- MOVF POSTINC2,0 ; Egentligen bara peka vidare
- DECF COUNTER ; Räkna ner
- BNZ LOOP3 ; Igen om inte räknaren om 0
- MOVLW 0x02
- MOVFF INDF0, PLUSW1 ; Laddar o till interna
- RETURN
- ;*************************************************************
- ;****************************************Fjärde***************
- FOURTH BSF ANTALB,5 ; Bokstav 3 klar, check
- MOVFF PREINC0, PORTD ; Nästa bokstav laddas
- MOVLW 0x05 ; 5 varv..
- MOVWF COUNTER ; ..till räknaren
- LOOP4 MOVFF INDF0,PORTD ; Bokstaven S börjar alltid
- CALL DELAY ; Tändlamporna ett tag
- MOVF POSTINC2,0 ; Egentligen bara peka vidare
- DECF COUNTER ; Räkna ner
- BNZ LOOP4 ; Klar vid 0
- RETURN
- ;***********************************
- MAIN CALL LEDINIT ;Display
- CALL LDECHARS ;Bokstäver
- CALL LDICHARS ; Interna bokstäver
- CALL LDLGHTS ;Ljuskombinationer
- CLRF ANTALB
- hehe CALL FIRST
- CALL SECOND
- CALL THIRD
- CALL FOURTH
- LOL GOTO LOL
- END
Advertisement