bir değişkendeki biti test etme

Başlatan satilla, 07 Aralık 2010, 02:48:26

satilla

ccs'deki gibi bir değişkendeki bitleri nasıl test edebilirim

şöyle bir makro denedim ancak isiste çalışmadı
#define bit_reset(var, bitno) 			((var) &= ~(1<< (bitno)))


örn 5. biti 0 yapıyorum ve eger degişken ilk degerine göre değişmişse bitin 1 oldugunu değişmemişse zatn 0 oldugunu anlıyorum

bu makroda herhangi bir sorun varmı? Yada önerebilceginiz bir kod varmı?

şimdiden tşk

satilla

kodu şöyle yaptım



#include <pic.h>
#include "delay.h"



char ara;
unsigned char a;
unsigned char i;
unsigned char say;
unsigned char tarama[]={0b00000001,0b00000010,0b00000100,0b00001000,0b00010000,0b00100000,0b01000000,0b10000000};
const unsigned char A[]={0b00100000,0b01001000,0b10001000,0b11111000,0b10001000,0b10001000,0b10001000,0b10001000};

bir(){
RA0=1;DelayUs(50);
RA1=1;DelayUs(50);RA1=0;DelayUs(50);

}
sifir(){
RA0=0;DelayUs(50);
RA1=1;DelayUs(50);RA1=0;DelayUs(50);
}


void main(void){
TRISB=0x00;
TRISA=0x00;
PORTB=0x00;
PORTA=0x00;
CMCON=0X07;

RA3=1;
while(1){


for(say=0;say<8;say++){
ara=A[say];

for(i=0;i<8;i++){
ara&tarama[i];
if(ara==0)
{
	sifir();
}
else 
{
	bir();
}
}



}

}
}


şu anda VE işlemine tabi tutuyorum ara değişkeni hiç 0 olmuyor
bir sonuc alamadım hata nerde yardımcı olursanız sevinirim

M_B

Merhaba altaki makro işinizi gorur.
#define bit_tes(var, bitno )  (var>>bitno)& 0x01 

var degişkenin  x. ci bitini test eder sıfır - birmi diye

Ornek kullanım.
a = bit_tes(0b00010101,2 );
burda a = 1; dir ( 0b00010101 in ikinci biti birdir. )
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

X-Fi

i
if( kont & 0x04 )bit=1;


fazla teferruata gerek yok diye düşünüyorum.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)