CCS C de yazdığım programımdaki hata nerede ?

Başlatan Ahsen_1878, 22 Şubat 2012, 10:10:43

Ahsen_1878

slm üstadlar

#define buton pin_a1
#define led   pin_b1
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);
   set_tris_a(0xff);
   set_tris_b(0x00);
   output_b(0x00);
   
   
   
   for(;;)
   {

   
   if(input(buton)||LED==1)
   output_high(pin_b1);
   else
   output_low(pin_b1);
}
}


yani butona bastığımda pin_b1 ==1 olucak ve pin_b1  led olduğu için( II) (led butonla paralel bağlıolduğıundan  butondan elimi çektiğim halde pin_B1 iletimi led üzerinden yani kendi üzerinden sağlıyacak    yani bir nevi mühürleme kontağı gibi ama çalışmıyor hata programın neresinde yardımcı olursanız sevinirim....

;D ;D ;D ;D ;D ;D ;D ;D ;D ;D :o



mr_knox

sanırım siz kontaktörlü kumanda devre mantığındaki kontaktörün açık kontağını butona paralel bağlar mühürleme yaparım demişsiniz
butona basıp çektiğinizde led yanık kalsın diyorsanız zaten output_high(pin_b1); demeniz yeterli taki siz output_low(pin_b1); diyene kadar pin_b1 e bağlı led sürekli yanık kalacaktır.
kutsal kitapları okuyup anlamayan dindar okuyup anlayan ateist olur.  ( Nikola Tesla )

skara1214

#define buton pin_a1
#define led   pin_b1
void main()
{
   
   while(TRUE)
   {
   if(input(buton) )
   output_high(pin_b1);
   else
   output_low(pin_b1);
}
}

LED diye birşeyle orlamışsınız sistemi ama LED in hangisi olduğunu anlamadım eğer küçük led ise ccs c de büyük küçük harf önemli. Bu yazdığı kodu bir deneyin ondan sonra haberdar edersiniz beni
Herkes ölür ama herkes gerçekten yaşamaz

Ahsen_1878

anladım dediğini üstad ama benim istediğim'' bir çıkış portunu giriş portunla beraber lojik olarak programlamak''




yani pin_b1 le pin_a1 paralel yada seri olarak bağlanma olayı nasıl olacak

ben  pin byi çıkış olarak tanımladım

örnek
output_pinb ||  input_pina diyermi olcak pin byi output yada input diyemi tanımlıycaz


skara1214

tam olarak yapmak istediğiniz işi anlamadım yani output ile inputun mantık kapılarını kullanarak işleme girmesi saçma çünkü input dışarıdan genel birşey bu mantıklı ama outputu siz ayarlıyorsunuz yapmanız gerekn inputa bakıp outputu yönlendirmek, output ile inputu and or v.b bir işlem yaptırmak değil
Herkes ölür ama herkes gerçekten yaşamaz

omereliusuk

#5
@skara1214 ccs de büyük küçük harf siz isterseniz önemli olur. aksi halde büyük küçük önemli değil bilginize.

pointer ile yapılabilir.

şimdi siz trisde çıkış olarak ayarladığınız pin_b0 daki değeri okuyacaksınız.

inşallah toparlayabilmişimdir.
int *adres_ptr = (int *) 0x06;
if(input(buton)||bit_test(*adres_ptr,1))//butonun o andaki konumu ve portb nin 1. bitindeki durumu test edip işlem yapıyor.
output_high(pin_b1);
   else
   output_low(pin_b1);

yalnız bu kodda eğer led bir kere yanarsa bir daha sönmez.

skara1214

eğer bir string tanımlayıp karşılaştırma yapıyorsanız önemli oluyor ama dediğiniz gibi normalde önemi yokmuş şimdi test ettim
Herkes ölür ama herkes gerçekten yaşamaz

Ahsen_1878

#7
Alıntı yapılan: omereliusuk - 22 Şubat 2012, 14:21:38
@skara1214 ccs de büyük küçük harf siz isterseniz önemli olur. aksi halde büyük küçük önemli değil bilginize.

pointer ile yapılabilir.

şimdi siz trisde çıkış olarak ayarladığınız pin_b0 daki değeri okuyacaksınız.

inşallah toparlayabilmişimdir.
int *adres_ptr = (int *) 0x06;
if(input(buton)||bit_test(*adres_ptr,1))//butonun o andaki konumu ve portb nin 1. bitindeki durumu test edip işlem yapıyor.
output_high(pin_b1);
   else
   output_low(pin_b1);

yalnız bu kodda eğer led bir kere yanarsa bir daha sönmez.



hocam sayende oldu çok teşekkür ederim yalnız ''(int *) 0x06;'' kontrol edeceğimiz biti nasıl yazıyoruz mesela port bnin 2ci bitini kontrol etmek istersem nasıl yapıcam

omereliusuk

if(input(buton)||bit_test(*adres_ptr,1))//renkli olan kısmı değiştir. 0 dan 7 ye kadar "byte için" kontrol edebilirsin.

Ahsen_1878

teşekkür ederim denedim oldu sağolun ömer ustam :D :) :)

omereliusuk

#10
bir de şu var.
if(input(buton)||input_state(pin_b1))//butonun o andaki konumu ve portb nin 1.(pin_b1) bitindeki durumu test edip işlem yapıyor.yalnız burada 
                                                             //bağımlı kalıyorsun 
                                                             //diğerinde başlangıç adresini değiştirip istediğin portun "sadece port değil" veya istediğin
                                                             //tüm registerlerini okuyup yazabiliyorsun.
output_high(pin_b1);
   else
   output_low(pin_b1);