Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
1750
Tıklama
0
Öne Çıkarma
C ile PIC kodu yazmayı bilenler baksın, hata nerede?
M
14 yıl (631 mesaj)
Yüzbaşı
Konu Sahibi

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)

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

D
14 yıl (2845 mesaj)
Yarbay

_
14 yıl (2553 mesaj)
Binbaşı

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...


Bu mesaja 1 cevap geldi.
E
14 yıl (2734 mesaj)
Yüzbaşı

Vista/7 ile çalışıyorsanız usburn'u yönetici olarak çalıştırmayı deneyin.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.