Está en la página 1de 1
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

También podría gustarte