LIST p=12c508A, r=HEX;
#INCLUDE <C:\C2CPP\p12C508A.inc>;
#define __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC;
#define GP1 output_pin_port_a(1); //Definimos las macros de GP1 y GP2
#define GP2 output_pin_port_a(2);
typedef int8 boolean; //ChOrChE esto es porque la forma de utilizar datos
//binarios tienen que ser declarado como int8
//por ello que para un uso mas habitual y mas
//comprensible. Se define un tipo propio "boolean"
//que corresponde a los tipos int8
//Ejemplo:
//
//int8 GP0;
//boolean GP0;
void main(){
// Descripcion de variables
boolean GP0;
boolean GP3;
boolean GP4;
boolean GP5;
while(1){
// Tendrias que colocarlo para comprobar el estado del GP0
// ya que podria no entrar nunca en el bucle, porque no
// has inicializado la variable a un valor distinto de 0
// para entrar en el bucle
GP0= input_pin_port_a(0);
while (GP0){
GP3= input_pin_port_a(3);
GP4= input_pin_port_a(4);
GP5= input_pin_port_a(5);
//Si aplicamos karnaugh a cada una de las variable de Salida
//con respecto a las entradas, podemos simplificarla
//
// GP1 = (GP3 || GP4) && (~GP5)
// GP2 = (GP4 || GP5) && (~GP3)
//
// Con lo que podremos simplificar las comparaciones con tantos if
if((GP3 || GP4) && (~GP5))
GP1=1;
else
GP1=0;
if((GP4 || GP5) && (~GP3))
GP2=1;
else
GP2=0;
//Volvemos a comprobar el valor de GP0 para saber si seguir o salir
GP0 = input_pin_port_a(0);
}
}
}