Şimdi Ara

C ile PIC kodu yazmayı bilenler baksın, hata nerede?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
1.649
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Aşağıdaki Program, normalde sonsuz döngüde dönüyor, interruPt bacağından sinyal gelince RB5'i logic 1 yaPıyor sonra a Portuna bakıyor, oradan çekeceği 8 bitlik değer kadar milisaniye gecikmeden sonra RB5'i logic sıfır yaPıyor. CCS C ile yazdım, herhangi bir sorun çıkarmadı, ama US-Burn isimli Programla hex dosyasını PIC'e atmaya çalıştığımda hata verdi. Nerede hata var çözemedim.

    #include "C:\Documents and Settings\Günay\Desktop\PIC Programlama\Etiket Ayıklama\proje_dip_switchli.h"
    #include <delay.c> //Delay kütüphanesi seçildi
    #int_EXT //Interrupt fonksiyonu tanımlandı


    void EXT_isr(void)
    {
    int gecikme;
    char ports;
    ports=input_a(); //A portundan gelen girişi ports değerine eşitledim
    output_high(PIN_B5); //Çıkışı 1 yaptı, RB5'e bağlanan kapağı açtı
    for(gecikme=0;gecikme<8;++gecikme) //RB5'den gelen binary rakamın karşılığı olan 0-255 arası sayının 8 katı kadar gecikme yaptı
    {
    DelayMs(ports);
    }
    Output_low(PIN_B5); //Gecikme bitince RB5'i sıfır yaptı yani RB5'teki kapağı kapattı
    #asm //ASM koduna geçiş yaptı
    BCF 0x0B,1; //Interrupt Flag'i sıfırla, program otomatik yapıyormuş
    #endasm //ASM kodundan çıkış yapıldı

    }

    void main()
    {
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    enable_interrupts(INT_EXT); //RB0 bacağı interrupt'a açıldı
    enable_interrupts(GLOBAL); //Genel interrupt'lar açıldı
    set_tris_a(0xFF); //port A tamamen input olarak seçildi
    set_tris_b(0x01); //port B'de RB0 input, diğerleri output olarak seçildi
    #asm //ASM koduna geçiş yapıldı
    BSF 0x81,6; //Interrupt Edge Select Bit'inden rising edge seçildi
    #endasm

    while(1) //Sonsuz döngüye girildi
    {
    }
    }


    _______________________________________________
    AŞAĞIDAKİ KOD'DA İNCLUDE ETTİĞİM .h DOSYASI

    #include <16F628A.h>

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES INTRC_IO //Internal RC Osc, no CLKOUT
    #FUSES PUT //Power Up Timer
    #FUSES NOPROTECT //Code not protected from reading
    #FUSES BROWNOUT //Reset when brownout detected
    #FUSES NOMCLR //Master Clear pin used for I/O
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD //No EE protection

    #use delay(clock=4000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)



    < Bu mesaj bu kişi tarafından değiştirildi m.gunay88 -- 20 Ekim 2011; 13:20:09 >







  • nasıl bir hata verdi?
  • zaten compile ederken (yani hex e dönüştürürken) bir hata vermediyse ve usburn ile pic e atarken hata verdiyse sorun programda değil ya programlayıcınızda ya usburn dediğiniz programda yada pic'inizde olabilir.. eğer kod zaten isiste sorunsuz çalışıyorsa, picte de aşağı yukarı aynı şekilde çalışması lazımdı diye düşünüyorum...
  • Vista/7 ile çalışıyorsanız usburn'u yönetici olarak çalıştırmayı deneyin.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.