Hola, esta es una pregunta que ya hice... pero quiza no aclare lo suficiente la cuestion. Lo que quiero es poder recibir en hyperterminal (por ejemplo) un numero de 3 cifras que represente el valor de 8 bits del PIC
Por ejemplo si estoy contando quiero enviar el valor del contador via RS232 a la PC. Hasta ahora se me ocurrio este macro, pero creo que debe haber una forma mas sencilla en ASM
bin2decmacro macro _asus, _pato1, _pato2, _pato3
;(Probe usar Local, pero no lo sabre usar
movf _asus, w ;Copio el valor original para cuando
movwf bkconstante ;me paso con la resta restaurarlo
NIVEL1
movf _asus, w ;Lo mismo, lo que pasa que lo puse
movwf bkconstante ;despues, haciendo arreglos
movlw d"100"
subwf _asus,1 ;Decremento en 100
btfsc STATUS,C ;Saltar si no hay carry=Negativo
incf _pato1,1 ;Hay una centena!!!
btfsc STATUS,C ;Saltar si no hay carry=Negativo
goto NIVEL1 ;volver a revisar si puedo sacar 100
movfw bkconstante ;Si me pase=negativo
movwf _asus ;apurarse a restaurar el valor anterior
movlw 0Ah
movwf aux1 ;Cuento las decenas
Nivel2
decfsz _asus,f ;Decrementar saltar si termino
goto Nivel3 ;me voy fijando si llego a la decena
Goto Nivel4 ;Fin del calculo
Nivel3
decfsz aux1,1 ;decrementar Aux1 10-1
goto Nivel2 ;Sigo decrementando nro ppal
incf _pato2,1 ;Complete una decena!!!!
movlw 0Ah ;Recarlo las decenas para decrementar
movwf aux1
goto Nivel2
Nivel4
decf aux1,1 ;Como sali antes de llegar decremento
comf aux1,1 ;Calculo el complemento(uso dec no inc)
movlw d"245" ;Y pongo el complemento de una decena
subwf aux1,W ;Hago la resta
movwf _pato3 ;y paso las unidades
endm
Espero alguna idea ingeniosa... saludos