TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: iyan 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.
-
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
-
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.
-
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
-
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.