Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "p18F4520.inc"
- CONFIG OSC = HS
- CONFIG PWRT = OFF
- CONFIG WDT = OFF
- CONFIG PBADEN = OFF
- CONFIG LVP = OFF
- org 0x000000
- PORST GOTO MAIN
- org 0x00020
- ;******* TABLE POINTER SUBROUTINE************
- org 0x000200 ; Ser till att vi använda de första minnescellerna
- NAMN DB "Magnus Roos"
- ; Pekar på adress Hex: 00 02 00
- MOVLW upper(NAMN)
- MOVWF TBLPTRU
- MOVLW high(NAMN)
- MOVWF TBLPTRH
- MOVLW low(NAMN)
- MOVWF TBLPTRL
- RETURN
- ;*******************
- ;
- ;****************************************************************************
- ;*** LCD toolbox ************************************************************
- ;*** Needs PORTD,RB1 EN,RB3 RS *** RS = 1 DATA, RS = 0 INSTRUCTION **********
- ;****************************************************************************
- LCDINIT CLRF TRISD ;LCD data bus
- BCF TRISB,1 ;LCD enable
- BCF TRISB,3 ;LCD reg select
- BCF PORTB,1 ;enable low
- RETURN
- WRTCMD BCF PORTB,3 ;instruction write
- MOVWF PORTD ;the instruction
- BSF PORTB,1 ;enable 1
- NOP
- BCF PORTB,1 ;enable 0
- RETURN
- WRTCHR BSF PORTB,3 ;data write
- MOVWF PORTD ;the data
- BSF PORTB,1 ;enable 1
- NOP
- BCF PORTB,1 ;enable 0
- RETURN
- ;*** END LCD toolbox ********************************************************
- ;*** DELAY ROUTINE **********************************************************
- COUNTER equ 0x07D ; För loopen i huvudprogrammet
- IDSHORT equ 0x07E
- IDLONG equ 0x07F
- ED10MS CLRF IDSHORT ; 1
- MOVLW 0X20 ; 1
- MOVWF IDLONG ; 1
- LDLOOP DECFSZ IDSHORT ; 1
- GOTO LDLOOP ; 2
- DECFSZ IDLONG ; 1
- GOTO LDLOOP ; 2
- RETURN
- ;*** END OF DELAY ROUTINE*[1+1+1+(256x3)x(256)+256*x3]**************************
- ;****DISPLAY SETTINGS***********************************************************
- SETTIN MOVLW 0x38 ; Hosta igång displayen
- CALL WRTCMD
- CALL ED10MS
- MOVLW 0x38 ; IGEN
- CALL WRTCMD
- CALL ED10MS
- MOVLW 0x38 ; OK NU
- CALL WRTCMD
- CALL ED10MS
- MOVLW 0x0C ; Display on, cursor off
- CALL WRTCMD
- CALL ED10MS
- MOVLW 0x01 ; Clear display screen
- CALL WRTCMD
- CALL ED10MS
- RETURN
- ;******NO MORE SETTINGS********************************************************
- ;*******************************************************************************
- ;********START OF MAIN PROGRAM**************************************************
- MAIN CALL LCDINIT ; Initiera displayen
- CALL SETTIN ; Lite displaysettings
- CALL NAMN ;
- DISPLAY TBLRD*+ ; Läser in värdet och pekar på nästa
- MOVF TABLAT,W ; Lägger in värdet från ROM i WREG, Z blir 1 om ingen char
- BZ NOBLNK ; Branch om STATUS, Z=1
- CALL WRTCHR ; Skriv ut på LCD
- CALL ED10MS ; Vänta
- BRA DISPLAY ; nästa bokstav
- NOBLNK BTG PORTB,0 ; Ser till att displayen inte blinkar
- BRA NOBLNK
- END
Advertisement