Şimdi Ara

PIC ile Buton Kontrolü

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
20
Cevap
0
Favori
3.191
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  •  PIC ile Buton Kontrolü

    Arkadaşlar Ben Sizden Şu Yardımı Bekliyorum;

    16F628'de

    PORTA,1 e Basıldığında PORTB,1 çıkış Verecek
    PORTA,2 e Basıldığında PORTB,2 çıkış Verecek
    PORTA,3 e Basıldığında PORTB,3 çıkış Verecek
    PORTA,4 e Basıldığında PORTB,4 çıkış Verecek

    Örn PORTA,1 e Bastığımda PORTB,1e Bağlı Led Yanacak ...

    Ben Birşeyler Yaptım ama olmadı unutmuş olmalıyım Bana C Koduda Olabilir ASM Koduda Olabilir Hiç Farketmez Ama Sadece Hex Vermeyin Kodda Lazım Nasıl Yapabilirim Yardımcı Olursanız Sevinirim..







  • Cevabı Bilen Yokmu Forumdaa
  • Al ustam istediğin gibi oldu
  • Device 16F628A

    TRISA=255
    TRISB=0
    PORTA=%00000000
    PORTB=%00000000

    DONGU:

    If PORTA.0=0 Then
    DelayMS 150
    PORTB.0=1
    EndIf

    GoTo DONGU
    End

    Proton ile yazdım.Diğer portlarıda sen yaparsın.





     PIC ile Buton Kontrolü
  • quote:

    Orijinalden alıntı: hancer001

    Al ustam istediğin gibi oldu

    Öncelikle teşekkürler ama dosyada hata var inmiyor başka bir download sitesine yüklermisin yada kodları verirmisin bide resim değil onu yapıorum kod lazım kod



    < Bu mesaj bu kişi tarafından değiştirildi mcbulbul42 -- 8 Mart 2013; 20:13:58 >
  • quote:

    Orijinalden alıntı: RKDesing

    Device 16F628A

    TRISA=255
    TRISB=0
    PORTA=%00000000
    PORTB=%00000000

    DONGU:

    If PORTA.0=0 Then
    DelayMS 150
    PORTB.0=1
    EndIf

    GoTo DONGU
    End

    Proton ile yazdım.Diğer portlarıda sen yaparsın.





     PIC ile Buton Kontrolü


    Hangi Dil BU Bana CCS C yada ASM lazım




  • Device 16F628A

    TRISA=255
    TRISB=0
    PORTA=%00000000
    PORTB=%00000000

    DONGU:

    If PORTA.0=0 Then
    DelayMS 150
    PORTB.0=1
    EndIf

    GoTo DONGU
    End

    Basic ile yazdım.Diğer portlarıda bu şekilde yapabilirsin.

    Yanlışlıkla ikikere göndermişim.Basic ile yazdım.

     PIC ile Buton Kontrolü



    < Bu mesaj bu kişi tarafından değiştirildi Rkx -- 8 Mart 2013; 20:13:51 >




  • quote:

    Orijinalden alıntı: RKDesing

    Device 16F628A

    TRISA=255
    TRISB=0
    PORTA=%00000000
    PORTB=%00000000

    DONGU:

    If PORTA.0=0 Then
    DelayMS 150
    PORTB.0=1
    EndIf

    GoTo DONGU
    End

    Basic ile yazdım.Diğer portlarıda bu şekilde yapabilirsin.

    Yanlışlıkla ikikere göndermişim.Basic ile yazdım.

     PIC ile Buton Kontrolü



    Bana Bunu CCS C yada ASM ile Yazarmısın




  • Onları kullanmayı bilmiyorum. Üzgünüm.
  • quote:

    Orijinalden alıntı: RKDesing

    Onları kullanmayı bilmiyorum. Üzgünüm.

    peki ilgilendiğin için teşekkürler
  • quote:

    Orijinalden alıntı: mcbulbul42

    quote:

    Orijinalden alıntı: hancer001

    Al ustam istediğin gibi oldu

    Öncelikle teşekkürler ama dosyada hata var inmiyor başka bir download sitesine yüklermisin yada kodları verirmisin bide resim değil onu yapıorum kod lazım kod

    void main() {
    TRISA=1;
    PORTA=0;
    TRISB=0;
    PORTB=0;

    while (1){

    if(PORTA.RA0)
    PORTB.RB0=1;

    else
    {
    PORTB.RB0=0;
    }

    if (PORTA.RA1)
    PORTB.RB1=1;
    else
    {
    PORTB.RB1=0;
    }

    if(PORTA.RA2)
    PORTB.RB2=1;
    else
    {
    PORTB.RB2=0;
    }

    if (PORTA.RA3)
    PORTB.RB3=1;
    else
    {
    PORTB.RB3=0;
    }

    }

    }




  • quote:

    Orijinalden alıntı: hancer001

    quote:

    Orijinalden alıntı: mcbulbul42

    quote:

    Orijinalden alıntı: hancer001

    Al ustam istediğin gibi oldu

    Öncelikle teşekkürler ama dosyada hata var inmiyor başka bir download sitesine yüklermisin yada kodları verirmisin bide resim değil onu yapıorum kod lazım kod

    void main() {
    TRISA=1;
    PORTA=0;
    TRISB=0;
    PORTB=0;

    while (1){

    if(PORTA.RA0)
    PORTB.RB0=1;

    else
    {
    PORTB.RB0=0;
    }

    if (PORTA.RA1)
    PORTB.RB1=1;
    else
    {
    PORTB.RB1=0;
    }

    if(PORTA.RA2)
    PORTB.RB2=1;
    else
    {
    PORTB.RB2=0;
    }

    if (PORTA.RA3)
    PORTB.RB3=1;
    else
    {
    PORTB.RB3=0;
    }

    }

    }

    Arkadaşım Hangi Dille Yazdın pic16f628 mi denedim ccs c de olmadı :(




  • MİCRO C DE YAZDIM DENEDİM CALISIO
  • quote:

    Orijinalden alıntı: hancer001

    MİCRO C DE YAZDIM DENEDİM CALISIO

    Kardeşim Micro C Deil CCS C lazim PİC C Compilerde
  • Burdan yola cikarak bi daha dene istersn

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: mcbulbul42

     PIC ile Buton Kontrolü

    Arkadaşlar Ben Sizden Şu Yardımı Bekliyorum;

    16F628'de

    PORTA,1 e Basıldığında PORTB,1 çıkış Verecek
    PORTA,2 e Basıldığında PORTB,2 çıkış Verecek
    PORTA,3 e Basıldığında PORTB,3 çıkış Verecek
    PORTA,4 e Basıldığında PORTB,4 çıkış Verecek

    Örn PORTA,1 e Bastığımda PORTB,1e Bağlı Led Yanacak ...

    Ben Birşeyler Yaptım ama olmadı unutmuş olmalıyım Bana C Koduda Olabilir ASM Koduda Olabilir Hiç Farketmez Ama Sadece Hex Vermeyin Kodda Lazım Nasıl Yapabilirim Yardımcı Olursanız Sevinirim..

    serdar çiçek ccs ile pic programlama kitabında aynı uygulamayı görmüştüm.
    Aynı uygulamayı msp430 için yaptım. Aynı uygulama banada lazımdı. İmkanın varsa o kitabı al faydalanırsın hem daha çok şey öğrenirsin.




  • Evet arkadaşlar kendi çabalarım üzerine CCS C Kodunu Yaptım 16F877 İçin D Portuna Buton C Portundan Çıkış alıyorum

    void main()
    {
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);


    while(true)
    {

    if(input(PIN_D0)) { output_bit(PIN_C0,PIN_D0); }
    else{ output_Low(PIN_C0); }

    if(input(PIN_D1)) { output_bit(PIN_C1,PIN_D1); }
    else{ output_Low(PIN_C1); }
    if(input(PIN_D2)) { output_bit(PIN_C2,PIN_D2); }
    else{ output_Low(PIN_C2); }
    if(input(PIN_D3)) { output_bit(PIN_C3,PIN_D3); }
    else{ output_Low(PIN_C3); }

    }


    }
  • altaş yayınlarında CCS C kitabının içeriğinin tüm örnek kodları mevcut ve istediğin kodlarda orda var
  • list p=16F628A ; list directive to define processor
    #include <p16F628A.inc> ; processor specific variable definitions

    __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

    cblock 0x20
    INT_VAR
    w_temp
    status_temp
    endc

    org 0 ; processor reset vector
    goto START ; go to beginning of program
    org 4 ; interrupt vector location
    INTERRUPT
    movwf w_temp ; save off current W register contents
    movf STATUS,w ; move status register into W register
    movwf status_temp ; save off contents of STATUS register


    ; eger baska bir projede gerekirse interrupt kodları buraya yazılacak


    movf status_temp,w ; retrieve copy of STATUS register
    movwf STATUS ; restore pre-isr STATUS register contents
    swapf w_temp,f
    swapf w_temp,w ; restore pre-isr W register contents
    retfie ; return from interrupt


    START BSF STATUS,RP0 ;Bank 1 select
    MOVLW B'11111111' ; PORTA nın butun pinlerini giriş
    MOVWF TRISA
    MOVLW B'00000000' ; PORTB nin pütün pinlerini cıkıs yaptık
    MOVWF TRISB
    MOVLW B'00000000'
    MOVWF OPTION_REG
    MOVLW B'00100000' ; bütün interruptları kapattık
    movwf INTCON
    BCF STATUS,RP0

    ;***********; Clear Memory **********************************

    movlw 0x20
    movwf FSR
    Clear clrf INDF
    incf FSR
    BTFSS FSR, 7
    GOTO Clear

    ;*************************************************************
    ; öncelikle giriş pinlerini bosta bırakmamalısın (portun kararsız olmaması icin )
    ; ornegin 47k gibi bir direcle +ya pullup yapmalısın.
    ;*************************************************************

    _ilk btfsc PORTA, 1 ; PORTA'nın 1 nolu biti 1 ise bir satır atla
    goto $+3 ; degil ise üc satır atla
    bsf PORTB, 1 ; PORTB'nin 1 nolu bitini 1 yap
    goto $+2 ; _ikinci ye git
    bcf PORTB, 1

    _ikinci btfsc PORTA, 2
    goto $+3
    bsf PORTB, 2
    goto $+2
    bcf PORTB, 2

    _ücüncü btfsc PORTA, 3
    goto $+3
    bsf PORTB, 3
    goto $+2
    bcf PORTB, 3

    _dorduncü btfsc PORTA, 4
    goto $+3
    bsf PORTB, 4
    goto $+2
    bcf PORTB, 4
    goto _ilk


    END


    işine yarayacagını ümit ediyorum
    baska birihtiyacın olursa yaz
    yada asagıdaki adrese biraktım download edebilirsin

    www.arizatespitcihazi.pro/download/deneme.rar

    kolay gelsin



    < Bu mesaj bu kişi tarafından değiştirildi mihran -- 10 Mart 2013; 3:09:32 >




  • mcbulbul42 M kullanıcısına yanıt
    çalışmaz tabi

    if parantezlerine eklediği komutta şart olayı yok

    satır şöyle olmalıydı

    if(porta.ra0=1) // port a nın ra0 biti 1 ise
    portb.rb0=1 // port rb0 bitini 1 yap

    diğer if satırlarına da = işareti bu şekilde eklenecek
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.