1. Forumumuzda alt yapı değişikliği yapılmıştır. sorun yaşayan üyelerimiz buradan hata bildirimi yapabilirler.

Pic basic ve Proton basic kod çevrimi Data aktarımı Hakkında

Konusu 'Pic Programlama' forumundadır ve has_artvin_li tarafından 15 Şubat 2009 başlatılmıştır.

  1. has_artvin_li
    Çevrimdışı

    has_artvin_li Paylaşımcı üye

    Katılım:
    18 Ocak 2008
    Mesajlar:
    636
    Beğenilen Mesajları:
    142
    Ödül Puanları:
    143
    Meslek:
    Endüstriyel elektronik

    Öncelikle herkese selamun aleyküm ve günaydın...
    Daha önceden pic basicde yapılmış çalışan ve çalıştığını da kendimin denediğim bir proje kodu vardı elimde DS18B20 yi okutup ekrana yazdırıyordu 16f628A ile yapılmış kodları şu şekilde :

    @ DEVICE pic16F628A
    @ DEVICE pic16F628A, WDT_OFF
    @ DEVICE pic16F628A, PWRT_OFF
    @ DEVICE pic16F628A, PROTECT_OFF
    @ DEVICE pic16f628a , INTRC_OSC_NOCLKOUT
    @ DEVICE pic16f628a , MCLR_OFF
    cmcon=7
    DEFINE LCD_DREG PORTB
    DEFINE LCD_DBIT 4
    DEFINE LCD_EREG PORTB
    DEFINE LCD_EBIT 1
    DEFINE LCD_RSREG PORTB
    DEFINE LCD_RSBIT 0
    DEFINE LCD_BITS 4
    DEFINE LCD_LINES 4
    pause 500
    lcdout $fe,1,"artvin_li_murat"
    lcdout $fe,$c0," @hotmail.com"
    pause 2500
    lcdout $fe,1
    SYMBOL DQ=PORTA.0
    MEM VAR BYTE
    ISI VAR WORD
    HAM VAR WORD
    TA1 VAR WORD
    TA2 VAR WORD
    TA3 VAR WORD
    TA4 VAR WORD
    TA5 VAR WORD

    PAUSE 200
    BASLA:
    OWOUT DQ,1,[$CC,$44]
    DONGU:
    OWIN DQ,4,[ISI]
    IF ISI=0 THEN DONGU
    OWOUT DQ,1,[$CC,$BE]
    OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE]

    IF HAM.BIT11=0 THEN HESAPLA
    IF HAM.BIT11=1 THEN HESAPLA1
    GOTO BASLA


    HESAPLA:
    TA2=HAM.LOWBYTE
    TA2=TA2//16
    TA2=TA2/2
    TA2=TA2*125
    ta2=ta2/10


    TA1=HAM//16
    TA1=HAM-TA1
    TA1=TA1/16
    lcdout $fe,1," tekniker_murat"
    LCDOUT $FE,$C0,"+",#TA1,".",#TA2
    LCDOUT $FE,$C5,"C"
    GOTO BASLA

    HESAPLA1:
    TA3=$FFFF-HAM+1
    TA4=TA3//16
    TA4=TA4/2
    TA4=TA4*125
    ta4=ta4/10


    TA5=TA3//16
    TA5=TA3-TA5
    TA5=TA5/16
    lcdout $fe,1," tekniker_murat"
    LCDOUT $FE,$C0,"-",#TA5,".",#TA4
    LCDOUT $FE,$C5,"C"
    GOTO BASLA

    END

    Sonra ben bu kodları aldım proton basicde çalışacak bir şekilde dizayn etmeye çalıştım bu projedeki amacım şöyle olcak;Devrede 1 tane 12F675 bir tanede 18F4550 var bu 12F675 DS18B20 yi okuyacak sonra bu okuduğu kodu GP1 pininden 18f4550 nin RC1 pinine asenkron seri iletişim yolu ile yollayacak bunu alan 18f4550 de ekrana yazdıracak.
    12F675 için yazdığım kodlar şunlar yani proton diline çevirmeye çalıştığım yukarıdaki programın son şekli...

    Device 12F675
    Config CPD_OFF,CP_OFF,BODEN_OFF,MCLRE_OFF,PWRTE_OFF,WDT_OFF,INTRC_OSC_NOCLKOUT
    Include "modedefs.bas"
    ANSEL=0
    CMCON=7
    Symbol gon=GPIO.1
    Symbol DQ=GPIO.5
    Dim mem As Byte
    Dim isi As Word
    Dim ham As Word
    Dim ta1 As Word
    Dim ta2 As Word
    Dim ta3 As Word
    Dim ta4 As Word
    Dim ta5 As Word

    DelayMS 200
    BASLA:
    OWrite DQ,1,[$CC,$44]
    'OWOUT DQ,1,[$CC,$44]
    DONGU:
    ORead DQ,4,[isi]
    'OWIN DQ,4,[ISI]
    If isi=0 Then DONGU
    OWrite DQ,1,[$CC,$BE]
    ORead DQ,2,[ham.LowByte,ham.HighByte]
    'OWOUT DQ,1,[$CC,$BE]
    'OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE]

    If ham.11=0 Then HESAPLA
    If ham.11=1 Then HESAPLA1
    GoTo BASLA


    HESAPLA:
    ta2=ham.LowByte
    ta2=ta2//16
    ta2=ta2/2
    ta2=TA2*125
    ta2=ta2/10


    ta1=ham//16
    ta1=HAM-TA1
    ta1=ta1/16
    SerOut gon,N2400,[#ta1,ta2]
    GoTo BASLA

    HESAPLA1:
    ta3=$FFFF-HAM+1
    ta4=ta3//16
    ta4=ta4/2
    ta4=TA4*125
    ta4=ta4/10


    ta5=ta3//16
    ta5=TA3-TA5
    ta5=ta5/16
    SerOut gon,N2400,[#ta5,ta4]
    GoTo BASLA

    End

    Bunlarda 18F4550 için yazdığım kodlar...

    Device 18F4550
    Include "modedefs.bas"
    @CONFIG_REQ
    @__CONFIG CONFIG1H, FOSC_HS_1
    @__CONFIG CONFIG2L, PWRT_OFF_2 & VREGEN_OFF_2 & BOR_OFF_2
    @__CONFIG CONFIG2H, WDT_OFF_2
    @__CONFIG CONFIG3H, MCLRE_OFF_3 & LPT1OSC_OFF_3 & PBADEN_OFF_3 & CCP2MX_OFF_3
    @__CONFIG CONFIG4L, STVREN_OFF_4 & LVP_OFF_4 & ICPRT_OFF_4 & XINST_OFF_4 & DEBUG_OFF_4
    @__CONFIG CONFIG5L, CP0_OFF_5 & CP1_OFF_5 & CP2_OFF_5 & CP3_OFF_5
    @__CONFIG CONFIG5H, CPB_OFF_5 & CPD_OFF_5
    @__CONFIG CONFIG6L, WRT0_OFF_6 & WRT1_OFF_6 & WRT2_OFF_6 & WRT3_OFF_6
    @__CONFIG CONFIG6H, WRTB_OFF_6 & WRTC_OFF_6 & WRTD_OFF_6
    @__CONFIG CONFIG7L, EBTR0_OFF_7 & EBTR1_OFF_7 & EBTR2_OFF_7 & EBTR3_OFF_7
    @__CONFIG CONFIG7H, EBTRB_OFF_7
    ADCON1=$0F
    ALL_DIGITAL TRUE
    XTAL 10
    Declare LCD_DTPIN PORTB.4
    Declare LCD_ENPIN PORTB.3
    Declare LCD_RSPIN PORTB.2
    Declare LCD_INTERFACE 4
    Declare LCD_LINES 4
    Symbol lcd_isik=PORTD.3
    Symbol saat_al=PORTC.0
    Symbol isi_al=PORTC.1
    Dim tam As Byte
    Dim onda As Byte
    Dim saat As Byte
    Dim dakika As Byte
    Dim saniye As Byte
    Dim gun As Byte
    Dim ay As Byte
    Dim yil As Byte
    Low lcd_isik
    Low saat_al
    Low isi_al
    basla:
    GoSub reklam
    GoSub isi_oku
    'GoSub saat_oku
    GoSub yaz
    GoTo basla
    reklam:
    Low lcd_isik
    DelayMS 100
    High lcd_isik
    DelayMS 100
    Print $fe,1
    Print At 1,1,"ELEKTRONiK TEKNiK ER"
    Print At 2,1,"MURAT YAGCI"
    Print At 3,1,"artvin_li_murat@hot-"
    Print At 4,1,"mail.com"
    DelayMS 2500
    Low lcd_isik
    DelayMS 100
    High lcd_isik
    DelayMS 100
    Return
    isi_oku:
    SerIn isi_al,N2400,[tam,onda]
    Return
    saat_oku:
    'SerIn saat_al,N2400,[saat,dakika,saniye,gun,ay,yil]
    Return
    yaz:
    Print $fe,1
    Print At 1,1,"isi=","+",#tam,".",#onda
    DelayMS 3000
    Return
    GoTo basla

    Sorun ise şu:pic12F675 DS12B20 yi okuyup 18F4550 ye attığı değeri ben ekranda görüyorum ama saçma sapan değerler.
    Sonra ds18b20 yi söküyorum bu defa değer okumaması gerekirken yine daha abuk sabuk değerler okuyo ve ekrana basıyo.
    Bu çalışmada yapılan hata acaba nerede pic basic kodlarını protona çevirirken yanlış yapmış olabilirmiyim özellikle şu komutlarda:

    OWOUT DQ,1,[$CC,$BE]
    OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE]

    OWrite DQ,1,[$CC,$44]
    ORead DQ,4,[isi]

    OWrite DQ,1,[$CC,$BE]
    ORead DQ,2,[ham.LowByte,ham.HighByte]
    'OWOUT DQ,1,[$CC,$BE]
    'OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE]

    bu komutlarda OWOUT ve OWIN komutları picbasic dili için OWrite ile ORead da proton basic komutları
    Bu durumda:
    OWOUT un yaptığı işi OWrite
    OWIN in yaptığı işi de ORead yapıyo olarak değerlendirdim bu değerlendirme yanlış mı tam tersi mi olcak bu konuda yardımcı olursanız çok memnun olurum...
    Roboelektronik bunu beğendi.
    Entes
    Entes
  2. yavuzz
    Çevrimdışı

    yavuzz Bölüm Yöneticisi Yönetim Ekibi Bölüm Yöneticisi

    Katılım:
    14 Eylül 2007
    Mesajlar:
    495
    Beğenilen Mesajları:
    14
    Ödül Puanları:
    18
    Meslek:
    Mühendis
    OWrite DQ,1,[$CC,$44]
    'OWOUT DQ,1,[$CC,$44]

    bu kodu ne için kullandın acab açıklayabilir misin neden
    [$CC,$44],[$CC,$BE] bu değerler sabit mi? şimdiden teşekkürler
  3. mesuth
    Çevrimdışı

    mesuth Yeni Üye

    Katılım:
    12 Kasım 2012
    Mesajlar:
    1
    Beğenilen Mesajları:
    0
    Ödül Puanları:
    1
    Merhaba dostum,

    Atladığın tek şey değer ve ondalığı yazdırdığında başına Dec yazmalısın (decimal)

    Örnek:



    Print At 1,1,"isi=","+",dec tam,".",dec onda
Benzer Konular
  1. Yuppi
    Mesaj:
    0
    Görüntüleme:
    1.882
  2. hackorsan
    Mesaj:
    4
    Görüntüleme:
    2.872
  3. cobra111
    Mesaj:
    1
    Görüntüleme:
    4.726
  4. colatesi1
    Mesaj:
    1
    Görüntüleme:
    1.609
  5. umutduran
    Mesaj:
    6
    Görüntüleme:
    1.811
Yüklüyor...

Sayfayı Paylaş