Necesito una mano con este programa.
Por favor, ver el ejemplo y diganme como solucionar este tema.
Lo simulo con IDE y no funciona.
Estoy usando 18f452.
;**********************************************************************************
;******************************************************************************************
;
; INICIO DE PROGAMA PARA 18F452
;
; ESTO ES
; 0X00F1(HEX) Y DEBERIA DAR 57586 -.> R0= 05
; R1= 75
; R2= 86
;
;**************************************************************************************
PRUEBA
MOVLW 0X0F2
MOVWF L_byte
MOVLW 0X0E0
MOVWF H_byte
call B2_BCD
qwq goto qwq
;********************
;ESTO ANDA PERFECTO PERO PARA 17Cxx CON EL REG. FSR
;*******************************************
;********************************************************
; PIC 17Cxx
; RUTINA PARA convertir BCD-HEX 16 BIT ( 65535 )
; R0:06,R1:55,R2:35 17Cxx
;**********************************************************
B2_BCD
BSF _FS0 ; clear the carry bit
BSF _FS1
BCF _CARRY
movlw .16
movwf TEMP1
clrf R0
clrf R1
clrf R2
loop16
rlcf L_byte
rlcf H_byte
rlcf R2, F
rlcf R1, F
rlcf R0, F
;
DCFSNZ TEMP1
RETLW 0
goto adjDEC
;
adjDEC
movlw R2
movwf FSR0
call adjBCD
;
movlw R1
movwf FSR0
call adjBCD
;
movlw R0
movwf FSR0
call adjBCD
;
goto loop16
;
adjBCD
movfP INDF0,W ;******ESTA INSTRUCCION NO ANDA 18F452
addlw 0x03
btfsc W,3 ; test if result > 7
movwf INDF0
movfP INDF0,W ;******ESTA INSTRUCCION NO ANDA 18F452
addlw 0x30
btfsc W,7 ; test if result > 7
movwf INDF0 ; save as MSD
RETLW 0
;******************************************************************************************
;*************************************************
;ESTO ANDA PERFECTO PERO 16Fxxx DONDE EL REG. FSR
;*******************************************
;********************************************************
;
;********************************************************
; PIC 16Cxx Y 16Fxx
;
; RUTINA PARA LEER BCD-HEX 16 BIT ( 65535 )
; R0:06,R1:55,R2:35
;**********************************************************
B2_BCD bcf STATUS,0 ; clear the carry bit
movlw .16
movwf TEMP1
clrf R0
clrf R1
clrf R2
loop16 rlf L_byte, F
rlf H_byte, F
rlf R2, F
rlf R1, F
rlf R0, F
;
decfsz TEMP1, F
goto adjDEC
RETLW 0
;
adjDEC movlw R2
movwf FSR ;***OK
call adjBCD
;
movlw R1
movwf FSR
call adjBCD
;
movlw R0
movwf FSR
call adjBCD
;
goto loop16
;
adjBCD
movlw 0X03
addwf 0,W
movwf TEMP
btfsc TEMP,3 ; test if result > 7
movwf 0
movlw 0X30
addwf 0,W
movwf TEMP
btfsc TEMP,7 ; test if result > 7
movwf 0 ; save as MSD
RETURN
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;*************************************************************************
; y PIC 18F452 ?
; QUE CAMBIO PAR QUE FUNCIONE CON FSR?
;
;*********************************************************************************