undefined identifier -delay ms hatası.

Katılım
18 May 2007
Mesajlar
96
Puanları
1
Yaş
39
Merhaba;
Pic programlamada yeniyim.
basit bir kod yazdım ancak sürekli delay_ms de hata veriyor.Nerede yanlış yapıyorum?


#include "16f877a.h"

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);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
set_tris_a(0xff);
set_tris_b(0x00);
basla:
if(input(pin_a0))
{
delay_ms(50); burada ms ie parantez arasında imleç yanıp sönüyor...
output_high(pin_b0);


}goto basla;
}
 
#use delay(clock=4000000)
Eksik olabilir
hayır.eksik değil..h dosyasına baktığımda hep 2000000 veriyor ama ben 4mhz yazıp kaydediyorum.Ancak yinede hata veriyor. .Tahminimce programı başlatırken birşeyleri yanlış yapıyorum.Daha önceden yapılmış programda sorun yok.Ama ben sıfırdan program yazmaya başlayınca bu hata çıkıyor
 
main.h dosyası


#include <16F877A.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES WRT_50% //Lower half of Program Memory is Write Protected

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
 
Ben ccs derleyicisinin önişlemci komutlarını bilmiyorum. Ama kodu tam olarak yazarsan yardımcı olurlar.
 
Ben ccs derleyicisinin önişlemci komutlarını bilmiyorum. Ama kodu tam olarak yazarsan yardımcı olurlar.
kod bu;


#include "16f877a.h"

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);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
set_tris_a(0xff);
set_tris_b(0x00);
basla:
if(input(pin_a0))
{
delay_ms(50);
output_high(pin_b0);


}goto basla;
}
 
başka birşey denedim şu an.
Pic wizard (yeni proje aç)yaptıktan sonra bu sefer osilatör frekansı 20mhz yazan yere 4 mhz değerini girdim.şimdi düzeldi.Sorun buradan mı diye tekrar picwizard yaptım.default değer 20 mhz di.ok deyip proje sayfasına düştüm.ama yine delay ms kodu hata ver-ME-di.Sorun neden oldu bilmiyorum ama şu an delay_ms de bir hata vermiyor...
 
Hatayı buldum.

include içine verilen dosya yolunu ben değiştirip 16f877a.h yazıyordum.include içeriğini Değiştirilince , delay_ms hatası veriyordu.Bu sefer değiştirmedim.sorun olmadı.include içine dosyayı ilk verdiğim ismide yani main.h yazıncada sıkıntı çıkmadı.Sorun çözülmüştür...
 
16f877.h dosyası picin özelliklerini içermektedir.
main. h dosyası ise; osilatör,sigorta, ayarları gibi ayarları içermektedir.pic wizart kullanınca otomatik olarak dosyayı oluşturur ve ayarları içine alır. proğramında göz kalabalığı yapmasın diye.
sen main. h dosya adını değiştirince osilatör bilgisini bulamamakta ve delay_ komutların hata vermektedir (osilatör bilgin yoksa ne kadar bekleyeceğini zaman olarak ayarlayamaması normal) . main.h ve 16f877.h dosyalarının içerisine bakarsan daha net anlaşılır. sorunun çözülmüş ama sebebini de anlaman için yazdım. inşallah anlatabilmişimdir. kolay gelsin
 

Yeni mesajlar

Forum istatistikleri

Konular
128,258
Mesajlar
916,271
Kullanıcılar
450,082
Son üye
halefly

Yeni konular

Geri
Üst