A;16F877 LCD SÜRME PROGRAMI PORTC7=ENABLE, PORTC6=RW, PORTC5=RS LCD BACAKLARINA BAĞLI
; PORTD7=DATA7, PORTD6=DATA6, PORTD5=DATA5, PORTD4=DATA4 LCD BACAKLARINA BAĞLI
INCLUDE "P16F877.INC"
LIST P=16F877
__CONFIG _CP_OFF&_WDT_OFF&_XT_OSC &_PWRTE_ON&_BODEN_OFF&_DEBUG_OFF &_LVP_OFF
E EQU 7 ;LCD ENABLE BACAĞI PORTC,7 YERİNE PORTB,E YAZILABİLSİN DİYE
RW EQU 6 ;LCD R/W BACAĞI PORTC,6 YERİNE PORTB,RW YAZILABİLSİN DİYE
RS EQU 5 ;LCD R7S BACAĞI PORTC,5 YERİNE PORTB,RW YAZILABİLSİN DİYE
;LCD NİN BU BACAKLARI PORTC YERİNE BAŞKA PORTLARA BAĞLANACAKSA AŞAĞIDAKİ
;VERI VE KOMUT ALT PROGRAMLARINDA GEREKLİ PORT DÜZENLEMELERİ YAPILMALIDIR
;AYRICA KULLANILAN PORTUN FARKLI BACAKLARINA BAĞLANTI YAPILACAKSA EQU
;KISMINDA İLGİLİ DÜZENLEME YAPILMALIDIR
VERI1 EQU 50H
VERI2 EQU 51H
VERI3 EQU 52H
VERI4 EQU 53H
VERI5 EQU 54H
VERI6 EQU 55H
VERI7 EQU 56H
VERI8 EQU 57H
VERI9 EQU 58H
VERI10 EQU 59H
VERI11 EQU 5AH
VERI12 EQU 5BH
VERI13 EQU 5CH
VERI14 EQU 5DH
VERI15 EQU 5EH
KOMUT1 EQU 60H
KOMUT2 EQU 61H
KOMUT3 EQU 62H
KOMUT4 EQU 63H
KOMUT5 EQU 64H
KOMUT6 EQU 65H
KOMUT7 EQU 66H
KOMUT8 EQU 67H
KOMUT9 EQU 68H
KOMUT10 EQU 69H
SAYACVERI EQU 70H
SAYACKOMUT EQU 71H
VERIDEGER EQU 72H
KOMUTDEGER EQU 73H
SAYACA EQU 74H
SAYACB EQU 75H
SAYACC EQU 76H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GİRİŞ ÇIKIŞ ATAMALRINDA LCD NİN DATA VE E-RW-RS İÇİN;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KULLANILAN BACAKLARI ÇIKIŞ YAPILMALIDIR;;;;;;;;;;;;;;;;;
ORG 0000H
CLRF PORTC
CLRF PORTD
BSF STATUS,5
CLRF TRISC ;ENABLE R/S R/W İÇİN
CLRF TRISD ;LCD DATA İÇİN
BCF STATUS,5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;||||||||||||||||PROGRAMIN BAŞLANGICINDA BİRYERDE 1 DEFALIĞINA LCDKUR ALT PROGRAMI ÇAĞIRILMALIDIR
CALL LCDKUR
;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;> LCD ALT PROGRAMINI KULLANACAK PROGRAM ÖRNEĞİ ŞÖYLE OLMALIDIR;
MOVLW 0C0H ;ÖRNEĞİN LCD NİN C0H ADRESİNDEN BAŞLANARAK YANİ 2. SATIRIN BAŞI
MOVWF KOMUT1 ;AŞAĞIDAKİ VERİLER YAZILMAK İSTENSİN ÖNCELİKLE YAZILACAK ADRES KOMUT OLARAK GÖNDERİLİR
MOVLW 0FFH ;KOMUT SONLANDIRMA DEĞERİ
MOVWF KOMUT2
CALL KOMUTISLEME ;YAZILAN KOMUTLARI İŞLER
MOVLW 52H ;YAZILMAK ISTENEN DEGERLER KARAKTER KARAKTER VERI DEĞİŞKENLERİNE YAZILIR
MOVWF VERI1 ;R
MOVLW 41H ;EĞER BİR DEĞİŞKENİN İÇERİĞİ GÖSTERİLMEK İSTENİYORSA Kİ BU DEĞİŞKENİN ASCII
MOVWF VERI2 ;A ;KARŞILIĞI OLMAK ZORUNDADIR MOVF DEGISKENASCII,W
MOVLW 0FFH ; MOVWF VERIX ;İLE GÖSTERİLEBİLİR
MOVWF VERI3 ;VERI SONLANDIRMA DEGERİ
CALL VERIISLEME
DUR GOTO DUR ;PROGRAM YAZILDIĞINDA AŞAĞIDAKİ ALT PROGRAMLARA ATLAMASINA İZİN VERİLMEMELİDİR
;;;;NOT! KOMUTISLEME VE VERIISLEME ALT PROGRAMLARINDAN DÖNÜLEBİLMESİ İÇİN HER ZAMAN SON KOMUT VE SON
; VERI DEGERI OLARAK FFH DEGERİ GİRİLMEK ZORUNDADIR
;;;;;;;;;;;;;;;;;;;;;;;;ÖRNEK PROGRAM SON;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;;;;;;;;;;;;;;;;;;;;LCD ALT PROGRAMI BAŞLANGIÇ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KOMUTISLEME MOVLW 0FFH ;KOMUT İŞLEME DÖNGÜSÜ ///////////////////
MOVWF SAYACKOMUT
KOMUTISLEME2 CALL BEKLE1MS
BSF PORTC,E
BCF PORTC,RW
BCF PORTC,RS
INCF SAYACKOMUT,F
INCF SAYACKOMUT,F
MOVF SAYACKOMUT,W
CALL TABLOKOMUT
MOVWF KOMUTDEGER ;TABLODAN GELEN W DEĞERİNİ 4 BIT MODDA LCD YE GÖNDEREBİLMEK İÇİN
SUBLW 0FFH ;VE SON KOMUT DEĞERİ OLUP OLMADIĞINI GÖRMEK İÇİN KULLANILIR
BTFSC STATUS,Z
GOTO KOMUTBITTI
MOVF KOMUTDEGER,W
MOVWF PORTD
CALL BEKLE1MS
BCF PORTC,E
CALL BEKLE1MS
BSF PORTC,E
SWAPF KOMUTDEGER,W
MOVWF PORTD
CALL BEKLE1MS
BCF PORTC,E
GOTO KOMUTISLEME2
KOMUTBITTI RETURN ;//////////////////////////////////////
VERIISLEME MOVLW 0FFH ;VERİ İŞLEME DÖNGÜSÜ //////////////////
MOVWF SAYACVERI
VERIISLEME2 CALL BEKLE1MS
BSF PORTC,E
BCF PORTC,RW
BSF PORTC,RS
INCF SAYACVERI,F
INCF SAYACVERI,F
MOVF SAYACVERI,W
CALL TABLOVERI
MOVWF VERIDEGER
SUBLW 0FFH
BTFSC STATUS,Z
GOTO VERIBITTI
MOVF VERIDEGER,W
MOVWF PORTD
CALL BEKLE1MS
BCF PORTC,E
CALL BEKLE1MS
BSF PORTC,E
SWAPF VERIDEGER,W
MOVWF PORTD
CALL BEKLE1MS
BCF PORTC,E
GOTO VERIISLEME2
VERIBITTI RETURN ;/////////////////////////////////////
TABLOKOMUT ADDWF PCL,F ;HER SEFERİNDE ADDWF KOMUTUNDAN SONRAKİ 2. 4. 6. ... SATIR İŞLENİR
NOP
MOVF KOMUT1,W
RETURN
MOVF KOMUT2,W
RETURN
MOVF KOMUT3,W
RETURN
MOVF KOMUT4,W
RETURN
MOVF KOMUT5,W
RETURN
MOVF KOMUT6,W
RETURN
MOVF KOMUT7,W
RETURN
MOVF KOMUT8,W
RETURN
MOVF KOMUT9,W
RETURN
MOVF KOMUT10,W
RETURN
TABLOVERI ADDWF PCL,F ;HER SEFERİNDE ADDWF KOMUTUNDAN SONRAKİ 2. 4. 6. ... SATIR İŞLENİR
NOP
MOVF VERI1,W
RETURN
MOVF VERI2,W
RETURN
MOVF VERI3,W
RETURN
MOVF VERI4,W
RETURN
MOVF VERI5,W
RETURN
MOVF VERI6,W
RETURN
MOVF VERI7,W
RETURN
MOVF VERI8,W
RETURN
MOVF VERI9,W
RETURN
MOVF VERI10,W
RETURN
MOVF VERI11,W
RETURN
MOVF VERI12,W
RETURN
MOVF VERI13,W
RETURN
MOVF VERI14,W
RETURN
MOVF VERI15,W
RETURN
BEKLE1MS MOVLW 01H
MOVWF SAYACA
MOVWF SAYACB
GOTO DONGUB
BEKLE50MS MOVLW 01H
MOVWF SAYACA ;SAYACA*SAYACB* 1MİLİSANİYE
DONGUA MOVLW 32H ;=DECIMAL 50
MOVWF SAYACB ;SAYACB* 1 MİLİSANİYE
DONGUB MOVLW 0FFH
MOVWF SAYACC ;1MİLİSANİYE
DONGUC NOP
DECFSZ SAYACC,F
GOTO DONGUC
DECFSZ SAYACB,F
GOTO DONGUB
DECFSZ SAYACA,F
GOTO DONGUA
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDKUR MOVLW 20H ;LCD RESET
MOVWF KOMUT1
MOVLW 01H ;DISPLAY TEMİZLE
MOVWF KOMUT2
MOVLW 02H ;KURSOR Ü BAŞA AL
MOVWF KOMUT3
MOVLW 28H ;2 SATIR, 5*7 KARAKTER, 4BİT MOD
MOVWF KOMUT4
MOVLW 0FH ;DISPLAY AÇIK KURSOR AÇIK KURSOR YAN-SÖN
MOVWF KOMUT5
MOVLW 06H ;HER KARAKTER YAZMADA KURSÖR SAĞA KAYACAK EKRAN SABİT
MOVWF KOMUT6
MOVLW 0FFH ;KOMUT SONLANDIRMA VERİSİ
MOVWF KOMUT7
CALL KOMUTISLEME
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LCD ALT PROGRAMI SON ;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end