Hola,
despues de cierto tiempo sin pasar por el foro (examenes Finales Facultad) he vuelto a reiniciar mi aprendizaje sobre microcontroladores en C y me encuentro con un cierto problema con los comandos IF, supongo que sera que al venir yo de lenguage pascal pues con el C me cuesta el uso de corchetes y me lio en su uso. Adjunto esquema en Proteus donde estoy probando el codigo.
En este codigo lo que yo queria era que cuando:
- RA0 y RA1= 1------> RB1 y RB2=1
- RA0=1 y RA1=0---> RB1=0 y RB2=1
- RA0=0 y RA1=1---> RB1=1 y RB2=0
- RA0 y RA1=0------> RB1 y RB2=0
Y este es mi codigo:
----------------------------
#include <16F628A.h>
#fuses XT,NOWDT
#use delay ( clock = 4000000 )
#BYTE TRISB = 0X86
#BYTE TRISA = 0X85
#BYTE PORTB = 0x06
#BYTE PORTA = 0x05
#BYTE OPTION_REG = 0x81
void main(){
portb=0b00000000;
porta=0b00000000;
trisb=0b00000000;
trisa=0b11111111;
while(1){
if (bit_test(porta,0) == 1){
if (bit_test(porta,1) ==1){
bit_set(portb,1);
bit_set(portb,2);}}
else
if(bit_test(porta,0)==0){
if(bit_test(porta,1)==1){
bit_set(portb,2);
bit_clear(portb,1);}
else
if(bit_test(porta,0)==1){
if(bit_test(porta,1)==0){
bit_set(portb,1);
bit_clear(portb,2);}
else
bit_clear(portb,1);
bit_clear(portb,2);}}
}
}
Saludos y gracias de antemano!!
PD: Supongo que sera un error tonto en la estructura de los IF( supongo que algun corchete no estara bien), pero yo no lo encuentro....