Autor Tema: Cambiar justificación de un puerto de salida para un ADC  (Leído 1957 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado HumbertoN

  • PIC10
  • *
  • Mensajes: 5
Cambiar justificación de un puerto de salida para un ADC
« en: 28 de Abril de 2020, 19:53:48 »
Qué tal buenas tardes!! Voy comenzando en esto de la programación de microcontroladores, y no sé o no entiendo muy bien el cambiar la justificación de los bits de salida. Estoy realizando un ADC con el 18f2550, AN0 es mi entrada con un potenciometro, y el puerto B es mi salida, son 8 bits, y son leds. Lo que no sé realizar es cambiar la justificación del puerto B completo, ya que con unos switch, si uno está activado los leds deberán comenzar a contar en binario para un lado, y con el otro switch deberán contar hacia el otro lado. O sea, en un caso B0 es mi bit más significativo y B7 es el menos, y en el otro caso es lo contrario, B7 es el más y B0 el menos. Agradecería mucho como resolver esto!
El programa que llevo es este, si tengo algo de más es que no sé muy bien programar aún, una disculpa! Jajajaja
#Include <18F2550.h>
#include <stdio.h>
#include <stdlib.h>
#Fuses INTRC,NOMCLR,NOBROWNOUT
#Use delay (internal=8M)

int x;

void main()
{
   output_b(0);
   setup_adc(adc_clock_internal);
   set_adc_channel(0);
   While(True)
   {
      x=read_adc();
      delay_us(50);
      if(input(PIN_A1)==1 && input(PIN_A2)==0)
      {
      x=ADRESH;
      output_b(x);
      }
      if(input(PIN_A1)==0 && input(PIN_A2)==1)
      {
      x=ADRESL;
      output_b(x);
      }
      if(input(PIN_A1)==1 && input(PIN_A2)==1)
      {
      output_b(0);
      }
      if(input(PIN_A1)==0 && input(PIN_A2)==0)
      {
      output_b(0);
      }
   }
   
}

Desconectado HumbertoN

  • PIC10
  • *
  • Mensajes: 5
Re:Cambiar justificación de un puerto de salida para un ADC
« Respuesta #1 en: 29 de Abril de 2020, 16:07:40 »
Aún no me funciona, salu2 jajajaajj

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Cambiar justificación de un puerto de salida para un ADC
« Respuesta #2 en: 29 de Abril de 2020, 18:43:58 »
Tú estás usando el adc en modo 8 bits por lo que justificación ninguna.
ADRESH lo tienes nulo, solo usas ADRESL

   Si quieres usar modo 10 bits tienes que poner justo debajo del include <18f2550.h>
Un #define ADC 10

 La justificación a izquierda o derecha es para cuando usas el modo 10 bits. En ese caso son dos registros ADRESH y ADRESL.

  Entre los dos te dan los 10 bits del valor que varía de 0 a 1023.  Si justificas a derecha , ADRESH.1 y ADRESH.0 te da los dos bits de mayor peso del valor. ADRESL te la los 8 bits restantes.  El resto de ADRESH se queda a cero sin uso.

   Si justificas a izquierda ADRESH te da los 8 bits de más peso mientras que ADRESL.7 y ADRESL.6 contiene los otros dos bits. El resto de ADRESL queda a cero.

   


 

anything