Sunteți pe pagina 1din 7
+ Subrutinas en uC * Manejo de Tablas * Uso de Delays + Macros Eluso de subrutinas hace al programa mas modular, a esta se lamara por «el comando call y bastara para regresar de ellas el comando return o retiw ‘k, 1. cual retomara de la subrutina con el valor de k en W. Rutina: Call rutina Una tabla es una lista en ROM de constantes en la memoria de programa. ‘Son esencialmente ities para la conversién de unos cédigos a otros. Para el manoj de tables on microcontoladores se dobe tener on cuenta basicarento el manejo del puntero de programa. En nuesio caso es el PC. pore debemos damos cuenta {de quo este se divide 6n PCL y POH, y que podemos modficar el PCL, pero al PCH se tnuulcs & waves uel POLATH. Se debe toner culdado con las paginas y ademas do ‘deoccionarcomectamete el PC [Ahora vamos a ver un ejemplo de manejo de tablas en una visualzacién de os hhumeros nexadocimais (manejados por el microcontrolador) on un display de 7 Seomentos puesto en el puerto D. Uilice displays de Anode comdn y de Catodo Comin isruy =, Ee ar yd re ands Realizar un decodiicador de BCD a 7 segmentos donde el dato en BCD so ingrese por el puerto A y el niimero se visualice por el puerto D Una de las principales ulilidades de las subcrutinas es el manejo de tiempos. Se pueden manejar delays 0 temporizadores en uC ya que se conoce el tiempo que demora cada instruction (4 ciclos de relo, las de salto demoran 8 cielos de relo). Haga los céleulos para un XTAL de 4 MHZ. RUT_TIEMPO: ‘mow 3 1 elo de intrucelén = tus. movi VARIABLE’; tcc instruction = tuS Lazo: edz VARIABLE 7 cielo de Instruceén = 1uS. got) LAZO + 2ccos do instuccion = 2uS 4 ciclo de instracién = 4 ciclo de rela) Dockets dx OtRIOSRBOAI=OI mS "Se ests usando un XTAL de 10 Mie ‘Sobre el mimo programa de manejo de aba (ssplay de 7 segmantos) intoduzea un tiempo para pode visualizarlos datos cada segundo. NOTA. Tenga en cuenta que tipo de display esta usando Sobre ol misme programa de manoj de tabas (display de 7 segmentos) invodzea un tiempo para pdr visuaizar los dalos cada segundo NOTA. Tenga en cuenta que tipo de display esi usando Visuaizar los nimeres dal 0 a9 en un esplay de Anodo comin 9 de Catedo Comin, con retards de # segundo entre nmetos. Las macros son pequefias subrutinas en donde se ingresan valores 0 parémetros sobre los cuales se efectda una accién. Sintaxis: Inombre_macro] macro [Reg, bit, etc. ] [instruccién sola o con Reg, bit, ete] ‘endm Ejemplo: Jimp macro Ade :goto gotoAde enden Bancod macro bet STATUS,RPO bet STATUS,RPI fend sbs_macro Reg, Sit cobvars' bt esa seteado bis Reg, Bit nde compara macro reg1, constants ‘movi constants ort regi W ena * Registro TMRO + Interrupciones EI PIC16F877IA contiene un contador de 8 bits (TMRO) ubicado en la direccion xt de la memoria de datos. Este contador se inerementa con pulsos de rela) que se aplican al pin RA4/TOCKI 0 de acuerdo a una sefial interna proveniente del roloj de instrucciones del uC (Fosci4). La raz6n de incremento se puede doterminar por un pre-escalador (divisor de frecuencia) lecalizado en el registro OPTION (0x81). Este contador activa un flag de desbordamiento (TOIF ubicado en el INTCON) cuando la cuenta pasa de FFH a 00H, generando una interrupcién, N & Te proscar ered wen De Watcog Tre vneseeves I contenido del TMRO es incrementado con una cadencia regular y programable directamente por el hardware del PIC. mt 8 oa Th Bo ved 20 registro TMRO es incrementado por el hardware intemo del PIC al mismo tiempo que se ejecuta el programa Una vez akanzado el valor 255, ol registro TMRO es puesto a cero aulomsticamente reomprendiondo entonces el conteo 0 desde ol valor orginariamente caraas sino mes = . os ; soon ose wor “HE oa ee fl sonon nongtaneio del TMRO [rsra—[ivteps[ recs [rose [esa ps2 | pst_[ ps0] ty REPU: PORTS Pulp Enabio PORTS pt ps > erbled ny naicun er nen vation ete INTEDG: inerup Edge Selon bt erupt on ing ecg of NT in intomupt on ang age oT pin nts "Mo Clk Soren Siete roeton on TOC! Tinton on ow anton on TOOK! pa OL ireromenten tie hgh ransten on TO a 1 orocalr aes wor Proscar © asked tothe TO module we eel Rs TOROS 74 ODA0-6 x SSTWRO) ESE Una interrupcién consiste en una detencién del programa en curso para realizar una determinada rutina que atienda la causa que ha provocado la interrupcién Cuando se termina, se retorna al programa principal en el punto en que se ‘abandoné. Por qué son utiles las interapctonedND + Intorupeldn externa (RBOIINT) + Rebosamiento TMRO, TMR y TMR2 + Cambio de estado del puerto B (RBT-RB4) + Convertidor AD concluye la conversion + La intefaz SCI asincrone transmite 0 recibe + Puerto Serie asinerono + Puerto paralelo secundario. Se lee 0 se escribe 1. Se actva una posible causa de inlerupcin. El sefiaizador de dicha causa, el bit de pormiso coresponciente yal global para todas las inteupciones (GIE) estan a rivl alo, 2 Para evitar que se produzca otra iterupcién mienras dura el vatamionto de la que se ra aceplado, el bit GIE 50 pore a0. E valor actual dol PC se guarda en la Pla 4, ELPC s0.carga con valor 0004, que es el del vector de interupoin. 5. La-ruina de interupeién comionza explorando el valor de los sefializadores, para

S-ar putea să vă placă și