Pic18f45k22de dahili eproma okuma yazma yapamıyorum

karasercan

Üye
Katılım
17 Eki 2019
Mesajlar
89
Puanları
1
Yaş
35
arkadaşlar en basit uygulamada bile yapamadım sıkıntı şu kodlar proteusta çalışıyor karta aktarınca çalışmıyor neyi hatalı yaptım denedigim kartla cnc uygulamasını çalıştırıyorum bir sıkıntı olacagını zannetmiyorum
Kod:
#include <18f45k22.h>     // Kullanýlacak denetleyicinin baþlýk dosyasý tanýtýlýyor.

// Denetleyici konfigürasyon ayarlarý
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanýlacak osilatör frekansý belirtiliyor.

#use fast_io(a) //Port yönlendirme komutlarý A portu için geçerli

#define use_portb_lcd TRUE   // LCD B portuna baðlý

#include <lcd.c> // LCD.c dosyasý programa ekleniyor

int8 _10ms=0;           // Tam sayý tipinde deðiþken tanýmlanýyor
unsigned int8 saniye=0; // Ýþaretsiz tam sayý tipinde deðiþken tanýmlanýyor

//****************** Timer0 Kesmesi *****************************
#int_timer0  // Timer0 kesmesi. Her 10 msn'de bir kesme oluþur.
void  timer0_kesme ()   // Kesme fonksiyonu ismi
{
    set_timer0(217); // TMR0 deðeri belirleniyor

    _10ms++;        // _10ms deðiþkeni deðerini 1 arttýr
      
    if (_10ms==100) // _10ms deðeri 100 olunca (Geçen süre 1 saniye olunca)
    {
       _10ms=0;    // _10ms deðiþkenini sýfýrla
       saniye++;   // saniye deðiþkenini bir arttýr
       if (saniye==255) // Eðer saniye deðiþkeni 999 olursa sýfýrla
          saniye=0; // saniye deðiþkenini sýfýrla
    }
}

/********* ANA PROGRAM FONKSÝYONU********/
void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dýþý
   setup_timer_1(T1_DISABLED);     // T1 zamanlayýcýsý devre dýþý
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayýcýsý devre dýþý
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriþ yok
   setup_adc(ADC_OFF);             // ADC birimi devre dýþý
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dýþý
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dýþý

   set_tris_a(0x0F);   // RA0, RA1, RA2, RA3 pinleri giriþ

   lcd_init();         // LCD kurulumu yapýlýyor

   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); // Timer0 ayarlarý yapýlýyor
   set_timer0(217);   // TMR0 deðeri belirleniyor
  
   lcd_gotoxy(1,1); // Ýmleç 1.sütun, 1. satýrda
   printf(lcd_putc,"Sure=%03u.%02d",saniye,_10ms); // Saniye ve milisaniye LCD'ye yazdýrýlýyor
   lcd_gotoxy(1,2); // Ýmleç 1.sütun, 2. satýrda
   printf(lcd_putc,"Sonuc=%03u.%02d",read_eeprom(0),read_eeprom(1)); // EEPROM'da saklanan saniye ve milisaniye deðerleri LCD'ye yazdýrýlýyor

   while(1)
   {
      if(input(pin_a3))  // SIFIRLA butonuna basýldý ise
      {
         saniye=_10ms=0;
         write_eeprom(0,saniye);  // 0 (0x00) adresine saniye deðerini yaz
         write_eeprom(1,_10ms);   // 1 (0x01) adresine milisaniye deðerini yaz
         lcd_gotoxy(1,1); // Ýmleç 1.sütun, 1. satýrda
         printf(lcd_putc,"Sure=%03u.%02d",saniye,_10ms); // Sýfýrlanan süre LCD'ye yazdýrýlýyor
         lcd_gotoxy(1,2); // Ýmleç 1.sütun, 2. satýrda
         printf(lcd_putc,"Sonuc=%03u.%02d",saniye,_10ms);// Sýfýrlanan kayýtlý süre LCD'ye yazdýrýlýyor
         while(input(pin_a3)); // Butondan el çekilene kadar bekle
      }
 
      if(input(pin_a0)) // BAÞLA butonuna basýldý ise
      {
         while(!input(pin_a2)) // DUR butonuna basýlana kadar döngü dönsün
         {
            enable_interrupts(INT_timer0); // int_timer0 kesmesini aktif yapar
            enable_interrupts(GLOBAL);     // Aktif edilen kesmelere izin ver

            lcd_gotoxy(1,1); // Ýmleç 1.sütun, 1. satýrda
            printf(lcd_putc,"Sure=%03u.%02d",saniye,_10ms); // Süre LCD'ye yazdýrýlýyor
            lcd_gotoxy(1,2); // Ýmleç 1.sütun, 2. satýrda
            printf(lcd_putc,"Sonuc=%03u.%02d",read_eeprom(0),read_eeprom(1)); // EEPROM'da saklanan saniye ve milisaniye deðerleri LCD'ye yazdýrýlýyor


            if (input(pin_a1))  // YAKALA butonuna basýlmýþsa
            {
             write_eeprom(0,saniye);  // 0 (0x00) adresine saniye deðerini yaz
             write_eeprom(1,_10ms);   // 1 (0x01) adresine milisaniye deðerini yaz
             lcd_gotoxy(7,2);         // Ýmleç 7.sütun, 2. satýrda
             printf(lcd_putc,"%03u.%02d",read_eeprom(0),read_eeprom(1));  // LCD'de yakalanan zamaný göster
             while(input(pin_a1));     // Butondan elimizi çekene kadar bekle
            }
            
            lcd_gotoxy(6,1);                // Ýmleç 6.sütun, 1. satýrda
            printf(lcd_putc,"%03u.%02d",saniye,_10ms); // Geçen zamaný LCD'de göster     
         }
         disable_interrupts(GLOBAL); // Tüm kesmeleri pasif yap.
     }
  }
}
 
Çalışmayan ne, ne oluyor, ekranda birşey mi yazmıyor, yanlış mı yazıyor, problem ne?
 
Çalışmayan ne, ne oluyor, ekranda birşey mi yazmıyor, yanlış mı yazıyor, problem ne?
bir takım degişkenler var yazmam gerekiyor sonrada ihtiyacım olunca çagırıcam o değişkenleri seri port dokunmatik ekran kullanıyorum ekranı proteusta simulasyon sirasında conpim ile bagladığım zaman bilgisayardaki simulasyon ekran ile program çok güzel çalışıyor ama gerçek devreye taktıgım zaman hiç bir sonuç alamıyorum
 
birde bu konfigrasyonu denermisiniz
Kod:
#include <18F45K22.h>
#device ADC=10  // 10 bitlik ADC
#fuses NOMCLR,INTRC,PLLEN,WDT256,PROTECT
#use delay(clock=64m,internal=16m,restart_wdt)
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…