avatar_furkan41

Cıldırmak üzereyim lütfen yardım edin.

Başlatan furkan41, 04 Mart 2018, 01:54:21

furkan41

Arkadaşlar merhabalar ;

CSC C de yazdığım kodun devresi şu şekilde D portuna bağlı keypad'dan gelen ilk değeri C portundaki 7 segmente yazıcak keypaddan ikinci kez gelicek değeri B portundaki 7 segmente yazıcak  b portu segmentine yazıyor  ama bir türlü c portundan hiç bir şekilde cıkış alamıyorum  Bir yardımcı olursanız cok sevinirim.

Kodu ekliyorum.


#include <16f877.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(b)
#use fast_io(c)
#use fast_io(d)

#byte   portc=0x5B  // B portu "tus" ismine eşitleniyor.
#byte   portb=0x06   // B portu "tus" ismine eşitleniyor.



#define sut1   pin_d0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_d1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_d2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_d3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor

#define sat1   pin_d4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_d5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_d6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_d7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor

char tus=0; // karakter tipinde değişken tanımlanıyor
char tus1=0;
int deger=0;


//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku() // Fonksiyon ismi
{
   output_d(0x00); // D portu çıkışı sıfırlanıyor
   output_c(0x00);
   output_b(0x00);

   output_high(sat1); // 1. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=0x06; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=0x5B; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus= 0x4F; }
   if (input(sut4))   // 4. sütun okunuyor
      { delay_ms(20); tus=0xA; }
   output_low(sat1); // 1. satır lojik-0 yapılıyor

   output_high(sat2); // 2. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=0x66; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=0x6D; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=0x7C; }
   if (input(sut4))   // 4. sütun okunuyor
      { delay_ms(20); tus=0xB; }
   output_low(sat2); // 2. satır lojik-0 yapılıyor

   output_high(sat3); // 3. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=0x07;}
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=0x7F; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=0x67; }
   if (input(sut4))   // 4. sütun okunuyor
      {delay_ms(20); tus=0x0C; }
   output_low(sat3); // 3. satır lojik-0 yapılıyor

   output_high(sat4); // 3. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=0xE; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=0x3F; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=0xF; }
   if (input(sut4))   // 4. sütun okunuyor
      {delay_ms(20); tus=0xD; }
   output_low(sat4); // 3. satır lojik-0 yapılıyor

   return tus; // Fonksiyon "tus" değeri ile geri döner
}


char keypad_oku1() // Fonksiyon ismi
{
   output_d(0x00); // D portu çıkışı sıfırlanıyor
   output_c(0x00);
   output_b(0x00);

   output_high(sat1); // 1. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus1=0x06; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus1=0x5B; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus1= 0x4F; }
   if (input(sut4))   // 4. sütun okunuyor
      { delay_ms(20); tus1=0xA; }
   output_low(sat1); // 1. satır lojik-0 yapılıyor

   output_high(sat2); // 2. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus1=0x66; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus1=0x6D; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus1=0x7C; }
   if (input(sut4))   // 4. sütun okunuyor
      { delay_ms(20); tus1=0xB; }
   output_low(sat2); // 2. satır lojik-0 yapılıyor

   output_high(sat3); // 3. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus1=0x07;}
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus1=0x7F; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus1=0x67; }
   if (input(sut4))   // 4. sütun okunuyor
      {delay_ms(20); tus1=0x0C; }
   output_low(sat3); // 3. satır lojik-0 yapılıyor

   output_high(sat4); // 3. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus1=0xE; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus1=0x3F; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus1=0xF; }
   if (input(sut4))   // 4. sütun okunuyor
      {delay_ms(20); tus1=0xD; }
   output_low(sat4); // 3. satır lojik-0 yapılıyor

   return tus1; // Fonksiyon "tus" değeri ile geri döner
}
/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI 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ışı

   set_tris_b(0x00);   // B portu komple çıkış
   set_tris_d(0x0F);   // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş
   set_tris_c(0x00);

   
   while(1)  // Sonsuz döngü
   {
   portc=0xff;
   if(deger==0)
   {
   portb=keypad_oku();
   deger++;
   }
   if(deger==1)
   {
   portc=keypad_oku1();
   deger=0;
   }
   
   
   
   
   
   
   
   
}
}

furkan41

Sorunu Cözdüm. 


#include <16f877.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(b)
#use fast_io(c) //Port yönlendirme komutları B portu için geçerli
#use fast_io(d) //Port yönlendirme komutları C portu için geçerli

#byte   portb=0x06
#byte   portc=0x07   // C portu "tus" ismine eşitleniyor.

#define sut1   pin_d0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_d1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_d2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_d3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor

#define sat1   pin_d4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_d5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_d6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_d7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor


char tus,ptus,ekran; // karakter tipinde değişken tanımlanıyor

// Ortak katot display için veri değerleri
int digit[16]={63,6,91,79,102,109,125,7,127,111,119,56,57,94,121,113};
//            [0 ,1,2 ,3 , 4 , 5 , 6 ,7, 8 , 9 , a , L ,c ,d , e , f ]




//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku() // Fonksiyon ismi
{
   output_d(0x00); // D portu çıkışı sıfırlanıyor
   tus=0;

   output_high(sat1); // 1. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=1; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=2; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=3; }
   if (input(sut4))   // 4. sütun okunuyor
      { delay_ms(20); tus=0xA; }
   output_low(sat1); // 1. satır lojik-0 yapılıyor

   output_high(sat2); // 2. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=4; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=5; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=6; }
   if (input(sut4))   // 4. sütun okunuyor
      { delay_ms(20); tus=0xB; }
   output_low(sat2); // 2. satır lojik-0 yapılıyor

   output_high(sat3); // 3. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=7; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=8; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=9; }
   if (input(sut4))   // 4. sütun okunuyor
      {delay_ms(20); tus=0x0C; }
   output_low(sat3); // 3. satır lojik-0 yapılıyor

   output_high(sat4); // 3. satır lojik-1 yapılıyor
   if (input(sut1))   // 1. sütun okunuyor
      { delay_ms(20); tus=0xE; }
   if (input(sut2))   // 2. sütun okunuyor
      { delay_ms(20); tus=0xFF; }
   if (input(sut3))   // 3. sütun okunuyor
      { delay_ms(20); tus=0xF; }
   if (input(sut4))   // 4. sütun okunuyor
      {delay_ms(20); tus=0xD; }
   output_low(sat4); // 3. satır lojik-0 yapılıyor

     
   return tus; // Fonksiyon "tus" değeri ile geri döner
   
}

void goster_b()
      {     
      ekran=tus;
      if(ekran==255){ekran=0;}output_b(digit[ekran]);           
      }
void goster_c()
      {
      ekran=tus;
      if(ekran==255){ekran=0;}output_c(digit[ekran]);           
      }
/********* 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);
   setup_CCP2(CCP_OFF);

   set_tris_b(0x00);
   set_tris_c(0x00);   // B portu komple çıkış
   set_tris_d(0x0F);   // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş

   output_b(digit[0]);
   output_c(digit[0]);
   
   int k;
   
   while(TRUE)  // Sonsuz döngü
   {
     keypad_oku();
     if(tus>0)
     {
     k++;
     if(k==1){
     goster_c();
     ptus=tus;
     do{delay_ms(10);keypad_oku();}while(tus==ptus);
     }
     
     if(k==2){
     goster_b();
     ptus=tus; k=0;
     do{delay_ms(10);keypad_oku();}while(tus==ptus);
     }
     }
     }
}


Powered by EzPortal