Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

CCS C ile OR kapısı yapmak.

Başlatan Melih1802, 08 Haziran 2014, 20:50:35

Melih1802

CCS C ile bir OR kapısı yapmaya çalıştım.
Amacım A0 ve A1 girişlerinden bir tanesi aktif olduğunda B0 dan çıkış almak istiyorum.
Tek buton ile led yakma programını Modifiye ederek yapmaya çalıştım fakat başaramadım.


Programım:

#include "C:\Users\melih\Desktop\Buton led yakma\Buton led yakma.h"

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use fast_io(a)
#use fast_io(b)

int8 x;

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);

   set_tris_a(0xFF);
   
   set_tris_b(0x00);
   output_b(0x00);
   
   basla:
   
   x=input(pin_a0);  Bu satırı bir alt' a kopyalayıp giriş pin numarasını değiştirerek yapmaya çalıştım. Sanırım mantık böyle değil.
   output_bit(pin_b0,x);
   
   x=input(pin_a1);
   output_bit(pin_b0,x);
   
    goto basla;

}

Bayramsumbul

#1
Birde şunu dener misiniz?
Basla ile goto basla arasında bu kod olacak.

while (1){
Outbut_bit (pin_b0,input(pin_a0)|input (pin_a1));
}

Düzeltme:Galiba böyle istemiyorsunuz?
Bir Elektronik Meraklısının Serüveni...

Kabil ATICI

#2
if ((input(pin_a1)==1)|(input(pin_a0)==1))
{
// output_bit(pin_b0,1); //<<<gerekli değişikliği yap
istediğin çıkışı 1 yap
}

if kullanmazsan olmaz, çünkü 2. = olursa çıkışın 0 olur.
başka yöntemlerde var tabiii..
ambar7

f15eagle

farklı iki yolla da yapılabilir mesela
     b1= input(pin_a0);
     b2=input(pin_a1);

     if(b1 ==1 | b2 ==1)
         {
              output_high(pin_b0);
         }

burada sıra ile buton girişlerini okuduk ve değişkenlere attık. sonra ifde kontrol ettik. | or operatörüdür ccs helpden bakabilirsiniz.

ya da

     b1= input(pin_a0);
     b2=input(pin_a1);

    if(b1==1)
           output_high(pin_b0);

    if(b2==1)
            output_high(pin_b0);

iki değişkeni de ayrı ayrı iflerde de kontrol edebilirsiniz

Melih1802

@Bayramsumbul Derleyici hata verdi.
@Ambar7 Çalıştı fakat Toggle değilde bas bırak olsaydı iyiydi. Gerisine ben uğraşayım yapamazsam yazarım.
@f15eagle Her 2 programda hata verdi.


Biraz acemi olduğum için verdiğiniz programları uygun şekilde COPY / PASTE yapamamış olabilirim.

Kabil ATICI

kodu
if ((input(pin_a1)==1)||(input(pin_a0)==1))
{
//istediğin çıkışı 1 yap
}
else
{
//istediğin çıkışı 0 yap
}
şeklinde düzenleyebiliriz.

ambar7

Melih1802

#6
Toggle modundan kurtarmaya çalışıyorum.

Kurtaramadım. Butonlardan biri basıldığında B0 çıkış verecek bırakıldığında çıkış kesilecek.

#include "C:\Users\melih\Desktop\Buton led yakma\Buton led yakma.h"

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use fast_io(a)
#use fast_io(b)

int1 x;

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);

   set_tris_a(0xFF);
   
   set_tris_b(0x00);
   output_b(0x00);
   
   basla:
   
  if((input(pin_a1)==1)||(input(pin_a0)==1)) //A0 ve A1 OR şeklinde çalışıyor.TOGGLE button çalışma.

      output_high(pin_b0);
     
goto basla;


}

mir_as82

#7
output_bit(pin_b0,!!((input(pin_a1)||(input(pin_a0)));
Hocam tekbaşına bu kod çalışır mı?output_bit fonksiyonunun implementasyonuna bakmadim.

mesaj birleştirme:: 09 Haziran 2014, 23:44:31

for( ; ; ) {
if(input(pin_a1))||(input(pin_a0)) //A0 ve A1 OR şeklinde çalışıyor.TOGGLE button çalışma.
      output_high(pin_b0);
else     
     output_low(pin_b0);
}

Bu şekilde yazar misin.

Melih1802


JKramer

Parantezlere dikkat edin, zaten cyan renkli halde görünüyor.

Melih1802

Yaptım:  Benim gibi acemi arkadaşlara bir faydası olur diyerek kodları ekledim.
A0 ve A1 girişlerine bağlı 2 buton ile B0 çıkışındaki led butonlardan biri basılı olduğu süre boyunca yanar, bırakınca söner.

#include "C:\Users\melih\Desktop\Buton led yakma\Buton led yakma.h"

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD




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);

   set_tris_a(0x01);
   set_tris_b(0x00);
   output_b(0x00);
   
 
while(1)
{
if ((input(pin_a1)==1)|(input(pin_a0)==1))
output_high(pin_b0);
else
output_low(pin_b0);
}

}

interrupter

if(input(pin_a0)) { output_high(pin_b0); }
else {output_low(pin_b0); }

if(input(pin_a1)) { output_high(pin_b0); }
else {output_low(pin_b0), }

tek bir if şartı ile de yapılabilir istersen 

Kabil ATICI

@interrupter
Bu şekilde yaparsan,
eğer birincisi ne olursa olsun(lojik 1 veya lojik 0), ikincisinin girişi lojik 0 olursa çıkışın çıkışın lojik 0 olur.
ambar7