Saludos killerjc:No se que puede pasar,envio el pedazo de codigo haber si me dices que hago mal.Le he modificado tantas cosas que igual me lo he tirado.A veces el assembler me desquicia.Gracias
call DECIMAL
;--------------------------------------------------------------------------------------------
CICLO movf tuni,0 ;ajuste decimales
subwf univ,0 ;decimales del sensor
btfss 3,0
goto pasi
movf tuni,0
sublw .10
movwf univ
btfss 3,0
goto poso
movf tdec,0 ;ajuste unidades
subwf decv,0 ;unidades del sensor
btfss 3,0
goto pasi
movf tdec,0
sublw .10
movwf decv
btfss 3,0
goto poso
movf tcen,0 ;ajuste decenas
subwf cenv,0 ;decenas del sensor
btfss 3,0
goto pasi
movf tcen,0
sublw .10
movwf cenv
btfss 3,0
goto poso
poso bcf 0x05,1
goto paso
pasi bsf 0x05,1
paso
btfss 0x08,1 ;Mira el pulsador de incremento en temp. de desactivación
call SUBEMAX
goto Main ;vuelve y lee
SUBEMAX movf tcen,0
movwf tcen
xorlw .9
btfsc 3,2
goto lava;return
incf tuni,0
movwf tuni
xorlw .10
btfss 3,2
goto lava
clrf tuni
incf tdec,0
movwf tdec
xorlw .10 ;incrememto en ajuste
btfss 3,2
goto lava
clrf tuni
clrf tdec
incf tcen,0
movwf tcen
xorlw .9;.10
btfss 3,2
goto lava
clrf tuni
clrf tdec
lava
movf tuni,0
movwf tunib
movf tdec,0
movwf tdecb
movf tcen,0
movwf tcenb
movf tuni,0
movwf tunix
movlw .48
addwf tunix,1
movf tdec,0
movwf tdecx
movlw .48 ;visualizo en el display
addwf tdecx,1
movf tcen,0
movwf tcenx
movlw .48
addwf tcenx,1
movlw 0x8c;##
call CONTROL
movlw d'1'
call DEMORA ;Demora 1ms
movf tcenx,0
call DATO
movf tdecx, 0
call DATO
movlw 0x8f
call CONTROL
movlw d'1'
call DEMORA ;Demora 1ms
movf tunix, 0 ;Coloca las unidades
call DATO
call rotada
clrf tunix
clrf tdecx
clrf tcenx
btfss 0x08,1
goto SUBEMAX
return
DECIMAL SWAPF TempEntero,0
ANDLW 0X0F
ADDLW 0XF0
MOVWF unimil
ADDWF unimil,1
ADDLW 0XE2
MOVWF cen
ADDLW 0X32
MOVWF uni
MOVF TempEntero,0
ANDLW 0X0F
ADDWF cen,1
ADDWF cen,1
ADDWF uni,1
ADDLW 0XE9
MOVWF dec
ADDWF dec,1
ADDWF dec,1
SWAPF TempDecimal,0
ANDLW 0X0F
ADDWF dec,1
ADDWF uni,1
RLF dec,1
RLF uni,1
COMF uni,1
RLF uni,1
MOVF TempDecimal,0
ANDLW 0X0F
ADDWF uni,1
RLF unimil,1
MOVLW 0X07
MOVWF decemil
MOVLW 0X0A
LB1 ADDWF uni,1
DECF dec,1
BTFSS 3,0
GOTO LB1
LB2 ADDWF dec,1
DECF cen,1
BTFSS 3,0
GOTO LB2
LB3 ADDWF cen,1
DECF unimil,1
BTFSS 3,0
GOTO LB3
LB4 ADDWF unimil,1
DECF decemil,1
BTFSS 3,0
GOTO LB4
movf uni,0
movwf univ
movf dec,0
movwf decv
movf cen,0
movwf cenv
movlw 0x30 ;Le suma 30h a los valores de UNI, DEC y CEN para que queden en ASCII
addwf uni, 1
addwf dec, 1
addwf cen,1
movlw 0x85;## ;Coloca el cursor en la posición 0Dh de la pantalla.
call CONTROL
movf cen,0
call DATO
movf dec, 0
call DATO
movlw 0x88
call CONTROL
movf uni, 0
call DATO
clrf uni
clrf dec
clrf cen
return
;-----------------------------------------------------------------
;########################################################################
;--------------------------------------------------------------------
Delay_1s movlw .250
movwf reg6
qqq movlw .211
movwf reg2
ttt movlw .5
movwf reg3 ;segundero
ddd decfsz reg3,1
goto ddd
clrwdt;--------------------------------------------
decfsz reg2,1
goto ttt
decfsz reg6,1
goto qqq
return
;-------------------------------------------------------------------
Delay_35us
movlw 0x0A
movwf d1
Delay_35us_0 clrwdt;--------------------------------------------
decfsz d1, f
goto Delay_35us_0
return
;----------------------
mili1 movlw .248
movwf reg2
PLbt clrwdt
decfsz reg2,1
goto PLbt
goto $+1
clrwdt
return
;----------------------------------------------------------------
CONTROL bcf 0x08,7 ;Pone en bajo la línea de modo del LCD (Control)
goto ENVIAR ;Se saltea la sig. línea
DATO bsf 0x08,7 ;Pone en alto la línea de modo del LCD (Dato)
ENVIAR movwf 0x06 ;Coloca el dato o control a enviar en el bus del LCD
movlw d'1'
call DEMORA ;Demora 1ms
bsf 0x08,6 ;Habilita el LCD
movlw d'1'
call DEMORA ;Demora 1ms
bcf 0x08,6 ;Deshabilita el LCD
movlw d'1'
call DEMORA ;Demora 1ms
return
;------------------------------------------------------------------------
DEMORA movwf tiempo2 ;Demora tantos milisegundos como valor en w
TOP2 movlw d'110'
movwf tiempo1
TOP1 clrwdt;--------------------------------------------
nop
nop
nop
nop
nop
nop
decfsz tiempo1, 1
goto TOP1
decfsz tiempo2, 1
goto TOP2
clrwdt;--------------------------------------------
return
;------------------------------------------------------------------------
rotada movlw .25;.255
movwf reg6
qq movlw .211
movwf reg2
tt movlw .1
movwf reg3 ;tiempo de espera mientras estan pulsados
dd decfsz reg3,1 ;los botones de subir o bajar
goto dd
clrwdt;--------------------------------------------
decfsz reg2,1
goto tt
decfsz reg6,1
goto qq
return
end