Eu criei as variáveis booleanas desta maneira, está correta

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Eu criei as variáveis booleanas desta maneira, está correta

Mensagempor quispe » 31 Jul 2007 15:23

unsigned short int Flags1 = 0; // Declara variável usada para flags

#define testa Flags1.F0 // Define bit testa
#define StatusAl Flags1.F1 // Define bit StatusAl

exemplo:

testa ^= 1; // Troca o estado do bit

-------------------------------------------------------------------------------------
outra maneira

struct BOOLEAN
{
unsigned testa :1;
unsigned StatusAl: 1;
}BOOL;

exemplo:

BOOL.testa ^= 1;

Qual o melhor ?????

grande abraços a todos !!!
Quispe
quispe
Nibble
 
Mensagens: 83
Registrado em: 10 Mai 2007 11:31

Mensagempor helton » 31 Jul 2007 15:38

eu faço um pouco diferente..mas funciona legal

Código: Selecionar todos

typedef enum { false = 0, true = 1 } bool;


bool var1, var2;
var1 = true;
var2 = false;

if ( var1 != var2 ) beep();
else plin();


Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

Mensagempor andre_luis » 31 Jul 2007 16:44

Quispe,

Embora ambas as implementacoes deem o mesmo resultado do ponto de vista do programa, a rotina do Helton - me parece - que o compilador pode otimizar o código, aproveitando o fato de o PIC ter instruçoes de acesso à bit; pois no seu caso, o teste do bit deveria ser realizado pelo compilador atravez de máscara, enquanto que pela sugestao do Helton, poderia mapear diretamente numa unica instrução ( BTFSC, se nao me engano ). É só um palpite.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Valeu !!!

Mensagempor quispe » 01 Ago 2007 17:53

Valeu, vou tentar estas implementações

Abraço a todos !!!!!
quispe
Nibble
 
Mensagens: 83
Registrado em: 10 Mai 2007 11:31


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x