Evet aynen dediğiniz gibi "xxxxxxxxxxxxxxxx" yazıyorum fakat xxxxxxxx çıkıyor ekranda ve arkası yok
Proteusta herşey ok fakat uygulamada olmuyor
Program şu şekilde:
DEFINE LCD_DREG PORTB '
Lcd data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RWREG PORTB 'LCD RW Bacağı PortB de bağlı
DEFINE LCD_RWBIT 2 'LCD RW Bacağı 2. bite bağlı
DEFINE LCD_RSREG PORTB 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 1 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2 'LCD 2 sıra olarak çalışıyor.
TRISA=1 'A portu giriş olarak ayarlandı.
TRISB=0 'B portu çıkış olarak ayarlandı.
SYMBOL TUS=PORTA.0
SYMBOL TUS1=PORTA.1
symbol TUS2=PORTA.2
symbol TUS3=PORTA.3
SYMBOL RELE=PORTB.0
LOW PORTB.0
LOW PORTB.2 'RW bacağı ekrana yazmaya imkan vermek için LOW yapıldı.
PAUSE 200 ' LCD nin kullanıma hazır hale gelebilmesi için gerekli süre
LCDOUT $FE,1 ' Ekranı temizle
LCDOUT " HAZIR"
LCDOUT $FE,$C0," TERM. 2 GERIDE "
BASLA:
low PORTB.0
IF TUS=1 then
TEST:
LCDOUT $FE,1 'Önce Ekranı siliyoruz.
LCDOUT " TEST BASLADI" 'ilk sıra baştan itibaren yazdırıyoruz. Aslında bu komutu başka bir şekilde de yazabiliriz, şöyle
PAUSE 150
'==== yamuk terminal testi ====
'IF TUS1=0 then BUTON
BUTON:
IF TUS1=0 and TUS2=1 and TUS3=1 then BITIR
IF TUS1=0 and TUS2=0 and TUS3=1 then TH
IF TUS1=0 and TUS2=1 AND TUS3=0 then TX
IF TUS1=0 and TUS2=0 and TUS3=0 then TA
IF TUS1=1 and TUS2=0 AND TUS3=0 then TU
IF TUS1=1 and TUS2=1 AND TUS3=1 then TU
IF TUS1=1 and TUS2=1 AND TUS3=0 then TU
IF TUS1=1 and TUS2=0 AND TUS3=1 then TU
TH:
LCDOUT $FE,1 'Ekranı siliyoruz.
LCDOUT " HATA"
LCDOUT $FE,$C0," TERM. 1 GERIDE" 'ikinci satıra yazdırıldı.
While TUS1=0 and TUS2=0 AND TUS3=1
WEND
GOTO basla
TX:
LCDOUT $FE,1 'Ekranı siliyoruz.
LCDOUT " HATA"
LCDOUT $FE,$C0," TERM. 2 GERIDE" 'ikinci satıra yazdırıldı.
While TUS1=0 and TUS2=1 AND TUS3=0
WEND
GOTO basla
TA:
LCDOUT $FE,1 'Ekranı siliyoruz.
LCDOUT " HATA"
LCDOUT $FE,$C0,"TERM.1-2 GERIDE" 'ikinci satıra yazdırıldı.
While TUS1=0 and TUS2=0 AND TUS3=0
WEND
GOTO basla
TU:
LCDOUT $FE,1 'Ekranı siliyoruz.
LCDOUT " HATA"
LCDOUT $FE,$C0," TERMINAL YAMUK" 'ikinci satıra yazdırıldı.
WHILE TUS1=1
WEND
goto basla
ENDIF
GOTO BASLA
BITIR:
LCDOUT $FE,1 'Ekranı siliyoruz.
LCDOUT " test"
LCDOUT $FE,$C0," OK"
HIGH PORTB.0
While TUS=1
WEND
GOTO HAZIR
HAZIR:
LCDOUT $FE,1 ' Ekranı temizle
LCDOUT " HAZIR"
GOTO basla
End 'Program sonu
eğer proteusta ki devre şemasını da buraya yüklemeye başarabilirsem onu da paylaşacağım.