TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: elselex en 27 de Junio de 2018, 21:04:45

Título: leer dos datos binarios del puerto A PIC 18F4550
Publicado por: elselex en 27 de Junio de 2018, 21:04:45
Hola compañeros,

Soy principiante en el mundo de los microcontroladores, tal vez mis preguntas os parezcan muy básicas pero estoy haciendo mis primeros "pinitos" y tengo una duda que por mucho que navego e intento resolverla viendo tutoriales o documentandome no encuentro nada relacionado que pueda resolverla. El tema es que quiero hacer operaciones en sistema binario pero usando dos datos y que la entrada sea por el puerto A, por ejemplo, con dos datos de tres bits cada uno y que el dato 1 entre por los pines RA0,RA1 y RA2 y el dato 2 entre por los pines RA3,RA4 y RA5. ¿sabeis como podría hacerlo? por mucho que leo no encuentro nada al respecto.
Título: Re:leer dos datos binarios del puerto A PIC 18F4550
Publicado por: KILLERJC en 27 de Junio de 2018, 22:58:46
Depende del compilador que estes usando. Voy a usar XC8

Por ejemplo si quisieras solo tener los primeros 3 bits, ( RA0 a RA2 ) podrias hacer:

Código: C
  1. primerDato = PORTA & 0b111;

Hacerle una AND te va a permitir dejar unicamente el estado de esos tres bits.. en el caso de RA3 a RA5:

Código: C
  1. segundoDato = PORTA & 0b111000;

El problema que tus bits van a quedar en la posicion esa.. deberias tambien desplazarlo a la derecha. Quedandote asi:

Código: C
  1. segundoDato = (PORTA & 0b111000) >> 3;

Es decir rotamos a la derecha 3 veces, corriendo los bits que dejamos con la AND al lugar de los primeros bits. Y ahora si podes "operar" junto al otro. Por ejemplo sumarlos:

Código: C
  1. resultado = primerDato + segundoDato;