Autor Tema: conversor del pic 16f87x  (Leído 1970 veces)

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

Desconectado iyan

  • PIC10
  • *
  • Mensajes: 6
conversor del pic 16f87x
« en: 23 de Enero de 2004, 11:18:00 »
hola el asuntom es que si me podria dar alguien algun truco o pista acerca de como tratar la conversion del pic 16f876 para que lo pueda manejar como un solo dato de 8 bits o alguna manera de operar con el con sus dos registros ADRESH y ADRESL. Lo necesito para poder pasar el voltaje a convertir a grados de inclinación.Además como puedo calcular la conversion si le meto un la Vref+ y Vref- con el VDD y el VSS. U saludo y gracias por adelantado.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: conversor del pic 16f87x
« Respuesta #1 en: 23 de Enero de 2004, 12:26:00 »
Por lo que dices quieres utilizar una resolución de 8 bits (en vez de 10).

Si trabajas en ensamblador y eliges por ejemplo justificación izquierda tendrías que leer únicamente los 8 bits de ADRESH. Si justificación derecha los 8 de ADRESL.

Si trabajas en C solo hay que decirle al compilador la resolución que quieres (8 o 10) y asignar directamente el resultado de la conversión a una variable.

Un saludo

PD. El último párrafo no lo entiendo, te has comido alguna que otra palabra

Desconectado iyan

  • PIC10
  • *
  • Mensajes: 6
RE: conversor del pic 16f87x
« Respuesta #2 en: 26 de Enero de 2004, 01:51:00 »
hombre lo que yo queria era ver si podia trabajar con 10 bits de resolucion pero es que no se me ocurre nada para tratar los nibles correctamente .Era eso haber si me deciais algo para hacer eso sino ya me resigno y trabajo a 8 bits pero bueno seguire peleando . Un saludo y hasta otra y gracias por el interes.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: conversor del pic 16f87x
« Respuesta #3 en: 26 de Enero de 2004, 06:24:00 »
Aquí tienes un ejemplo:

        List   p=16F873      ;Tipo de procesador
        include    "P16F873.INC" ;de registros internos

Lcd_var       equ   0x20            ;Variables de las rutinas LCD

Temporal_1   equ   0x22           ;Variable temporal

            org   0x00
            goto   Inicio

            org   0x05                   ;Salva el vector de interrupción
            include "LCD_CXX.INC"     ;Incluye rutinas de manejo de/ LCD

;Visualiza. Esta rutina coge los 10 bits resultantes de la conversión,
;presentes en ADRESH ,y ADRESL, los convierte a caracteres ACII (0 o 1) y
; los visualiza sobre el LCD.

Visualiza:  movlw   0x80
             call   LCD_REG
             movlw   .11
             movwf   Temporal_1
Visual_loop   bsf   STATUS,RP0
             rlf   ADRESL,F
             bcf   STATUS,RP0
             rlf   ADRESH,F
             btfsc STATUS,C
            goto   Bit_1
            movlw "0"
            goto Visu_1
Bit_1         movlw   "1"
Visu_1       call   LCD_DATO   ;Visualiza el "0" o el "1 sobre el LCD
            decfsz Temporal_1,F ;Siguiente caracter
            goto Visual_loop
            return

;Programa principal

Inicio   clrf   PORTA
         clrf   PORTB
         bsf   STATUS,RP0 ;Selecciona banco 1
         movlw   b"00000110"
        movwf   ADCON1   ;Puerta A EIS digitales
        clrf   TRISB     ;Puerta B se configura como salida
        clrf   TRISA     ;RA4-RAO salidas
        movlw    b"11001111"
        movwf OPTION_REG ;Preescaler de 128 asociado al WDT
        bcf   STATUS,RP0   ;Selecciona banco 0

        call   UP_LCD   ;Configura EIS para el LCD
        call   LCD_INI   ;Secuencia de inicio de/ LCD
        movlw   b"00001100"
        call   LCD_REG    ;L CD On, cursor y blink Off

;Se activa el ADC y se selecciona el canal RA31AN3. Frecuencia de
;trabajo FoscI32

      movlw b"10011001"
      movwf ADCON0       ;ADC en On, seleciona canal AN3

Loop   clrwdt
       bsf   STATUS,RP0     ;Selecciona página 1
       movlw b"00011111"
       movwf TRISA         ;Puerta A entradas
      clrf   ADCON1       ;Puerta A entradas analógicas
      bcf   STATUS,RP0    ;Selecciona página 0
       bcf   PIR1,ADIF       ;Restaura e¡ flag de/ con versor AD
       nop
       bsf   ADCON0,GO       ;Inicia la conversión


ADC_Wait   btfss   PIR1,ADIF     ;Fin de conversión 99
           goto   ADC_Wait     ;Jodavía no

;Las lineas de la Puerta A se reconfiguran como salidas digitales para ¡a visualización

          bsf   STATUS,RP0     ;Selecciona banco 1
          movlw   b"00000110"
          movwf   ADCON1        ;Puerta A digital
          bcf   STATUS,RP0     ;Selecciona banco 0
          call   UP_LCD       ;-Reconfigura EIS para el LCD
          call   Visualiza            ;Visualiza   Visualiza e/ resultado de la conversión
          goto   Loop

          end                  ;Fin de/ programa fuente

Un saludo

Desconectado iyan

  • PIC10
  • *
  • Mensajes: 6
RE: conversor del pic 16f87x
« Respuesta #4 en: 26 de Enero de 2004, 09:43:00 »
K tal pocher gracias por tu ayuda ya lo veo mas claro ahora ya creo k me sle el p.. inclinometro.un saludo hasta otra.


 

anything