Advertisement
Madotsuki

LAB5.ASM

Mar 18th, 2014
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;==============================================================================
  2. ;
  3. ; Lab 5
  4. ; SEG7.asm
  5. ;
  6. ; Displays a message onto 7-segment LED displays.
  7. ;
  8. ;==============================================================================
  9.  
  10. ; Assign components of the training board into the
  11. ; assembly program.
  12.  
  13. INDF    EQU         0X00
  14. STATUS  EQU         0X03            ; Status register
  15. FSR     EQU         0X04
  16. PORTA   EQU         0X05
  17. PORTB   EQU         0X06
  18. PORTC   EQU         0X07
  19. PORTD   EQU         0X08
  20. PORTE   EQU         0X09
  21. TRISA   EQU         0X85
  22. TRISB   EQU         0X86
  23. TRISC   EQU         0X87
  24. TRISD   EQU         0X88
  25.  
  26. ;======================= STATUS Bits ==========================================
  27. ; Components of the status register to be used.
  28. ; Intended for bank selection.
  29.  
  30. C       EQU         0X0             ; Carry Flag
  31. DC      EQU         0X1             ; Digit Carry Flag
  32. Z       EQU         0X2             ; Zero Flag
  33. PD      EQU         0X3             ; Power Down Bit
  34. TO      EQU         0X4             ; Watch Dog Time out Bit
  35. RP0     EQU         0X5             ; Bank Select
  36. RP1     EQU         0X6             ; Bank Select, Unused
  37. IRP     EQU         0X7             ; Unused
  38.  
  39. ;======================= BANNER ===============================================
  40. BANNER  EQU         0X70
  41. BAN_I   EQU         0x20               ; 0-(BAN_SZ-1)
  42. CNT_LP1 EQU         0X21
  43. ;======================== TIMER ================================================
  44. TMP1    EQU         0X7F
  45. TMP2    EQU         0X7E
  46. TMP3    EQU         0X7D
  47. ;==============================================================================
  48.        __CONFIG 0X3FF2              ;
  49.  
  50.         ORG         0X00            ; RESET VECTOR
  51.         GOTO        START
  52.         ORG         0X04            ; INTERRUPT VECTOR
  53.         RETFIE
  54. START
  55.                                     ; Creating banner
  56.                                     ; Assign banner to
  57.                                     ; general registers
  58.  
  59.         MOVLW       0X11            ; 'A'
  60.         MOVWF       BANNER
  61.         MOVLW       0X00            ; 'B'
  62.         MOVWF       BANNER+1
  63.         MOVLW       0X63            ; 'C'
  64.         MOVWF       BANNER+2
  65.         MOVLW       0X85            ; 'D'
  66.         MOVWF       BANNER+3
  67.         MOVLW       0X61            ; 'E'
  68.         MOVWF       BANNER+4
  69.         MOVLW       0X71            ; 'F'
  70.         MOVWF       BANNER+5
  71.         MOVLW       0X09            ; 'G'
  72.         MOVWF       BANNER+6
  73.         MOVLW       0X91            ; 'H'
  74.         MOVWF       BANNER+7
  75.         MOVLW       0X11            ; 'A'
  76.         MOVWF       BANNER+8
  77.         MOVLW       0X00            ; 'B'
  78.         MOVWF       BANNER+9
  79.         MOVLW       0X63            ; 'C'
  80.         MOVWF       BANNER+D'10'
  81.         MOVLW       0X85            ; 'D'
  82.         MOVWF       BANNER+D'11'
  83.  
  84.                                     ; configuring PORTA & PORTB
  85.         BSF         STATUS,RP0      ;
  86.         BCF         STATUS,RP1      ; Select Bank 1
  87.         CLRF        TRISA           ; PORTA is config'd to output only
  88.         CLRF        TRISB           ; PORTB is config'd to output only
  89.         CLRF        TRISC           ; ~NEW!~ PORTC is config'd now
  90.         CLRF        TRISD           ; ~NEW!~ PORTD is config'd too
  91.         BCF         STATUS,RP0      ; Select Bank 0
  92.         MOVLW       0XFF
  93.         MOVWF       PORTB           ; all off
  94.         MOVWF       PORTA           ; turn off DIS4-1
  95.         MOVWF       PORTC           ; yes
  96.         MOVWF       PORTD           ; likewise
  97.         ;INCF        PORTA          ; for testing
  98.  
  99.                                     ; Display banner on the 7-seg
  100. LOOP1
  101.         MOVLW       8
  102.         MOVWF       CNT_LP1         ; Assign loop counter
  103.         CLRF        BAN_I
  104.  
  105. LOOP2
  106.         MOVLW       BANNER
  107.         ADDWF       BAN_I,W
  108.         MOVWF       FSR
  109.         MOVF        INDF,W
  110.         MOVWF       PORTB           ; send a character to 7-SEG
  111.         MOVLW       0XFE            ;
  112.         MOVWF       PORTA           ; turn on #1 7-SEG (DIS1)
  113.         ;CALL        DLY_1S
  114.         INCF        FSR
  115.         MOVF        INDF,W
  116.         MOVWF       PORTB           ; send a character to 7-SEG
  117.         MOVLW       0XFD            ;
  118.         MOVWF       PORTA           ; turn on #2 7-SEG (DIS2)
  119.         ;CALL        DLY_1S
  120.         INCF        FSR
  121.         MOVF        INDF,W
  122.         MOVWF       PORTB           ; send a character to 7-SEG
  123.         MOVLW       0XFB            ;
  124.         MOVWF       PORTA           ; turn on #3 7-SEG (DIS3)
  125.         ;CALL        DLY_1S
  126.         INCF        FSR
  127.         MOVF        INDF,W
  128.         MOVWF       PORTC           ; send a character to 7-SEG
  129.         MOVLW       0XF7            ;
  130.         MOVWF       PORTD           ; turn on #4 7-SEG (DIS4)
  131.         ;CALL        DLY_1S
  132.         INCF        BAN_I
  133.         DECFSZ      CNT_LP1
  134.         GOTO        LOOP2
  135.         GOTO        LOOP1           ; loop forever
  136.  
  137.         GOTO $
  138.  
  139. DLY_1S
  140.         MOVLW       26              ; (1)X
  141.         MOVWF       TMP1            ; (1)
  142. LP1     MOVLW       250             ; (1)Y
  143.         MOVWF       TMP2            ; (1)
  144. LP2     MOVLW       255             ; (1)Z
  145.         MOVWF       TMP3            ;
  146. LP3     DECFSZ      TMP3,F          ; (1)(2)
  147.         GOTO        LP3             ; (2)
  148.         DECFSZ      TMP2,F          ; (1)(2)
  149.         GOTO        LP2             ; (2)
  150.         DECFSZ      TMP1,F          ; (1)(2)
  151.         GOTO        LP1             ; (2)
  152.         RETURN
  153.  
  154.         END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement