evo programa to mi je test program
#include LCD.H ; Uklju~uje heder datateku LCD.H
#include PIC16F84.inc ; Uključuje datoteku u kojoj su definisane ; memorijske lokacije mikrokontrolera
org 0x00 ; Po~etak programa
page1
clrf TRISB ; PORTB je izlazni
page0
clrf PORTB
clrf TEMP_W
call Init ;Inicijalizacija LCD-a
movlw 0 ; Po~etak Look-up tabele
;Glavni program
Poruka movwf TEMP_W ; Sa~uvaj sadr`aj W-registra
call Tabela ; Uzmi karakter iz tabele
andlw 0xFF
btfsc STATUS, Z ; Da li je kraj poruke
goto Loop ; Ako jeste idi na Loop
call Send_Char ; Po{alji karakter na LCD
L1 movf TEMP_W,W ; Vrati sadr`aj u W-registar
addlw 1 ; Uve}aj ga za 1
goto Poruka ; Idi na po~etak glavnog programa
Loop goto Loop ; Ostani ovde
;Podprogram za prelazak u drugi red
II_Red movlw 0xC0 ; Po~etno mesto drugog reda
call Send_Cmd
goto L1 ; Vrati se u glavni program
;Podprogram za slanje karaktera na LCD (RS=1)
;Karakter koji se {alje na LCD nalazi se u W registru
Send_Char movwf CHAR ; Sa~uvaj sadr`aj W registra
call Delay ; Trostruko ka{njenje zbog BUSY-a
call Delay
call Delay
movf CHAR,W ; Vrati sadr`aj u W registar
andlw 0xF0 ; Maskiraj donja ~etiri bita
movwf PORTB ; Po{alji podatak na LCDport
bsf PORTB,RS ; Selektuj Data registar RS=1
nop
bsf PORTB,E ; Generisanje opadaju}e ivice na pinu E
nop
bcf PORTB,E
swapf CHAR,W ; Zamena gornja i donja ~etiri bita
andlw 0xF0 ; Maskiraj donja ~etiri bita
movwf PORTB ; Po{alji podatak na LCDport
bsf PORTB,RS ; Selektuj Data registar RS=1
nop
bsf PORTB,E ; Generisanje opadaju}e ivice na pinu E
nop
bcf PORTB,E
return ; Povratak iz podprograma
;Podprogram za slanje komandi LCD-u (RS=0)
Send_Cmd movwf CHAR
call Delay
call Delay
call Delay
movf CHAR,W
andlw 0xF0
movwf PORTB
bcf PORTB,RS ; Selektuj Instrukcijski registar RS=0
nop
bsf PORTB,E
nop
bcf PORTB,E
swapf CHAR,W
andlw 0xF0
movwf PORTB
bcf PORTB,RS ; Selektuj Instrukcijski registar RS=0
nop
bsf PORTB,E
nop
bcf PORTB,E
return
;Podprogram za inicijalizaciju LCD-a
Init movlw low_bit_2reda_5x7 ; Trostruka inicijalizacija zbog
call Send_Cmd ; mogu}eg neuspe{nog reseta LCD-a
movlw low_bit_2reda_5x7
call Send_Cmd
movlw low_bit_2reda_5x7
call Send_Cmd
movlw DisplayON_cursorOFF
call Send_Cmd
movlw Display_clear
call Send_Cmd
movlw Increment_mod_freeze_display
call Send_Cmd
return
Delay movlw 0xFF
movwf TEMP
L2 nop
decfsz TEMP,F
goto L2
return
;Look-up tabela u kojoj se nalazi poruka za ispis
Tabela addwf PCL,F
retlw ‘m’ ; Po~etak Look-up tabele
retlw ‘i’
retlw ‘k’
retlw ‘r’
retlw ‘o’
retlw ‘E’
retlw ‘L’
retlw ‘E’
retlw ‘K’
retlw ‘T’
retlw ‘R’
retlw ‘O’
retlw ‘N’
retlw ‘I’
retlw ‘K’
retlw ‘A’
goto II_Red ; Prelazak na drugi red
retlw ‘ ‘
retlw ‘ ‘ ; Razmak
retlw ‘ ‘
retlw ‘P’
retlw ‘I’
retlw ‘C’
retlw ‘-’
retlw ‘L’
retlw ‘C’
retlw ‘D’
retlw 0 ; Kraj poruke
end ; Kraj programa
car