Como inserir condições?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Como inserir condições?

Mensagempor KILB » 10 Nov 2007 23:09

Estou com uma duvida no exemplo "EXPIO" da CCS, que é de expanção de IO, que é a de como inserir
condições para um determinado funcionamento, ou melhor dizendo, se for observado o trecho abaixo a gente
nota que entre a varredura de entrada e saida existe uma condição de funcionamento ao acionar uma determinada
entrada.


void main() {
BYTE data;
do {
read_expanded_inputs (&data);

data |= 0xF8; //Force the unused input bits on
data -= (!(data&0x01)&!(data&0x02))<<2; //Turn on bit 2 it both inputs are
//toggled
write_expanded_outputs (&data);
} while (TRUE);
}


Mas a condição mostrada no exemplo não é muito clara, pelo menos pra mim.
Alguem poderia me dar um exemplo um pouco mais claro?

Obrigado



Marcos
VENDO BRASILIA 78 - AZUL CALCINHA - RODA GAIUCHA, PNEU TALA LARGA E TOCA FITA RODSTAR, TRATAR NO BUTECO
KILB
Byte
 
Mensagens: 103
Registrado em: 17 Fev 2007 21:52

Mensagempor fabim » 16 Nov 2007 07:15

xiii. kilb. Ta fod´s.. Voce não esta entendendo a sintaxi ou a lógica usada neste trecho ?

Abraços

Fabim

"OBS> programo só em ASM,BASIC,PASCAL"Mânssss.. posso de ajudar na logica.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor KILB » 16 Nov 2007 19:19

Seguinte na verdade eu tava querendo usar algo que me oferecesse um numero maior de entrada e saida com o pic, pode ser em asm mesmo.
Neste caso eu tava tentando usar o exemplo da CCS e até entendi alguma coisinha sim, mas quando imaginei, pô e se eu quizer inserir algumas condições como é que fica?
A sintaxe até que deu pra entender mas a lógica ta meio estranha.



Valeu


Marcos
VENDO BRASILIA 78 - AZUL CALCINHA - RODA GAIUCHA, PNEU TALA LARGA E TOCA FITA RODSTAR, TRATAR NO BUTECO
KILB
Byte
 
Mensagens: 103
Registrado em: 17 Fev 2007 21:52

Mensagempor Doglao » 19 Nov 2007 22:18

Ola!
acho que ta meio extranha mesmo esta logica mas funciona sim, dei uma modificada no programa e parece mais legivel e voce pode aplicar com mais facilidade, mas desta forma o programa vai ficando muido grande, o exemplo da ccs esta taquigrafico, mas eh mais funcional e eficiente que este que fiz.

Código: Selecionar todos
#include <74595.c>
#include <74165.c>


void main() {
   int Pointer = 1; //apontador para varredura do byte lido nas entradas
   int resultado=0;
   int contador=0;//conta as vezes que foi rotacionado o Pointer entao vai ser o pino de entrada especifico
   BYTE data;
   do {
      contador=1;
      read_expanded_inputs (&data);
      if(data){
          while(!resultado){//aqui se pode inverter a logica como acionamento alto ou baixo
              resultado = Pointer & data;
                  if(resultado) {
                       resultado=0; 
                          
                       break;
                   }
                   Pointer <<= 1;
                   contador++;
            }
        }
        if(contador==3){// aqui voce faz a condicao que voce quizer com o valor em contador
           //sua funcao
       }
       if(contador==5){
          //sua funcao
      }
   } while (TRUE);
}


sho estou usando o dispositivo de entrada que precisa encontrar o pino que foi acionado, para saida ta facil nem preciso comentar nada para saidas. se voce for colocando mais dispositivos para entrada o sistema de varredura eh o mesmo e eh soh adicionar um valor 8 no final do resultado para cada dispositivo, no terceiro voce tem que adicionar 16 e assim vai.
abcs
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null


Voltar para PIC

Quem está online

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

cron

x