10.5 EJEMPLO DE UTILIZACION DE LAS SUBRUTINAS
A continuacién se muestra un étil programa ejemplo de utilizaci6n de una subrutina
para el circuito de la figura 10-5.
aetsessanensscueeessausessenees Submutinas_0]asin *¢+etssneeesseeetescsserssneeesses
} Un aiimero binario de bits ex convertide a BCD. El resultado se guarda en tres
} posiciones de memorias RAM de datos Namadas Centenas, Decenas y Unidades.
Finalmente tambien fas unidades y las decenas se vieualizarén en Jos diodos LEDs
{eonectados al Puerto B. El niimero a convertir seni In constante "Numero".
} Realizar este programa utilizando una subrutina que se ame BIN_a_BCD.
[ZONA DE DATOS *#+0n900
CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC.
Dist Po6Fssa
INCLUDE
CBLOcKox0c esta posicién empieza In RAM de usuario,
ENDC
Numero BQU 124 + Por ejemplo.
ora 0 El programa comienza en la direcci6n 0.
Inieto
wf STATUS,RPO
ckf TRISE
bef STATUS,RPO
Principal
moviw
call BIN a_BCD
movwt
goto
+: Subrutina "BIN_a}
estas de 10, tal como se explicé en el capitulo 9,
sntrada: En el registro W el niimero binario a convertir.
salidas: En (Centenas), (Decenas) y (Unidades).
‘También las decenas (nibble alto) y unidades (nibble bajo) en ol registro (W).
BLOCK En las subrutinay no se debe fijar ia direccién.
de Ia RAM de usuario. Definida a continuacién de
Ha Gltima asignada.
cit Decenas
movwf Unidades
Resta 10
moviw 10 3A las unidades se le va restando 10 ex cada
subwe — Unidades, W $ Pasada. (W)-(Unidades)-10-
bess = STATUS\C § 4(Unkdaden) 107, CW) positive?, ¢O-1?
Fin_BIN BCD
IncrementaDecenas
movwt Unidades
inet Decenas.F
moviw 10
subwe — Decenas,W
bese STATUS.C $0517, LCW) positive?, ,C=1?
Resta No. Viielve a dar otra pasada, restindole 10.
IncrementaCentenas
cf Decenas Pone a cere las decenas
ince Centenas,F
Resta
swap Docenas,W
addwf — Unidades, W