#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
Comments
0 B
|0 👍
/0 👎
0 B
|👍
/👎