16f877 nin a portunda ilginc bi sorun

Başlatan samuray84, 07 Mayıs 2012, 23:03:12

samuray84

#include <16f877.h>     
#include <stdio.h>
#include <math.h>
//***********Denetleyici konfigürasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

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


#use fast_io(d) // Port yönlendirme komutları b portu için geçerli
#use fast_io(c)
#use fast_io(a) // Port yönlendirme komutları b portu için geçerli

/********* ANA PROGRAM FONKSÄ°YONU********/

void main ()
{
 
   int tel=0;
   
      setup_psp(PSP_DISABLED);
      setup_spi(SPI_SS_DISABLED);
      setup_timer_1(T1_DISABLED);
      setup_timer_2(T2_DISABLED,0,1);
      setup_adc_ports(NO_ANALOGS);
      setup_adc(ADC_OFF);
      setup_CCP1(CCP_OFF);
      setup_CCP2(CCP_OFF);
   
   set_tris_a(0x11);   
   set_tris_d(0b00000000);
   output_a(0b00000000);
   set_tris_c(0b00000000);
   output_c(0b00000000);
   output_d(0b00000000);


while(1)
  {

   delay_ms(200);
    if(input(pin_a0)&&(tel!=1))
     {
         output_a(0b00000000);
         output_c(0b00000000);
         output_d(0b00000000);
       
         output_high(pin_d7);
         tel=1;
     }
   
    if(input(pin_a1)&&(tel!=2))
     {
       
         output_a(0b00000000);
         output_c(0b00000000);
         output_d(0b00000000);
        output_high(pin_d6);
        tel=2;
     }
   
    if(input(pin_a2)&&(tel!=3))
     {
     
         output_a(0b00000000);
         output_c(0b00000000);
         output_d(0b00000000);
        output_high(pin_d5);
        tel=3;
     }
     
     
    if(input(pin_a3)&&(tel!=4))
     {
     
         output_a(0b00000000);
         output_c(0b00000000);
         output_d(0b00000000);
       output_high(pin_d4);
       tel=4;
     }
     
     
    if(input(pin_a4)&&(tel!=5))
     {
     
         output_a(0b00000000);
         output_c(0b00000000);
         output_d(0b00000000);
        output_high(pin_c7);
        tel=5;
     }
     
  }
}

arkadaşlar kod biraz daha uzun da ben ilili olmayan ksımları kırptım biraz. Bu haliyle calışıyor. Ama bir problem var.

a0 veya a4'ten 5v geldiğinde sırasıyla d7 ve c7 çıkışlardaki lambalar yanıyor  ancak a1,a2 ve a3 'ten 5v verdiğimde, ölctüğümde dahi 5v görünmüyor 0.4 v filan cıkıyor. Bunun sebebi nedir sizce? pic'de mi sıkıntı var acaba? Pic'in bağlantılarının doğru olduğunu sanıyorum. yanlış bişe olsa hic calışmazdı sanırım.

teşekkürler kolay gelsin...

toyo

Buna benzer bir olayda benim başıma geldi.Hocalarıma sorduğumda statik elektrik veya başka nedenlerden dolayı pic hasar görmüş dediler.Denemelerime yeniden başladığımda pic i değiştirdim yine aynı olay oldu.7805 çıkışından 6.5 V felan çıktığını gördüm.Benim düşüncem bu yüzden Picin belli kısımları zarar görmüştü.
Gelirken ne getirilir ki giderken ne götürülür.

arslan74

set_tris_a(0x11);   // hatalı

set_tris_a(0xff);   // Doğru


serhat1990

Alıntı yapılan: toyo - 07 Mayıs 2012, 23:20:29
Buna benzer bir olayda benim başıma geldi.Hocalarıma sorduğumda statik elektrik veya başka nedenlerden dolayı pic hasar görmüş dediler.Denemelerime yeniden başladığımda pic i değiştirdim yine aynı olay oldu.7805 çıkışından 6.5 V felan çıktığını gördüm.Benim düşüncem bu yüzden Picin belli kısımları zarar görmüştü.

7805'in çıkışında 5V ' tan fazla görmen kullandığın filtreleme kondansatörleriyle alakalı olabilir benden tavsiye uygulamalarınızda 7805 yerine daha fazla akım verebilecek ve lineer çalışabilen bir regülatör kullanmanız iyi çalışmalar...

samuray84

Alıntı yapılan: arslan74 - 07 Mayıs 2012, 23:23:07
set_tris_a(0x11);   // hatalı

set_tris_a(0xff);   // Doğru

hmm kesinlikle :) biraz programlamaya ara verince öyle oluyo tabi. Ama şu sıfır volt ölçmeme olayı da sanırım dier arkadaşların dediği gibi 7805 ten kaynaklı gibi. Onun icin ne önerirsiniz? Kondansatörler mi yüksek değerli acaba?