#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