Autor Tema: La conversión ADC se detiene  (Leído 153 veces)

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

Desconectado Caracola

  • PIC10
  • *
  • Mensajes: 6
La conversión ADC se detiene
« en: 05 de Agosto de 2020, 06:31:01 »
Hola, estoy haciendo la conversión (ADC) de una de las entradas análogas (AN0) de mi PIC16F884, para luego visualizar la conversión digital de 0 a 255 en la Terminal Virtual de PROTEUS, pero al cabo de un minuto aproximadamente, la transformación se detiene.  :8}

Me imagino que se debe estar llenando una memoria, aunque limpio el buffer, no sé si lo estoy haciendo bien, pero ya he intentado de todo :(

Estoy utilizando un oscilador externo de 4Mhz.

les comparto mi código:


    list p=16f884
#INCLUDE <p16f884.inc>

;-------------------------------------------------------   
;------CONFIGURCIÓN-------------------------------
;-------------------------------------------------------
   
    __CONFIG _CONFIG1, _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _IESO_ON & _FCMEN_ON & _LVP_OFF
   
    __CONFIG _CONFIG2, _BOR4V_BOR40V & _WRT_OFF


;-------------------------------------------------------   
;------VARIABLES-------------------------------------
;-------------------------------------------------------
    CBLOCK   0X20
unidad
decena
centena
num
contador
    ENDC
     

    ORG 0x00

;-------------CONFIGURACION_PUERTOS------------
    BANKSEL TRISA
    bsf       TRISA, 0; entrada analoga
    bcf       TRISC, 6; TX salida
    bsf       TRISC, 7; RX entrada
    clrf           TRISD
   
;----------CONFIGURACIÓN_CONVERSION_AD---------------
    movlw   b'00000000'
    movwf   ADCON1
    BANKSEL ADCON0
    movlw   b'01000001';  8fosc   
    movwf   ADCON0

;CONFIG_USART_TRASMMISION_RECEPCION_asincrona:
    movlw   B'10010110' 
    movwf   RCSTA
    BANKSEL TXSTA
    movlw   B'00100110'
    movwf   TXSTA
    movlw   d'25'      ;  9600 baudios
    movwf   SPBRG   ;


 
    clrf   PORTD
    clrf        contador
    call        LIMPIA_BUFFER_TRANSMISION   
   
;-------------------------------------------------------   
;------PRoGRAMA PRINCIPAL--------------------------------
;-------------------------------------------------------
     
PRINCIPAL

     movf    ADRESH,0      ;registro que guarda la conversión
     movwf   num
     movlw   B'00000000'
     movwf   unidad
     movwf   decena
     movwf   centena
       
     call    DECIMAL
     call    escribir_uart
     
     movlw   B'00000000'
     subwf    centena,0
     btfss     STATUS,Z
     goto     escribe_centena
     movlw   B'00000000'
     subwf   decena,0
     btfss     STATUS,Z
     goto     escribe_decena
     goto     escribe_unidad
     
     
escribe_centena     
     call    TABLA   
     movwf   TXREG       ;muestra en la terminal
     call    escribir_uart
escribe_decena     
     movf    decena,0   
     call    TABLA
     movwf   TXREG;
     call    escribir_uart
escribe_unidad     
     movf    unidad,0
     call    TABLA
     movwf   TXREG;
     
     call    escribir_uart
     movlw   d'13'         ; salto de linea
     movwf   TXREG;

     bsf     ADCON0,1    ; Activa la conversion
         
     goto    PRINCIPAL

   
;-------------------------------------------------------   
;------FUNCIONES PARAMETRIZABLES--------------
;-------------------------------------------------------
     
LIMPIA_BUFFER_TRANSMISION     
        decfsz  contador,F
        goto    LIMPIA_BUFFER_TRANSMISION
        movf    TXREG,W
        movf    TXREG,W
        movf    TXREG,W         
   return
   
   
DECIMAL
     movlw   b'01100100'
     subwf   num,1       
     btfsc    STATUS,C     
     incf      centena,1   
     btfsc    STATUS,C
     goto    DECIMAL
     addwf  num,1
DECENA
     movlw   b'00001010'
     subwf   num,1     
     btfsc     STATUS,C     
     incf       decena,1   
     btfsc     STATUS,C
     goto     DECENA
     addwf   num,0   
     movwf   unidad     
     return
     
   
escribir_uart         ; espera que el registro de transmisión esté vacio
    BANKSEL TXSTA
    btfss   TXSTA,1         
    goto    escribir_uart
    BANKSEL TXREG
    return

TABLA
   addwf   PCL,1     ;retorno de número
   retlw   0x30
   retlw   0x31
   retlw   0x32
   retlw   0x33
   retlw   0x34
   retlw   0x35
   retlw   0x36
   retlw   0x37
   retlw   0x38
   retlw   0x39

 
    end


 

anything