Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;==============================================================================
- ;
- ; Lab 5
- ; SEG7.asm
- ;
- ; Displays a message onto 7-segment LED displays.
- ;
- ;==============================================================================
- ; Assign components of the training board into the
- ; assembly program.
- INDF EQU 0X00
- STATUS EQU 0X03 ; Status register
- FSR EQU 0X04
- PORTA EQU 0X05
- PORTB EQU 0X06
- PORTC EQU 0X07
- PORTD EQU 0X08
- PORTE EQU 0X09
- TRISA EQU 0X85
- TRISB EQU 0X86
- TRISC EQU 0X87
- TRISD EQU 0X88
- ;======================= STATUS Bits ==========================================
- ; Components of the status register to be used.
- ; Intended for bank selection.
- 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 ; Watch Dog Time out Bit
- RP0 EQU 0X5 ; Bank Select
- RP1 EQU 0X6 ; Bank Select, Unused
- IRP EQU 0X7 ; Unused
- ;======================= BANNER ===============================================
- BANNER EQU 0X70
- BAN_I EQU 0x20 ; 0-(BAN_SZ-1)
- CNT_LP1 EQU 0X21
- ;======================== TIMER ================================================
- TMP1 EQU 0X7F
- TMP2 EQU 0X7E
- TMP3 EQU 0X7D
- ;==============================================================================
- __CONFIG 0X3FF2 ;
- ORG 0X00 ; RESET VECTOR
- GOTO START
- ORG 0X04 ; INTERRUPT VECTOR
- RETFIE
- START
- ; Creating banner
- ; Assign banner to
- ; general registers
- MOVLW 0X11 ; 'A'
- MOVWF BANNER
- MOVLW 0X00 ; 'B'
- MOVWF BANNER+1
- MOVLW 0X63 ; 'C'
- MOVWF BANNER+2
- MOVLW 0X85 ; 'D'
- MOVWF BANNER+3
- MOVLW 0X61 ; 'E'
- MOVWF BANNER+4
- MOVLW 0X71 ; 'F'
- MOVWF BANNER+5
- MOVLW 0X09 ; 'G'
- MOVWF BANNER+6
- MOVLW 0X91 ; 'H'
- MOVWF BANNER+7
- MOVLW 0X11 ; 'A'
- MOVWF BANNER+8
- MOVLW 0X00 ; 'B'
- MOVWF BANNER+9
- MOVLW 0X63 ; 'C'
- MOVWF BANNER+D'10'
- MOVLW 0X85 ; 'D'
- MOVWF BANNER+D'11'
- ; configuring PORTA & PORTB
- BSF STATUS,RP0 ;
- BCF STATUS,RP1 ; Select Bank 1
- CLRF TRISA ; PORTA is config'd to output only
- CLRF TRISB ; PORTB is config'd to output only
- CLRF TRISC ; ~NEW!~ PORTC is config'd now
- CLRF TRISD ; ~NEW!~ PORTD is config'd too
- BCF STATUS,RP0 ; Select Bank 0
- MOVLW 0XFF
- MOVWF PORTB ; all off
- MOVWF PORTA ; turn off DIS4-1
- MOVWF PORTC ; yes
- MOVWF PORTD ; likewise
- ;INCF PORTA ; for testing
- ; Display banner on the 7-seg
- LOOP1
- MOVLW 8
- MOVWF CNT_LP1 ; Assign loop counter
- CLRF BAN_I
- LOOP2
- MOVLW BANNER
- ADDWF BAN_I,W
- MOVWF FSR
- MOVF INDF,W
- MOVWF PORTB ; send a character to 7-SEG
- MOVLW 0XFE ;
- MOVWF PORTA ; turn on #1 7-SEG (DIS1)
- ;CALL DLY_1S
- INCF FSR
- MOVF INDF,W
- MOVWF PORTB ; send a character to 7-SEG
- MOVLW 0XFD ;
- MOVWF PORTA ; turn on #2 7-SEG (DIS2)
- ;CALL DLY_1S
- INCF FSR
- MOVF INDF,W
- MOVWF PORTB ; send a character to 7-SEG
- MOVLW 0XFB ;
- MOVWF PORTA ; turn on #3 7-SEG (DIS3)
- ;CALL DLY_1S
- INCF FSR
- MOVF INDF,W
- MOVWF PORTC ; send a character to 7-SEG
- MOVLW 0XF7 ;
- MOVWF PORTD ; turn on #4 7-SEG (DIS4)
- ;CALL DLY_1S
- INCF BAN_I
- DECFSZ CNT_LP1
- GOTO LOOP2
- GOTO LOOP1 ; loop forever
- GOTO $
- DLY_1S
- MOVLW 26 ; (1)X
- MOVWF TMP1 ; (1)
- LP1 MOVLW 250 ; (1)Y
- MOVWF TMP2 ; (1)
- LP2 MOVLW 255 ; (1)Z
- MOVWF TMP3 ;
- LP3 DECFSZ TMP3,F ; (1)(2)
- GOTO LP3 ; (2)
- DECFSZ TMP2,F ; (1)(2)
- GOTO LP2 ; (2)
- DECFSZ TMP1,F ; (1)(2)
- GOTO LP1 ; (2)
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement