Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

LCD kodu

Başlatan ozdemir15, 30 Temmuz 2014, 21:28:07

ozdemir15

EKLEME: sorun çözülmüştür arkadaşlar, config ayarları ile ilgili bir sıkıntı yaşıyormuşum. kodu lcd konusunda sıkıntı çekmiş arkadaşlar inceleyip kullanabilir. config ayarlarından lvpyi kapatmayı unutmayın.

merhaba arkadaşlar, birkaç gündür asm dili ile lcd ye komut ve yazı göndermeye çalışıyorum. programı isis ile denediğimde -ki programlarken sürekli deneyerek gidiyorum- yapması gerekeni yapıyor. ancak devreyi breadboard üzerine kurduğumda devre çalışmıyor. kullandığım işlemci pic16f628a, sorunun nerede olduğunu tam olarak anlayamıyorum, deneme imkanı olan arkadaşlardan, kodu çalıştırmaya çalışmalarını rica ediyorum.

bacak bağlantıları
B0 = RS
B1 = RW
B2 = E
B4-B7 = DB4 - DB7

;EKRAN.ASM
;TANIMLAMALAR
		LIST    P=16F628A
PCL		EQU	h'02'
STATUS	EQU	h'03'
PORTA	EQU h'05'
PORTB	EQU h'06'
TRISA	EQU h'85'
TRISB	EQU h'86'
G1		EQU h'21'
G2		EQU h'22'
BOLUM1	EQU h'20'
BOLUM2	EQU h'23' 
SYC		EQU h'24'  
;AYARLAR
	BSF STATUS,5
	CLRF	TRISA
	CLRF	TRISB
	BCF STATUS,5
	CLRF	PORTA
	CLRF	PORTB
	MOVLW	D'0'
	MOVWF	SYC
;ANA PROGRAM
	CALL	LCD4BIT  
;	MOVLW   b'00001000'
;	CALL    LCD_V_GONDER
BASLA
	CALL	G15MS
	CALL	G15MS
	CALL	G15MS
	CALL	G15MS
	MOVF    SYC,0 
	CALL    MESAJ   
	CALL    LCD_GONDER 
	INCF    SYC,1
	MOVLW   d'7'
	XORWF   SYC,0
	BTFSS   STATUS,2
	GOTO    BASLA 
;	MOVLW   b'00001111'
;	CALL    LCD_V_GONDER 
BITIS                              
	GOTO    BITIS
;MESAJLAR
MESAJ
	ADDWF   PCL,1
	DT  "OZDEMIR"
RETURN
;FONKSIYONLAR
LCD_GONDER
	MOVWF   BOLUM1
	MOVWF   BOLUM2
	SWAPF   BOLUM2,1
	MOVLW   b'11110000'
	ANDWF   BOLUM1,1
	ANDWF   BOLUM2,1
	MOVF    BOLUM1,0
	MOVWF   PORTB
	BSF PORTB,0
	CALL    EN
	MOVF    BOLUM2,0
	MOVWF   PORTB
	BSF PORTB,0
	CALL    EN   
	CLRF    PORTB
RETURN
LCD_V_GONDER
	MOVWF   BOLUM1
	MOVWF   BOLUM2
	SWAPF   BOLUM2,1
	MOVLW   b'11110000'
	ANDWF   BOLUM1,1
	ANDWF   BOLUM2,1
	MOVF    BOLUM1,0
	MOVWF   PORTB
	CALL    EN
	MOVF    BOLUM2,0
	MOVWF   PORTB
	CALL    EN  
	CLRF    PORTB
RETURN
LCD4BIT
	CALL    G15MS
	MOVLW   b'00110000'
	MOVWF   PORTB
	CALL    EN
	CALL    G15MS
	CALL    EN
	CALL    G100US
	CALL    EN
	MOVLW   b'00100000'
	MOVWF   PORTB
	CALL    EN
	MOVLW   b'00101000'
	CALL    LCD_V_GONDER
	MOVLW   B'00001000'
	CALL    LCD_V_GONDER
	MOVLW   B'00000001'
	CALL    LCD_V_GONDER
	MOVLW   B'00000110'
	CALL    LCD_V_GONDER
	MOVLW   b'00001111'
	CALL    LCD_V_GONDER
	CLRF    PORTB
RETURN
EN
	BSF PORTB,2
	CALL    G100US
	BCF PORTB,2  
	CALL    G100US
RETURN
G15MS
	MOVLW   d'196'
	MOVWF   G1
	G15D1
		MOVLW   d'255'
		MOVWF   G2
		G15D2
		DECFSZ  G2,1
		GOTO    G15D2
	DECFSZ  G1,1
	GOTO    G15D1
RETURN
G100US
	MOVLW   d'3'
	MOVWF   G1
	G100D1
		MOVLW   d'111'
		MOVWF   G2
		G100D2
		DECFSZ  G2,1
		GOTO    G100D2
	DECFSZ  G1
	GOTO    G100D1
RETURN
END

ozdemir15

kodu 16f877 entegresine uyarlayıp denedim ama çalışmadı. ccs c dede denedim, simülasyonlarda çalışıyor ama pice attğım zaman çalışmıyor. sebebi ne olabilir? entegrede led yakıp söndürme programı denedim, çalışıyor. acaba konfigürasyon bitlerinde mi bir hata yapıyorum? fikir verebilirseniz sevinirim.

Bayramsumbul

Merhabalar ve iyi çalışmalar.  Osilator bağladınız mı? Ve reset bağlantısı?
Bir Elektronik Meraklısının Serüveni...

ozdemir15

Alıntı yapılan: Bayramsumbul - 03 Ağustos 2014, 22:33:20
Merhabalar ve iyi çalışmalar.  Osilator bağladınız mı? Ve reset bağlantısı?

tabi ki evet. bağlantılarla ilgili bir sıkıntı yok. ancak dün farkettim ki rb0, rb4 ve rb5 pinleri çalışmıyor. sanıyorum işlemcimde sıkıntı var.  kodu siz denediniz mi?