Hola.
Soy bastante novato en la programación de pics.
Estoy intentado hacer un nuevo proyecto, en el cual tengo esta tabla de la verdad:
Estado anterior RB4 RA3 RA2 salida( RB4)
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
El codigo que he desarrolado es el siguiente:
En el cual creo una variable "salida" en el que guardo el resultado que saco por RB4, la salida.
No veo el problema pero no me funciona correctamente.
Please a ver si me echais una manita que ya no se que probar mas....
#include <16f84a.h>
#fuses xt, nowdt
#use delay (clock=4000000)
#byte trisa=0x85
#byte trisb=0x86
#byte porta=0x05
#byte portb=0x06
int1 salida=1;
void main()
{
trisa=0xff;
trisb=0x00;
PORTB=0xff;
while (true)
{
if((bit_test(porta,2)==0)&&(bit_test(porta,3)==0)&&(salida==0)){
bit_set(portb,4)&(salida=1);
}
else{
if((bit_test(porta,2)==1)&&(bit_test(porta,3)==0)&&(salida==0)){
bit_clear(portb,4)&(salida=0);
}
else{
if((bit_test(porta,2)==0)&&(bit_test(porta,3)==1)&&(salida==0)){
bit_set(portb,4)&(salida=1);
}
else{
if((bit_test(porta,2)==1)&&(bit_test(porta,3)==1)&&(salida==0)){
bit_clear(portb,4)&(salida=0);
}
else{
if((bit_test(porta,2)==0)&&(bit_test(porta,3)==0)&&(salida==1)){
bit_set(portb,4)&(salida=1);
}
else{
if((bit_test(porta,2)==0)&&(bit_test(porta,3)==1)&&(salida==1)){
bit_set(portb,4)&(salida=1);
}
else{
if((bit_test(porta,2)==1)&&(bit_test(porta,3)==1)&&(salida==1)){
bit_set(portb,4)&(salida=1);
}
}
}
}
}
}
}
}
}