miyago

Labb32

Feb 7th, 2018
890
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "p18F4520.inc"
  2.    
  3.     CONFIG OSC = HS
  4.     CONFIG PWRT = OFF
  5.     CONFIG WDT = OFF
  6.     CONFIG PBADEN = OFF
  7.     CONFIG LVP = OFF
  8.    
  9.     org 0x000000
  10.  
  11. PORST   GOTO    MAIN
  12.     org 0x00020
  13.  
  14. ;******* TABLE POINTER SUBROUTINE************
  15.     org 0x000200        ; Ser till att vi använda de första minnescellerna
  16. NAMN        DB  "Magnus Roos"
  17.             ; Pekar på adress Hex: 00 02 00
  18.             MOVLW   upper(NAMN)
  19.             MOVWF   TBLPTRU
  20.             MOVLW   high(NAMN)
  21.             MOVWF   TBLPTRH
  22.             MOVLW   low(NAMN)
  23.             MOVWF   TBLPTRL
  24.             RETURN
  25.  
  26. ;*******************
  27.               ;
  28.            
  29.            
  30. ;****************************************************************************  
  31. ;*** LCD toolbox ************************************************************
  32. ;*** Needs PORTD,RB1 EN,RB3 RS *** RS = 1 DATA, RS = 0 INSTRUCTION **********
  33. ;****************************************************************************
  34.        
  35.    
  36. LCDINIT CLRF    TRISD       ;LCD data bus
  37.         BCF     TRISB,1     ;LCD enable
  38.         BCF     TRISB,3     ;LCD reg select
  39.         BCF     PORTB,1     ;enable low
  40.         RETURN
  41.    
  42. WRTCMD  BCF     PORTB,3     ;instruction write
  43.         MOVWF   PORTD       ;the instruction
  44.         BSF     PORTB,1     ;enable 1
  45.         NOP
  46.         BCF     PORTB,1     ;enable 0
  47.         RETURN
  48.    
  49. WRTCHR  BSF     PORTB,3     ;data write
  50.         MOVWF   PORTD       ;the data
  51.         BSF     PORTB,1     ;enable 1
  52.         NOP
  53.         BCF     PORTB,1     ;enable 0
  54.         RETURN
  55. ;*** END LCD toolbox ********************************************************  
  56.  
  57. ;*** DELAY ROUTINE **********************************************************
  58. COUNTER equ 0x07D           ; För loopen i huvudprogrammet
  59. IDSHORT equ 0x07E
  60. IDLONG  equ 0x07F
  61.  
  62.    
  63. ED10MS  CLRF    IDSHORT     ; 1
  64.         MOVLW   0X20        ; 1
  65.         MOVWF   IDLONG      ; 1
  66. LDLOOP  DECFSZ  IDSHORT     ; 1
  67.         GOTO    LDLOOP      ; 2
  68.         DECFSZ  IDLONG      ; 1
  69.         GOTO    LDLOOP      ; 2
  70.         RETURN
  71. ;*** END OF DELAY ROUTINE*[1+1+1+(256x3)x(256)+256*x3]**************************
  72. ;****DISPLAY SETTINGS***********************************************************    
  73. SETTIN  MOVLW   0x38            ; Hosta igång displayen
  74.         CALL    WRTCMD
  75.         CALL    ED10MS
  76.         MOVLW   0x38            ; IGEN
  77.         CALL    WRTCMD
  78.         CALL    ED10MS
  79.         MOVLW   0x38            ; OK NU
  80.         CALL    WRTCMD
  81.         CALL    ED10MS
  82.         MOVLW   0x0C            ; Display on, cursor off
  83.         CALL    WRTCMD
  84.         CALL    ED10MS
  85.         MOVLW   0x01            ; Clear display screen
  86.         CALL    WRTCMD
  87.         CALL    ED10MS 
  88.         RETURN
  89. ;******NO MORE SETTINGS********************************************************        
  90.        
  91. ;*******************************************************************************
  92. ;********START OF MAIN PROGRAM**************************************************
  93. MAIN        CALL    LCDINIT     ; Initiera displayen
  94.             CALL    SETTIN      ; Lite displaysettings
  95.             CALL    NAMN       ;
  96.            
  97. DISPLAY     TBLRD*+             ; Läser in värdet och pekar på nästa
  98.             MOVF    TABLAT,W    ; Lägger in värdet från ROM i WREG, Z blir 1 om ingen char
  99.             BZ      NOBLNK      ; Branch om STATUS, Z=1
  100.             CALL    WRTCHR      ; Skriv ut på LCD
  101.             CALL    ED10MS      ; Vänta
  102.             BRA     DISPLAY     ; nästa bokstav
  103.        
  104. NOBLNK      BTG     PORTB,0     ; Ser till att displayen inte blinkar
  105.             BRA     NOBLNK
  106.    
  107.     END
Advertisement