Está en la página 1de 77
we ie : le (oy i ) © MENOR © IGUAL QUE (5). LECTURA DE UN TECLADO MATRICIAL... : EL TIMER DE 8 BITS (TMRO) . EL TIMER DE 16 BIT S.(TMR1) | CONFIGURACION DE LA USART. |USART EN MODO TRANSMISION (7X)... | USART EN MODO RECEPCION (RX)... |CONFIGURACION DEL ADC .. r Sanat fr a Pajares evoritires Ps, oan Coren Se Me Spree Aa etm «nose, 2090 09.20 ‘Ben erooerezs007 +, Seorsen Lai, Horde 1. Tle ‘reegD0 e23 PROGRAMACION DE MICROCONTROLADORES PIC CoN a MICROCONTROLADORES PIC - RUTINAS BASICAS ieee ee? En este capitulo se irén abordando diversos temas para aprender a programar| un microcontrolador PIC, aun sin saber nada acerca de estas actividades. El pre-| sente material es una guia para comenzar paso a paso, desde la configuracién de| Jas terminales que constituyen a los puertos de los microcontroladores. Aqui se| aprenderé a realizar la correspondiente configuracién de los puertos, tanto paral leer datos (puerto contigurado como entrada) como para escribir datos (puerto| configurado como salida). Adquiriendo de manera complementaria, el conoci-| miento para manipular los correspondientes registros de configuracién. De manera general se continuara con Ia utilizacién de los registros, para reali- zar operaciones elementales, tales como el incrementarles el valor del dato alma- cenado en dichos registros; para que podamos pasar al disefio de una serie de| “rutinas basics”, que son de mucha utilidad en operaciones que se tienen que| realizar con un microcontrolador. Estas rutinas basicas se encuentran confor- madas por contadores (ascendente y/o descendente), rutinas de tiempo imple- mentadas mediante bucles, ademés de las operaciones aritméticas como son la suma, resta, multiplicacién y division, todas estas operadas con los valores al- macenadbs en distintos registros, tivos cantidad de 6263, etc. trolador PIC, remos como Figura 1 PROGRAMACION D o escribir datos discretos (cigitales) a través de sus puettos. Por 1 tanto, ta primera actividad que tiene que real ‘arse, @s la de configurat sus respec: ppuortos da.0 de salida de datos. “Todos los microcontroladores po- seen puertos que dependiendo de su estructura fisica relacionada con la seer una cantidad de puertos igual @ 1 ‘A continuacién describiremos la mos en 4 rricrocontroladores PIC de tos, podremos realizar cualquier apl- ‘cacion, no Importando la cantidad de terminales que posean los microcon E MICROCONTROLAD ‘ya sean como de enir~ mado ‘tis’, que dependiendo del | uno ‘puerto se complet ierminales, pueden o- y para ello, PIC12F629_ Contiguracién de los Puertos | twoladores, Ye A Io importante es | puertos que posee Un microcontrola- como Entrada 0 Salida tprender a confguaros y obtener et | dor FIC 08 de 5 por lo que sélo llega rere benefico de sus herramien-| ea haslae| uaa E. 1 primer ejercicio que se realza | tas infernas. Gabe aclarar que los microconto- ‘eon un miooonirlador esa delet | Para conan Jos pues deen | ladores que cuentan con un 0 Pa trade's sala de datos cigial de fos | to como es of ‘caso del PIC12F629, el wrocontroladores, se. tiene que | reqisto de, configuracién de su puerto {quardar un valor en el respectvo Te- correspondiente, tan solo rece ol Sisro do configuracon del puerto a ) nomrede ‘yisio%, ya que no es nece- Ser empleado. E! registro de configu: | Sano ‘especiicarle de qué puerto se racion debe ser manipulado en el ls- trata, por el hecho de que sdlo posee Soper fonbre del | Las regis de conigurecén 6= reg a sa’ si se ata del puerto | los dleronies puertos de los micro- Tho "eb" se vata del puerto B, 0 | conloiador PIC se encuentran en Mice sige trata del puerto ©, etc. | ol banco ‘del mapa de memoria de Nomimente la. mayor carfigad de | datos, siendo las localidades | spect (PIC1er626A | 85h Boh | — | smafios, los cuales tome pictere76 | oh | seh | 87h | — Piciere77__| 85h ‘eh | 87h | 88 modelo y @ partir de és- Diversos microcontroledores PIC. Ce ieactn de orgs de consgurzcon sgune# meron 2s para cada registro de contigura- | un puerto ya'sea como entrada o co- | rados como entradas, y los bits 3, 4 y in las siguientes: ‘mo sala, sino depenciendo de la | 5 sean configurados como salidas, to- Todos los regisros tris (configure- | aplcacién un mismo puerto puede ser | mando en cuenta que el microcontro- i6n ‘de puertos) de los diferentes | configurado, por ejemplo, mitad como | lador de un solo puerto puede ser el ;Puertos que poseen las microcontrola- | entrada y mitad como sala, Por lo | PIC12F62®, se presenta el tragmento Gores PIC, se encuentran conforma: | tanto el regsto tris podria quedar co- | de cé¢igo para configurar ol puerto, dos por 8 bits, los cuales dependiendo | mo: Ver tabla 1.3. del estado légico en el que se encuen- ‘Aunque todos los registros de con- ten, serd la forma de cémo se conf- | Registro tris = 00001111 (binario) | figuracién tis son de 8 bits, en el {gure su correspondiente puerto, ya| 6 al reves IC12F629 sélo son empleados los 6 ‘sea como entrada o salida. tris = 11110000 (binario) bits de més bajo peso, por lo que los ara que un puerto de algun mi- bits 6 y 7 los colocamos en *0" (de to- rocontiolador PIC sea configurado | De manera general a cantidad de | das maneras on colocados en el es. ‘Como entrada, en su corresponcienie | bits de entrada 0 salida que se pue- | tado l6gioo “O" de manera automat. fegisto tris se debe alojar un dato el | den configurar en un puerto depende | ca). Para finalizar el rma de la conf. ‘ual debe estar compuesto por 1's b- | de las necesidades de la aplicacion, | guracién de los regstos do los puer- sicos. Expresado de otra manera, si | perolo que sf dabe tomarse en cuen- | tos, podemos decir que es a traves do $2 requiere que todos los bits de un | ta es que los puertos cuentan con mé- | los registros de configuracin tris por Puerto sean configurados como entra- | ximo 8 bits, los cuales deben ser dis- | donde se configuran los puertos de un das, entonces a cada bit del corres: | trbuldos de manera adecuada, para | microcontrolador. Por o tanto, son los Pondlente registro tis del puerto en | considerar qué micocontrolador es el | primeros registros que deben ser ma Cuestién se le tendré que colocar en 1 | que debemos de acquit. Tipulados cuando se disefia un pro- '6gico, Tal como se muestia a cont-| Para acceder a cualquiera de las | grama, nacion: ‘egistros tris se tiene que apuntar en primera instancia al banco 1 de! mapa Agito i= HHH ina) de memoria de datos, Para ellosetie- | Lectura de Datos de un Puerto é ren que manipular los bits rp0 y rpt ‘is = FF frracecinal)6 ts = 25 (Geena) | dol registro “status”. Por otra parie su- | No importando la cantidad de bits Ponga que se requiere configurar al | que conformen a un puerto, éste pue- De manera contraia, para que un | puerto A como entrada y en el puerto | de ser configurado para que pueda Puerto de algin microcontrolador PIC | 8 el-nle superior como entrada y el | “eer” lgtin dato del exterior, Para 4 2a configurado como salide, en su | nible inferior como salda. A continua: | ello, una vez que se tiene el corres: Correspondiente registro tris se debe | cién se muestra, a manera de suge- | pondiente cicuito de aplicacién, $6 alojar_un dato, | cual debe estar | rencia, el o6digo para realizar las ac- | graba en el microcontrolador PIC el Consttuide por 0's légioos. Expresan- | clones antes descritas, sobre micro- | programa por medio del cual realizard 0 lo anterior de otra manera, s@ e- | controladores que cuentan con més | la tarea de Ingresar un dato dial al uiere que todos los bits de un puerto | de un puerto. Ver tabla 1.2. microcontrolador. Vea la tabla 2. ‘ean configurados como salidas, en- | Para microcontroladores que sélo | Para poder emplear un puerto co- tonces a cada bit del correspondiente | tienen un puerto, y ademas necesita- | mo entrada en los microcontroladores registro tris del puerto en cuestén se | mos que los bits 0,1 y 2 sean configu- | PIC, se tiene que comenzar con la Ie tendré que colocar en 0 \égico. Tal Como se musetra a contimacin: | (Tabiaa.a bst status,rp0 __;cambia al banco 1 eg is nce aie) bet status,pt ‘ movi 'TTTTTII1" configura al puerto A como entrada tis =O fexaecina is: mo ec) || Pov tree wee isto ine || TOV 11110000" configura al puerto B bits del 0 a 3 como salida Por otra parte, no es requisito in- |} movwt —tisb ibits del 4 @ 7 como entrada dispensable configurar los bits de todo Tabla 1.3 bst statusfp0 _scambia al Dando 1 ‘moviw 00000111" __ configura ls bits del 0 al 2 como entrada, y los bits del al 5 como salida del Unico puerto, mowwt tisio ss PROGRAMACION DE MICROCONTROLADORES PIC LUST PaPICIOFS76 ‘ub ‘tat,rp0;cambla al Banco © Kemper 3 demporal. ‘satus. ERTT Tit configura al puerto B come erred stous.pt Horio ot dato det puerto oe cargado a registro W Yalor dal rotate W se aja enol registro configuracién del correspondiente re- {stro "tis", colocando todos sus bits fen unos “W6gicos” (1's). Posteriormer te a la configuracién del registro tr se tiene que emplear el registro deno- rminado ‘por, Namando al puerto A ‘como ‘porta’, al puerto B como “porta al puerto C como “porte” y ast sucesivamente para cada uno de los jpuertos con que cuente el microcon- trolador. Ver Tabla 3. Los registros “port” précticamente se comportan como un reflejo del 28- {ado l6gioo que se presenta en las ter- rminalas isicas del microcontrolador. Siendo més espectficos, diremos que cel dato que alojemos en algin registro por, se transmit a las terminales ‘que se encuentran relacionadas con cl registro port correspondiente, recor ‘dando que ol registro tris consecuente debe encontrarse configurado de tal forma que el puerto se comporte co- mo entrada. Todos los registtos port se en ‘uentran consttuidos por 8 bits, los spa A Le Sparen emai ocr i —_———eeees Saunt Ein semper Acre eee Taye santa wbanco owmsti' — seusectone 8 (oe) east Saosin eaeermne tient iSiperearen peinp "oso da pot anew lagi Fee “Seca toguce W ne ison ao we cuales indican el estado légico en que se encuentran las terminales fisicas svn paren otic Mises ccaa ati de mioonnlaor Rivenecnoane plein. ea ‘ee, renaoans? ‘om oune fan vio Tabla 3, Uillzacién del puerto A para leer datos de Jos microcontroladores PICTGFG26A y PICT6F876. re ra te ‘a ti fm tm « 3 te 4 A p d d p ( q ‘ del puerto en cuestién del microcon- trolador PIC. Para leer todos los bits de un puerto se puede emplear el co- mando de lectura de un registro, ind- cando en la instruccién el puerto que tendré que ser intervenido, para una mayor referencia observe ol ejemplo ‘que se llustra en la tabla 2. Este o6d- 908 véldo para todos los puerios ex- ceptuando al puerto A de los micro- controladores PIC. Por otra parte tamn- bién se indica el direccionamiento del banoo donde se encuentran los régis- tros que serén emmpleados, actividad que se implementa por medio de la manipulacin de los bits "pO" y “pt” del registro “status, En las terminales del puerto A de los. microcontroladores PIC depen- diendo de su estructura intoma, pue- den poseer ya sea convertidores ana- '6gico a digital (ADC), 6 comparado- 188 de voltae, motivo por el cual como parte de la rutina de iniciaizacion de los registros de los microcontrolado- 15, s@ les tiene que indicar de mane- ra adiclonal, que 5@ van a emplear las |. terminales del puerto A para realizar lecturas de naturaleza digital. Poste- for la aplicacién de un reset, as ter- minales del puerto A se configuran de manera predeterminada para que sean activados ya sea el ADC 6 los comparadores de votaje. Por lo tanto, tendremos que recurtir al registro en donde se configura la cantidad de ADC's o comparadores que serén em- Pleados, pero en esta ocasién para deshabiltaios. Para realizar la activi- ddad de deshabiltacin de ADC 6 com- paradores, basta con seleccionar 0 (Gero) ADC's 6 0 (cero) comparadores de volta, tal como se ilustra en el ob digo del programa de la tabla. Hasta este punto hemos revisado de qué manera se leen los puertos A6 B6C, e., de microcontroladores que Poseen més de un puerto (el PIC- 16F628A cuenta con 2 pusrios y el PIC16F876 cuenta con puertos) co- mo entrada, pero también podernos encontramos con microcontroladores ‘que posean tan solo un puerto tnico. Por lo tanto debernos de ser capaces | controlador PIC12F629 tenemos en 4 poder trabejar con el microcontr- | primera instancia que configurar los |edor de un solo puerto. Ver tabla 4. | bits de su correspondiente registro Dentro de los microcontrladores | “ris de tal manera que pueda leer PIC, uno de los que cuenta con un so- | datos, siguiendo la misma mecénica lo puerto es el que se identifica por | que se realizé para los dems micro- medio de la matricula PIC12F629, el | controladores. Por lo tanto se debe ‘cual posoe 8 terminales de las cuales | colocar unos (1’s) en los respectivos 2 son para alimentacién, por lo que | bits donde se pretende que la corres- ‘sobra un puerto de tan solo 6 bits. En | pondiente terminal del microcontrola- ‘este caso se trata de un microcontro- | dor sea configurada como entrada. Se ador que podemos considerar como | tiene que considerar que la terminal “enano" pero no por ellorestringido en | identificada como GPS (refigrase a la ‘su operacién. Por el contraro todo de- | figura 1), siempre debe ser configura- pende de la aplicacién que queramos | da como de entrada, ya que la arqui- realizar, y si ésta no requiere de mu- | tectura del __-microcontrolador chas terminales de entrada, el | PIC12F629 asi a tiene diseviada. PICT2F629 es muy adecuado, Enla tabla 4 se iustra un fragmen- Para emplear el puerto del micro- | to de oédigo para configurar al nico ; poor dou LigT™ PHPICLaF620 Aut co clocal matia del icocortledor iueveya aerrlenrse stalussp0 cambiar al anco 0 1700000111" _jnolecciona 0 (cero) comparadores an ol mowwt cmcon ‘Tegiatro cmcon (deshabilita los comparadores) satussp0 cambiar a banco + BOOITI111 configura os bts 0, 1, 2.3, 4y 5 del puerto GPIO testo {oom entradas (solo contione 6 bis). bY1111100_jonfgura el osalador intemo en su velocidad osccal ‘ndaima (4 Mh) ieambiar al banco 0 mom plow move art 3 puerto con el que cuenta un microcon- ttoiador PIC de 8 terminales (en este ‘caso un PIC12F629). En el registro “trisio® se cargan 1's en os bits 0,1, 2, 3, 4 y 5 porque son los que $6 er ‘cuentran disponibles paral PICT2F629, os bits 6 y 7 no se n- ‘cuentran disponibles para este PIC. Una vez que fue configurado el regis- {to trisio, se prooede a emplear el re- ‘stro “apo” para ingresarel dato que se encuentra en las terminales del mi- crocontrolador. Para emplear la total dad de as terminals del PICY2F62®, es necesario habiltar al oscilador in- temo del PIC, para que se puedan empleat las 2 torminales dedicads al osciador como entradas discretas (GP4 y GPS), ademés de deshebiltar {a terminal del reset externo denot nado MCLR, para contar con la termi- nal GPS exclusivamente como entra 7 Programa de prusba| List’ P=PICt6r876 {Dedlaracién de registros status pt ‘isd satus rp status pt movt temporal,0 cribir datos. para escribir en of “Aqui se coloca la matricula del microcontrokador “que vaya a emplearse status sp0_;cambia al banco 1 bef bet rmovlw b'00000000" configura al puerto B como salida bef :eambia al banco 0 bet dato del registro temporal es cargadoa W ‘eseribe ol dato de W en el puerto B ‘Tabla . Uilizacién del puerto B de cualquier microcontrolador PIC para es PROGRAMACION DE MICROCONTROLADORES PIC da. Por otra parte, cuando se habiita al osciiador interno, se tiene que $8- leccionar la frecuencia de operacién, por io que en el registo “osocal” se in- (rosa ol valor binario “11111100" que selecciona la frecuencia maxima de operacién que es de 4 MHz El PIC12F629 en las terminales identi- ‘cadas como GPO y GP1 cuentan a la vez con comparadores de voltaje, rmismos que tienen que ser deshabil- tados para emplear dichas terminales ‘como entradas digitales, siendo me- diante la carga del valor binario 00000111" en el tegistro “emcon’. Por timo se tiene que recordar que para interactuar con algin registro, se tiene que direccionar al banco adecuado. El PIC12F629 s6lo cuenta con 2 bancos. Por jo tanto basta con manipula el bit “pO” del registro status para acceder al banco adecuado. puerto’ ee Escritura de Datos en un Puerto ‘Sin omar en cuenta la cantidad de bits que conforman a. los puertos de los microcontroladores PIC, éstos pueden ser configurados para que se pueda “escribir algin dato hacia el exterior del microcontrolador, Para ‘allo, una vez que se tiene el corres pondiente circuito de aplicacién debi- damente configurado, se graba en ol rmicrocontrolador PIC el programma por ‘medio del cual realizard la tarea de enviar un dato digital hacia el exterior del microcontrolador. Para poder utiizar cualquiera de fos puertos de un microcontrolador PIC como salda, se tiene que cons- eesssenareanoas |= 8 la divisién, Por otra par- 5 te, el resultado de la divi- sién se expresara por “Somemarareinvas — | Matio do varios regis- tros, los cuales deben ser tomados en cuenta para interpretar de ma- 0 tsar Nera adecuada el resultado final de la divisién. En el diagrama de fujo de la figura 16 se ilustra el proceso para realizar una division artmética, en la ‘cual la operacién principal es la testa, ‘entre los registros dividendo menos el divisor, guardando el resultado de la Testa en mismo registro dividendo, por lo tanto, este dato se actualizara mientras se estén realizando las res- tas. Del proceso de la resta es impor- fante vertficar el estado de la bandera del ‘acarreo” (C), recordando que es- ta bandera se encuentra dentro del re- sistro “status’. La importancia de la bandera radica en el hecho de saber 8i_un resultado después de realizar luna resta es igual con-menor que el visor (si el resultado de la resta, es ‘menor que el divisor significa que ha terminado.una-fase de la-divisiin). Mientras el resutado de la resia sea ‘mayor que el civisor, se contabilizan las restas que se vayan realizando, pasando este dato a ser parte del va- ‘or del cociente. Cuando en el resulta- do de la resta se identifica que el va- lor és menor que el del divisor, se pro- cede a reponer el valor que fue sus- traldo durante la dltima resta, para Posteriormente multiplcarlo por el va- lor de 10 (lo que equivale a bajar un ‘cero en el proceso que realizamos de. tuna divisién hecha a mano), y se repi- te nuevamente todo el desarrollo de realizacién de restas para obtener ahora la parte del cociente que se en- ‘cuentra después del punto decimal statsp0 seanbior a bance 0 att sane cose ico. aazn a ena de ‘fiero.’ “vcendo mence a ‘aioe status ‘eocen odena ent ‘sion Tabla 98. Programa que realiza divisiones, En la tabla 38 se muestra el oddigo | ciente. La parte de la mutiplicacion se {ue corresponde al programa de una | recomienda que se realice a través de division, en el cual estéidentificada la | una subrutina, para que no se dupl- parte en la que se realzan las restas | que con una gran extensin el cédigo. para obtener el resutado entero del | En el programa mostrado en la tabla Cociente: Por otra parte, también se | 38 el cédigo no se encuentra expresa- muestra la ejecucién del cédigo que | do por medio de subrutinas, por lo que Se refiere ala muliplicacién para pos- | tan sélo tiene que adecuarse el pro- {eriormente continuar con las resias,y | grama para que pueda ser empleada asi obtener la parte decimal del-co- | la subrutina. *~ enna Nomen uC EM ant tee UUs OMe ean recht Oe Caer Racer CDS MULTIMEDIA DEL CLUB SE LRRD FROECTOSCORWCROCONLPICYCAE | EPI Propresnde CEN Propane PCO / uno cu DEMCROCONL PME, Progeede Pot 7 WOPPP/ Poy Gur / ek P= Cerone / Quart Pac | moputo 2 PRESENTACIONES EM POWERPOINT agai Pogue PC ese asreces Progr ee, recent ocean ea oscar te eo eli eran craton 2 ee = : an aa ge, re AD, ear Sica irate acto | Sent OTT CAET TOC OMSOMNETA |e te ho ropa esa ra a | nnn Renmei \mataicy ems oo coe aes a aera ete easscmmemnsmcoceene [erst Seether tet ‘TODO SOBRE PLC - AUTOMATAS PROGRAMABLES Y ROBOTICA moouL0 HOTS Ata pei eo Mal abt Pc Reba Aen 5 oie ice us tess onl pasa para erro Fae rant MODULO: ALRMASYSISTEMAS SEGURIDAD verebetla on eas ps5 Le rar tas opie, san, etie, ens gerade | MoDULO Gs ARRAS GUAPRACTIA mopuL0 7. TuTOMALPIC | moouL0 8: TUTORALROBOTICA (OT SOREL | tress | MopULO §: WOTAS PROGRAMAS ARCHIVOS ‘MODULO: CURSO COMPLETODE ACS ‘RELACIONADOS ALA NEUMATICA ‘moDuLO 2 CURSO COMPLETO DESIS.DE CONTROL ‘mopuios:To00 R16 LO ENVIAMOS A SU DOMICILIO - GASTOS DE ENVIO A CARGO DEL COMPRADOR "ARGENTINA: EDITORIAL QUARK SRL MEXICO: SABER INTERNACIONAL ‘Horrera 761 (1295) - CAP. FEDERAL Ay, de los Maostros 4a. Cerrada N°2 - Col. Sta. Agueda. TEL: 4301.8908/ atecien@webelecronea.comar | | Ecatepec de Morelos Mésico/ TEL: (0158) S839.7277 }: www. webelectronica.com. ‘TEL: 5839-5271 / vontas@saberinternacional.com.n OTROS PAISES CONSUITE DISTRIBUIDOR EN WWW, WEBELECTRONICA.COM.AR REG Ea ee ‘MEXICO D.E. - REPUBLICA DEL SALVADOR N° 26 - LOCAL I - COL. CENTRO A TeLs (0155) 5510 - 2604 / Kitaore@prodigy.netsmx Ney CENTRO JAPONES ba TUE Cale Maile cole Wt to) & DORES PIC CAPITULO 2 MICROCONTROLADORES PIC - RUTINAS INTERMEDIAS Las rutinas.intermedias estén implementadas, mediante la activacién de las distin- tas herramientas internas que posee el microcontrolador PIC, ademés de una serie de conjuntos de instrucciones, que de manera organizada realizan un trabajo mediante e! cual, se auxilia el microcontrolador en las distintas tareas que tiene que desempefiar. En primer instancia se encuentran las funciones Iégicas AND, OR, y XOR, median- fe las cuales se pueden implementar “filtros” para discriminar o tomar en cuenta solo {os bits que sean interesantes, dentro de un registro completo de 8 bits por ejemplo. Otra serie de operaciones légicas que pueden ser desarroliadas en el microcontrola. dor PIC, son las que permiten comparar las magnitudes del valor de los datos almace. adios en registros de memoria RAM (memoria de datos), pudiendo realizar compara. clones de IGUAL, MENOR QUE, MAYOR QUE, y a partir de estas comparaciones, ob- fener las complementarias que son: DIFERENTE, MAYOR O IGUAL, MENOR O IGUAL. Continuando con el exposicién del capitulo, nos encontraremos con una rutina que os permiten comunicar al microcontrolador con el exterior, para que este pueda “dia- fogar” un operador, por medio de un teclado matricial, del cual se explica ampliamen. te la manera en que se conecta. Posteriormente, nos encontramos con la configura- cién de las interrupciones para poder activar los timers e implementar con estos una serie de rutinas de tiempo. También se explicara la manera en que se utiliza el médu. Jo de comunicacién serial RS-232, conocido como USART, y por tiltimo el empleo del convertidor ADC. -_— Funcién Légica AND y sus Aplicaciones Las tunciones l6gicas aportan una aplicacién muy importante cuando se programan los mictocontroladores, ‘sobre todo cuando se efectan tareas de control de procesos industriales, teniéndose en general la misién de (generar ‘mascaras” para el fitrado de datos. Ademas también se uiizan pa- ra fijar un determinado valor en uno © varios de los bits de un registro (recor- dar que los registos son de 8 bits) sin alterar a los demas bis. Para implementar as tunciones \s- gicas en los microcontroladores PIC, tan s6lo se tiene que hacer uso de sus respectivas instrucciones, teniendo en ‘cuenta las posibiidades existentes en cuanto ala manipulacion de los datos, esto e6, los diferentes lipos de ope- randos que pueden emplearse. La funcién l6giea ¥ (AND en in- ‘16s) tiene una aplicacién como luna méscara, dejando pasar los estados Jogicos de los bits que ros inleresan de un registro, Co- locando los restantes bits en es tado lgico °C", independent mente del valor que tuvieran an- tes de realizar la operacion. Para comprender a forma en que se aplica la funcion W6gica AND, tenemos que hacer uso de su correspondiente tabla de ver- dad la cual se muestra en la tax bla 99, Ena tabla de verdad, 52 ‘observan los diferentes valores ‘que pueden acquit los términos identificados como “Dato 1" y "Dato 2°, generdndose en total 4 iferentes combinaciones de és- tos, teniendo como factor comin EJEMPLO DI b7 b6 bS bé b3 b2 bt neon 1 4 & (AND) O41 PROGRAMACION DE Mifare miele Welded rar un‘ égico se requiere que el Da- to 1 *Y" el Daio 2 se enouentren en estado logico de “1”. Partiendo de la tabla de verdad de la funcién ldgica AND, procederemos ‘a explicar cémo se realiza la funcién Végiea en un microcontrolador, y para ‘lio vamos a desarrollar un ejemplo ‘empleando registros de 8 bits, tal co- mo se lusta en la tabla 4. Partiando del ejemplo ilustrado en la tabla 40, se advierte que al eecutar {a funcién AND (8) entre los datos alo- Jados en “Registro 1” y “Registro 2°, sta se aplica bit abt de acuerdo con fu respectiva tabla de verdad. Por ejemplo, se tiene como dato un “1” 16- {ico en el bit 0" de ambos registros, arojando el resultado de “1” 6gic0. Por otra parte, en el correspondiente bit bt" se encuentra un “1” logico en cl registro ty un “0” l6gico on el regis- tro 2, quedando como resultado un“O" \6gico; y asf sucesivamente se tienen “Tabla 99. Tabla de verdad de la funcién légica AND. v0 1 o110014 IE LA FUNGION LOGICA AND Registro 1 Registro 2 que seguir realizando las operacio- nes, aplicando la funcién '6gica AND tomando los correspondientes bits de los registros en cuestion De acuerdo con el ejemplo ante ior, podemos establecer un fitro de datos de acuerdo a los bits de un 1e- istro que necesitamos operat, y re- ‘esando al ejemplo si consideramos al registro 2 como el fitro, podemos decir que en los bits donde se le fia: ron cor0s ldgicos, el resultado fue “0” \6gico independientemente de los va~ lores que tengan los bits del registro 4, mientras que si o bts del fro fue ron establecidos como “1” l6gico, el resuitado depende del corresponcien- te estado ligico del bit del registro 1. En el ejemplo de la operacion mostrada en la tabla 41, se observa que en el registro identiicado como itr” los bits que conforman al nible superior (bits b4, BS, b6 y b7) 58 en- cuentran fjos @ “0” W6gion, mientras que los bits que componen al ni bile inferior del mismo registro sfitro” (bits BO, bi, B2 y b3), s apredian en estado logico de "1", De lo analizado anterior- mente, se desprende que los datos que nos interesan s@ en cuentran en los bits que contor- rman al nible inferior, mientras que los del nible superior tienen ‘que ser colocados a “0” Iégico, debido a que no serén toriados en cuenta para el proceso si- uiente. Los bits contenidos en nile inferior det registro “sax to’, son “fltados" tal cual se en- oooo1r1004 ‘cuentren, esto es, sise tiene un Tabla 1 Eemplo de aplicacién enive2 “1” l6gico éste pasard como fe. registros de la funcién ldgica AND. sultado, mientras que si el dato ‘es un °0" l6gico, éste’ también que en cualquiera de los datos de ingreso que se tenga un “0” gico, el resultado seré "0" (ce- ro). Mientras que cuando ambos datos de entrada adquieren el valor de “1” l6gio0, el resuitado sserd "1" (uno), siondo éste el mo- EJEMPLO DEA FUNCION LOGICA AND b7 b6 bS b4 b3 b2 bt bO 10 1.0 1.01 0 Dato 8 000011114 Fito ooo0o01010 pasaré como resultado. Cuando aplicamos la funcion I6- ica AND como fio, el objetivo 8 dejar “pasar el estado ico del bit que nos interesa, pero también se puede tener otra vi sin en cuanto a la ocupacion tivo del nombre que posee esta funcion ldgiea, ya que para gene- Tabla 41. Aplicacion de ta funci6n légl- ‘68 AND como filtro. para la misma funcién légica ‘AND, siendo ésta, lade fiiar de ee manera predeterminada un *0" légico €en ls bits donde sea necesario, per- rmitiendo que en los demas bits se alo- Je @l estado ldgico que tenfa antes de | continuacién: ‘a aplicacion de la funcién ldgica AND. Para una mejor comprensién observe | a) andiw ‘el ejemplo dela tabla 41, en el cual se muestra que necesitamos que los bits {el nible superior del registro dato pa- sen a ser “0's” en el resultado, mien- tras que los datos contenidos en los bits del nile interior del registro dato $e trasladan de manera integra al re- sultado, Bbits, Para ejecutar la funcion légica AND entre 2 registros, en un micro- ‘controlador PIC se pueden emplear tuna de dos instrucciones de acuerdo a la forma en oémo se requieran api- Car, Las instrusciones de la funcién Ié- gica AND con las que cuentan los m- rocontroladores PIC se describen a AND del dato que se encuentra en el registro de trabajo W con el de un v lor literal dejando el resultado en el r- Gistro de trabajo W, moditicando su valor con respecto del que tenia ante- ‘iormente. dato det registro de tra- bajo W como el de valor tral son de b) andwt ‘AND del dato que se encuentra en el registro de trabajo W con el valor de tun registro { (registro de memoria RAM) dejando el resultado de la fun- ‘ién AND ya sea en el registro de tra- bajo W 0 en el registro f, dependiendo del valor que adquiera d (para una ‘mejor referencia consulte el capitulo k= Funcién Idgica | “instrucciones orientadas al control de registros” e “instrucciones orientadas al control de literales", ambos temas Pertenecientes al médulo I), Cabe aclarar que los microcontro- ladores PIC ejecutarén la operacién entre registros compuestos por 8 bits, y siempre que se requiera aplicar la funcién bgica AND sobre 2 registros {id Funcién l6gica | de memoria RAM, en un microcontro- LIST P=PICTSFEZBA pee ; Dectaracién de Registros re ee w ‘equ 0x00 status equ 0x03 vart ‘equ 0x20 var2 equ Ox2t er ’ Declaracién de Bits Seer naciacntee enna © equ 0 bandera del acarreo Z equ 2 jbandera del cero tO equ 5 bit para selecdlonar banco tpt equ 6 ;bitpara seleccionar banco Inicio ee eee eset org 0 goto inicio Programa principal bot status.rp0. ;cambiar al banco 0 bof lador PIC se tiene que hacer median- te la carga previa del valor de uno de os registros a W, ya que en un micro- Controlador PIC no existe tuna instruccién que efec- ten la funcién l6gica AND. entre 2 registros de memo- fia RAM de forma directa. En|a tabla 42 se muestra ol C:édigo de un programa que ‘@ manera de ejemplo de- ‘muestra la forma en que Puede ser empleada la fun- cidn ligica AND. Funcién Légica OR y sus Aplicaciones La funcién tégica © (OR en inglés) también puede em- learse para generar una mascara, solo que a dife- rencia de la funcién logica ‘AND, con la funcidn ligica OR se fjan“0’s"l6gicos, en €l 0 los bits que nos intere- san de un registro, y por status bet status, movt vart,0 iarga 6! dato dol registro var1 al registro de trabajo W. fandlw Ox0f,0 _funcién AND con de W con l firo OF, dejando ol ‘Fesuitado on ol mismo registro W. movwt var2 {dato del registro W lo guarda en ol registro var2. siguiente proceso end tra parte podremos fitrar los estados l6gicos de los bits que nos interesan de un determinado registro, ccolocando los restantes bits en el estado légico de “1”, Independientemente dei valor que tuvieran antes de Tabla 42. Ejemplo de aplicacién de la funclén légica AND, realizar la operacién de la PROGRAMACION DE MICROCONTROLADORES PIC funcién gia OR. Para estar en pos- | sultado de “0” I6gco. Adem, en el | I6icn, el resutado dependord del co: bildades de concebir la forma en que | correspondiente bit "bt" se encuentra | rrespondiente estado l6pico del bit del ‘se aplic la funcin logica OR, tene- | un "0" ligico en el registro 1 y un “1” | registro 1. Para una mejor compreny mos que recur al empleo uso de su | 'Sgico en el registro 2, quedando co- | sidn de lo que se acaba de expicat Correspondiente tabla. de verdad la | mo esutado un “1” lien: asl suce- | refigrase al ejemplo que oe ilustra 2 cual'se lustra en la tabla 43. En lata-| sivamente se tienen que seguir apt | la tabla 45, en la cual ala funcién loge bla de verdad se observan los diferen- | cando las operaciones, de la funcién | ca OR se le est considerando como tes valores que pueden adqurr los | 1ogica OR tomando fos correspon- | un fio de datos, para que sea cape7 términos identifcados como “Entrada | ciantes bits de los registos en cues- | de seleccionar a uno o més bits de Un 1" y Entrada 2°, generéndose en total | tén registro que cortiene | dato con el ‘4 diferentes combinaciones de éstas, | De acuerdo con el resutado obte- | que finalmente se trabajard. teniéndose como factor comiin que en | nido en el ejemplo mostrado ena ta- | En el emplo de la operacién cualquiera de los valores de entrada | bla 44, podemos construir un fito de | mostrada en la tabla 45, 60 observa {que 32 tenga un“ l6ico, el resulta | dalos da acuerdo con ls bis de un | que en el registro kentficado ooo do seré“t” (unc), Mientras que cuan- | registro que necesitemos opera, y | “fitro”los pits que conforman al rile do on ambas entradas se adquiera el | nuevamente haciendo referencia al | superior (bits b4, bS, bé y b7) se ere ‘Valor de "0" Wiioo, of resutado seré | ejemplo anterior, si consideramos al | cuentran fos a 1” légico, mientras "0" (cer). El nombre dela funcién =| registro 2 como el fio, podemos de- | que los bits que componen 2 nile cca ee adquere a part de su opera: | cir que en ls bits donde sel fron | feior dal mismo registro fro (bts ‘Gon principal, la cual reportaré un *1" | unos légicns, el resultado fue “1” l6gr | bO, bt, ba y D3), se aprecian en esta- {égioo cuando en la Entrada 1 ‘O" en | co independientemente de ls corres- | do l6gico do“. Delo analizado ante. ta Entrada 2 se feel estado logico de | pondientes valores que tengan losbits | riormente se desprende que las datos ** (ge tala dela funcicn I6gica O in-| dol registro 1, mientras que si lo bits | que nos interesa fitrar se encuotiran del fitro fueron establecidos como ‘0” | en los bits que conforman al nile in- clusiva 6 simplemente 0). “Tomando como punto de par- {ida la tabla de verdad de la fun- con légica OR, pasaremos a ex- plicar la manera de como se rea~ liza la ejecucién de fa funcién 1o- ‘ca en un rricrooontrolador, y para ello vamos a basarnos en el ejemplo que se iustra en la tabla 44, en el cual se muestran 2 re- ) Existen aplicaciones en las que es necesario realizar ‘comparaciones entre los datos de 2 registros por !o menos, y saber a partir de dicha comparaciOn si los datos son iguales, 6 uno es mayor quo el otro 6 uno es EJEMPLOT 5 Dato 1 5 Dato2 0 Resultado ‘Son “iguales” entra si el Dato 1 con el Dato2 EVEWPLOZ 5 Dato1 = 4 Datoz 1 Resultado ‘Son “diferentes” entre s{ el Dato 1 ‘con el Dato 2 Tabla 48, Ejemplos de una comparacién de valores reslizada a partic de una reste. menor que él oro, etc. Siendo de vital importancia tener en cuenta que los datos poseen una magnitud que se encuentra en funcion de los bits que la ‘componen. Las comparaciones que Pueden realizarse con un microcon- {rolador PIC, son las que aprendimos en os estudios primarios, ya las cua- les llamaremos comparaciones bési- cas, las cuales se enumeran a conti- ‘huacién, indioando ademds, el sfmbo- lo que las caracteriza. + Igual + Menorque (2) + Mayorque 6) Apattr de las comparaciones bé- sicas podemos crear las lamadas comparaciones complementarias que précticamente no son otra cosa que #850 (de manera iteal); las compara- clones complementarias se muestran 2 continuacion * Diferente (+) Complemento de Igual + Mayor o Igual que (2) ‘Complemento de Menor que EXEMPLOT 01010101 Dato 1 1010101 Dato 2 (00000000 Resultado Son “iguales” entre si el Dato 1 con el Dato 2 ‘+ Menor 0 igual que (<) Complemento de Mayor que Tomando la primera de las eompa- raciones complementarias que es la denominada ‘elferente’, se genera a partir de la comparacién. bésica “Iguat’, esto es, en el momento que se Pregunta si un dato es igual a oto, si el resuitado es no, quiere decir que fentonces son diferentes. Del mismo ‘modo cuando se realiza la ejecucién de la comparacién basica “menor que” entre los valores de 2 datos, si el re- sultado es no, quiere decir entonces {ue fue “mayor o igual. Por lo tanto, el mismo algoritmo que se desarrolle para las comparaciones bésicas os ol {ue se emplea para las comparacio- Nes complementarias, A continuacién ‘omenzaremos con la explicacién en dtalle de la primer comparacién basi- a Comparacién Igual (=) 6 Diferente (+) Para realizar una comparacion en tte los datos de 2 registros indepen- EJEMPLOZ 01010101 Dato 4 01410101 Dato 2 00100000 Resultado Son “diferentes” entre si ol Dato 1 ‘con el Dato 2 "ani 50.lempoe ce una comparacin do valores realex con a yncién XOR. FL dlentemente para saber si son igua- les, mayores 0 menores, se tiene que ‘ealizar una operacién aritmética fun- ‘damental que consiste en una “resta” (para una mejor referencia sobre este tema consulte el capitulo “resta arit- mética,perteneciente al méduio I), y Por medio de ésta sabremos de ma- Nera especifica si 2 magnitudes son iguales, ya que si el resultado de la ‘esta @S Cero, quiere decir que los da- tos que fueron restados son exacta- ‘mente igual, mientras que &i el re- ‘Sutado es diferente de cero no impor- tando sles postvo 0 negatvo, quiere decir que las cantidades que se resta- on son diferentes entre si, En el ejemplo ilustrado en la tabla 49 se muestra la manera de emplear una esta artmética para detorminar ‘sf 2 cantidades numéricas son iguales: entre ellas, obteniéndose 2 posibles ‘resultados, uno de los resultados de la Festa puede ser cero, s es que os va- ‘lores de los datos fueron iguales entre ‘si, 0 8@ puede tener un resultado dife- rente de cefo en la resta (posivo o negativo), si los valores fueron de magnitud diferente entre si. Del ejemplo 1 mostrado en la tabla 49, se observa la resta de 2 ndmeros (5 - 5), siendo el resultado de la sus- traccién un valor de 0 (cero), indican- do que el valor del dato 1 es igual al Valor de! dato 2; por otra pata, a es- ta que se haga puede involucarvalo- Tes de més de 1 registro de 8 bits, ra- 26 por la que recomendamos volver a Tepasar el correspondiente capitulo donde se abordan las restas aritméti- ‘cas. Ahora observemos el ejemplo 2 de la misma tabla 49, en donde de neva cuenta se realiza una resta de 2 ntimeros (5 - 4), el resultado en es- ta oportunidad es un 1, por lo tanto, el resultado expresa que los valores de los datos 1 y 2 son diferentes. Se de- be de tomar en cuenta que tanto para el ejemplo 1 y 2 de la tabla 49, las res- tas se realizan en hexadecimal (inter- Pretacién del binario) dentro de un mi- ‘crocontrotador PIC. Especificamente para la imple- iT PROGRAMACION DE MICROCONTROLADORES PIC mentacion de una comparacion entre 2 valores, ya partir de ella determinar si estos son iguales 0 iferentes, a parte de la resta también puede em- plearse la funcién l6glca XOR (expl- ‘cada en el capitulo anterior), que en ka tabla 50 se muestra un ejemplo de su aplicacin, y a pair de olla determi- nar si2 valores son iguales o diferen- tes. En jos ejemplos expresados en la tabla 50 se muestra la aplcacion de la funcién i6gica XOR @ ndmeros bina- fios para una mejor comprension, siendo el mismo caso que en los ejemplos realizados por me- dio de una testa, si el resul- tado es cero, significa que los valores de los datos 1 y 2 son iguales (ejemplo 1 de la tabla 60), mientras que cual- quit otro resultado implica que los valores de los datos 1 y 2 son diferentes entre si (ejemplo 2 dela tabla 50). En la figura 17 se mues- tra un rombo que es el sim- bolo que se emplea para realizar la comparacién de Jas magnitudes de los valo- res de 2 datos, dentro del ombo esté expresada la pregunta que compara la rmagnitud de vari con res- pecto de vare,.generando a su vez 2 posibies resulta- dos, 10s cuales nos indican pot medio de una respuesta afirmativa que las magritu- dos do los datos de vart y var2 son iguales; por otra parte, si la respuesta es “no”, significa que las magni- tudes de los datos de vart y vare son diferentes. La funcién de compara- cién de la figura 17 es des- ‘losada para saber silos va- lores contenidos en 2 regis- ‘ros son iguales o diferentes. Por lo tanto, se muestra de 418, los bloques que componen el mé- todo para poder realizar la compara~ cién, empleando en esta oportunidad como accién fundamental la opera ci6n de la resta aritmética para deter- mminar el resultado de la comparacion, pero recuerde que la operacion de la Testa puede ser sustituido por la fun- ion logica XOR. Para el cédigo que se obtendré a partir del diagrama de fluo de la figu- ra 18, se presupone que se emplean registros de 8 bits para efectos de una mejor comprensién, pero si se quisie- ran comparar valores que aborden Figura 17. Simbolo de la funcién de ‘comparacién: igual é diferente. Peet) Foereeet i Perc Percy erent met ens pene ms de 8 bits en su compasicion, ef rmétodo sigue siendo el mismo, sola- ‘mente se tienen que contemplar res- tas con registros de mas de 8 bits (16, 82, etc). ‘partir del diagrama de flujo de la figura 18 se observa que para comen- zzat con el proceso de comparacién, en primera instancia tiene que ser lim- piada la bandera que indica que el re~ sultado de la operacién de la esta es ceoro (lo mismo se realza si la opera- cién es la XOR). Para esta acoién la bandera del cero se identiia como *Z’y se encuentra dentro del registro “status” del microoontrola- dor PIC. Posteriormente se _operan los valores de los registros. vart y vara, cargando de manera primaria el valor de uno de ellos en el registro de trabajo w, para poste- Tiormente aplicar el coman- do de la resta o la funcién XOR oon el registro restan- te. La aplcacién de la resta 6 funcién XOR tendré como resultante 2 posibles valo- Tes, que es 0 (cero) 6 un va- lor diferente de 0 (sin im- portar su magnitud),tenien- do que revisar el estado {que guarda la bandera z del registro status, para saber si el resultado de la resta 0 funcién XOR fue 0 0 10. Labandera z arojaré un “1” \bgico si el resultado de la resta 6 la funcién XOR fue © (c6ro). Por otra parte, la bandera 2 tend un “0” Io- ico si el resultado resta 6 la funcién XOR fue diferen- te de 0 (cet0). Por ultimo, Petra! dependiendo del estado ‘que guarde la bandera z, se tendrd que ejecutar una se- cuencia de instrucciones, para cuando el resutado de la comparacién entre los ‘manera detallada en el dia- Figura 18. Diagrama de flujo de la comparacién: qual é valores de vart y var? indi- Diterente. ‘grama de flujo de la figura que que fueron iguales. Lo mismo sucederé cuando el resultado de la comparacién arroje que fueron iterentes los valores de vart y var2. ‘A continuacién en la tabla 51 se ‘muestra el fragmento de cédigo por ‘medio del cual se implementa el pro- grama del dlagrama de flujo de la figu- ra18, Comparacién Menor que (<) ‘0 Mayor o igual que (2) Nuevamente para realizar una Comparacién entre los valores conte- nidos en 2 registros, y saber si uno de ellos es menor que el otro, 6 saber sf ‘es mayor o igual uno que el otro valor, Dederacin de Regist ‘equ 0300 UST” P=PICTSFRQEA —BP=PICTFEG PoPICTFETE {90 carga var20nw ‘Testa vart—w deja ol resultado enw Tabla 51. Cédligo de! programa de comparacién: Igual 6 Diferentes. EJEMPLOT 8 alot = 3 Datoz 5 Resultado Pesto El Dato 2 o8 menor que ol Dato 4 EXEMPLOZ 8 alot = 9 Dato2 = 1 Resuttado Negative 6 Cero E1Dato 2.es mayor o igual que e! Dato 1 Tabla 52. Ejemplos de una comparacién “menor que” 5 “mayor o igual” realiza- da a partir de una resta, SEE se tine que realizar la operaci6n arit- mética principal para realizar compa- raciones que consiste en una resta (de nueva cuenta lo referimos al capi- {ulo “testa artmética’, perteneciente ‘al médulo I), y por medio de ésta sa- bbremos de manera espectica cudl da- to es menor que el otto, ya que si el resultado de la resta es posttivo, po- vart). Por lo tanto, de igual manera el contol del programa se tie- ne que desplazar para ejecutar la se- tie de instrucciones que corresponden alas actividades de cuando el resuita- do de la comparacin fue var2 > vert ‘Gédigo correspondiente cuando eto ‘goto postive UST PPICTESGA_BPPICTFCMOPPICIFIT ‘pregunta pore estado de la bandera del registro status a2. mayor o Igual que var (ar2 2 vart) igulentoproceso bifse status.e pregunta pore estado de a bandera c del registro status ‘A continuacién en la tabla 83 se muestra el fragmento de cédigo por ‘medio del cual se implementa el pro ‘grama que surge a partir del diagrama de flujo de la figura 20. Comparacién Mayor que (>) (© Menor 0 Igual que (<) ‘Como en los casos de las compa- | raciones anteriormente descritas, pa- 'a realizar una comparacién entre 10s datos contenidos en 2 registros, y sa- ber si uno de ellos es mayor que ol tro, i obtener el resultado comple- ‘mentario para determinar si un dato ‘85 menor 0 igual que el oto, se tiene que realizar la operacién aritmética Principal para realizar comparaciones ‘que consiste en una resta (por enési- ma vez lo referimos al capitulo ‘resta aritmétice’, perteneciente al presente ‘modulo 1). Siendo por medio de la aplicacién de esta operacién que sa- bremos de manera especifica cual da- to es mayor que el otro, ya que si el resultado de la resta @s posivo, po- de la 9s que jo que oder acion, ortuni- funda- de la 1 estar tomar el re ompa- tend na de sor ‘inico fin de lograr una. mejor com: pension en la explicacién que a con- tinuacion se dard, pero si se quisieran Comparar valores cuyos registos re- ‘Quieran de més de 8 bits en su confor- macién, el método seguir siendo el ‘mismo, solamente se tienen que con- templar restas con registros de mas de 8 its (16, 32, etc). A partir dl dia- gtama de fljo de la figura 22 se ob- Serva que para comenzar con el pro- caso de comparacién, en primera ins- tancia tiene que ser limpiada la ban- dera que indica que el resultado de la Jgualonegativo ‘Teta varl~w deja resuitado on w ‘pregunta por el estado de la bandera del registro status ‘operacién de la resta 6s cero, ademas de la bandera que indica que en el re- sullado de la resta se genera un aca- "reo, para esta accién la bandera del ‘cero se identifica como “2" y la bande- ra del acarreo como “c’, encontréndo- se ambas banderas ubicadas dentro del registro “status” de! microcontrola- dor PIC. Posteriormente se operan por me- dio de la operacién de la sustraccion los valores de los registros vart y vvar2, cargando en primer instancia el valor de var2 en el registro de trabajo , para posteriormento aplicar el co- ‘mando de la resta de vart - w (subwt vart,w). Después de la aplicacién de la resta se preguntard si el posible re- sullado fue igual a coro, 6 en su de- fecto si tue diferente de cero, para lo ‘cual se procede a revisar la bandera 2 ue se encuentra en el registro esta- tus. Sila bandera 2 se encuentra en ‘estado Kigico “1 indica que el resulta- do de la resta fue cero, y por lo tanto, cel contenido de vart es igual con var2; pero sila bandera z se encuentra en estado Wigico “0” después de realizar la resta, significa que los datos de vart y var2 son diferentes entre si, siendo necesario realizar la veriica- cién del estado que guarda la bande- a del acarreo. La bandera del acarreo muestra si ol resuitado de una resta fue positive 6 sl fue negativo,y para ello lo que te- ‘nemos que revisar es que la bandera ¢ se encuentre en estado légico “1” ara determinar que el resultado do la Festa fue positvo, 6 verificar que la bandera c tenga un estado “0” I6gico para tener en cuenta que el resultado de la resta fue negativo. Si el resuitado de la esta (0 dicho de ora manera de la. comparacién) {ue positive significa que var! es ma- Yor que vart (var2 > vart), y entonces ‘como consecuencia el control del pro- grama se tiene que diigir a elecutar las instrucciones conducentes con el resultado mostrado; pero si el resulta- do de la resta fue negativo 6 igual con cero, significa que como consecuen- cia de la comparacién se artojé un re- sultado que sefala que vari es menor © igual que var2 (vart < var2). Por lo tanto, de igual manera el control del programa se tiene que desplazar para ejecutar la serie de instrucciones que coresponden a las actividades de ‘cuando el resultado de la compara- cién fue vare < vart ‘A continuacién en la tabla 55 se ‘muestra el fragmento de o6digo por ‘medio del cual se implementa el pro- grama que resuita del diagrama de flujo de la figura 22. PROGRAMACION DE MIC Lectura de un Teclado Matricial Un teciado s un dispositive por medio del cual una persona puede *comunicare” informacién a un micro- controlador, considerdndose por 10 tanto, un elemento indispensable en aquellos proyectos en donde el usua- Tio tiene que interactuar con el micro- ‘controlador, por ejemplo para configu rar la manera de operar de la circute- tia, como lo es en un homo de mir croondas en donde se tiene que 8° leecionar el tiempo de coccién de un ‘alimento, po ejemplo. Existen 2 tipos de teclados, un tipo do teclado requiere tener disponible ‘una terminal de entrada de un micto- controlador para cada una de las te- clas, mientras que otro tipo de teciado se encuentra bajo configuracién matt cial, ahorrando terminales en un mi crocontrolador. Para comprender este ‘timo concepto vamos a recur a una situacién préctica; hagamos de cuenta que necesitamos un teclado ‘que en total tenga 168 teclas pare die rentes aplicaciones. i ulizamos el primer tipo de teclado enunciado en lo cual he cial de 4 que nos requiere nes con ciales pl ‘este apartado, necesitariamos contar ‘con un microcontrolador que tuviera disponible 16 terminales de entrada, ttlizar este tipo de teclado, a menos {que multiplexeros por medio de un circuit extero al micracontrolador ia informacion de tas teclas (yo no lo ha- ria). En cambio con un tectado matr- ciente para ingresar la informacién al microcontrolador, y para emplear el teclado de 16 teclas sélo son necesa rias 6 terminales del microcontrolador (4 de entrada y 4 de said). El teclado matricial es un circulto ‘crocontrolador. Para implementario se boton) conectados de tal manera que se tienen fas y columnas a través de fas cuales es muy tac! identificar cual tecia fue oprimida. E! teclado matricial més comin es el que posee 4 fas y 4 columnas dando origen a un teclado con 16 teclas, pero los teclados matr- des, inclusive podemos disponer de ROCONTROLADORES PIC teciados del tamaio de los empleados en las PC (102 6 108 teclas). La forma de operacién basioa de cualquier teciado matricial es la s+ uiente: Cuando se oprime una tecla se produce la unién de una fila con una columna, provocando que para tun microoontrolador sea muy sencito. identiicar la tela que fue pulsada. ‘Se recomienda que para imple- mentar un teclado matricial se haga uso de botones tipo push boton de ‘cuatro terminales, para que sea senc- lia su implementaci6n en un cireuito impreso de una sola cara. Por la max nera en como se acomadaron los Bo- tones que se muestran en ol diagrarma esqueratco de la figura 23, s® gene- ran 4 columnas y 4 filas las cuales 68 forman con la unién de las respectivas terminales de los botones y lo reco- mendable es seguir la conexi6n presada en el diagrama esquematico, ‘ya que précticamente de ahi se obtie- re el circuito impreso. Por ejemplo en foquemos nuestra atencién hacia ‘botin identificado como $5. Este esta conectado en su parte izquierda con el bome identiicado como "C1" que se refierea la colurmna 1, y por su par- te derecha al borne identiicado como SF 1" que $0 refiere a la fla 1. Por lo ace totalmente impréctico el fis por 4 colurmnas es sut- ‘ayuda a ingresar datos al mi- del uso de una serie de boto- reposicién automética (push ueden ser mucho més gran- oe rer ‘taremos uniendo la fila 1 con la colum- by Para todos los botones se tiene al mismo principio de ‘operacién, por lo ‘que se generan combinaciones de co- lumnas con fllas, las cuales son muy Ao ta sta ae Figura 2, Diagrama esquemético de un tecledo matricial de 4 X 4. {clos de identificar de acuerdo al bo- t6n que se oprima. El paso siguiente s potsonalizar cada uno de 10s boto- nes. Por ejemplo si se tratara de una calculadora se colocarian las teclas rruméricas del 0 al 9 y os botones res tantes con las operaciones aritméticas basicas, 6 también se personalizar los ‘botones con letras, et. ‘Acontinuacion se explicard el fun- cionamiento de un teciado matricial de “4X4, con un microcontrolador. Por Io tanto, para que este trabaje y realice Ja lectura del un teciado matricial, se pare destnar 4 de las terminal | retard en una columna de acuerdo | fla y columna que se un io Lins us puerios como salidas, | con el bon qua sea oprimido. Sifue- | que Se presiona una tess Emcor aes Kentcaremos por el mo- | ran enviads al mismo tempo a mds | grama de bloques des tang oS cy Tre eae $2 Y S.A oad | do una fla los "Y's" lgicns, nose po | muestan todas las aocones eue te. real ais saldas Por separado sole | dria identiicar claramonie a los boto- | nan que roaizarse para contler tendré que enviar unt" lgico, mien- | nes que sean oprmidos, lectura de un telado matricial. A con- Ben eal? SParece S6lo en una | En figura 24 se muestra la ma- | tinuacién se procederd & rea is seals sald, las 3 restanes 8 fan | gen de un feclado matical, con la | desepin del dagrama de ak aoc (agen 2a 0 te l6gieo de 7. E14") identcactén do sus tecias, para po- | figura 25, lomando en consideracée £2, $e hace llegar a teclado matt | der ingresar los datos que se requie- | que las temingles el Sieonace ree gaan que se vaya actvando | ran. En este jemplo se esta empean- | dor que funconrén come onreocs, fare a 8s teiendo que para ac- | do un tecedo matical de 4X4 simu | serdn las corespondionos erminenn paaa Kentiicada come FO se te-| ando una ealeladora bésica. En ia | dol puerto APAD=EO, Pal Ei, oe re enviar un" égico através de | tabla $6 s0 muestra efcigo ASCII | = E2 y PAD =E3 (estas termina ore 51 go" 80,170" licas alas satidas | (se recomienda quo se asigne obdigo | rresponden alas celurrce doles, $s 221,52, Postaomentes@ ene | ASCH cuando se rabaja con un el: | do) Las emminalos del maconeac, eel 1269 Bo a salda do) resutane, que seré generado a | dor quo endcn que ser comigureiee 52, pa bt las sales S0, $2] par dolacorbinactn de fla yoo: | como de slid, ern las dal nero sar aie 28 actvada la fla Fy | lum que se presente cuando urate | tl come sigue PRO sO PEt er 31 sucesivamente hasta legar ala | cla sea oprimida, PB2 = F2 y PBS = FS (as terminales Sa he, Comesponde con la saa | __ La abla $6 2s an solo un sjempio | del puerto se conectarales Mae en Shes importante observer és | que se recorienda emplear para uti | tecado matrcia, Sethe de que cuando una sada se | zar un taclado matical, ya que dela | Tal como se expcd antommen: satan Ch estado Igico de“, as 8 | tabla se observa con uo dedetale la | te, para controlar lecture de on te salldas restantes se fran en estado ado mati, se tone qui activan- l6gico de "0 El “1” l6gico tiene que . do cada fila de manera independiente Sef emviado s6l0 uno @ la vez por la Y oro tanto, se tiene que comenzar salda comespondiata, para que: de Por la primera fl, 0 sea la identfica- esa manera se tenga el conto! de la da como Fo. fla que se est activando, Se recurte al comando “bet Una vez que un “t"iégico se en- q] porto" para enviar un “i lbgico a la cuenita presente en alguna do las f- sada $0 (PBO) del microcontrolador y las da teclado matical, s tiene que que corresponde con a fla 0 (FO). Co- esperat un tiempo razonable (maximo ‘Mo paso siguientes tione que gene- 10 miisegundos) para que sea presio. e far un relardo 6 espera de cuando nada una tecla, y dependiendo de ‘més 10 mseg, tiempo sufciente para Cul fue oprimida, se erviard ol 1" b- minimizar el rebote que se genere en Gic0 a una de 4 terminales del micro- l intrrupor una vez que s0 oprima el controlador que previamente tuvieron tecado, posteriormente cuando termi- que ser configuradas como entradas. a na ol tiempo de 10 mseg, se puede ss bagi gh OL CULM geeectecber-camlyraty Sy sstet Sp lobe an mento serén idenifcades como EO, lecla, esta ya se estabiizo y por lo Et, E2y E3, que respectva- tanto, ahora se puede acco- mente corrssponden as Pavel atte etegltaeenl, sued median meek columnas C9, C1, C2 y C3 SE [35] 2] _ nar a tela que fue acciona- En ol teclado matricial | wea] 6 una ver que se activo la cuando 65 presionada una fla 0 del teclado, seré a tra- tool, se cirra un inerrupior FRESE 3° [3] 2A] ves de una dels 4 columnas {ue intatconecta una fa con que sabemos qué tecla se una columna. Es por elo que primis, séo 88 envia unt" Kgico a) CBdge ASCH rexadecinaly Como paso siguionta so pre- ROR RRL CUS Mi oe, Da M.Ccaminctsnce Mony.Sokone cal Gulag ee 'e, porque ese “1 lgico se teclado matical {Yada del microcontolader s0 _ Fess 3] Fa PROGRAMACION DE MICROCONTROLADORES PIC Figura 25 Diagrama de flujo para controlar al teclado matricial recibe un “1” l6gico (si es que se opr: rmié una tecla), recordando que son & alterativas las que nos teporten | posible identficacién de una tecla, Porque al momento de activa l fia 0 se tiene abierta la identicacién de las teclas “1”, "2", °° y “+” que correspon- den con las columnas CO, C1, C2 y 3, que a su vez se conectan con las eniradas PAO, PA1, PAZ y PAS del mi- ctocontrolador. Para reconocer la te- cla que fue oprimida, se tiene que ha- ‘cor uso de comparaciones las cuales estén representadas por medio del simbolo de un rombo en el diagrama de flujo de fa figura 25, Dentro de los bloques de comparacién se encuentra expresada una pregunta, por medio. de la cual se veriica por cual terminal dde entrada del microcontrlador se etd reflejando el ligico que se es- té& enviando por la salida SO del micro- controlador. Sila pregunta se hace vé- lida en alguna de las condiciones de comparacién, como respuesta un *s!™ | procediendo a guardar un dato en un registro de memoria RAM identiicado ‘como “varteclado". El valor del dato que serd alojado en el registro vartectado depende de ccudl comparacién fue valida, la cual a su vez esté relacionada con la tecla {que ha sido presionada. Para el caso de la fla 0 los valores que pueden ser quardados son: 31H, 32H, 33H 6 2BH, de acuerdo comlattecia que fue activa- da. Pero si ninguna tecla dela fila 06s ‘accionada, entonces el resultado de las comparaciones seré "no" provo- ‘cando que como paso siguiente se re- pita nuevamente el proceso de ident!- ficar la tecla que es accionada, pero ‘ahora en la siguiente fla que se iden- tifica como Ft (fa 1). ‘De manera bsica cuando se pasa ala activacion de la fila 1, el proceso es al mismo que para la fla 0, solo ‘que en esta oportunidad, la salida que se activard serd la identificada en el microcontrolador como Si (PB1) y ue corresponde con la fila 1, hacién- dose esta operacién por medio del co- mando “bst porb.1". De igual manera para evitar los rebotes mecéiicos de Ios interuptores del teclado, es utliza- do un retardo de méximo 10 mseg. ‘Acto seguido dependiendo en que co- lumna se encuentra la tecla que se ‘prima, serd por donde se recioa ol correspondiente “1” igico a través de la terminal de entrada, solo que en es- ta ocasi6n las posibles teclas que pueden ser activadas son las identif- cadas como “4, "5", "6" 6 “*, que co- rresponden con las entradas EO, Et, E2663. Si fue presionada una tecla de la fla 1, se procederé a guardar un dato en el registro varteciado, que en esta oportunidad utiiza los valores 34H, | 2 es en donde se presioné una tecla. | se oprima cualquiera de las tecias “7", 35H, 36H 6 2DH. En caso de que no | La operacién que se realiza para las | °8", "9" 6 "X" para la fla 2, 6 las teclas ‘se oprima tecla alguna de la fia 1, en- | fas 0 y 1 es la misma que se utliza | “L",°0", =" 6 *P para la fla 3, todo es- tonces se pasaré a revisar sien a fila | para las fias 2 y3, pero buscando que | to de acuerdo a como se observa en TST _PoPICTOFeTA wT bet status po:escrbe cbdlgo ASCII de a tecta 1 bot statuspt movw 0x31 movet varteciado sigproceso Status, pO;escrbe obdlgo ASCH do la tecta 2 stalus.p1 a2 vertectado ‘lgproces status. 0 eserbe cbdigo ASCII de la tacia 3 status. a3. vatleclado sloproceso statue.rp0:eecrbe cbcigo ASC de la tacla + vertectado rata de a tocia “4°? aon oes eo epee fates 2 0, s6lo alida que: a ona fr (PB1) y 5280 trata de la toca"? ac 5 eS, hin a are dacs cgi hace aa a sano uti oe mee See ae, fone ee sa nose cag OH a reciba el ravés de call me me dias ei chant es Hs = bras abe ES : os ent So Sa tae Ores, = = ¥ cla de fa run dato 2 en esta Tabla 57. Cédigo del programa de control de un tecledo matricial pare 7 PROGRAMACION DE MICROCONTROLADORES PIC al diagrama de fixjo de la figura 25. Para el presente ejercicio de aprendi: zaje en la utlizacién del teclado, esta- ‘mos condicionando al programa de! mmicrocontrolador, para que una vez que se presiona una teca y sae asig- 1a el valor correspondiente al registro varteclado, se proceda a realizar algu na otra actividad, mientras que si nin- {una tedla se presiona, se tiene que realizar la busqueda de alguna tecla mediante la activacién de las diferen- Temenos ‘bef status, rp0;escrbe cbdigo ASCII dela tela - bet atatuept movw 0x2 move vartectado goto _sigproceto ‘pregunta ports toca 7 ‘aoe. status.199 status. jemvla 1 ala primera fla 2 de tecias 1220 trata do la toda “77 rata do fa toca “9°? ‘se trata dela tocta 207 be be bot at cal biise goto Bese ‘goto bis goto es goto oto port, orth2 retardo porta 7 porte! ;gse trata de la tec "2"? is porta,2 i porta,s {epor ‘acs a status p0;exeibo codigo ASCII de a toca 7 status,790;e8cbo obdigo ASCII dla toda 8 status. movw 0x38 moved vartecledo polo slgproceso bef statusyp0;escrbe cbdigo ASCII dela toca 9 bot status movw 00 movit varteciado goto slgproceso statue rp0;escrbe obdigo ASCII dela teca X be be moviw mow ‘oto ba bet {pregunta por as tectas L,0,=,/ ;eovia 1 ala primera fla 3 de tocias ‘280 ata dela tecla"L"? so trata do la tecia "0"? agggaceer™ Dive poriaz a oF goto telgual bitse - goto ‘goto bet status, rp0;escrbe cbdigo ASCII de la toca 0 status 020 vartectado sigproceso status mp0 ;escrbe codigo ASCII de latecia = bot status pt movm Ox0f mmovit varteciado elo. sigproceso ‘bet _status,p0:escrbe ciclgo ASCII de ia toda / be moviw mow {Geto _sigpr0oe80 Pee a a rutin para desplegar los valores dal telado Tapco teat’ ‘Ineroclones perteneclentes al siguiente proceso ‘Tabla 58 Cédigo del programa de control de un teclado matricial parte 2. tes fil dad cu wl MICROCONTROLADORES PIC tes flas, terminando con esta activi dad cuando alguna tecla es presiona- da, En a fla 3 las teclas Le = las re- lacionamos con un valor hexadecimal igual que 01 y OF respectivamente, ya ue a teca la utlizaremos por om lo para limpiar el valor del registro Varteciado, mientras que la taola = la emplearemos por ejemplo para mos- trar un resultado. En el diagrama esquematico de la figura 26 se muestra el cicuito basico para conectar el teclado matricial al microcontrolador, en el cual solo se muestran las terminales de los pusttos A y B que son em- pleadas, pero debe tomar en ‘cuenta que falta la alimentacién y el cristal en caso de ser requeri- do. En la tabla 57 se muestra el programa que tiene que ser car- gado al microcontrolador para ‘Que controle la lectura del tecla- do matricial Por timo, en el diagrama de fluo de la figura 25, y en el cédi- 0 del programa de las tablas 57 58 del teclado matricial, se ha- C9 uso de una subrutina para ‘erat el retardo de tiempo de 10 mse, Conriguracién de las Eutecraperones Las interupciones en un mi etocontrolador son elementos muy importantes dentro de. un rograma, sobre todo sl micro- controlador tone que realizar va- ‘ias actividades a la. vez, Por ejemplo, existen aplicaciones en donde el microcontolador tiane ue esperar algin dato a través de la comunicacion serial asin- ‘rona, y para esto, el microoon- ttolador no puede quedarse es- erando hasta que llegue, por- {que puede pasar desde 1 milise- undo hasta 1 hora para que es- {o suceda, y mientras el microcontro- lador tiene que procesar mas informa- ion originada por diversas fuentes Es aqui donde la actividad de las ine- rrupciones cobra su importancia, por- que el microcontrolador puede estar trabajando normaimente, y slo seré “interrumpido" de su actividad princ- al, para avisarte en ol momento justo ‘cuando tiene que poner la atencién ara recibir la comunicacién serial. Las interrupciones de manera ge- Neral, las podernos defnir como cor- tes que se realizan a la ejecucién de sett 4 tn programa. Para proceder a realizar la ejecucién de un programa aiterno, ‘observe ia imagen de la figura 27. ! programa principal dentro de un microcontrolador puede estar en mar- cha, ejecutando sus respectivas ins- trucciones, mientras la causa de algu: na interrupcion que haya sido habilita- dda no se haga presente, Cuando una lnterupcién es activada, e! microcon- trolador deja de ejecutar las instruc- ciones del programa principal, acce- diendo a una regidn de la memoria de programa que es donde se encuentra el c6dligo de un programa que corresponde. con el. servicio de la interupcion solictada. En el mismo instante que la interupcién se genera, los datos que se encuentran en € registro contador de pro- grama (Program Counter PCL y PCLATH) se guardan en un apuntador de pila (me- moria temporal también lla- Imada Stack Pointer). Por otra parte, también se aloja en el ‘Stack Pointer el dato que es- 16 presente en el registo sta- tus. Una vez que esté en marcha el eédigo del progra- ma que se ejecuta cuando na intertupcin se hace pre- sente, el microcontrolador debe realizar las actividades pertinentes a la causa que ‘motivé la interrupcion, esto , se debe dar paso a la gestion de la informacién re- lacionada con el trabajo que tiene que realizarse solamen- te cuando la interrupcion es rovocada. Normalmente el édigo de programa que es destinado para una interrup- cién, debe ser pequefio (de- be contener pocas lineas) con respecto al cédigo del programa principal, para que el microcontrolador no se quede atrapado por mucho tiempo dentro de fa interrup- Figura 27. Programa principale interrupeién cin, y tan solo le dedique el ST PROGRAMACION DE MICROCONTROLADORES PIC pponen al registro “intcon’ (para una mejor referencia consutte el capitulo “reset interupciones y watchdog” y *doscripcién de los registros", armbos temas pertenecientes al modulo ). De los 8 bits que contiene ol registro “int con” s6lo nas interesan por el momen to los que se identifican como "GE" y “PEIE. Por macio de! bit GIE se reliza la actvacién de todas as interrupcion9s que posee of microzontrolador PIC. Porlotanlo, es el més importante que debemos de contemplar, ya que sin la actvacién de éste ninguna intorup- ‘idn sutra efecto. Para actvar el bit IE se necesita colocarfo en estado I6gico “1”. El bit PEIE sive para actvar las interrupciones de! microcontrolador que son ofiginadas por dispostivos petiéricos, esto es, ademas de act- ‘ar todas las interrupciones por medio del bit GIE, es necesario actvar ol bit PEIE si es que la interrupcién que se hablitaré pertenece a un dispositive peritérico al icrocontrolador PIC. En- tendiéndose por dispostives peril: cos, todos aquellos que de manera externa al microcortrolader son nce saris para que se haga llegar infor- = oa rmacién al PIC, por ejemplo la comuni- strata eer denen cacién serial asincrona, la conversion cio aca 8 gna lala epee, por medio del ADC, etc. Para activar @l bit PEIE se necesita colocarlo en para configrar una interrupoién. estado loo "1. ‘Nuevamente indicamos que el bit tiempo sufcleno para que se eecule rudo el programa principal por | GIE es el primo que, tane aie Tet plenamenie el sercio dela interup- medio de ia interupcin. activado, para que cualquier intertup- ion, En un microcontrolador PIC la | cién suta efecto, y postriormente to- ara indicat al mierocontelador configuacion de las interupciones, | mar en cuenta sila inemrupci6n Wve cue clrograma Ge una ifenupcén se reaza por medio del empleo del | requarimos es orga poo GSP aoe ego ce emplea el comand regio lamado “incon” que es en | stv pelea o por anvacin intr ratty cuando éste se elena, os donde se encuertran fos bis que ac | na al mleoconvolador. i's afer care ie ers amacenaon proa- van a las infenuncones, Para mayor | ign se genera wavés de un dispos- sr tne Stack Pore, represen elerencia observe la imagen deaf | to perféren, entones Nene ae ate eracrdenada alregisto sts _gura 26, en donde se describe con de- | corse uso dal bt PEIE, mienras oN cpurador de progama, para que o|_talelaubiealén dfs is que com | en caso cota (s #8 orgnae de mmicrocontrolador.continué ‘manera intema) so tendré con la marcha del programa Wo, ue buscar cuAl 6 el bit que princpal procediondo a la. STS Raucaa) tone sue eorvarse ejecucion de la intruccién En el c6digo que muestra siguiente de donde fue inte- Figura 28, Detale del registro INTCON. como ejemplo en la tabla 59, EE Se muestra que para configurar una interrupcién se hace uso de los co- ‘mandos que vemos en la tabla 596, Por medio de las instrucciones “bsf" se colocan estados légicas “1” en los bits toie y gie del registro intcon, para que de esta manera sean habil- tada la interrupcion con la que trabaja- ¥ el microcontrolador PIC. Como pa- 0 siguiente a la ejecucién de las ins- trucciones de habilitacién de la into- ‘rupcién, el programa principal conti- Nida. ejecuténdose hasta que se pre- Sentan las condiciones que provocan la interrupcién, siendo éste el momen= to en el que se interrumpe la secuen- la de ejecucién de las instrucciones, ‘Cuando una interrupcién se presenta, ‘58 coloca en estado légico “1" el bit ue hace fa funcidn de indicar que la interupcién se ha generado, este bit también recive el nombre de bandera, y existe uno para cada interupeién ‘que se encuentre presente en el mi- ‘tocontrolador PIC con el que este- mos trabajando, Una vez que se ha suscitado una interupcién, ya mencionamos que la ejecucién normal del programa se de- tiene, y como paso siguiente la infor- macion que se encuentra dentro de los registros apuntadores de progra- ‘ma, asi como también el dato del re- Gistro status, se almacenan en el Stack pointer. Acto seguido en el ‘apuntador de programa se coloca el valor 04, que corresponde con el veo- tor de interrupcion, y por lo tanto, el ‘microcontrolador sabe que tiene que Girigitse a la localidad 4 de la memoria de programa, es por ello que se decla- '@, por medio de comando “org 4", dénde se encuentra dicha localidad. Independientemente de cual haya sido el origen de la interrupcién, en of apuntador de programa se coloca el valor 04, esto quiere decir que sea cual sea ol motivo de la. interupcién, el microcontrotador siempre se dtigird al vector de interrupcién, por lo que ‘una vez que el apuntador de progra- ‘ma se encuentra sobre este vector, se tiene que preguntar de manera espe- cifica {cual es el origen de la interrup- ‘ion? Para ello se tine que preguntar Por el estado ldgico que tenga el bit bandera de lainterrupcin y si este so encuentra en estado légico 1" signif 2 quo se ha identiicado el origen de la interupcién, por fo tanto, ahora el ‘microcontrolador tiene que ejecutar el (6cigo de la rutina de interupcién. Se ‘debe de tomar en cuenta que existen aplicaciones en las que se requiere activar a més de una interrupcién, y para ello tenemos que identiticar per- fectamente dénde se encuentran los bits bandera de cada una de las inte- ‘rupciones. Ya dentro del eédigo de programa de una interrupcién, normalmente lo ‘Que se tiene que hacer es desactivar todas las interrupciones, ya que de lo ‘contrario estando dentro de una, pu- diera generarse una més causando desconcierto y pérdida de la secuen- Cia del programa del microcontrolador, Y Por lo tanto, éste se ‘perderd” y co- ‘menzara a volverse loco. Quienes tie- nen experiencia en la. programacion de microcontroladores, pueden mane- Jar una interrupcién dentro de otra, pe- To se debe considerar también que la ccapacidad del stack pointer es tan so- 40 de 8 niveles, poro que se debe te- ner un manejo exacto de las interup- clones que se van generando. Después de ejecutar las instruccio- nes por medio de las cuales 68 da el ‘servicio para atender la causa de la in- terupcién, se tiene que restablecer ia activacion nuevamente de la interup- cin, y también limpiar la bandera que indica el estado de la interupcién, pa- ‘aque el microcontrolador esté prepa- ‘ado para una rutina més. La instruc- cidn que se emplea para indica al microcontrolador que el servicio de in- terrupcion ha sido ejecutado en su to- taldad es el ete’, y cuando este se ejecuta provoca que se obtengan los sf inteon,toie bst_inteon,gie Tabla 596 ‘activa el bit que habilta la interupeién specifica, datos que se habian alojado en el stack pointer, resttuyéndolos a fos re- Gistrs status y apuntador de progra- ma, siendo el apuntador de programa 1 medio através del cual el microcon- trolador regresa a la instruccion si- ‘uiente de donde iba ejecutando el Programa normaimente. Cabe hacer ia ‘mencion de que se debe contar con un ‘digo de programa para cada una de las interupciones que van a ser activa- das, para que el microcontrolador *se- a’ el trabajo espectico que tiene que realizar de acuerdo a la causa que ners la interrupcion. Por dlimo dire- ‘mos que para un microcontrolador PIC, se tienen contempladas diversas fuen- tes que pueden dar origen a una inte- ‘Tupcion, por lo que se tiene que revi- ‘ar el manual del mictocontrolador PIC ‘que se vaya a utiizar para determinado Proyecto. Las fuentes de interupién ‘més comunes en los mictocontrolado- res PIC son las siguientes: * Inteupci6n extema RBOINT. * Interrupcién TMRO Overtiow. + Interupci6n por cambio en el es- fado légico de fos pines del PORTE (pines FB<7:4), * Interrupcién por Comparador. * Interrapci6n por el ADC. * Interupeién al emplear ta EE- PROM de datos. * Interrupcién de Tx mediante usaRT, * Interupcién de Rx mediante usaAT. * Interrupcién CCP (Captura/Com- paraciSr/PWM). * Interupeién COP. * Interupeién CCP2, * Interrupcién SSP (Puerto Serial ‘Sinerono). + Interrypoién PSP (Puerto Parale- lo Esclavo). + Interrpcion TMR1 Overton + Interupeién TMR2 Match sactiva al habilitador general de interrupciones. PROGRAMACION DE MICROCONTROLADORES PIC Implementacién de un Retardo por Timer Elmer dentro de un microcontro- lador es una herramienta muy valiosa, sobre todo para establecer una tem- porizacion con un buen nivel de exac- titud, Podemos disefar un proceso de ceonteo de tiempo por medio del esta- blecimiento de bucles de retardo, pero | microcontrolador no tendra la ca- pacidad de realizar més tareas, y So- lamenie se dedicaria a ‘perder’ el tiempo, y serd s6lo hasta que se con- suma tiempo calculado, cuando el rmicrocontolador podré dedicarse a la atencién de otras actividades. Imag nom la temporizacién de 1 sélo minu- to, y mientras también se estéleyen- oa informaciin dels signos vitales de una persona a través de los res- pectivos sensores, sie microcontola- dor no hace otta cosa mientras se ‘consume el tiempo de la temporiza- ‘in, je! paciente se nos puede mort Es aqui donde toma importancia el ‘empleo de los timers con los que cuente el microcontrolador, ya que mientras s@.controla el conteo de tiempo, en el mismo momento el ri- ‘crocontrolador puede estar realizando alguna otra tarea. El timer que sea activado le avisa al mierocontolador PIC por medio de una interupoién que ha terminado con un conteo de tiempo. Aunque de ‘manera rigurosa, lo que cuentan los t- mer son los ciclos de ejecucién de as instrucciones de un programa en un rmcrocontrolador, pero ala vez la eje- coucién de una instruccién consume un tiempo, el cual sabemos su valor. Por lo tanto, de manera indrecta sabre- ‘mos ol tempo total que se consumid al levar a un contador desde el valor 169 00H al valor de FFH. demos decir que un timer bés- ‘camente es un registro, que hace Ia {uncién de un contador que puede es- tar conformado por 8 6 16 bis, tenien- do como actividad principal a dei in- ‘crementando unidad por unidad el va~ lor del correspondionte registro. De manera ilustrativa explicaremos la manera en que opera un timer, cons!- derando en primer instancia uno de 8 bits, por lo que el correspondiente conteo en nimeros hexadecimales ‘comenzaré en el valor 00H, posterior- mente continuaré con el valor O1H, después el 02H y asi sucesivamente hasta legar al valor maximo que es FFH, pero ahi no se detiene el conteo dot rogistro contador del timer, por lo que si se presenta un incremento més, el nimero siguiente seré el OOH, siondo este “desbordamiento" et que genere: una interupcién, avisando ue en el registro contador del timer se ha llegado al conteo maximo de eventos (para un registro de 8 bits, se- rén 256 que van de 00 a FF en hexa- ddooimal. Si elmer es de 16 bts los ‘valores del registro contador comen- zarén en el ndmero hexadecimal ‘0000H, continuarén en OOO1H, des- pués en O002H, y asf suoesivamente hasta llegar al nimero FFFFH (para un registro de 16 bits, se realzardn 116536 conteos que van desde 0000 a FFFF en hexadecimal), y cuando se ‘genere un incremento més se produ ‘rd un *desbordamiento’, dejando en registro contador del timer el valor 0000H, lo cual dard origen a que ‘acontezca una interrupcion. El incremento dal.némero alojado en ef registro contador del timer, 52 va dando de manera automatica cuando las instrucciones del programa del mi- crocontrolador se van ejecutando una ‘a una, para ello, previamente se tuvo ‘que haber activaco y configurando et correspondiente timer. Cada una de las instrucciones puede consumir de 1 a2 ciclos de insuccién, que es el tiempo len que se ejecuta una instruccion (pa ra mayor referencia consult el capitu- Jo “conjunto de instrucciones y su for- mato" perteneciente al modulo 1). Co- mmo se indicé anteriormente, incre ‘menio del registro contador se va dan- ‘do cuando se van ejecutando las ins- trucciones. Por lo tanto, el programa principal que va controiando las activ- ddades del microcontrolador puede es- tar en operacion normal realizando las actividades correspondientes al siste- rma de control que se implement, y 82 rd hasta que se genere un desborda- miento cuando se produzca una inte- rrupeién, pasando a elecutar un pro- .grama alterno que también se encuen tra dentro det microcontrolador. EI Timer de 8 Bits (TMRO) Configurar el timer de 8 bits es una de las actividades mas sencilas que se pueden realizar dentro de un mi- ‘rocontrolador PIC. De hecho la acti- Vidad més compleja se realza des- ppués, cuando sa escribe el cécigo del ‘programa de la interrupcidn del timer, ‘pero dejemos por el momento la expl- ‘cacién de este datalle, y nos concen- traremos en la tarea de configurar el timer de 8 bits. 1 registro principal que se tiene {que intervenir para configurar al timer de 6 bits también conocido como t- mer en el microcontrolador PIC, es el idontticado como “OPTION REG" (op- tion) y en el se configuran los bts que se describen a continuacién: > El bit 5 del registro OPTION REG se coloca en estado légico 0" 6 "1", de acuerdo dénde se quiera tomar la fuente que da origen al inoremento del conieo que se realiza en el registro ‘contador del timer, tomando en cuen- ‘a que la manipulacién del conteo se puede dar a través del pulso que en- ‘tegue un circutlo oscilador extemno, conectado a la terminal del microcon- ttolador identificada como RA4/TOC- Ki, 0 el conteo también se puede dar ‘empleando el circuito de elo) intemo ue posee el microcontrolador. Elbit 5 del registto OPTION REG se identifica ‘como TOCS (Bit selector del origen del reloj del TMR0). A continuacién se ex- presan las posiblidades de configura- ‘ién del bit 6. Vea el cuadro 1. Jo A través del bit 3 del registro OP- TION REG se configura el destino de! prescaler, que tiene como funcion la de establecer cudntos ciclos de ins- Sezae32e gz - mn esuna as que un me a act a des- igo del timer, 1 expr oncen- urar el tiene figura- ro OP- ino del cién la je ins- truocidn deben ejecutarse para que se tenga un incremento de una unidad en el registro contador del timer. Elbit 3 se identifica como PSA (Bit de asigna- ién del Prescaler), el cual se coloca ‘en estado légioo 0" 6 "1", dependien- do de las siguientes posiblidades: vea el cuadro 2. ~o Los bits 2, 1 y 0 del registro OP- TION REG se identiican como PS2, PSI y PSO (Bits selectores del rango Prescaler)respectivamente, tien la tarea de fjar el ndmero de ciclos de instruccion que se deben ejecutar pa- ra que se incremente en una unidad el valor del registro contador del timer Para ello en la tabla 60, se muestran las combinaciones binarias que pue- dden adquitr ls bits PS2, PS1 y PSO generando las diferentes. posiblida- des de configuracién de las cuales se tiene que seleccionar la més adecua- da en funcién del valor de la tempor zacién que sea necesario habiltar. > Los bits restantes del registro OP- TION REG que no han sido deserts se deben colocar en estado ligico “0” para que el timerO sea completamen- te configurado. Por otra parte, el deta- lle de este registro se muestra de ma- ‘nera completa en la imagen dela fgu- ra29, Pasando a otra parte de la configuracién del t- mer, se mencionaré que tiene que hacerse uso del ‘manejo de las interrupcio- nes, cada vez que el re- gistro “TMRO" (registro Contador del timerd) sutre tun desbordamiento de te desbordamiento es causa: Gombinacion Dinara 4o por la ejecucion delasins- | “ps2. PSt, PSO. trucciones en el microcontro~ ‘000 lador, que de acuerdo al pres- (001 caler seleccionado se reque- {L152 ‘O10 riré de un cierto ndmero de O14 Ciclos de instruccién para que 100, 401 1164 se vaya incrementando de Unidad en unidad el valor det slelelelsisisiae 110. 1: 128 registro TMRO. Para que sea a4 1:256 [4 S| entendible la presente expli- Tabla 60. Configuracién del Prescaler ‘caci6n, emplearemos un ‘ejemplo en donde el valor de! prescalet que se ha seleccionado es de 64, equivalente a colocar los datos binarios “1°, °0"y “1” respectivamente en los bits PS2, PS1 y PSO del regis- tro OPTION REG. Cada vez que se desborda el ro- gistro TMRO se tiene que producir una interrupeion para “avisar” que se ha ‘completado un ciclo de tiempo bien ‘establecido, para lo cual en primera instancia ‘se realzan las siguientes ‘operaciones: vea la formula 1. Para calcula el tiempo en el que se Inerementa en una unidad el valor del registro TMRO, hacer lo siguiente: (Prescaler)*(Tiempo del ciclo de instrucei6n) = (64)"(1 seg) = 64 usseg Cea aaa) La manera de activar la interup- cién cuando sea detectado el desbor- ‘damiento del valor del registro TMRO, 8 por medio del registro identificado ‘como “INTCON” del cual se manipu- lan los bits 7 y 5 de acuerdo con la si- so pst z ps tof psa tole tocs: pO mt 22222222224 | sey | ratio ‘indo dela intorupaiin del TIMER de 8 bits ink de leitrneleerosnetsnuonosecennetet Dd situeyp0 arbi lbanco 0 status pt sdesactivacion de interupciones dimpia la bandera ‘activa las interrupciones Tate ; programa principal ‘bef stafus,7p0 bef status rpt eambiar al banco 4 ‘moviw 0x00 sonfigurar pines del mow trisc ‘puerto C como salida ‘Configuraciin del timer statusyp0 cambiar al banco 1 SS CHRRRERERET id MICROCONTROLADORES PIC uiente explicacién. Elbit T del registro INTCON ‘Namero de Interrupciones = segundo 035 interrupciones 1638mseg que 2 identifica como Férmula 2 GIE (Habiltacién Global de las Interrupciones), se BIZ instruccion que se de- ben ejecutar para que ‘se increment en una tinidad el valor del regis- tro contador det timer debe colocar en estado FEERCCCRO TED MGRCIROOM Racial! £n la table 62 se mues- '6gioo “1”, para que sean hablitadas todas las inte- rmupciones, mientras que si 68 colocado un "0" I6gico en ol bit GIE, implicaré que las interrupciones sean inhabiltadas. A continuacién se ‘muestra de manera resumida lo ex- presado. 1 = Habilta todas las interupcio- ‘nes no enmascarables Deshabilta todas las interup- ciones — El bit 5 del registro INTCON que ‘se identifica como TOIE (Habilita la in- terrupcién por desbordamiento en el ‘TMRO), se debe colocar en estado I~ ico “para que la iterupeién por desbordamiento en el conteo del re- gistro TMRO surta efecto, por otra par- te, se debe colocar en “0” igico para. deshabilitario. 1 = Habilta la interupcisn del T™MRO 0.= Deshabilta la interrupcién del TMRO -® Los bits restantes del registro INT- CON que no se emplean para el t+ mer, deben permanecer en estado \6gico "0". El detalle del registro INT- CON se muestra en fa imagen de a f+ ura 20. =e La bandera que indica que ha sido activada la interrupcién, por desbor- damiento en el conteo del registro ‘TMRO, estd implementada en el bit 2 del registro INTCON el cual se ident- fioa como TOIF, siendo el estado bg code este bit el que indica que se ge- ‘neré una. interrupcién. Cuando esto suceda el bit TOIF se colocard en el estado lagico "1". Figura 30. Detalle del registro INTCON, En a tabla 61, se muestra el ofd- ‘g0 completo para programar al micro- ‘controlador PIC, empleando el timer de 8 bits para controlar el encencido y apagado de los leds del puerto C a una frecuencia de 1 Hz aproximada- ‘mente, Por otra parte, se est configu: rando. un microcontrolador PIC 16F874, pero exactamente el mismo procedimiento se puede realizar con ‘cualquier otro microcontrolador PIC. El Timer de 16 Bits (TMR1) El timer de 16 bits ¢s muy similar ‘en su forma de operar al timer de 6 bits, teniendo como diferencia princl- pal que al timer de 16 bits, emplea 2 Tegistros de 8 bits para realizar un conteo ya sea de eventos 0 de tiempo, por consiguients, se dispone tanto de ‘una resolucién como con valores mu- cho mas amplios en cuanto al estable- ‘cimiento de. un valor de tiempo 0 un nimero de eventos a contabiizarse respeotivamente. El primer: registro que tiene ah ser intervenido para configurar al t- mer de 16 bits (también conocido oo- ‘mo timert) en el microcontrolador PIC, es el dentticado como "TICON” y en el se contiguran los bits que se describen a continuacién: Las bits 5 y 4 del registro T1CON. se identifican como TICKPS1 y TICKPSO (Bits selactores del rango Prescaler del rele) respectivamente, se colocan ya sea en estado ligico 0" 61", de acuerdo a la combinacién bi- nara que se forma entre los 2 bits, pa- 1a generar un valor que a su vez co- ‘mesponde can el numero de ciclos de tran fas. 4 combinacio- res binarias que se pue- den formar a partir de los bits TICKPS1 y TICKPSO, gene- rando las diferentes. posibildades de configuracién, de las cuales se tiene (que seleccionar la més adecuada, en funcién del valor de la temporizacion 0 ‘elnimero de eventos que sea necesa- rio contabilizar. Elbit 8 del registro T1CON que se identifica como TIOSCEN (Bit de con- trol del osciiador del timert), tiene la funcién de habiltar 2 terminales’ del microcontrolador PIC para que a tre~ vvés de ellas se reciba la informacién de un disparo externo, que a su vez alimenta a un osclador intemo en el rmicrocontrolador. El oscilador intemo ‘es empleado para sincronizar la sefial externa con el proceso posterior que ‘ealiza el timer, contribuyendo con la ‘generacién de una sefial apropiada tomando en cuenta que el disparo ex- terno puede ser de no muy buena ca- lidad, por lo que et osclador interno ‘ademas posee de un cicuito eispara- dor de Schmitt. El disparo extero puede emplearse para contabilizar tiempo 0 ndmero de eventos. Las ter- rminales que son habiltadas en el mi- crocontrolador por medio del bit THOSCEN, se identifican como RXX- ITAOSUXXX. y_ RYY/TIOSO/T1C- KIPKXX (los términos XX, RY, XXX ‘8 YYY dependen del microcontrolador ‘que se este empleando, por lo tanto Combinacion binaria TiCKPS1, TICKPSO ‘00. of 10, un Tabla 62.Configuracién del Prescaler dl Timert.

También podría gustarte