CONVERTIDOR ANALOG-DIGITAL (EN LENGUAJE ENSAMBLADOR)



Es un programa que por medio de los pines A/D (análogo digital) se pueda leer señales analógicas y poder mostrarlas en forma digital (por medio de los displays).

Todo esto mediante el uso del módulo conversor de analógico a digital (A/D), el cual tiene 13 entradas en los PIC de 40/44 pines. Este módulo permite la conversión de una señal de entrada analógica a un número digital de 10 bits.
  • Código:
#include <clase3.h>
#define Dir_C 0xF94
#define Dir_D 0xF95
#define Puerto_C 0xF82
#define Puerto_D 0xF83
#define T0CON 0xFD5     //REGISTRO DE CONTROL DEL TIMER
#define TMR0 0xFD6      //REGISTRO DE CONTROL DEL TMR0
#define PRODL 0xFF3     //REGISTRO DEL MULTIPLICADOR
#define PCL 0xFF9     //REGISTRO BAJO DEL CONTADOR DE PROGRAMA
#define ADCON2 0xFC0 
#define ADCON1 0xFC1    //REGISTROS del ADC
#define ADCON0 0xFC2
#define ADRESH 0xFC4

int temp;
void main()
{
#asm
   inicio:
            movlw    0x00
            movwf    Dir_C    //configurado como salida
            movlw    0x00
            movwf    Dir_D    //configurado como salida
            movlw    0x01
            movwf    ADCON0  //ADCON0 <- 01 se activa el ADC
            movlw    0x0E  
            movwf    ADCON1  //ADCON1 <- 01 se configura AN0 como analogica
            movlw    0x07
            movwf    ADCON2  //justificación (izquierda o derecha) y reloj
                   
   
      ciclo:
         ADC:
            bsf      ADCON0, 1  //GO=1
            btfsc    ADCON0, 1   //hace la pregunta de si ADCON0 es un 1, si es uno se brinca la linea
            bra      ADC
    
            bsf      Puerto_C, 1
            movf     ADRESH, 0
            andlw    0x0F 
            call     display
            movwf    Puerto_D
            bcf      Puerto_C, 0
            call     tiempo
            swapf    ADRESH, 0  
            andlw    0x0F
            call     display
            bsf      Puerto_C,0
            movwf    Puerto_D
            bcf      Puerto_C, 1
            call     tiempo
            bra      ciclo   
  
   display:
            mullw    0x02    
            movf     PRODL,0 
            addwf    PCL     
            retlw    0x40  //CERO
            retlw    0x79  //UNO
            retlw    0x24  //DOS
            retlw    0x30  //TRES
            retlw    0x19  //CUATRO
            retlw    0x12  //CINCO
            retlw    0x02  //SEIS
            retlw    0x78  //SIETE
            retlw    0x00  //OCHO
            retlw    0x18  //NUEVE
            retlw    0x08  // A
            retlw    0x03  // B
            retlw    0x46  // C
            retlw    0x21  // D
            retlw    0x06  // E
            retlw    0x0E  // F     
           
   tiempo:
            decfsz   temp
            bra      tiempo
            retlw    0
  #endasm
}


  • Simulación en Proteus:

  • Armado y ejecución:

No hay comentarios:

Publicar un comentario

Ultima entrada ingresada

SISTEMA DE RIEGO AUTOMÁTICO CON MÚSICA

El objetivo era hacer un programa que pueda activar una bomba de agua en la noche, y que por las mañanas reproduzca música para las plantas....