Aqui les dejo el codigo con comentarios para que lo entiendan mejor y sea mas facil encontrar la falla.
@ DEVICE PIC12F675, MCLR_OFF
CMCON=7
TRISIO=%00001001 ' Configuro las entradas/salidas
ADCON0=%10000011 ' Configuro el conversor ADC
ANSEL=%01010001 ' Configuro la entrada analogica y salidas digitales
' Variable
temp var word
result var byte
result2 var byte
digt var byte
digt2 var byte
aux var word
vmv var word
tempk var word
tempc var word
i VAR Byte
col VAR Byte
aux2 VAR Byte
'----- Symbol -----------------
Symbol clock = GPIO.2
Symbol data1 = GPIO.1
'Definir los parametros del ADCIN
DEFINE ADC_BITS 10 ' Setear el numero de bits del resultado
DEFINE ADC_CLOCK 3 'Se define la velocidad del reloj
Define ADC_SAMPLEUS 50 'se define el tiempo de la conversion
main:
HIGH GPIO.4 ' se activa los shift registers
ADCIN 0,temp ' se inicia la conversion AD y se guarda en la variable temp
If temp>763 or temp<477 then ' se verifica que el valor este en el rango del sensor
aux2=2 ' se le asigna un valor a la variable aux2 para activar g del display
LOW GPIO.4 ' reseteo los shift registers
high GPIO.4 ' Activo los shift registers
gosub desplazamiento ' se llama la subrutina desplazamiento
pause 1000 ' se espera 1 seg
aux2=2
gosub desplazamiento
pause 1000
goto main ' Se devuelve al inicio
else
if temp>612 then ' Si la medida es mayor de 2,98 V
temp=temp-612 '
temp=temp/2 ' se divide entre 2 para ajustar la resolucion
tempK=temp+298 ' se pasa a grados kelvin
tempc=tempk-273 ' se pasa a grados centigrados
else
temp=612-temp
temp=temp/2
tempK=298-temp ' se pasa a grados kelvin
tempc=273-tempk ' se pasa a grados centigrados
endif
endif
if tempk>273 then ' si la temperatura es mayor a cero °C enciende un led
high GPIO.5
else
LOW GPIO.5
endif
digt2=tempc/10 ' divido entre 10 para obtener el numero de la decena
lookup digt2,[%00111111,%00000110,%01011011,%01001111,%01100110,%01101101,%01111100,%00000111,%01111111,%01100111],result2
' asigno el valor del digito correspondiente a la decena a la variable result2
AUX2=RESULT2
LOW GPIO.4 ' reseteo los shift registers
high GPIO.4 ' activo los shift registers
GOSUB DESPLAZAMIENTO
digt=tempc-(digt2*10) 'Obtengo el valor de la unidad
lookup digt,[%00111111,%00000110,%01011011,%01001111,%01100110,%01101101,%01111100,%00000111,%01111111,%01100111],result
AUX2=RESULT
GOSUB DESPLAZAMIENTO
goto main
DESPLAZAMIENTO:
For col = 1 To 8
'Si el bit es "0", escribo un "0".
If aux2.0 = 0 Then
data1 = 0
clock = 0
clock = 1
Else
'Si el bit es "1", escribo un "1".
data1 = 1
clock = 0
clock = 1
Endif
'Paso al bit siguiente
aux2 = AUX2>>1
Next col
RETURN