Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; 7SEG.asm
- ;
- INDF EQU 0x00 ; Indirect File Reg. Address
- STATUS EQU 0x03 ; Status Register
- FSR EQU 0x04 ; File Select Register
- PORTA EQU 0x05
- PORTB EQU 0x06
- TRISA EQU 0x85
- TRISB EQU 0x86
- ;===================== STATUS BITS =====================;
- C EQU 0x0 ; Carry Flag
- DC EQU 0x1 ; Digit Carry Flag
- Z EQU 0x2 ; Zero Flag
- PD EQU 0x3 ; Power Down Bit
- TO EQU 0x4 ; WDT Time-out Bit
- RP0 EQU 0x5 ; Bank Select
- RP1 EQU 0x6 ; Bank Select, unused
- IRP EQU 0x7 ; Unused
- ;===================== DISPLAY PARAM ====================;
- BANR_P EQU 0x10 ; MEM addr banner is stored
- DISP_N EQU 0x1A ; holding 7-seg display no
- SIZE EQU 0x1E ; a counter constant
- BANR_I EQU 0x1F ; counter $_$
- ;===================== DELAY PARAM ======================;
- DLY_N1 EQU 0x1B
- DLY_N2 EQU 0x1C
- DLY_N3 EQU 0x1D ; UNUSED
- ;========================================================;
- __CONFIG 0x3FF2
- ORG 0x00 ; Reset vector
- GOTO START
- ORG 0x04
- RETFIE
- START
- BSF STATUS,RP0 ; Select Bank 1
- BCF STATUS,RP1 ;
- CLRF TRISA ; PORTA: OUTP ONLY
- CLRF TRISB ; PORTB: OUTP ONLY
- BCF STATUS,RP0 ; SELECT BANK 0
- ; PARAMS FOR TIME DELAY
- ;MOVLW 0x60
- CLRF DLY_N1
- CLRF DLY_N2
- CLRF DLY_N3
- ; The Banner
- B_INIT
- ; Message goes here.
- ; This is the original message content.
- ;MOVLW B'11000000' ; '0'
- ;MOVWF BANR_P
- ;MOVLW B'11111001' ; '1'
- ;MOVWF BANR_P+1
- ;MOVLW B'10100100' ; '2'
- ;MOVWF BANR_P+2
- ;MOVLW B'10110000' ; '3'
- ;MOVWF BANR_P+3
- MOVLW B'10101011' ; N
- MOVWF BANR_P
- MOVLW B'10100011' ; o
- MOVWF BANR_P+1
- MOVLW B'01111111' ; .
- MOVWF BANR_P+2
- MOVLW B'11111111' ;
- MOVWF BANR_P+3
- MOVLW B'10010010' ; S
- MOVWF BANR_P+4
- MOVLW B'10000111' ; t
- MOVWF BANR_P+5
- MOVLW B'10100011' ; o
- MOVWF BANR_P+6
- MOVLW B'10001100' ; p
- MOVWF BANR_P+7
- ; INITIALIZATION FOR 7-SEG DISPLAY
- LOOP1
- MOVLW 0x02
- MOVWF SIZE
- MOVLW BANR_P
- ;MOVWF FSR
- MOVLW 0XFF
- MOVWF BANR_I
- MOVWF DLY_N3
- LOOP2
- LOOP3
- ; Keep running this loop to give the illusion
- ; of a static display. Use BANR_I and DLY_N3 as
- ; counters to help time delay.
- L_DISP4
- MOVLW B'10111'
- MOVWF PORTA
- MOVF BANR_P,W
- MOVWF PORTB
- CALL S_DLY
- ;INCF FSR
- L_DISP3
- MOVLW B'11011'
- MOVWF PORTA
- MOVF BANR_P+1,W
- MOVWF PORTB
- CALL S_DLY
- ;INCF FSR
- L_DISP2
- MOVLW B'11101'
- MOVWF PORTA
- MOVF BANR_P+2,W
- MOVWF PORTB
- CALL S_DLY
- L_DISP1
- MOVLW B'11110'
- MOVWF PORTA
- MOVF BANR_P+3,W
- MOVWF PORTB
- CALL S_DLY
- ;GOTO
- DECFSZ BANR_I
- GOTO LOOP2
- DECFSZ DLY_N3
- GOTO LOOP3
- ;MOVLW 4
- ;ADDWF FSR
- ;DECFSZ SIZE
- ;GOTO L_DISP4
- ;GOTO LOOP1
- MOOP1
- ; Exactly the same as the first four assignments,
- ; but intended for the second circuit of letters...
- ; aka the 'stop' portion of the board.
- ;MOVLW 0x02
- ;MOVWF SIZE
- MOVLW BANR_P
- ADDWF 4
- ;MOVWF FSR
- MOVLW 0XFF
- MOVWF BANR_I
- MOVWF DLY_N3
- MOOP2
- MOOP3
- ; Keep running this loop to give the illusion
- ; of a static display. Use BANR_I and DLY_N3 as
- ; counters to help time delay.
- M_DISP4
- MOVLW B'10111'
- MOVWF PORTA
- MOVF BANR_P+4,W
- MOVWF PORTB
- CALL S_DLY
- ;INCF FSR
- M_DISP3
- MOVLW B'11011'
- MOVWF PORTA
- MOVF BANR_P+5,W
- MOVWF PORTB
- CALL S_DLY
- ;INCF FSR
- M_DISP2
- MOVLW B'11101'
- MOVWF PORTA
- MOVF BANR_P+6,W
- MOVWF PORTB
- CALL S_DLY
- ;INCF FSR
- M_DISP1
- MOVLW B'11110'
- MOVWF PORTA
- MOVF BANR_P+7,W
- MOVWF PORTB
- CALL S_DLY
- ;INCF FSR
- ;GOTO
- DECFSZ BANR_I
- GOTO MOOP2
- DECFSZ DLY_N3
- GOTO MOOP3
- GOTO LOOP1
- S_DLY
- MOVLW 0X40
- MOVWF DLY_N1
- DECFSZ DLY_N1
- GOTO $-1
- ;DECFSZ DLY_N2
- ; GOTO $-5
- ;DECFSZ DLY_N3
- ; GOTO $-7
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement