Picproje Elektronik Sitesi

DERLEYİCİLER => PIC Assembly => Konuyu başlatan: ozdemir15 - 30 Temmuz 2014, 21:28:07

Başlık: LCD kodu
Gönderen: ozdemir15 - 30 Temmuz 2014, 21:28:07
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
Başlık: Ynt: LCD kodu
Gönderen: ozdemir15 - 03 Ağustos 2014, 16:10:07
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.
Başlık: Ynt: LCD kodu
Gönderen: Bayramsumbul - 03 Ağustos 2014, 22:33:20
Merhabalar ve iyi çalışmalar.  Osilator bağladınız mı? Ve reset bağlantısı?
Başlık: Ynt: LCD kodu
Gönderen: ozdemir15 - 04 Ağustos 2014, 11:03:28
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?