• Domingo 19 de Mayo de 2024, 17:16

Autor Tema:  Que Falla En Este Codigo?  (Leído 2629 veces)

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Que Falla En Este Codigo?
« en: Viernes 11 de Junio de 2004, 23:12 »
0
Estoy comenzando a utilizar el 16F877 y queria usar su conversor A/D lei el dataSheet e hice los pasos indicados, en resumen leo por RA0/AN0 y el resultado deberia sacar por el puertoB(los 8 bits mas significativos), pero siempre todos los pines estan en alto


Código: Text
  1.  
  2. INICIO  
  3.        BSF STATUS, RP0&#59;
  4.        MOVLW 7
  5.        MOVWF TRISA
  6.        CLRF  TRISB
  7.         CLRF ADCON1&#59; Configure A/D inputs,
  8.         BCF STATUS, RP0&#59;
  9.         MOVLW B'10000001'
  10.         MOVWF ADCON0
  11.         NOP
  12.         NOP
  13.         NOP
  14. NEXT    BSF ADCON0,GO &#59;COMIENZA LA CONVERSION
  15. SIG     BTFSC ADCON0,GO
  16.         GOTO  SIG
  17.         MOVF ADRESH,W
  18.         MOVWF PORTB
  19.         GOTO  NEXT
  20. END
  21.  
  22.  
  23.  

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Que Falla En Este Codigo?
« Respuesta #1 en: Viernes 11 de Junio de 2004, 23:57 »
0
Yo he usado mucho el pic 16f877 y su convertidor analogico digital y al ver tu programa no se le ve ningun error, este programa que te pongo aqui es uno que ya esta probado y ha funcionado, La parte de la conversion, si la revisas es casi identica a la tuya solo que nosotros no le pusimos esos NOP (no creo que eso sea pero deberias probar quitandolos).
Lo que yo creo es que talvez la direccion de algun registro este mal, o no te entiende cosas como poner B'10000001' o algun detallito asi
proba con este programa que te pongo aqui  (sin modificarle nada a ver que tal??)

Citar
;***********************************************************
;                           ADT.ASM
;***********************************************************
        LIST    p=16F877 ; indica el modelo de PIC

        #include "P16F877.INC" ; archivo de encabezado

portb equ 0x06   ;Define el puerto b como salida fisica
trisb equ 0x06  ;Define la dirección del registro de direccion TRISB
status equ 0x03 ;Define la dirección del registro de estado
adresh equ 0x1e ;Registro de datos del convertidor A/D (Parte alta)
adcon0 equ 0x1f ;Registro 0 de control y estado del convertidor A/D
adcon1 equ 0x1f ;Registro 1 de control y estado del convertidor A/D

rp0 equ 5 ;Bits del registro de estado para cambiar de banco de memoria de datos
w equ 0 ;destino de la operacion registro w

        ORG 0
        movlw 00           ;Pone el valor de 00 en el registro de trabajo
        bsf status,rp0  ;Apunta al banco 1
        movwf trisb  ;Se configura el puerto b como salida
        clrf adcon1   ;Se configura que los datos de la conversion estaran  justificados a la izquierda
    ;y se trabajara con las referencias de la fuente primaria de alimentacion (Vdd=6v)
        bcf status,rp0  ;Apunta al banco 0
        movlw 0x81  ;Activamos el convertidor A/D, seleccionamos el canal 0 para la conversion 
        movwf adcon0  ;y configuramos la sincronia del convertidor a su valor maximo (Fosc/32=625Khz)
conver: bsf adcon0,2  ;Iniciamos la conversion para leer el ATD
check:  btfsc adcon0,2  ;Verificamos la conversion completa si ya se completo salte de lo contrario repita
        goto check
        movf adresh,w
        movwf portb
        goto conver  ;Repita el proceso para leer un nuevo valor del atd

       END
Espero que te funcione :comp:
si te funciona o no por favor avisame
adios  :flower:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Re: Que Falla En Este Codigo?
« Respuesta #2 en: Sábado 12 de Junio de 2004, 13:10 »
0
GRACIAS!!!!
vere los cambios.

LechugaHack

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Que Falla En Este Codigo?
« Respuesta #3 en: Jueves 8 de Julio de 2004, 14:36 »
0
Hola
sabes que??.... te falta tomar en cuenta el tiempo que se requiere para descargar el condensador que quedo asi luego de la conversion anterior... deberias hacerle un retardo antes de seguir con la proxima conversion, el valor de este retardo depende de varias cosas que debes chk en la hoja de datos, pero ponle un tiempo grande de varios mls y prueba

suerte!!!!!!!!!!!!!!!!!!!