lcd sürmede problem

Başlatan polilies, 16 Mart 2007, 15:00:23

polilies

merhaba arkadaşlar ,
 usartdan aldığı bilgiyi lcd ekrana sürekli yazan bir program yazdım ve programım bi cok arkadasın basına geldii gibi proteusda calıstı fakat devrede calışmadı..aslında sadece lcdye yazma kısmında problem yaşıyorum. bir döngü içinde bir hafıza alanındaki bilgileri devamlı lcdye gönderiyorum. ilk taramada karakterler net  istediğim şekilde konumlanıyor fakat  ikinci taramaya gectiğinde lcd nin tüm ekranında garip şekiller cıkıyor.usart alımı interruptlı ve ben bunu kaldırdığım halde aynı hatayı veriyor.ayrıca picbasicle bunu yapmıyor bir türlü hatamı bulamadım. asm dosyasını ekliyorum, bi ustam fikir verirse cok memnun olurum.teşekkürler.

SAYAC1  equ h'20'
SAYAC2  equ h'21'
SAYAC3  equ h'22'
SAYAC4  equ h'23'
SAYAC5  equ h'24'
SAYAC6  equ h'25'
SAYAC7  equ h'26'
SAYAC8  equ h'27'
SAYAC9    equ h'28'
w_temp  equ h'29'
status_temp equ h'2A'

   org h'000'
   goto ANAPROG
   org h'004'
   goto KSR
   
ANAPROG
   call AYARLAR
   
DONGU call SAYAC8AY ;int anında lcdye yazılan datanın takibi için
   call YAZ
   goto DONGU
AYARLAR
   bsf STATUS,RP0
   bcf TRISC,0
   bcf TRISC,1
   bsf TRISC,7
   bcf TRISC,6
   clrf TRISD
   bcf TXSTA,4
   bsf TXSTA,2
   bsf PIE1,5
   movlw 25
   movwf SPBRG
   bcf STATUS,RP0
   bsf INTCON,7
   bsf INTCON,6
   bsf RCSTA,7
   bsf RCSTA,4

   movlw h'80'  ;
   movwf h'30'  ;hafıza alanına ali yazdırılıyor
   movlw h'41'  ;
   movwf h'31'
   movlw h'4c'
   movwf h'32'
   movlw h'69'
   movwf h'33'
   movlw h'00'
   movwf h'34'
       
        movlw h'0e'            
   movwf SAYAC5   
   movlw h'04'
   movwf SAYAC4
   movlw 14
   movwf SAYAC7
   movlw h'30'
   movwf SAYAC8
   movlw h'31'
   movwf SAYAC9
   
       call YUZMSN   ;lcd için bekleme ve lcd ayarları
   bcf PORTC,0
BAS   bsf PORTC,1
   movlw h'38'
   movwf PORTD
   bcf PORTC,1
   call ONMSN
   decfsz SAYAC4,f
   goto BAS
   bsf PORTC,1
   movlw h'01'
   movwf PORTD
   bcf PORTC,1
   call ONMSN
   bsf PORTC,1
   movlw h'0c'
   movwf PORTD
   bcf PORTC,1
   call ONMSN
   bsf PORTC,1
   movlw h'06'
   movwf PORTD
   bcf PORTC,1
   call ONMSN
   return

YAZ movlw h'30'
   movwf FSR
   bcf PORTC,0
   bsf PORTC,1
   movf INDF,w
   movwf PORTD
   bcf PORTC,1
   incf SAYAC8,f
   call ONMSN
DON   incf FSR
   bsf PORTC,0
   bsf PORTC,1
   movf INDF,w
   movwf PORTD
   bcf PORTC,1
   incf SAYAC8,f
   call KMSN
   decfsz SAYAC5
   goto DON
   return

KSR   movwf w_temp
   movf STATUS,w
   movwf status_temp
   movf SAYAC9,w
   movwf FSR
   movf RCREG,w
   movwf INDF
   incf SAYAC9
   
   movf SAYAC8,w
   movwf FSR
   movf status_temp,w
   movwf STATUS
   swapf w_temp,f
   swapf w_temp,f
   decfsz SAYAC7
   retfie   
   call Dralim
   retfie

ONMSN   movlw 13
   movwf SAYAC1
   movlw 255
   movwf SAYAC2

MSN   decfsz SAYAC2,f
   goto MSN
   decfsz SAYAC1,f
   goto MSN
   return

KMSN   movlw 40
   movwf SAYAC3
SN   decfsz SAYAC3,f
   goto SN
   return

YUZMSN   movlw 12
   movwf SAYAC6
GU   call ONMSN
   decfsz SAYAC6,f
   goto GU
   return

SAYAC8AY
   movlw h'30'
   movwf SAYAC8
   return
Dralim   
   bcf RCSTA,4
   bcf RCSTA,7
   bcf INTCON,7
   return
   
      
   end

polilies

arkadaşlar biliyorum  cok karışık görünüyor ama kısa bir süre bakınca kolayca anlaşılır sanırım:) lütfen:) en azından baska bir şey sorayım; acaba her lcdye yazma döngüsünde komut olarak 0*01 gönderip ekranı temizlemek gerekiyor mu?

teknikelektronikci

ben yazilimsal olarak bir yorum yapamiyacam cünkü asm bilmiorum ama cogu kisi (bende dahil olmak üzere) isis den devreye gecince lcd baglantisini isis dekine göre yapior halbuki her marka lcd nin pin numaralnadirilmasi farklidir o yüzdenn size tavsiyem lcd nin dattasheet ine bakarak lcd baglantilarini tekrar kontrol ediniz.eger lcd yi daha önce farkli uygulamada kullanmis iseniz programda lcd ayarlarini kontrol ediniz derim kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

polilies

tamam arkadaslar sorunu buldum ve düzeltiyorum..lcdyi sürerken kullndığım sayac5i döngü basına tazelemeyi unutmusum..lakin bunu düzeltmeme ragmen deneme amacıyla comporta hükmedenbir prog aracılıgıyla bilg.den gönderdigim ascii kodlar cok sacma karakterler olarak karsıma cıkıyor...baudrate ve diger bütün ayarları defalarca kontrol ettim ve farklı farklı denedim..neyse herkese kolay gelsin diyorum tesekurler..