Buenas!!!! estoy empezando a aumentar la dificultad de mis programas, ahora estoy con el C/AD y tengo una duda.
Simulando en proteus para un voltaje de 2.5V el resultado de la conversion es '01111111' en cambio si calculo el valor de 2.5V apartir de la resolucion si trabajo con 8bits tengo un valor de '10000000'
¿donde esta el fallo?,aqui teneis mi ASM
list p=16F877
radix hex
#include <p16f877.inc> ;incluimos la libreria del PIC 16F877
;**************ZONA DE ETIQUETAS*****************
temp equ 0x20
depo equ 0x21
aux equ 0x23
;************************************************
org 0x00
goto inicio
org 0x05
;*************************************************
;*****************CONFIGURACION DEL CONTROLADOR
inicio
;*******************definicion variables***************************
movlw b'10000000'
movwf depo
;*********************************************************
bsf STATUS,RP0;Acceso al banco 1
bcf STATUS,RP1
;************PUERTOS****************
movlw 0xFF
movwf TRISA ;El puerto A entradas
bsf TRISC,5; START
CLRF TRISB
; bcf TRISB,0 ;Bomba de llenado
; bcf TRISB,1 ;STOP BOMBA Extractora
; bcf TRISB,2 ;POZO BAJO MINIMOS
; bcf TRISB,3 ;POZO SOBREPASA LIMITES
;*******************CONFIGURACION DEL TIMER0****************
movlw b'00000111';configuramos el TMRo con preescalod de 256
movwf OPTION_REG
;***********************************************************
;*************CONFIGURACION DEL C/AD************************
movlw b'00000010';justificamos a la Izquierda
movwf ADCON1;y todos los pines del PORTA como Analogicos
;************************************************************
bcf STATUS,RP0
bcf STATUS,RP1 ;vuelvo al banco0
;************************************************************
;****CARACTERISTICAS DEL C/AD****************
movlw b'01000001';selecciono un Tad de 8*Tosc
movwf ADCON0 ;y a la espera de empezar conversion
;*^**********************PROGRAMA***************************
main clrf PORTA
clrf PORTB
call muestra
call retardo
goto main
muestra btfsc PORTC,5
goto muestra
bucle btfss INTCON,T0IF
goto bucle ;Esperar que el timer0 desborde
bcf INTCON,T0IF ;Limpiar el indicador de desborde
bsf ADCON0,GO ;Empezar la conversion A/D
espera btfsc ADCON0,GO ;ADCON0 es 0? (la conversion esta completa?)
goto espera ;No, ir _espera
movf ADRESH,W ;Si, W=ADRESH
;movwf depo
subwf depo,w
btfss STATUS,C
goto menor
btfss STATUS,Z
goto mayor
goto igual
return
igual bsf PORTB,1
return
mayor bsf PORTB,2
return
menor bsf PORTB,0
return
;**************RETARDO PARA MOSTRAR EL VALOR
retardo
movlw D'15'
movwf temp
clrf TMR0
bcf INTCON,T0IF
retardo_2 btfss INTCON,T0IF
goto retardo_2
decfsz temp,f
goto retardo_3
return
retardo_3 bcf INTCON,T0IF
goto retardo_2
end