Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

usart iletisimi

Başlatan selvi, 03 Aralık 2008, 21:35:43

selvi

programi yazdim.derleme hatasi veriyor.ilk defa protonla program yazdim.config ve hserout kisminda hata veriyor.programin farkli yerlerinde hata var mi?
Device  16F628A
XTAL    4
Config XT_OSC,MCLRE_OFF,LVP_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF

Declare LCD_DTPIN PORTB.4	'DATA giri?i PORTB'nin 4. ucundan ba?layacak
Declare LCD_ENPIN PORTA.3	'LCD'nin ENable ucu
Declare LCD_RSPIN PORTA.2	'LCD'nin Register Select ucu
Declare LCD_INTERFACE 4	'LCD veri yolu 4 bit olacak
Declare LCD_LINES 2		'LCD 2 sat?rdan olu?uyor
Cls 

SPBRG=25
Declare HSERIAL_BAUD 9600
Declare HSERIAL_RCSTA 90
Declare HSERIAL_TXSTA 24
Declare HSERIAL_CLEAR On 
 
CMCON=7           '16F628 de komparatör pinleri iptal hepsi giriþ çýkýþ
PORTB_PULLUPS = 1
TRISB=%00001011
TRISA=%00110010
PORTB=0
PORTA=0
PORTA.0=0
'------------------------------------------------------------------------------
Dim VER   As  Byte 
Dim SAYI  As  Byte   
Dim W0    As  Byte
Dim W1    As  Byte
Dim I     As  Byte
Dim M     As  Byte
'------------------------------------------------------------------------------
Print At 1,1, "HEY" 	'ekran?n 1. sat?r,1. sütununa yaz
Print At 2,1, "DUNYA" 	'ekran?n 1. sat?r,1. sütununa yaz
DelayMS 500
SAYI=0
W0=0
W1=0
I=0
M=0
'------------------------------------------------------------------------------
START: PORTA.0=0
       VER=0
       I=0
       M=0
       If PORTB.0=0 Then
       For I=0 To 4
       W0=LookUp I,[73,111,41,217,0] 
       Print At 1,1, "AC" 
       DelayMS 100  
             PORTA.0=1
             VER=W0       
             GoSub GONDER
       Print At 2,1, "VER=",@VER 
   EKRAN:
           If I=4 And VER=0 And PORTB.0=0 Then  
       Print At 1,1, "ACILDI"
        DelayMS  10
            GoTo EKRAN
            EndIf
        Next I
        EndIf
        If PORTA.4=0 Then 
        Print At 1,1, "HEDEF" 
         DelayMS 10          
            SAYI=SAYI+1
            DelayMS 200
        Print At 2,1, "SAYI=",@SAYI    
        EndIf
        If PORTA.5=0 Then             
         Print At 1,1, "HEDEF" 
            SAYI=SAYI-1
            DelayMS 200
        Print At 2,1, "SAYI=",@SAYI
        EndIf
        If PORTB.3=0 Then
            PORTA.0=1
		Print At 1,1, "GONDER"
            VER=SAYI
		Print At 2,1, "VER=",@VER
            GoSub GONDER
            While PORTB.3=0
            GoSub GONDER    
            Wend
        EndIf
         If PORTA.1=0 Then
        For M=0 To 4
        W1=LookUp M,[233,3,79,117,61]
		Print At 1,1, "KAPAT"
		DelayMS 10
                PORTA.0=1
                VER=W1
		Print At 2,1, "VER=",@VER
                GoSub GONDER
  EKRAN2:
        If M=4 And VER=61 And PORTA.1=0 Then
            SAYI=0
        Print At 1,1, "KAPANDI"
        DelayMS 10
        GoTo EKRAN2
                EndIf
        Next M
         EndIf
            DelayMS 100
             GoTo START
            
'-------------------------ALT PROGRAMLAR---------------------------------------
GONDER:
HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl
HSerOut ["A","R","A",Dec VER,123]
Return
End
Yaşam anlamlandırıldıkça kutsaldır....

mikromuh

Helpe bakarsan kod yazilim sekli :   REP c\n  
Programinda yapisik bir sekilde yazmisin. Aralarina birer bosluk koyman gerekir.
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]

--------------------
GONDER:
HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl
HSerOut ["A","R","A",Dec VER,123]
Return
End
---------------------
Config XT_OSC, MCLRE_OFF, LVP_OFF, WDT_OFF, PWRTE_ON,  BODEN_OFF

OG

'
Config  WDT_OFF,PWRT_ON,PROTECT_OFF,MCLR_OFF,LVP_OFF,BOD_OFF     ' HATALI
Config  WDT_OFF, PWRTE_ON, CP_OFF, MCLRE_OFF, LVP_OFF, BODEN_OFF

'Declare HSER_SPBRG 25   '9600 Baud @ 20MHz, 0,16% 
SPBRG=25

'HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]       ' HATALI
HSerOut [Rep $AA\5, Rep $00\5, Rep $FF\5]


Gördüğüm hatalı yazımlar.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

selvi

en son belirtiginiz degisiklikleri yaptim derledim.derlemesonucunda su hatayi hale veriyor.programin en son hali ilk mesajdaki yere edit yaparak yeniden yazdim.
HINT[line 13]:ensure that all fuses are placed in the CONFIG list,as picmicros have diffrerring default settings
Yaşam anlamlandırıldıkça kutsaldır....

OG

O hata değil uyarı, config ayarlarında eksik bırakmazsan o uyarı da kalkar.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

selvi

asagidaki programi derledim.proteusda simulasyonda sorunlar cikti.ac butonuna basiyorum.ekranda ac yaziyor.ilkin ac sonra acildi yazmasi gerekiyor.ac yazdiktan sonra diger butonlara bastigim halde lcd ekranda ac disinda farkli bir yazi cikmiyor.sanki for next dongusu islemiyor.lookup tablosundaki ilk deger disinda diger degerleri almiyor.onceden pbp ile program yazdigim ayni programda lcd kisminda farkli bir sorun cikmiyordu.proton pbp"e cok yakin.

Device 16F628A
XTAL 4
Config XT_OSC,MCLRE_OFF,LVP_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF

Declare LCD_DTPIN PORTB.4 'DATA giri?i PORTB'nin 4. ucundan ba?layacak
Declare LCD_ENPIN PORTA.3 'LCD'nin ENable ucu
Declare LCD_RSPIN PORTA.2 'LCD'nin Register Select ucu
Declare LCD_INTERFACE 4 'LCD veri yolu 4 bit olacak
Declare LCD_LINES 2 'LCD 2 sat?rdan olu?uyor
Cls

SPBRG=25
Declare HSERIAL_BAUD 9600
Declare HSERIAL_RCSTA 90h
Declare HSERIAL_TXSTA 24h
Declare HSERIAL_CLEAR On

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giri? çyky?
PORTB_PULLUPS = 1
TRISB=%00001011
TRISA=%00110010
PORTB=0
PORTA=0
PORTA.0=0
'------------------------------------------------------------------------------
Dim VER As Byte
Dim SAYI As Byte
Dim W0 As Byte
Dim W1 As Byte
Dim I As Byte
Dim M As Byte
'------------------------------------------------------------------------------
    Print At 1,1, "HEY" 'ekran?n 1. sat?r,1. sütununa yaz
    Print At 2,1, "DUNYA" 'ekran?n 1. sat?r,1. sütununa yaz
    DelayMS 500
    SAYI=0
    W0=0
    W1=0
    I=0
    M=0
'------------------------------------------------------------------------------
START: 
    PORTA.0=0
    VER=0
    I=0
    M=0
    
    If PORTB.0=0 Then
        For I=0 To 4
            W0=LookUp I,[73,111,41,217,0]
            Print $FE , 1
            Print At 1,1, "AC"
            DelayMS 10
            PORTA.0=1
            VER=W0
            GoSub GONDER
            Print At 2,1, "VER=",@VER
        
    EKRAN:
    
            If I=4 And VER=0 And PORTB.0=0 Then
                Print At 1,1, "ACILDI"
                DelayMS 30
                GoTo EKRAN
            EndIf
    
        Next I
    EndIf

    If PORTA.4=0 Then
        Print At 1,1, "SAYAC"
        SAYI=SAYI+1
        DelayMS 200
        Print At 2,1, "SAYI=",@SAYI
    EndIf

    If PORTA.5=0 Then
        Print At 1,1, "SAYAC"
        SAYI=SAYI-1
        DelayMS 200
        Print At 2,1, "SAYI=",@SAYI
    EndIf
    
    If PORTB.3=0 Then
        PORTA.0=1
        Print At 1,1, "GONDER"
        VER=SAYI
        Print At 2,1, "VER=",@VER
        GoSub GONDER
        
        While PORTB.3=0
            GoSub GONDER
        Wend
    EndIf
    
    If PORTA.1=0 Then
        For M=0 To 4
            W1=LookUp M,[233,3,79,117,61]
            Print At 1,1, "KAPAT"
            PORTA.0=1
            VER=W1
            Print At 2,1, "VER=",@VER
            GoSub GONDER
    EKRAN2:
    
            If M=4 And VER=61 And PORTA.1=0 Then
                SAYI=0
                Print At 1,1, "KAPANDI"
                GoTo EKRAN2
            EndIf
        Next M
    EndIf
    
DelayMS 100
GoTo START

'-------------------------ALT PROGRAMLAR---------------------------------------
GONDER:
    HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5] 'uyandirma sinyali preambl
    HSerOut ["A","R","A",Dec VER,123]
Return
End
Yaşam anlamlandırıldıkça kutsaldır....

selvi

Device 16F628A
XTAL 4
Config XT_OSC,MCLRE_OFF,LVP_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF

Declare LCD_DTPIN PORTB.4 'DATA giri?i PORTB'nin 4. ucundan ba?layacak
Declare LCD_ENPIN PORTA.3 'LCD'nin ENable ucu
Declare LCD_RSPIN PORTA.2 'LCD'nin Register Select ucu
Declare LCD_INTERFACE 4 'LCD veri yolu 4 bit olacak
Declare LCD_LINES 2 'LCD 2 sat?rdan olu?uyor
Cls

SPBRG=25
Declare HSERIAL_BAUD 9600
Declare HSERIAL_RCSTA 90h
Declare HSERIAL_TXSTA 24h
Declare HSERIAL_CLEAR On

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giriþ çýkýþ
PORTB_PULLUPS = 1
TRISB=%00001011
TRISA=%00110010
PORTB=0
PORTA=0
'------------------------------------------------------------------------------
Dim VER As Byte
'------------------------------------------------------------------------------
Print At 1,1, "HEY" 'ekran?n 1. sat?r,1. sütununa yaz
Print At 2,1, "DUNYA" 'ekran?n 1. sat?r,1. sütununa yaz
DelayMS 100
'------------------------------------------------------------------------------
START: 
VER=0
If PORTB.0=0 Then
print $FE,1
Print At 1,1, "AC"
DelayMS 100
VER=73
GoSub GONDER
Print At 2,1, "VER=",@VER
EKRAN:
If  VER=73 And PORTB.0=0 Then
Print At 2,1, "ACILDI"
DelayMS 100
GoTo EKRAN
EndIf
EndIf
'-------------------------ALT PROGRAMLAR---------------------------------------
GONDER:
HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl
HSerOut ["A","R","A",Dec VER,123]
Return
End

   programi bayagi kuculttum.proton derleyicisi ile derledim.proteus 7.1 versiyonunda simule ettim.portb.0 butonu islevsiz.simulasyonu calistirinca ekranda hey dunya yaziyor.portb.0=0 butonuna bastigim halde ekrana farkli bir yazi gelmiyor.sorun programda mi yoksa derleyici veya proteusdanmi kaynakli oldugunu cozemedim.mumkunse deneyip sonucu aktarabilir misiniz?
Yaşam anlamlandırıldıkça kutsaldır....

a.zorba

42. satırda hata var proton mesaj vermesi gerekırdı
Print At 2,1 "ACILDI"  
Print At 2,1, "ACILDI"  olmalı
Bilenler bilir . Biz maraşlilar için şehir olarak şubat ay' i bayram ,kurtuluş ,yaz in gelmesiydi. Şimdi karalar in yas in ayı oldu.

selvi

Print At 2,1, "ACILDI" onu yanlis yazmisim.sorun devam ediyor.butonlar islevsiz.lcd de hey dunya disinda farkli bir yazi gelmiyor.sema asagidaki linktedir.

http://rapidshare.com/files/170730849/proton_sema.DSN.html
Yaşam anlamlandırıldıkça kutsaldır....

Maxim

birkaç düzeltme yaptım ,
düzelttiğim ve eklediğim satırlara maxiboost yazdım ,
başka hatalar ve problemlerde olabilir ,
şu an vaktim olmadığından bakamadım ,

Device 16F628A 
XTAL 4 
Config XT_OSC,MCLRE_OFF,LVP_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF 

Declare LCD_DTPIN PORTB.4 'DATA giri?i PORTB'nin 4. ucundan ba?layacak 
Declare LCD_ENPIN PORTA.3 'LCD'nin ENable ucu 
Declare LCD_RSPIN PORTA.2 'LCD'nin Register Select ucu 
Declare LCD_INTERFACE 4 'LCD veri yolu 4 bit olacak 
Declare LCD_LINES 2 'LCD 2 sat?rdan olu?uyor 
Cls 


Declare HSERIAL_BAUD=9600   'MAXIBOOST
Declare HSERIAL_RCSTA=$90h  'MAXIBOOST
Declare HSERIAL_TXSTA=$24h  'MAXIBOOST
Declare HSERIAL_CLEAR=On    'MAXIBOOST
Declare HSERIAL_SPBRG=25    'MAXIBOOST

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giri? çyky? 
PORTB_PULLUPS = 1 
TRISB=%00001011 
TRISA=%00110010 
PORTB=0 
PORTA=0 
'------------------------------------------------------------------------------ 
Dim VER As Byte 
'------------------------------------------------------------------------------ 
Print At 1,1, "HEY" 'ekran?n 1. sat?r,1. sütununa yaz 
Print At 2,1, "DUNYA" 'ekran?n 1. sat?r,1. sütununa yaz 
DelayMS 100 
'------------------------------------------------------------------------------ 
START: 
VER=0 
If PORTB.0=0 Then 
Print $FE,1 
Print At 1,1, "AC" 
DelayMS 100 
VER=73 
GoSub GONDER 
Print At 2,1, "VER=",@VER 
EKRAN: 
If VER=73 And PORTB.0=0 Then 
Print At 2,1, "ACILDI" 
DelayMS 100 
GoTo EKRAN 
EndIf 
EndIf 
'-------------------------ALT PROGRAMLAR--------------------------------------- 

GoTo START   'MAXIBOOST

GONDER: 
HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl 
HSerOut ["A","R","A",Dec VER,123] 
Return 
End

selvi

hocam belirttiginiz degisiklikleri yaptim,calisti.artir yada azalt butonuna bastigimda sorunlar cikiyor.ornegin;sayi=2 degerini gonderdigimde lcd de 22 yaziyor.sayi=3 yazdigimda 33 yaziyor.gecikme koydum sorun cozulmedi.
Yaşam anlamlandırıldıkça kutsaldır....

Maxim

en son kullandığın tam kodu vermelisin ,
böyle konu dağılıyor

bu kodda arttır ve azalt yok

selvi

Device 16F628A
XTAL 4
Config XT_OSC,MCLRE_OFF,LVP_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF

Declare LCD_DTPIN PORTB.4 'DATA giri?i PORTB'nin 4. ucundan ba?layacak
Declare LCD_ENPIN PORTA.3 'LCD'nin ENable ucu
Declare LCD_RSPIN PORTA.2 'LCD'nin Register Select ucu
Declare LCD_INTERFACE 4 'LCD veri yolu 4 bit olacak
Declare LCD_LINES 2 'LCD 2 sat?rdan olu?uyor
Cls

Declare HSERIAL_BAUD=9600   'MAXIBOOST
Declare HSERIAL_RCSTA=$90h  'MAXIBOOST
Declare HSERIAL_TXSTA=$24h  'MAXIBOOST
Declare HSERIAL_CLEAR=On    'MAXIBOOST
Declare HSERIAL_SPBRG=25    'MAXIBOOST

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giriþ çýkýþ
PORTB_PULLUPS = 1
TRISB=%00001011
TRISA=%00110010
PORTB=0
PORTA=0
PORTA.0=0
'------------------------------------------------------------------------------
Dim VER As Byte
Dim SAYI As Byte
Dim W0 As Byte
Dim W1 As Byte
Dim I As Byte
Dim M As Byte
'------------------------------------------------------------------------------
Print At 1,1, "HEY" 'ekran?n 1. sat?r,1. sütununa yaz
Print At 2,1, "DUNYA" 'ekran?n 1. sat?r,1. sütununa yaz
DelayMS 500
SAYI=0
W0=0
W1=0
I=0
M=0
'------------------------------------------------------------------------------
START: PORTA.0=0
VER=0
I=0
M=0
If PORTB.0=0 Then
For I=0 To 4
W0=LookUp I,[73,111,41,217,0]
Print $FE , 1
Print At 1,1, "AC"
PORTA.0=1
VER=W0
GoSub GONDER
Print At 2,1, "VER=",@VER
EKRAN:
If I=4 And VER=0 And PORTB.0=0 Then
Print At 1,1, "ACILDI"
GoTo EKRAN
EndIf
Next I
EndIf
If PORTA.4=0 Then
Print $FE , 1
Print At 1,1, "HEDEF"
SAYI=SAYI+1
DelayMS 200
Print At 2,1, "SAYI=",@SAYI
DelayMS 100
EndIf
If PORTA.5=0 Then
Print $FE , 1
Print At 1,1, "HEDEF"
SAYI=SAYI-1
DelayMS 200
Print At 2,1, "SAYI=",@SAYI
DelayMS 30
EndIf
If PORTB.3=0 Then
PORTA.0=1
Print At 1,1, "GONDER"
DelayMS 30
VER=SAYI
Print At 2,1, "VER=",@VER
DelayMS 100
GoSub GONDER
While PORTB.3=0
GoSub GONDER
Wend
EndIf
If PORTA.1=0 Then
For M=0 To 4
W1=LookUp M,[233,3,79,117,61]
Print $FE , 1
Print At 1,1, "KAPAT"
PORTA.0=1
VER=W1
Print At 2,1, "VER=",@VER
DelayMS 30
GoSub GONDER
EKRAN2:
If M=4 And VER=61 And PORTA.1=0 Then
SAYI=0
Print At 1,1, "KAPANDI"
DelayMS 30
GoTo EKRAN2
EndIf
Next M
EndIf
DelayMS 100
GoTo START

'-------------------------ALT PROGRAMLAR---------------------------------------
GONDER:
HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl
HSerOut ["A","R","A",Dec VER,123]
Return
End
Yaşam anlamlandırıldıkça kutsaldır....

Maxim

tamam,
ama bu program hiç hoşuma gitmedi ,


Device 16F628A 
XTAL 4 
Config XT_OSC,MCLRE_OFF,LVP_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF 

Declare LCD_DTPIN PORTB.4 'DATA giri?i PORTB'nin 4. ucundan ba?layacak 
Declare LCD_ENPIN PORTA.3 'LCD'nin ENable ucu 
Declare LCD_RSPIN PORTA.2 'LCD'nin Register Select ucu 
Declare LCD_INTERFACE 4 'LCD veri yolu 4 bit olacak 
Declare LCD_LINES 2 'LCD 2 sat?rdan olu?uyor 
Cls 

Declare HSERIAL_BAUD=9600 'MAXIBOOST 
Declare HSERIAL_RCSTA=$90h 'MAXIBOOST 
Declare HSERIAL_TXSTA=$24h 'MAXIBOOST 
Declare HSERIAL_CLEAR=On 'MAXIBOOST 
Declare HSERIAL_SPBRG=25 'MAXIBOOST 

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giri? çyky? 
PORTB_PULLUPS = 1 
TRISB=%00001011 
TRISA=%00110010 
PORTB=0 
PORTA=0 
PORTA.0=0 
'------------------------------------------------------------------------------ 
Dim VER As Byte 
Dim SAYI As Byte 
Dim W0 As Byte 
Dim W1 As Byte 
Dim I As Byte 
Dim M As Byte 
'------------------------------------------------------------------------------ 
Print At 1,1, "HEY" 'ekran?n 1. sat?r,1. sütununa yaz 
Print At 2,1, "DUNYA" 'ekran?n 1. sat?r,1. sütununa yaz 
DelayMS 500 
SAYI=0 
W0=0 
W1=0 
I=0 
M=0 
'------------------------------------------------------------------------------ 
START: 
PORTA.0=0 
VER=0 
I=0 
M=0 

If PORTB.0=0 Then 
For I=0 To 4 
W0=LookUp I,[73,111,41,217,0] 
Print $FE , 1 
Print At 1,1, "AC" 
PORTA.0=1 
VER=W0 
GoSub GONDER 
Print At 2,1, "VER=",Dec VER,"  " 'MAXIBOOST  

EKRAN: 
If I=4 And VER=0 And PORTB.0=0 Then 
Print At 1,1, "ACILDI" 
GoTo EKRAN 
EndIf 
Next I 
EndIf 

If PORTA.4=0 Then 
Print $FE , 1 
Print At 1,1, "HEDEF" 
SAYI=SAYI+1 
DelayMS 200 
Print At 2,1, "SAYI=",Dec SAYI,"  "  'MAXIBOOST 
DelayMS 100 
EndIf 

If PORTA.5=0 Then 
Print $FE , 1 
Print At 1,1, "HEDEF" 
SAYI=SAYI-1 
DelayMS 200 
Print At 2,1, "SAYI=",Dec SAYI,"  "  'MAXIBOOST 
DelayMS 30 
EndIf 

If PORTB.3=0 Then 
PORTA.0=1 
Print At 1,1, "GONDER" 
DelayMS 30 
VER=SAYI 
Print At 2,1,"VER=",Dec VER,"  "   'MAXIBOOST 
DelayMS 100 
GoSub GONDER 
While PORTB.3=0 
GoSub GONDER 
Wend 
EndIf 

If PORTA.1=0 Then 
For M=0 To 4 
W1=LookUp M,[233,3,79,117,61] 
Print $FE , 1 
Print At 1,1, "KAPAT" 
PORTA.0=1 
VER=W1 
Print At 2,1, "VER=",Dec VER,"  "   'MAXIBOOST 
DelayMS 30 
GoSub GONDER 

EKRAN2: 
If M=4 And VER=61 And PORTA.1=0 Then 
SAYI=0 
Print At 1,1, "KAPANDI" 
DelayMS 30 
GoTo EKRAN2 
EndIf 
Next M 
EndIf 
DelayMS 100 
GoTo START 

'-------------------------ALT PROGRAMLAR--------------------------------------- 
GONDER: 
HSerOut [Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl 
HSerOut ["A","R","A",Dec VER,123] 
Return 
End

selvi

hocam teşekkürler.program hangi anlamda hosunuza gitmedi.buna donuk gorusleriniz varsa belirtebilirsiniz.
Yaşam anlamlandırıldıkça kutsaldır....