Você está na página 1de 169
- Lenguajesde programacion Introduccion Pasos a seguir para PVE AER) elaborar un proyecto Col Cea) ea ; UO Rag OLS are) Curso practico sobre ETT TS (Teoria, Prog! Programacion, Pyne mae y Wi Coen Pence a Sd 6 £1 Curso pric sabre MCROCONTROLADORES de PKI. pu WW: i ea ace a oa cae os Cabana tugs clea petas econeson Ge color, De estas iiltimas, 8 estin dedicadas a la seccion de 4a 22 N°R-22, Piso, PROGRAMACION y 8 2 la secci6n de PROYECTOS, Tekin (6) 3388179. 3348187 Las paginas de cada secci6n son encuademables por separado, Por esta raz6n, all 3318189 - 3548193 Fass (6) 3548020 Pereira Colombia Carrera 13 N° 38-43, iso 1 format los volimenes, debe cuidarse de desprender previamente, de todos los fasciculos, as 8 paginas centrales ce PROYECTOS, las 4 lc PROGRAMACION y por tikimo las 8 paginas de Durante la publicacién de los fasciculos se lets Bana ponder ala vena ls tapas de los 3 volimenes de fa obea para su encuademacton, ean ogg - Colombia CEKITS.A. garantiza la publicaci6n de la totalidad de la obra, el suministro de la tapas necesarias para su encuademnacién y el servicio de niimerosatrasidos hasaun Mail: ecekit@col2telecom.com.co ao después de terminada la crculacion del tikimo fasciculo. Fambién garantiza la butp://ewww.cekit.com.co fidelidad de la informaci6n teérico-prictca suministraca y el comrecto funcionamiento i Gerente Gener de los programas includes como ejemplos de a obra. einen Geren Comers Motorola, Microchip, PIG, Intel, Atmel, Parallax, Zilog, Philips, son marcas registradas de Marcel Aha lnsclfereies empress en los Estados Unides yen os pies. tas productesy nombres de Decco ll compas menciomidasen esa obra pueden ser marcas regsadkas de ss propietaros, 1 elipe 5: Bstecuno hasdodsberado sein ed plan deledtory des autres y Lane ea Ths nsponsalilad porlon quienes integra del re departamento téenico de CEKTE'S A, JUAN ANDRES CASTANO W. is MANUEL FELIPE GONZALEZ G. Distribucion Internacional ‘ a a eae Argentina: imporador Ector ConosurS.A. Av. Belgrano 355 1 Tel 4342-9029 Fax: 4312:9025, JUAN DIEGO HERNANDEZ. femal: goonosur@speedy.comar Dis. Capital: VACCARO SANCHES Y CIA, - Moreno 794, 97(1082) Buenos Ates. Dist. Interior: DISTRIBUIDORA BERTRAN S.A. - Av. VélerSarsfild Proyectos 195001285) Buenos Aires, - Bolivia: AGENCIA MODERNA LTDA. - Chile: DISTRIBUIDORA, ALFA S.A. ~ Colombia: DISTRIBUIDORAS UNIDAS, - Venezuela: DISTRIBUIDORA CONT: oN AE eg NENTAL- México: CONSORCIO SAYROIS - Ecuador DISTRIBUIDORA ANDES - Panam: pig cardia: Laxz Angela Plata. PANAMEX'A.- Pert DISTRIBUIDORA BOUVARIANA S.A. - Paraguay: SELECGIONES S.A C Diseto: Gloria Marcela GomezG. Unuguay:DISTRIBUIDORA CAREAGA Diagramacion Héctor Hugo Fimencs Suscripciones (no validas en Argentina), ntimeros atrasados ee y consultas técnicas en Colombia CEKIT S.A. reprodec ped ote por aur me se Calle 22 N°8- 22, Piso 2, A.A. 194 Pereira(Colombia) pense ero descr, 0a nuestro correo electrénico: EDICION CONO SUR ‘ecekit@col2.telecom.com.co Inxemacional Graphics & Printing Co. 72600 Doulas Road, Suite 403 Coral Gables, Florida 33134, USA ISBN (Fasciculo 8) 958-657-510-1 Impreso y encuadernado por: ISBN (Volumen 1) 958-657-1989 RR Donnelley af ISBN (Obra completa), 958-657-997-0 ‘América Latina Ruta Panamericana Km, 38,700 Buenos Aires Argentina Impreso en Argentina Jurio 2003, Estudie, con el método de CERIT de “Aprender haciendo”, la tecnolo- gia de los Microcontroladores, una de las que mas haf cambiado el mundo en los iltimos afios y gang miieho dinero Estos pequefios ce electrénicos se-encuentran en todas partes: au- bros Tméviles,/éomplitadoras, clectrodomésticos, alarmas, jueBos de luces, instrumentos, equipos de cofaunicaciones, etc. ‘neste curso incluimos los principios te cos, los fundamentos de su programacién, julia. gran camidad we actividades pricticas y proyectos completos para tsamblar. Los mietocontroladores son los elementos bé sicos y fundamentales de una nueva revoliitién, _ lniinrerconexién de todo con.todorertuna red mundial, de ons control. Estorper- CE eed PTT Te a cna eee a ieee a eed mitird la comunicacién de hechos y datos entre personas y objetos formando la red del con miento, base de la economia del nuevo milenio Capacitese y forme parte activa de la nue- va economia, Las personas con buenos conocimientos de esta tecnologia, tendrain muchas oportunida- des laborales 0 podrin fabricar sus propios aparatos en forma industrial, lo que puede ser la base para una empresa muy rentable. Con e8ti estructurada el curso 320 paginas (1 a 320) secciones mos de pasta dura con cada uno de los temas pr pales, Para su facil identificacién, cada una de las sec ciones tiene un color diferente. La distribucién de Jos tomos es la siguiente: Tomo 2: Programacién 160 paginas (1 a 160) El Curso practico sobre Microcontoladores de CEKIT S.A. se publicard en 40 fascfculos con tres ida uno, y al final, se agrupard en tres to- Tomo 3: Proyectos 320 paginas (1 a 320) Seccion tle Teoria En la seccién de teorfa, se estudian los fundamentos tedricos y funcionales de los microcontroladores. Esto se refiere a la estructura 0 arquitectura interna de los mismos, as{ como a la funcién de cada uno de los terminales o pines de los diferentes dispositivos tratados en el curso cuyo conoci cesario para disefiar citcuitos con estos componentes. jento es ne- Se empieza con un repaso sobre el tema de los mictoprocesadores, los cuales dieron origen a los microcontroladores, y se desarrollan durante las lecciones, los diferentes aspectos técnicos de esta tecnologfa. WT. Capacttamon para vlvte mejor la Los registros Organizacién de la memoria La EPROM de datos Las interrupciones Los puertos de entrada/salida (I/O) Los temporizadores (Timers) Las opciones Comparacién/Captura/PWM El puerto serial sincrono SSP, bssp La USART Las referencias de voltaje Los comparadores Los conversores A/D Modos de bajo consumo (sleep y watchdog) Bits de configuracion Programacién en el circuito (in circuit) El conjunto (set) de instrucciones Las comunicaciones seriales Otros microcontroladores Parallax (Basic Stamp) Intel Atmel ceion de Programacion Todo aparato o proyecto con microcontroladores i Neccion te proyectos Indicador binario de 4 bits ‘Alarma para el hogar y el automévil Reloj digital y calendario Secuenciador de luces programable Cerradura codificada Activacién de aparatos via telefénica ‘Temporizador universal ‘Aviso luminoso con diodos LED Luces ritmicas Convertidor paralelo-serial Punta logica ‘Temporizador miniacura Frecuencimetro Generador de seftales Programador de memorias Adquisicion de datos en 16 bits “Minirobot con microcontrolador Addquisici6n de datos por el ee ere Programacién de un microcontrolador El ciclo de desarrollo de un programa + Herramientas de software Programacién en modo inmediaro Programacién orientada a registros Control de flujo de un programa Puertos de entrada/salida Subrutinas Interrupciones Programacién en lenguaje estructurado Temporizadores Programacién serial Programando los conversores A/D y D/A. Programacién en lenguaje C Tépicos avanzados de programacién En esta importante seccién del curso, se entrega una amplia informacién con la cual el alumno podrd ensamblar una buena cantidad de proyec- tos. Para cada uno de ellos se incluye la teorfa de funcionamiento, el diagrama esquemético, la lis- ta de materiales, las instrucciones para el ensam- blaje y el listado del programa. ‘unde ensantie “Teer ycioraninta A quienes va dirigido el curso El tema de los microcontroladores es de gran utilidad para un grupo muy amplio de perso- nas que requieran conocer esta tecnologia por su gran cantidad de aplicaciones. Los principales grupos de usuarios son: Estudiantes y profesionales de Ingenieria y Tecnologfas: * Electrénica Eléctrica * Mecénica * Sistemas * Bioingenieria * Mecatrénica Automatizacién Estudiantes de cole; Técnicos en: * Electronica industrial * Automatizacién * Electrénicos en general * Alumnos de los cursos de CEKIT S.A. + Estudiantes y profesionales en FISIC para sus necesidades de instrumentaci Autodidactas 0 aficionados con conocimientos e1 * Electrénica Digital * Microprocesadores - ‘eel? Certificatio ee Una vez terminado el curso y aprobada la evaluacién que se publi- caré al finalizar la obra, el alumno recibir un Certificado de Apti- tud Ocupacional otorgado por CEKIT S.A. y aprobado por las respectivas autoridades educativas. Este certificado ler permitira acceder a puestos calificados de trabajo. nal Otra obra con fa calidad editorial y didéctica de Ceuur.. cua sara vivir mafor See) CONCEPTOS BASICOS DE PROGRAMACION Cuando se incluye un microcontro- lador en un circuito 0 en un aparato electrénico, se debe establecer la com- binacién adecuada de hardware (cir- cuitos) y software (programas). A esto se le llama un disefio con microcon- trolador, Cuando éste se adquiere del fabricante o a través de un distribui- dor, no incluye el programa el cual debe ser planeado y escrito por el di- sefiador del hardware 0 por un pro- gramador, que en la mayorfa de los casos, es ¢| mismo. curso prt te Menconrosdoes RCI: o Ce Uheeptos basicos de programacion Introducci6n Los microcontroladores permiten configurar un sistema de acuerdo con los requerimientos im- puestos por el problema que se va a resolver, gra- cia’ a una caracteristica fundamental que com- parten con las computadoras convencionales: son programables. Por esto es posible incorporarlos a un sistema electrénico, normalmente orientado ala captura y entrega de informacién, permitien- do decidir lo que debe hacerse con los datos y sefiales procesados. El arte de trabajar con microcontroladores requiere del dominio de dos habilidades funda- mentales: la primera es la destreza para selec~ cionar componentes electrénicos y conectarlos adecuadamente, y la segunda, es el dominio de las eéenicas de programacién, gracias a las cua- les se puede lograr que el microcontrolador se comporte segiin los requerimientos de la solu- cién propuesta. Si el lector ya ha estado inmerso en el mun do de la electrdnica, entonces tendri las bases necesarias para entender el funcionamiento in- terno y operativo del microcontrolador y podré Figura 1.1 Sistema de contol paraladeteccén de jets metaicos & CIR 002018080 Meecoiratree configurar el hardware o los circuitos sin mayo- res dificultades. Sin embargo, el aspecto de la programacién puede resultarle un poco comple- jo. De todas maneras, independientemente de las bases te6ricas y précticas que usted posca, encon- trard en este curso los conocimientos de progra- macién necesarios para realizar con éxito los pro- yectos propuestos en otras secciones de la obra. Fundamentos de programacion Para iniciarnos en los fundamentos de la progra- ‘macién, veamos primero un sencillo ejemplo de la vida real tomando como elemento de control una computadora genérica. El diagrama de la fi- gura 1.1 corresponde al esquema de control uti- Tizado en algunos aeropuertos para detectar la presencia de objetos metilicos escondidos en la ropa o adheridos al cuerpo de los pasajeros. Figura 1.2 Diagrama de bloques de! sistema de deteccién de objets metaicos La misidén del detector de metales es la de producir una sefial eléctrica cada vez que una persona cruce frente al detector portando algiin objeto metilico, En cuanto a la alarma sonora, &ta debe producir una sefial audible en presen- cia de un elemento peligroso, con el fin de aler- tara las autoridades correspondientes, figura 1.2. Cudles el papel que cumple la computado- ra en este proceso? Como seguramente podra deducir el lector, la computadora esta conectada de modo permanente tanto al detector de meta- les, como al dispositivo sonoro, figura 1.3. La interfaz de entrada se encarga de adaptar la seftal proveniente del detector, introduciéndo- Ia en la memoria de la computadora. amp cador de salida se utiliza para aumentar el rama- fio de la sefial eléctrica generada, aplicindola a la alarma sonora y generando un sonido percepti- ble por el ofdo humano, ea ores Programac Cour) co fl Figura 1.3 Diagrama de boques de sistema de deteccin de objets metélcos Ahora surge una pregunta més interesante cémo es posible que la compu- tadora active la alarma sonora tinicamente cuan- do un pasajero cruza portando un objeto metali- 0, mientras que la mantiene en silencio cuando no detecta el metal? Antes de responder a esta pregunta, es necesario comprender un aspecto clave relacionado con el funcionamiento interno de una computadora, En contra de lo que pudiera pensarse, ésta no “observa” ni controla el mundo exterior de manera continua. Fla utiliza pequefios perfo- dos de tiempo para realizar las acciones que le son encomendadas, por lo que la tinica opcién que le queda es la de organizar sus tareas de for- ma secuencial en el tiempo, figura 1.4. Este punto debe recordarse siempre, ya que es la base del funcionamiento de cualquier sistema basa- do en computadoras, microprocesadores 0 mi crocontroladores. Ca ora Prete Ce) ore La computadora trabaja a intesvalos de tiemco En palabras sencillas, zqué funciones debe- ria realizar la computadora de la figura 1.1 para ser eficiente en la tarea de detectar objetos meti- licos?. Observe los siguientes pasos presentados en Ia figura 1.5. Cea peti red ‘Figura 1.5 Programa pararesover el problema del detector de metaes. Ahora le preguntamos al lector: zen dénde piensa usted que debe almacenarse este conjun- to de instrucciones? La respuesta no es compli- cada: en el interior de la computadora, de un microcontrolador o de un sistema con micto- procesador. Pues bien, el conjunto de instrucciones que acabamos de presentar es lo que se conoce con el curso prcte de Mercontoiviaes GACT: ® fwoneeptos basicos de programacion nombre de PROGRAMA y representa el cora- 26n de los sistemas electrénicos modernos, en los cuales es tan importante la interconexién de los ircuitos eléctricos como el desarrollo de los pro- gramas orientados a la solucién del problema. Recuerde que: La misién de un programador es la de en- tender el problema que debe resolver, escribir la secuencia de instrucciones requeridas en el len- guaje apropiado, almacenar la secuencia de ins- trucciones en la memoria interna de la computa- dora y, por Ultimo, ejecutar o poner en marcha el programa creado, figura 1.6. Figura 1.61 treba de un programadr Lenguajes de programacion {Qué lenguaje debe utilizarse para escribir un pro- sgrama? La respuesta depende de la computadora 6 en nuestro caso, del microcontrolador utiliza- do y del problema que se va a resolver. Sisu pro- blema es dinicamente describir los pasos que de- ben seguirse para alcanzar el resultado deseado, es suficiente con emplear frases tomadas de idio- ma espafiol, naturalmente en el orden que resul- te mas adecuado. Un ejemplo de ello es el pro- grama que presentamos en la figura 1.5. Pero, ;seré posible que una computadora, como una de las muchas utilizadas en un aero- puerto, pueda entender este tipo de programa? El sentido comin nos dice que no: es necesario convertir cada una de las instrucciones al “idio- ma’ que comprenden las computadoras. ten varios idiomas o lenguajes utilizados por las computadoras modernas. Algunos de ellos tie- nen como finalidad ayudar a resolver proble- mas de caracter administrativo, como el lenguaje COBOL, por ejemplo, mientras que otros ayu- dan a crear programas de utilidad para ingenie- ros, como FORTRAN o PASCAL, para citar solamente dos ejemplos. Cuando se trata de resolver un problema cuya caracteristica es el control de componen- tes clectrénicos, como en el caso de los micro- controladores, se debe recurrir a un lenguaje es- pecializado. El mas comin de ellos recibe el nombre de LENGUAJE ENSAMBLADOR o. ASSEMBLER. Este lenguaje est compuesto por tun conjunto de palabras sencillas que permiten describir acciones bisicas, como por ejemplo el movimiento de datos entre las diferentes partes del sistema. Una de las dificultades que aparece cuando se utiliza el lenguaje ENSAMBLADOR tiene que vercon el hecho de que cada computadorao cada familia de microcontroladores tiene el suyo pro- pio. Sin embargo, y de acuerdo a nuestra expe- riencia, estamos convencidos de que si usted aprende a programar correctamente desde la base, en un cierto Lenguaje, sin importar cual sea, esta- ren condiciones de transferir sus habilidades a un sistema diferente. Con el objeto de aclarar las ideas, y empezar ‘a entrar en materia, vamos a mostrarle como es- ctibir el programa de la figura 1.5 en lenguaje ENSAMBLADOR. Por comodidad y facilidad didéctica, vamos a utilizar por ahora instruccio- nes para una computadora genérica, es decir, una computadora que tenga la mayoria de elementos presentes en las restantes computadoras. Programacion Detector de metales Posicin de memoria Alarma sonora Vale 0 bictcamis 1 ) ces Figura 1.7 Solvcén visual del prablema del detector de metaies (Qué valor tiene dato en memoria? Para facilitar las cosas, vamos a mostrar el proceso gréficamente, figura 1.7. Ahora que usted ha visto la solucién grifica del problema, podré entender la conversién a palabras del mismo proceso, figura 1.8 Ya estamos preparados para escribir la so- lucién en lenguaje ENSAMBLADOR gené- rico. En realidad, todo lo que tenemos que hacer es utilizar palabras més cortas, y esta- blecer convenios que permitan realizar una [EE En caso contraro, el valor del dato es 1 (pi de metal) y debe activarse la alarma sonora. EE > Terminar at proceso Figura 1.8. Sotcin en palabras del problema del detector de metales escritura uniforme. Cada paso se numera en forma ascendente, yen cada uno de ellos se almacena la corres- pondiente instruccién, figura 1.9. La columna de “Comentario” se utiliza para dar una expli- cacién de cada instruccién y sila instruccién es muy obvia, no se utiliza uve prio te Meroconrsceres: AGRCUT: © GHEE CSE macion ‘Figura 1.9 programa escito en lenguaje ENSAMBLADOR genérico. El lector debe acostumbrarse a traducir mentalmente las instrueciones escritas en len- guaje ENSAMBLADOR, Para ilustrar este proceso, vamos a realizar las correspondien- tes conversiones de los pasos mostrados en la figura 1. 9. GEIR > Detener a cjecucisn del programa, El lenguaje ENSAMBLADOR de las computadoras reales es atin mds compacto que el mostrado en la figura 9. Una versién ms cercana a la realidad se muestra en la figura 1.10. © IR: 0020; 0 merccorontere Figura 1.10 Ei programa escrito en lenguaje ENSAMBLADOR genéric, pero mas compacto. Simplemente, hemos utilizado palabras més cortas. Vamos a repetir, nuevamente, la traduccién mental de instrucciones, Sin em- bargo, le sugerimos que observe con cuidado Ja instruccién del paso 0004, ya que en ella hemos realizado una mejora que confiere ma- yor claridad al proceso de programacién, En lugar de indicar que se activa la alarma sonora, es preferible escribir (enviar) un dato al dispositivo fisico: 1 para activar, 0 para apagar. Més adelante estudiaremos programas simi- lares a los mostrados en las figuras 1.9 y 1.10, pero utilizando el lenguaje ENSAMBLADOR de un microcontrolador real. El diagrama de bloques 0 de flujo Es bastante comtin, para facilitar su trabajo, que los programadores utilicen elementos gréficos para realzar visualmente las caracteristicas de los componentes que hacen parte de la solucién de un problema. Por este motivo, no es tampoco de extrafiar que los programas de las computa- doras se disefien a partir de esquemas concretos, GEM En caso de que el dato guardado en mem sea igual al valor 1, es decir, se detecta la presencia de un objeto metilico, se debe escribir el niimero 1 en la direccién asignada ala alarma sonora, Esta accién inicia el sonido de met ie caso de necesitar a poco més adelante) se ar De bocnccion ocr abet (escribir el niimero 0 en la direcein asignada a la alarma). BEBE Derener la ejecucidn del programa. lo que ha dado origen a una representacién de- nominada DIAGRAMA DE BLOQUES, cono- cida también con el nombre de DIAGRAMA DE FLUJO, Observe continuacién el programa de Ia figura 1.9, pero presentado mediante un diagra- ma de bloques, figura 1.11. En esta construccidn se observan varios ele- mentos que es conveniente enumerar. En primer lugar, las figuras con forma rectangular represen- NO sl ‘iowa 1.11 Drama ce logs para programa ce tector ce mates tan acciones concretas que deben ser ejecutadas, por la computadora, figura 1.12. ‘Figura 1.12 Una acién simple Las flechas indican el flujo que debe se- guir la computadora para ejecutar las acciones indicadas. No es necesario numerar los elemen- tos grficos, ya que estas indican con claridad el camino que debe seguirse, figura 1.13. | a ‘Figura 1.13 Flachasqueincane fujo de eecuciin de programa Curso prctico de Microcontroladores excrr: @ Conee ees basicos de programacién Un figura con forma de rombo representa uuna condicién que debe ser evaluada o analiza- da, y en base a este andlisis, tomar una decisién. Si la respuesta es satisfactoria, es decir, si se cumple la condicién, debe tomarse un determi- nado camino; en caso contrario, cuando no se cumple la condicién, debe tomarse un camino diferente, figura 1.14, SI NO Figura 1.14 Rombo que indica una decisién Un rectingulo con los extremos redondea- dos indica una accién especial. En particular, si Ja figura contiene la palabra Inicio se indica a la computadora el punto en donde comencar el programa, Si el componente contiene la palabra Fin, se indica a la computadora que el proceso ha ter- minado, figura 1.15, Figura 1.15. Inicio y Fin de programa Los textos presentes en los diversos com- ponentes hacen referencia a las acciones que se deben ejecutar. La informacién que se entrega en los pérrafos anteriores brinda una perspecti- va de las posibilidades visuales de las que dis- ponemos al elaborar un programa. Naturalmen- te, en programacién existen otros elementos que deben considerarse, pero las estudiaremos cuan- do sean necesarios. © GATE 0.01 picts verses De la computadora al microcontrolador En esta primera visién del mundo de la pro- gramacién, sélo nos resta observar un detalle de gran interés: zes ldgico utilizar una podero- say costosa computadora personal para detec tar la presencia de objetos metdlicos? Es evi dente que en el caso de que existan alternati- vas més simples y econémicas, éstas deben ser escogidas. Pero, :cudles son estas alternativas? A la pregunta planteada en el pérrafo anterior se puede responder haciendo referencia al com- ponente electrénico mds notable de nuestro tiempo: el microcontrolador. Desde otro punto de vista, podemos defi- nir un microcontrolador como una computa- dora en miniatura alojada en un solo circuito integrado, pero con la capacidad suficiente para resolver problemas especificos de diferente complejidad, con lo que se obtiene un signifi- cativo ahorro en los recursos fisicos utilizados, figura 1.16. Laarquitectura y el modo de operacién del microcontrolador se estudian en la seccién de teoria de esta obra. Los aspectos relacionados con las récnicas de programacién aplicadas al microcontrolador serdn descritos completamen- tea lo largo de las préximas lecciones, Sul Figura 1.16 Estructura interna de un microcotolador LECCION 2 SISTEMAS DE NUMERACION EN LA PROGRAMACION DE _ MICROCONTROLADORES Los seres humanos trabajamos con el sis- tema decimal, los microcontroladores tra- bajan con el sistema binatio y pata facili tar la escritura de los programas de estos, se trabaja en el sistema hexadecimal. Por esto es importante conocer estos dos tilti- mos sistemas de numeraci6n si queremos aplicar en forma eficiente esta tecnologia. care prcto ste mereconroines GREET: Sif lemas de numeracién Los microcontroladores son sistemas cuyo ‘comportamiento no se define en el momento de su fabricacién, Para que un microcontrolador sea Util, se debe grabar en su memoria incerna el con- junto de acciones que debe ejecutar, Una vez hecho esto, se dice que el microcontrolador ha sido programado, y se encuentra preparado para jecutar los procesos de control que le han sido encomendados. Habitualmente, un microcontto- lador embebido (embedded) o incluido en un cir cuito de control electrénico, mantiene su pro- grama original, en tanto no se presente ningdn desperfecto en el circuito integrado. Qué técnica se utiliza para programar un microcontrolador? En la seccién dedicada a los conceptos bisicos, se mencioné que las instrucciones del programa se deben codifi- car utilizando el lenguaje llamado ENSAM- BLADOR. Esto, aunque en principio parece correcto, no refleja exactamente lo que pasa en el interior del microcontrolador. En dlti- ma instancia, los microcontroladores sola- ‘mente comprenden el lenguaje de los “unos” y los “ceros” o sistema binario; en otras pala- bras, son circuitos digitales. El programador, inicialmente, codifica la solucién del problema en lenguaje ENSAM- BLADOR. A continuacién, utilizando una computadora de soporte, transforma el progra- ma convirtiéndolo a cédigo de MAQUINA (unos y ceros). Este cédigo binario se graba en la memoria del microcontrolador, y es el que realmente se ejecuta al iniciar el ciclo de ope- racién del sistema. Estructura de los datos Un concepto fundamental a la hora de pro- gramar un microcontrolador, es el selacionado con la manipulacién de los datos provenientes del mundo exterior. Suponga, por un momen- to, que usted decide construir un sistema que mida la temperatura de una habitacién y que active una alarma sonora cuando la tempera- cura sobrepase los 26°C. © cic {Cémo hace el microcontrolador para cono- cer y manipular los datos que corresponden a la temperatura del medio ambiente? Recuerde: to- dos los datos mangjados por un microcontrola- dor son de tipo digital. Esto significa que k formacién se representa internamente mediante niveles de voltaje discretos. Por ejemplo, un vel de voltaje de 0 voltios se representa con el nimero cero (0), mientras que un nivel de volta je de +5 voltios se representa con el nimero uno (1), figura 2.1. i 0 volves, nimero 0 fav —1 +5,volos,nimero 1 ‘Figura 2.1. Reoresentacién de un gto nario {Cémo se puede representar una tempera- tura de 20°C, utilizando para ello unos y ceros? Una solucién a este problema se basa en el uso del sistema binatio (base dos) EI sistema binario se caracteriza por em- plear tinicamente los digitos 0 y 1. Para empe- varaentrar en materia, vamos a mostrarle cémo se pueden representar las temperaturas 0°C y 1°C en este sistema. Para el ejemplo plantea- do, la representacién es directa: basta con uti- lizar un simple digito binario (también deno- minado bit). ‘Temperatura Neimero binario orc o re 1 Pasemos ahora a representar con niime- ros binarios las temperaturas 0°C, 1°C, 2°C y 3°C, Si s6lo disponemos de dos valores en el sistema binario, 0 y 1, zedmo es posible representar cuatro temperaturas diferentes? La solucién se obtiene agregando a la izquierda del ntimero binario, un segundo digito (bi) con el cual se puedan crear combinaciones que no se repitan, Curso préctico sobre Microcontroladores Temperatura. Nimero binario orc 0 (| 1c 0 zz fo} 3°C iL] El digito (6) situado mas a la derecha del nie ‘mero binario, toma los valores Oy 1 para las eempe- raturas 0°C y 1°C (exactamente igual que antes). Sin embargo, observe que esta situacién se repite para ls temperaturas correspondientesa2°Cy 3°C. Laclave para diferenciar los dos rangos de tem- perarura (0°C-1SCy 2°C -3°C) esta en el bit mis a la inquierda del ntimero binario. Este bit coma el valor 0 para las dos primeras temperaturas (0°C y 1°C), yadquiereel valor 1 para las dos temperatt ras restantes (2°C y 3°C). De este modo, aunque bit de la derecha se repita en los rangos mostra- dos, la combinacién de los dos bits permite repre- sentar las cuatro temperaturas de manera tinica. ‘Temperatura Niimero binario 0 0 he 1 ze 0 3c 1 Representemos ahora las remperaturas 0°C, 1°C, 2°C, 3°C, 4°C, °C, Cy 7°C, Cémo podré adivi- nar el lector, es necesario agregar un nucvo bit en el ‘extremo izquierdo del ntimero binario, de modo que se creen combinaciones inicas. Observe el resultado: Temperatura orc eC 2G aC 4°C °C 6C TC rogramacion Las combinaciones de digitos binarios son inicas; esto garantiza que cada temperatura se representa, también, de manera tinica, Podria- mos continuar haciendo crecer la tabla mostra- da, pero es evidente que se debe encontrar un método que permita representar cualquier tem- peratura, sin importar cual sea su valor, Para empezar, observe el digito (bi) del ex- tremo izquierdo de los ntimeros binarios de la tabla anterior. Este digito vale 0 para las prime- ras cuatro temperaturas, mientras que vale 1 para las dltimas cuatro. Gracias a la presencia de este tercer bit, se puede disponer de ocho temperatu- ras diferentes. ‘Como regla general, cada bir que se agrega a Ia izquierda de un mimero binario, permite du- plicar la cantidad de elementos que se podian diferenciar antes de agregarlo. El esquema de la figura 2.2 ilustra el peso 0 valor relativo que tiene el tercer digito (de dere- cha a izquierda) en cualquier némero binario. Nimerstinaios ime anos EI tercer bit do fa I2- ie dos diitos etre digtos———_ulerda agrogael valor 4 lurmero de deecha Figura 2.2. El peso ds un bit de acuerdo con su pescin El efecto de colocar el valor 1 al tercer digito ¢s similar a sumar 4 al niimero binario de la dere- cha, En este sentido, el peso del tercer digito es 4 Al hablar de un bis, es conveniente conocer in dentro del ntimero bin: SISICIESCGIMICET CT) que los digitos binarios se numeren de dere- cha a izquierda, en orden creciente, empezan- do con el valor 0, Parailustrarlos conceptos vis- tos hasta ahora, presentamos la estructura que tiene un niimero binario de 8 bits, con los pesos asociados a cada digito binario, figura 2.3. Pesodelbit 128 64 32.16 8 4 2.1 Poscindeltit 7 6 5 43921 0 “El peso de cada bites el doble que el peso del bitsituado a su derecha” Figura 23. Pesos asociados a cada bit Los pesos permiten establecer el valor deci- mal de un ntimero binario. Observe el nimero binario 101 1, correspondiente a una temperatu- rade 11°C, Si queremos encontrar el valor deci- mal a partir de esta representaci6n binaria, basta simplemente con sumar el peso de los digitos cuyo valor es 1 de la suma de los pesos de los dfgitos binarios cuyo valor es 1. El digito situado més a la iz- quierda tiene el peso més alto, mientras que el digito situado més a la derecha es el digito que ticne el menor peso. El digito con mayor peso se denomina MSB (Most Significant Bit), mientras que el digito con el menor peso se denomina LSB (Least Significant Bit). Digit con mayer peso Digto con menor peso nse) s8) BEESEen? Figura 24 Los dgitos MSB y (SB Los primeros 16 ntimeros binarios son de gran importancia en el dominio de la clectrénica digital, de los microcontroladores, de los micro- procesidores y de las computadoras. Estos nui- ‘meros forman la base del sistema hexadecimal, el cual consiste de 16 simbolos diferentes. En la tabla de la figura 2.5 se muestran los nimeros del 0 al 15 en su representacién bina- Namero binario Leaner 1 Pesos eee 4 2 1 (8x1) + (4x0) + (2x1) + (Ix) = ier Ou 2° 49 Numero decimal ria, decimal y hexadecimal. Ademés, se indica cémo derivar los valores decima- les a partir de los pesos asociados a los bits cuyo valor es 1. = 11| Enel sisterna hexadecimal, los ilti- “Unicamente importan los pesos de los bits del ntimero binario, cuyo valor es 1” Facil, verdad? ;Podria el lector indicar qué temperatura se representa con el ntimero bina- rio 11001101? Observe abajo la solucién: Hemos resaltado en negrilla los pesos de los bits cuyo valor es 1. El niimero decimal resulta ‘mos seis njimeros se representan con las letras A, B, C, D, Ey F, tomadas todas ellas del alfabeto. La conversién de un niimero binario al sistema hexadecimal no cambia el valor del mii- mero representado, Sin embargo, ¢s una norma cen electrdnica utilizar ntimeros hexadecimales en lugar de niimeros binarios zpor qué? Observe la siguiente simplificacién: dado el ntimero binario 1100110110110011, encuentre el nimero hexa- decimal equivalente. ‘Néimero binario 1 1 Peso de los digitos binarios. 128 64 Numero decimal (128x1)+(G4x1) +(32x0)+(16x0)+(8x1)+(4x1)+(2x0)+(Lo1) 128 + 64 + Qld eos SURG Gas aa? 21 0+ OF 8+ 44 0+ 1 =250 EICIT.: 100180 sr Meremrtates Programacion 2 ogee oe eee ec oS} mmooe@roerannreonnso 64a 0 0+0+0+0 1 O+0+041 2 0+0+2+0 3 O+042+1 4 0+440+0 5 0444041 6 0444240 ie 0444241 8 8+0+040 9 8+0+041 10 8+0+240 1" 8+04+2+1 2 8+4+0+0 B 8+44+041 4 8444240 15 Bede 241 El primer paso que se debe dar para resolver el problema propuesto consiste en dividir el ni- mero binario en grupos de 4 bits: se empieza agrupando los 4 bits a la derecha del niimero bi- nario, se agrupan luego los 4 bits ubicados in- mediatamente a la izquierda, y el proceso conti- niia hasta que se agotan todos los digitos del ni- mero binario original. Si el tiltimo grupo creado no contiene exactamente 4 bits, se recurre a com- pletarlo agregando cetos (no significativos) a su izquierda. Apliquemos este procedimiento al ndmero binario 1100110110110011 | didoridiiotrooi1 elas Niimero binari¢ original Grupos de 4 bits conmattennnrnns gpere: &a> Figura 25 Equivalente binario, hexadecimal y decimal El segundo paso en la solucién del problema consiste en buscar en la tabla de ntimeros hexa- decimales el grupo binario a ser reemplazado, escribiendo en su lugar el niimero hexadecimal correspondiente, figura 2.6 . fee ‘Niimero binario original] ue un vw a Grupos de 4 bits C DB 3 Neimeroshexadecimales equivalences Figura 26 Goneracién de un mimero hexadecimal ‘Una consecuencia positiva dela representacién hexadecimal estriba en que es mucho més ficil re- cordar el mimero CDB3 en base 16, quest equiva- Sistemas de nur ion lente binario 1100110110110011, Otra ventaja que se deriva del uso de los nimeros hexadecimalest ne que ver con la disminucién del espacio emplea- do para su representacién en documentos escritos. En los préximos apartados vamos a estable- cer algunas definiciones que serin tiles més ade- lante Bit Un dit es la unidad minima de informacién en un sistema binario, y puede tomar sélo uno de estos valores: 1.6 0. Nibble Un nibble es un grupo de 4 bits. El nibble es iil para representar conjuntos de digitos decimales, como se verd a continuacién. BCD Un digito decimal: 0, 1, 2, 3, 4, 5, 6,7, 8.0 9 se puede representar mediante 4 digitos binarios (un nibble) La siguiente tabla muestra los digitos deci- ‘males y su equivalente binario, al cual se lo conoce con el nombre BCD (Binary Caded Decima), Digito decimal Digito BCD 0000 0001 0010 0011 0100 0101 0110 oll 1000 1001 CauAUaunnc Algunos sistemas permiten la representacién de los ntimeros decimales en formato BCD. Cuando se utiliza esta forma de representacién, se reemplaza cada digito decimal por su equiva- lente en BCD, uno después de otro. El resultado que arroja este proceso difiere del que se obten- dria aplicando la numeracién binaria basada en pesos. Para ilustrar lo anterior, consideremos el niimero 32; su representacién en binario es: 00100000. En la figura 2.7 puede apreciar su representacién en BCD. 2 {0010070 Fgura 27, presen en BO ce rime $2 Byte Un byte es un grupo de 8 bits. En un byte, el bie de mayor peso, usualmente el de la izquierda, se denomina bit MSB; el bie de menor peso, usual- mente el de la derecha, se denomina dit LSB. El byte es una de las estructuras de datos més util zadas en todos los sistemas de computacién. Word Una palabra (word) es un conjunto de 16 bis, y cequivale a la unién de 2 byres. Ocasionalmente, esnecesario agrupar un conjunto de 32 bits como si se tratara de una sola entidad. Esta nueva es- tructura (4 bytes) se conoce con el nombre de palabra doble (double) La figura 2.8 presenta un resumen de los ele- ‘mentos vistos. 8 coe Bit Nibble byte Jniniaianinininininind Word Figura 28 Representaciones binaias poss aio Rango de los numeros binarios Si utilizamos tinicamente 2 digitos binarios, po- dremos diferenciar entre 4 entidades distintas: 00, 01, 10 y 11. ;Cudntos elementos podremos diferenciar con 16 bits? La respuesta a esta pre- gunta no se obtiene generando todas las posibles combinaciones y luego contandolas, ya que esto llevarfa demasiado tiempo. En su lugar se em- plea la siguiente formula: & AGCIN: 0020 picts str eocontolaoes Nimero de combinaciones = en donde n es el ntimero de digitos binarios. Aplicando la férmula al problema planteado se obtiene: Nimero de combinaciones = 2" = 65536 Operaciones basicas Los microcontroladores permiten el uso extensi- vo de las operaciones matematicas bisicas: es posible sumar restar ntimeros binarios, realizar operaciones de tipo légico y desplazar el conte- nido binario de un registro o posicién de memo- ria. A continuacién, vamos a ilustrar las opera- ciones de suma y resta binaria. La suma de digitos binarios La suma de niimeros binarios es similar ala suma de mimeros decimales. Basta con recordar que en el caso del sistema binario, sélo se utilizan dos digitos: el cero y el uno. La figura 2.9 permite entender el mecanismo empleado cuando se su- man niimeros binarios. 0 0 1 1 Or i 0 eT 0 1 1 10 Figura 29 La sum binaria La primera suma es evidente: al sumar dos ceros se obtiene un cero. La segunda suma, al igual que la tercera, tampoco presenta ninguna dificul- tad: al sumar el ntimero uno con el nximero cero se obtiene como resultado el ntimero uno. El caso més interesante corresponde a la cuarta columna: si suma el mimero uno con el niimero uno, obtiene como respuesta el niime- 0 dos, Recuerde: el niimero dos se representa en el sistema binario con la combinacién 10. ‘Sumar dos digitos con valor uno en el sis- tema binario produce como resultado el valor aso pets stre mioconvotcoes CQGRCET: cero. El uno que sobra se acumula y pasa a la siguiente columna. La operacién binaria: 1 + 1 + 1, se puede resolver recurriendo a sumas sucesivas. Obser- ve la figura 2.10. En el paso (a) se suman los dos primeros unos. La respuesta es cero y “Ile- vo" uno. En el paso (b) se toma el valor calcula- do en el paso anterior (10) y se agrega al tercer uno que tenfamos pendiente por sumar, La res- puesta final es 11. (@) o Figura 2.10 Suma de res optosbinaros cuyo valores 1 Suma de numeros binarios La suma de niimeros binarios es similar a la suma de mimeros decimales: se empieza con los digitos situados a la derecha del ntimero binatio, sumén- dolos entre s, y calculando, ranto el resultado de a suma como el valor del acarreo (carry) que se transfiere ala siguiente columna. El proceso se repite para cada nueva co- lumna a la izquierda, pero tomando en cuenta el bit de acarreo que viene de la columna més ala derecha El proceso descrito en el pirrafo anterior pue- de resultar dificil para quien no tenga experien- cia previa con los sistemas binarios. Por esta ra- 26n, sugerimos que las sumas binarias que ten- gan algtin grado de complejidad (mimeros con muchos digitos binarios) se resuelvan convirtien- do primero los ntimeros al sistema decimal, rea- lizando a continuacién la suma y por tiltimo, pa- sando la respuesta a su equivalente binario (un método més simple consiste en utilizar una cal- culadora que tenga incluida la posibilidad de su- ‘mar ntimeros binarios). Sisteitas de nuMmerdcion Numeros binarios negativos En apartados anteriores hemos visto como represen- tar niimeros decimales en notacién binaria. Pero podriamos preguntar: zy si el mimero decimal es ne- gativo? La respuesta a esta cuestién es clave para las ‘operaciones de resta binaria. En primer lugar, antes de entrar en materia, vamos a recordar como se re- presenta (utilizando ocho bits) el ntimero decimal 3: Decimal Binario es 00000011 {Cémo se representa, en binario, el ntimero decimal -3 ?. Para empezar, si usted suma el valor 3 al ni- mero -3, debe obtener como respuesta el ntime- ro 0. Entonces, zqué valor debe sumarse al nii- mero binario 00000011 (3 decimal) para obte- ner el ntimero 00000000 (0 decimal)? Observe la respuesta en la figura 2.11. cuyo valor es cero se cambian por uno. A esto seo llama complemento a uno. Por tiltimo, se suma el bit 1 al rimero obteni- doen el paso anterior. El resultado es el ntime- ro negativo buscado. Ejemplo: Representar en binario el mimero -25. Aplicacién del algoritmo 1. Convertir el ntimero 25 a binario. 128 64 32.16 ooo1 8421 1001 2. Complementar los digitos binatios Neimero 25 Complemento a uno 00011001 11100110 3. Sumar al miimero en complemento a uno con el valor 1. Decimal Binario Complemento a uno 11100110 3 00000011 Suma con bit I 00000001 es) + 11111101e— Neimero (-25) 11100111 [Respuesta 0 100000000 | Figura 2.11 Nimerobinaro negativo Supongamos, por un momento, que el bitde acarreo no importa y puede desecharse. Si este fue- ra el caso, podrfamos asumir que el valor 11111101 equivale al niimero —3, ya que al su- ‘marlo al ntimero 3 produce el valor 0. {Cémo puede representarse, en general, un nimero decimal negativo usando el sistema bina- rio? La respuesta est contenida en cl algoritmo denominado complemento a das lo cual se logra- de la siguiente manera: 1. Se convierte el niimero decimal a su repre- sentacién en binario. 2. Seinvierten los digitos binarios: aquellos cuyo valor es uno se cambia por cero, y aquellos Resta de nimeros binarios Del apartado anterior debe resultar evidente que el proceso para realizar restas binarias con- siste simplemente en encontrar el niimero ne- gativo del valor a restar, sumandolo a conti- nuacién al ntimero positive. Esto es equiva- lente (en decimal) a una operacién del tipo: 48 -32 = 48 + (-32). De nuevo, al igual que en la suma binaria, ‘es més cémodo realizar primero la conversin de los niimeros binarios a su equivalente decimal antes de proceder a realizar la resta. El resultado ‘obtenido se convierte al equivalence binario ne- gativo, obteniéndose la respuesta deseada. En capftulos posteriores tendremos la ocasién de aplicar este método. & GAT: 0120 pctce ste wiroconrondres =e 0) Editor de texto | PROGRAMACION DE MICROCONTROLADORES Uno de los aspectos més importantes en el disefio y en la ejecucién de pro- yectos y aparatos con microcontrola- dores, és la planeacién y escritura ade- cuadas de sus programas, los cuales varian segtin la marca y el modelo del dispositivo utilizado, jos circuitos ex- ternos a él conectados y la funcién a realizar. A partir de esta leccién ire- mos explicando, paso a paso, la me- todologia y las técnicas apropiadas pee neericd ivrouramacion de microcontroladores La solucién de un problema de control clec- trénico, basado en microcontroladores, incluye dos etapas fundamentales: eseribir el programa en lenguaje ensamblador y generar el archivo binario ejecutable que debe grabarse en la memoria del microcontrolador. Para empezar, estudiaremos cl proceso de ensamblado de cddigo. El ensamblador est conformado por varios ‘médulos independientes, cada uno de los cuales cumple una fancién especifica. Los médulos mis importantes son los siguientes: Ensamblador basico. Genera, a partir del cé- digo fuente, un archivo binario relocalizable. Este archivo puede ser almacenado en cualquier segmento disponible en la memoria del micro- controlador. Enlazador (linker). Crea, a partir del archivo bi- nario relocalizable, un archivo binario ejecuta- ble. Este cédigo es el que ejecuta directamente el microcontrolador. Control de librerfas (Jib). Este médulo permite crear archivos binarios que pueden ser unidos (enlazados) con otros bloques de eédigo binario, lo que facilita la reutilizacién de partes de pro- ‘gramas generados en otros proyectos. El uso de librerias simplifica el desarrollo de programas de gran tamafio y complejidad. La figura 3.1 muestra la estructura del en- samblador, asi como el flujo de informacién en- tre sus médulos. Teer ti Cbaigo i seis Ensamblador Figura 3.1 Estructura del ensamblador En lo sucesivo emplearemos el término en- samblador para referimnos al conjunto completo de programas que genera un archivo binario a par- tir del cédigo fuente de un programa de usuatio, Un programa de usuario es un programa escrito usando el lenguaje ensamblador. Su objetivo es la solucién de un problema de control electrénico. Un programa ensamblador es aquel que reci- be el eddigo fuente de un programa de usuario y genera un archivo binario ejecutable. Este édigo se almacena en la memoria de progra- ma, y es ejecutado por la unidad central de proceso cada ver. que el microcontrolador se pone en marcha. Control o sistema embebido Un proyecto de control o sistema embebido (embedded system) wsiliza un microcontrolador para gestionar de manera auténoma los procesos de ad- uiscién de datos yl activacién de las lineas de sali- da conectadasa periféticos externos. Debidoa que el precio de un microcontrolador es insignificant com- parado con el de una computadora personal (PC) y, ademds, su tamafio es bastante reducido, seentiende que se lo prefiera en el control de procesos electrSni- cosy en el disefio de aparatos electrénicos modernos dotados con cierta “inteligencia” El desarrollo de un proyecto embebido esta sujeto aun ciclo de vida particular, segiin se apre- cia en la figura 3.2. Figura 3.2 Ciclo de vid de un proyecto embebido ® CIT: xc y00 wr Mecrcoitors Este ciclo de vida se atiene a principios séli- dos utilizados durante décadas por los ingenie- ros especializados en el desarrollo de programas de tipo general. Un esquema mas simple, y tal vvez. mas cercano a la realidad de quien programa un microcontrolador, se muestra en la figura 3.3, en donde se indica de manera concreta cuales son los pasos que debe seguir un programador para obtener el programa o cédigo final. a-ha erties Archivos generados por el programa ensamblador Ademés del eédigo binario, el ensamblador ge- nera un conjunto de archivos adicionales, gra- cias a los cuales es posible controlar la evolu- cidn del proyecto. La extensién que acompafia a cada nombre de archivo, y que consiste en tres letras después de un punto (.), indica cual es el tipo de informacién que contiene el ar- chivo. Un ejemplo tomado de un ensambla- dor tipico es el siguiente: —-a Tipo de archivo ‘Extensin | Ejemplo ‘Cédigo fuente del programa | ASM | primero.asm| Cédigo binario ejecutable | HEX | primero.hex| Figura 3.3 Etapas en el desarrollo de una aplicacién para istado del programa LsT primero.tst riroconroasos 1 sua de errores ERR | primero.err En la figura 3.4 se plantea el método de tra- | Cédigo objeto ejecutable | OBJ , | primero.obj Archivo de libreria LIB rutinas.tib bajo que recoge las ideas presentadas previamente y que son la clave para desarrollar un programa con éxiro. Aunque el proceso es de naturaleza se- cuencial, es comiin que se elabore uno en espiral en el que, cada cierto tiempo, se_practique una revisién minuciosa de los objetivos alcanzados hasta el momento. Esto implica una revisién per- manente del trabajo desarrollado. ee MB eotse HE oyna: TRE cererns et astera Figura 3.4 Método de trabajo para e desarrlo de programas basados en microcontolador Unarchivo con extensién ASM (6 asm, dado que aqui no importan las maytisculas o minis- culas) contiene el cédigo fuente del programa. El nombre del archivo (la palabra primero, en el ejemplo mostrado) esté separado de su extensién mediante un punto, y debe cumplir con las res- tricciones impuestas por el sistema operativo. El método mas simple para crear un nombre co- recto consiste en empezar con una letra (y en algunos casos con un caricter de subrayado (_)), agregindole a continuacién una combinacién ar- bicraria de letras, ntimeros y caracteres de subra- yado. Algunos sistemas operativos restringen la longitud del nombre a un maximo de ocho a- racteres, Ejemplos validos de nombres de archi- vos fuente son los siguientes: primeroasm _control.asm alarma_1.asm tempX20.asm Un archivo con extensién HEX u OBJ con- tiene el cédigo binario ejecutable, y se deriva au- tomaticamente de un archivo con extensién ASM. PL0G EHEC OIC GRMCTOCOT CE CEE) El proceso de ensamblado puede generar tam- bién, de manera automatica, dos archivos de gran importancia prictica. El primero deellos (con exten sién LST) es un listado que contiene el texto del programa fuente debidamente formateado, lo que permite documentar con claridad el desarollo del mismo. Este listado incluye la numeracién de pégi- nas, la fecha y la hora en que se hizo el proceso de ensimblado, la tabla de simbolos dl programa fuen- te, ladistribucién delosdatosen la memoria, as‘como los errores y advertencias que se derivan directamente del oSigo fuente. Las instrucciones se organizan en ‘olumnas de acuerdo con tna tabulacion estindar El segundo tipo de archivo (con extensién ERR) le sirve al programador para estudiar los errores cometidos (cuando éstos se producen), facilitando el proceso de correccién y depuracién del cédigo fuente. Los tipos de archivo descritos anteriormente pueden diferir de acuerdo con el microcontro- lador utilizado. Términos usuales Es importante establecer el significado de algu- nos términos que serén muy utilizados en las préximas lecciones: Registro. Es un depésito de ntimeros binarios que permite guardar datos en forma temporal. El nom- bre del registro sirve para identificarlo plenamente y establece el tipo de informacién que almacena. Por ejemplo, el registro W (disponible en los mi- ccrocontroladores de la familia PIC) se utiliza en la mayoria de operaciones que manipulan datos. Su nombre viene de la palabra inglesa work (trabajo). Literal. Se refiere a un valor constante, usualmen- te un niimero escrito en formato hexadecimal. Ejemplos de literales: 3, 12, 3E. Estructura de un programa escrito en lenguaje ensamblador ‘Todos los microcontroladores disponen, como mi- nnimo, de un ensambladot. Ahora bien, debido a su naturaleza particular, cada ensamblador tiene sus pro- pias reglas que deben ser respetadas. Aforrunadamen- tc, existen ciertas normas de tipo general, comunes a Ja mayoria de los ensambladores, que es necesario ‘conocer para reducirel tiempo invertido en el proce- so de escribir un programa de usuario, A continua cién, comentamos algunas de estas caracteristicas. Un programa escrito usando instrucciones del lenguaje ensamblador debe organizarse segiin un disefio basado en columnas. En la figura 3.5 se muestra la estructura de un programa escrito en ensamblador. ‘Figura 3.5 Divisién en coumnas de un programa fuente escrito. en ensambiador Cada una de las columnas cumple una fun- cidn espectfica, segiin se indica a continuacién. Friqueta Una etiqueta es un nombre con el cual se identi- fica una posicién de memoria del microcontro- lador, y sirve para marcar puntos especificos den- tro del programa. Toda etiqueta debe empezar a escribirse en la primera columna de la linea y su longitud no puede sobrepasar (usualmente) los 31 caracteres; puede incluir, ademis, caracteres alfanuméricos, el earderer de subrayado (_) y el simbolo de interrogacién () Insteuceién Una instruccién hace referencia a una de las ope- raciones bésicas que puede ejecutar un micro- controlador. Un ejemplo de una instruccién ti pica es MOVLW, utilizada para cargar el regis- tro W con un valor literal, El rérmino eargar se interpreta en este contexto como almacenar en, por lo que la instruccién MOVLW puede leerse as(:“almacenar un valor literal en el registro W”. Operando Un operando es un elemento utilizado por una inscruccién. Algunas instrucciones, debido a su simplicidad, no utilizan operando. Otras, un poco mis complejas, requieren el uso de un slo operando, Por tiltimo, existen instrucciones que requieren el uso de dos operandos para cumy cabalmente su funcién. El primer operando, cuando esti definido, se denomina operando fuente, El segundo operando, complemento del anterior, recibe el nombre de operando destino. La informacién fluye desde el operando fuente hacia el operando destino. Comentari Un comentario es un bloque de texto que le sir- ve al programador para documentar sus progra- ‘mas. Los comentarios son ignorados por el en- samblador, y se reconocen porque empiezan con l cardeter punto y coma (). Tipos de linea que se pueden incl un programa Los programas en ensamblador se deben escribir segtin un esquema que permita estructurar de manera sélida al trabajo desarrollado. En la figu- 2.3.6 se muestra la arquitectura general de un programa para microcontrolador. en oa eo ee fed Final del programa Figura 3.6 Arqitactora general de un programa en ensamblador ‘A continuacién presentamos el significado de cada uno de los bloques mencionados. Encabezado Esel primer componente del programa, y en él se definen algunas directrices de tipo general, cono- cidas como directivas, que modifican el funcio- curso ricco ste mroconrtsos AACN: & namiento del ensamblador. Para ilustrar lo ante- rior, considere la familia de microcontroladores PIC, la cual utiliza el ensamblador MPASM, En este ensamblador a directiva list indica la versién del microcontrolador utilizado, lo que establece el tipo de programa binario generado. Esta directiva «8 obligatoria, ya que cada microcontrolador ge- nera su propio c6digo binatio y el ensamblador debe adaptarse al modelo utilizado, Para ilustrar lo expuesto en el pérrafo an- terior, supongamos que usted utiliza en un pro- yecto el microcontrolador 16C84. La directi- va que debe incluir al comienzo del programa s la siguiente: List p=16C84 ; microcontrolador 16¢84 Constances En esta seccién se incluyen las definiciones de constantes que son reconocidas en los demés puntos del programa, El uso de constantes sim- plifica la lectura de un programa, ya que, en lugar de referirse a un valor hexadecimal en par- ticular, se puede utilizar el nombre de la cons- ante asociada. La mayorfa de los ensamblado- res utilizan la palabra equ para definir una cons- tante. Por ejemplo, la linea puertoA equ 05, le indica al ensamblador que se puede utilizar la palabra puertoA en lugar del niimero 05. Definicién del origen del programa AA programar un microcontrolador es necesario indicar explicitamente en que sitio de la memo- ria se debe almacenar el cédigo binario del pro- grama que esté a punto de ser ensamblado. Esto se consigue con la palabra org (origen). Por ejem- plo, la siguiente linea org e indica al ensamblador que debe almacenarse, a partir de la linea 0 en la memoria de programa, rodramacion de microcontroladores el cédigo binario generado. Existen algunas va- riaciones que indicaremos oportunamente cuan- do sea necesario, Instrucciones del programa Esta seccién se utiliza para almacenar las instruc- ciones del programa. Una instruccién tipica in- cluye los siguientes campos: cédigo de inseruccién. loperando(s) | ; comentario etiquera A excepcidn del campo eédigo de instruccién, Jos restantes campos pueden aparecer (0 no apa- recer) dentro de una linea de programa Final del programa Esta seccién contiene una instruccién simple que marca el final del programa. El ensamblador MPASM (de la familia de microcontroladores PIC) utiliza la siguiente inseruccién para conse- guir este propésito: end El entorno de programacién El objetivo de cualquier programa de usuario es, en principio, muy simple: leer datos de perifér cos externos, calcular, y activar Iineas de salida que produzcan cambios en el ambiente externo, ‘Las siguientes afirmaciones permiten entender la estructura del entorno de programacién del mi- crocontrolador: 1 El microcontrolador accede al contenido 0 alas sefiales de los componentes externos, a través del uso de puertos de entrada. 2. El microcontrolador modifica el contenido ‘ envia sefiales a los componentes externos, mediante el uso de puertos de salida 3 Los datos leidos en un puerto de entrada son almacenados, en primer lugar, en un registro interno del microcontrolador. 4 Cuando un microcontrolador lee muchos datos provenientes de componentes exter- [nos (mediante cl uso de puertos de ent] da), debe almacenar esta informacién en la memoria de datos; esto permite que los datos estén disponibles para ser utilizados mis adelante. 5. El microcontrolador posee una unidad arit- mética y Idgica que se encarga de realizar operaciones sobre los datos, De acuerdo con los resultados obtenidos, el microcontrola- dor toma decisiones sobre la activacién de {ineas en los puertos de salida. 16 Un sistema embebido (basado en microcon- trolador), cumple con el objetivo de con- trol para el cual ha sido disefiado gracias a la existencia de un conjunto de instruccio- nes (programa) que indica de manera pre- cisa lo que debe hacerse en cada instante del tiempo. 7 Un programa (conjunto de instrucciones) se almacena en la memoria de programa del microcontrolador. 8 Un microcontrolador puede recibir sefiales del exterior (en instantes del tiempo que no ¢s posible predecir), ante las cuales debe re- accionar sin pérdida de tiempo. Esto impli- acl abandono temporal de aquello que se «sti cjecutando, para dar cumplimiento a una funcin que atienda la interrupcién. A los procesos implicados en este tema se los co- noce con el nombre de procesos para el ma- ncjo de interrupciones, La figura 3.7 presenta un modelo simplifi- ‘cado del entorno en el que se desenvuelve la cje- cucién de un programa de microcontrolador. El contador de programa E] microcontrolador utiliza un registro especial, cdenominado contador de programa, para saber cudl esa siguiente instruccién que debe ejecutat: El pro- eso es simple: al comienzo de la eecucién, el con- ‘ador de programa apuntaa la primera instruccién del programa; cada vez que jecuta una instruccién, el contador de programa incrementa su valor, de modo que la instruccién que se ejecuta a préxima vex esla siguiente en la memoria de programa. Sl La ejecucién de las instrucciones, y el cam- bio en el contador de programa, es un proceso automitico y transparente para el programador, Jo que significa que se produce bajo el control interno del microcontrolador. Algunas veces el contador de programa ‘cambia su contenido por un valor que no co- rresponde a la siguiente posicién de memoria. Esto se veré en el siguiente apartado. La figura 3.8 muestra el flujo probable en la ejecucién de un programa. Conjunto (sef de instrucciones Antes de iniciar el estudio de las técnicas de pro- gramacién, y su aplicacién a problemas concre- tos en el campo de los microcontroladores, es importante comprender la nacuraleza de las ins- trucciones disponibles y la forma como se orga- nizan jerérquicamente, segain las funciones para las que han sido disentadas. * Cada instruceién permite actuar sobre un de- terminado elemento del entorno de programa- cién: algunas de ellas permiten leer informa- cién proveniente de periféricos externos (me- diante puertos de entrada), mientras que otras Figura 3.76 entorn de programacién fundamental alteran componentes conectados a los puertos de salida, lo que en cierto sentido implica un proceso de escribir informacién. Este proceso se ilustra en la figura 3.9. * Un conjunto especializado de instrucciones per- mite acceder a informacién almacenada en la memoria, realizando a continuacién sobre elas ‘operaciones aritméticas o légicas. Los resulta- dos intermedios pueden ser devueltos nuevamen- teala memoria, oalmacenados en registros tem- porales, para ser utilizados posteriormente. La figura 3.10 muestra este tipo de instruc Figura 3.8 Fivjo probable en a ejecuctn de un programa eprint Air: Gp Instuceén de esrtra Figura 2.9 nstrucciones de etrada/salida, Dato tometo Tat Jpostenormeme Figura 3.10 instrcciones de transterencia@ memoria y caleuios antmétcos y liicos. + En ocasiones es conveniente manipular direc- tamente los bits individuales de los datos alma- cenados en la memoria o disponibles en un re~ gistro interno. El microcontrolador dispone de instrucciones que aislan cada bir de manera in- dividual. De este modo se puede tomar una decisién segain el valor del bito alterar su con- tenido cambiéndolo por un valor diferente. La figura 3.11 muestra algunas posbilidades brin- dadas por estas instrueciones. iseeccerado ‘ecién Tomar na deci : et vadorael ot Aclon2: Cambiar var del bt ona ‘Figura 3.11 Instucciones de manipulcién de bits + Los programas no siempre se ejecutan de ma- nera lineal; algunas veces es necesario alterar el contenido del contador de programa, lo que deriva en una ejecucién no secuencial de las instrucciones. Esta caracteristica con- fiere una mayor flexibilidad a los programas. Las inscrucciones de salto se dividen en dos categorias. La primera de ellas corresponde a las instrucciones de salto condicional, en las cuales el salto se produce si, y sélo si se cum- ple una determinada condicién. La segunda categorfa corresponde a las instruc- ciones de salto incondicional. Como su nombre lo indica, no se requiere que se cumpla ninguna condicién previa para generar el salto, La figura 3.12 mucstra los dos tipos de salto indicados. Memoria de programa Memaria de programa Sato condicional Soo incondicional camino sequde cepende El cammno sep sempre eure caraeion tselmisno Figura 3.12 Salto condicional eincondcional * En ocasiones, algunos procesos del microcon- trolador no se pueden encasillar en ninguno de los grupos mencionados. Las instrucciones im- plicadas en la ejecucién de estos procesos se co- nocen con el nombre de instrueciones de con- trol, y su presencia ayuda a mejorar de manera significativacl funcionamiento de los programas. ‘A titulo de ejemplo, podemos citar las instruc- ciones que habilitan (o inhiben) la interrupcio- nes externas. En su momento se mostrard un panorama completo de elas. Instrucciones de desplazamiento de bits En ocasiones es conveniente desplazar los biis de un registro (0 posicién de memoria) para ejecutar tuna operacién matemética sencilla, 0 simplemente para crear un efecto que pueda reflejarse en el me- dio de salida, como es el caso de un display 0 des- pliegue luminoso o un conjunto de diodos LED. Para iniciar el tema, vamos a plantear el si guiente problema: se debe multiplicar el conte- nido del registro W con el literal 2, reemplazan- do el contenido previo del registro con cl valor obtenido en la multiplicacién. wee > W En el esquema mostrado en la figura 3.13, el registro W contiene el valor 24. La respuesta (48) reemplaza el contenido previo del registro W. 4) 8) 00011 000|x2

Oy SB Continia en la instruccion 30> - ETSI Figura 4.16 Retoro del segundo sutprograma Lacjecucién de a instruccién RET del primer subprograma causa un retorno al programa princi pal. Observe el contenido de la pila, Figura 4.17. roy Sub A Continéa en la» instruceién 82 Figura 4.17 Retro de primer subprograma Los procesos relacionados con el manejo de la pila son transparentes al programador, es de cis, ocurren de manera automitica en el interior del microcontrolador. Puertos Recordemos que un puerto es un elemento a tra- vés del cual se introduce o se extrac informacién cde un microcontrolador. El PIC 16F84 posee dos puertos denominados A y B. El puerto A El puerto A consta de 5 lineas que pueden utili- zarse como entradas o como salidas, dependiendo de las necesidades de la aplicacién, figura 4.18. La linea RA4 puede servir como entrada para los pul- sos de reloj aplicados al temporizador interno TMRO. El programador puede acceder al conte- niido del puerto leyendo (0 escribiendo) el conte- nido del registro 05H del banco 0 de memor El puerto B El puerto B esté conformado por 8 lineas que pue- den configurarse como entrada 0 como salida se- Jos requerimientos dela aplicacién, figura 4.19. ‘Mundo exterior Puerto A Figura 4.18 puerto Aligual que el puerto A, el puerto B esté disponible al programador en cl registro 0GH del banco 0 de ‘memoria, La linea RBO puede utilizarse para detec tar interrupciones externas. : i tt i Mundo exterior Figura 4.19 &\ puto 8 Configuracion de los puertos Ay B Cada bit de un puerto puede ser configurado, de mancra individual, como entrada 0 como salida, dependiendo de las necesidades particu- lares del proyecto. Un mecanismo simple para configurar los bits de los puertos A y B, ya sca como entrada 0 como salida, consiste en emplear los registros TRISA y TRISB del banco 1 de la memoria de registros cn RAM. La figura 4.20 mucstra la relacién entre los puertos A y B y los cortes- pondientes registros de programacién. Al es- tudiar el set de instrucciones se verin en detalle. PUERTO A PUERTO B Tris B Figura 420 Regisros TISA y TRISB RICE: caro riteo sre weroconro.tores LECCION 5 HERRAMIENTAS DE SOFTWARE PARA EL DESARROLLO DE APLICACIONES BASADAS EN MIGROCONTROLADORES PIG La elaboraci6n de un circuito de control embebido requiere el uso de diversas herramientas de hardware y de sofiwvare. Estos elementos estén conformados por tarjetas electrdnicas y programas de soporte, y son dis- tribuidos por un gran mimero de compafias a lo largo de todo el mundo. Algunas obsequian a los usuarios los programas bisicos, como el ensamblador y el gra- bador de memoria, lo que ha permitido el uso masivo de los microcontroladores. urs prdctco sobre Merocontotndores CAGC! @ ese Elementos orientados al hardware Los elementos de Aardware se utilizan para veri- ficar el correcto funcionamiento del prototipo construido, asi como para almacenar en la me- moria el cédigo binario ejecutable. A grandes rasgos, estos componentes son los siguientes: + Grabador de memoria o programador: ¢s un sistema electr6nico que permite almacenar el programa en la memoria del microcontrolador. Para conseguir esto, es comtin que se conecte el grabador al puerto serie 0 paralelo de una computadora personal, de modo que median- teel uso de un programa especialmente prepa- rado para ello, se hace el envio al microcontro- lador del eddigo binario ejecutable. Los graba- dores ms ofisticados permiten almacenar pro- gramas sobre diferentes modelos de microcon- trolador, permitiendo clegira voluntad la refe- rencia deseada. Un ejemplo de un grabador es el K-175 de la compafiia CEKIT S.A. * Sistema de desarrollo: es un equipo que combina hardware y software y permite rea- lizar el ciclo completo en el proceso de ela- boracién de un prototipo. Al igual que el gra- bador de memoria, el sistema de desarrollo es controlado por un programa de computa- dora personal que permite editar, compilar y depurar (corregit) el programa de usuario, Alcanzado este punto, el usuario puede gra- bar la memoria del microcontrolador con el programa claborado, as{ como establecer las conexiones requeridas con los periféricos de entrada-salida dispuestos sobre la tarjea base. Cuando el prototipo funciona adecuadamen- te, se procede a la construccién del sistema final sobre una tarjeta independiente. Un ejemplo de un sistema de desarrollo es el PICSTART Plus de Microchip. Elementos basados en software En esta leccién nos vamos a concentrar en el estu- dio de las herramientas de software imprescindibles para el desarrollo completo de un proyecto de con- ‘rol con microcontrolador. Estos elementos son: 1. Un editor de texto 2. Un ensamblador 3. Un grabador de memoria 4, Un simulador El simulador es una alternativa opcional que permite probar el funcionamiento de un progra- maa nivel de software, sin que se requiera la cons- truccién fisica del proyecto. Muchos simulado- res incorporan las restantes herramientas de sofi- ware, lo que simplifica en gran medida el desa- rrollo de los programas de control. Sin embargo, debe quedar claro que, una vez verificado el pto- totipo con el simulador, éste debe construirse de manera real. Un ejemplo de un simulador es el MPLAB de Microchip. Este programa contiene todo lo que se necesita para simular el funciona- miento de un prototipo de control. En la figura 5.1 se observa el papel que jue- gan estas herramientas en el ciclo de desarrollo de un proyecto. El orden que debe seguirse es importante: en primer lugar, escribir el progra- ma fuente (editor de texto), a continuacién ge- nerar el cddigo binario ejecutable (ensambla- dor) y por tiltimo, programar el microcontrola- dor (grabador de memoria) Figura 6.1 E ciclo de desarrlo de un proyecto Vamos a describir cada una de las herramien- tas de software indicadas en la figura 5.1. El editor de texto El primer paso en la claboracidn de un progra- ma de microcontrolador consiste en utilizar un editor de texto, similar al bloc de notas de Win- @ QERCIT 7:0 jicten sre mercanttotores Geren dows o | programa Edit del sistema operative DOS, para escribir el archivo fuente con la solu- cidn del problema en lenguaje ensamblador. La extensiin que debe asignarse al archivo es ASM. Para abrir el bloc de notas,siiiese en el escrito rio de Windows y pulse la secuencia Inicio, Progra- ‘mas, Accesorios, Bloc de Notas. Una vez digitado el programa, figura 5.2, se lo puede grabar en disco con la opcién de menti Archivo | Guardar como wn cligiendo Todos los archivos (*.*) en la caja roculada Guardar como archivos de tipo, ¢introduciendo a rapid Eo eek continuacién un nombre con extensién asm en la El ensamblador MPASM de Microchip El ensamblador MPASM de Microchip es un programa que convierte las instrucciones escri tas en formato del microcontrolador PIC, a c if HHEEEE: eGRRETEREEEREEY ‘E2nTH # # EPH Brrr iat) nids eee) digo binario. Se dispone de dos versiones basi- ere cas: MPASM para DOS y MPASM para Windo- ws, Las figuras 5.4 y 5.5 muestran estos progra- Figura 5.2 E] editor de texto El ensamblador Un programa ensamblador es aquel que per mite generar, a partir de un archivo de cédigo fuente, un archivo de cédigo binario. Elarchivo fuente debe contener una descrip- ign en lenguaje ensamblador, al nivel del pro- gramador, del problema que vamos a resolver. El archivo binario, en contraste, ¢s un conjunto de bytes que s6lo pueden ser interpretados por el mi- crocontrolador (o microprocesador, cuando se programa en otros niveles). Un ejemplo de un ensamblador es cl MPASM de Microcl La figura 5.3 muestra la transformacién de un programa fuente (archivo de texto) a su co rrespondiente programa ejecutable (c6digo bina- rio), orientado al microcontrolador PIC 16F84. err 3S AGE pa canto pret sete Mtervewntotires CAGRCET. ®@ Software para el d En ambos programas se puede establecer el nombre del archivo fuente, asf como las carac- teristicas del microcontrolador que va a ser ut lizado. La versién DOS requiere el uso exclusi- vo del teclado, segiin se aprecia en la parte baja de la pantalla. La tecla ENTER permite clegir centre diversas opciones, mientras que el despla- zamiento entre lineas se logra pulsando las te- clas de flechas. Con la tecla Fl se obriene una pantalla de ayuda. El proceso de ensamblaje del archivo fuente se consigue pulsando la tecla F10, Para terminar el programa basta con pulsar la tecla ESCAPE. Debido a su facilidad de uso vamos a em- plear en las explicaciones de los préximos apartados la versién MPASM para Windows. Las opciones de ensamblaje serén explicadas més adelante. Archivos asociados al ensamblador MPASM Para su correcto funcionamiento, el ensambla- dor MPASM requiere disponer de uno (0 va- rios) archivos de cédigo fuente. El resultado del proceso de ensamblaje es un conjunto de archi- ‘vos, algunos de los cuales son opcionales y de- penden de las necesidades del prototipo que se std desarrollando, La tabla 5.1 muestra los di- ferentes archivos utilizados y generados por el programa MPASM. Codigo absoluto y codigo objeto MPASM puede generar dos tipos de archivo cjc- ccutable. El primero de ellos, con extensién asm, se conoce como cédigo absoluto y puede ser eje- cutado directamente por el microcontrolador. El segundo, con extensién obj, es un archivo de cédigo objeto que puede ser enlazado (empaque- tado) con otros médulos similares, dando higar 4 programas que combinan diversas funciones disentadas por separado. El programa que hace la unién (empaquecamiento) de médulos es el MPLINK de Microchip. Los archivos con extensidn obj se pueden agrupar en librerias, Esto es itil, puesto que per- mite el desarrollo de médulos especializados, dando la posibilidad de incorporarlos més ade- lante en otros programas de usuario. El progra- ma MLIB de Microchip permite realizar la inte- gracién de diferentes médulos objeto en una li- breria especifica. Ejecucion del programa MPASM desde fa linea de comandos Una alternativa titil cuando se ensamblan pro- gramas es realizar el proceso desde la linea de comandos del sistema operativo, no desde el en- torno integrado. Esto no parece necesario, dado que los programas del sistema, tanto la version DOS como la versién Windows, cumplen la fun- cidn bésica de ensamblar el cédigo fuente. Archivos de entrada Tipo de archivo Extension Comentario Fuente asm Solucién dal problema al nivel del programador Inclusion sine Archivos externos que deben ser incluidos Archivos de salida Tipo de archivo Extension Comentario Listado se Salida formateada del proceso de ensamblaje Errores err Listado de los errores gencrados Hexadecimal hex Archivo con el cédigo binario ejecutable Depuracién cod Archivo para depuracién Objeto o Cédigo que se combina con otros médulos Tabla 5.1 Archivos de entrada y saliéa generados pore ensamblador MPASM & GRIT: cso pictvn stra ercontatees Nota: Los apartados que siguen son material de re- ferencia para los programas que escribiremos a partir de la proxima leccién. Por esta razén, no ¢s obligatorio que usted comprenda todo lo que se expone sobre el uso del ensambla- dor: cada proyecto subsiguiente aplicaré una parte diferente del material teérico expuesto EI programa ensamblador MPASM puede ejecutarse desde la linea de comandos del siste- ma operativo DOS con la siguiente sincaxis: mpasm [/{/...] [nombre-de- archivo] Antes de proceder a explicar esta notacién, la ‘cual se aplica.a muchos tépicos de los microcontro- adores, es conveniente ver un ejemplo de su uso: Calsproyectos> mpasm /I /e control.asm Con esta orden see indica al MPASM que en- samble el archivo control.asm, situado en el directo- rio C:\>proyectos. Las opciones usadas en la linea de ordenes son Lye, La opcién Le indica al ensambla- dor que genere un archivo con extensién Is, el cual contiene las lineas del programa fuente debidamente formateadas. La opcién e genera un archivo con ex- tensién err. Este archivo contiene una lista con los cerrores del programa, Sie programanocontiene erro res, este archivo estard vacio, Si se producen errores, no se genera cl archivo binario ejecutable El resultado de la orden mostrada es la crea- cidn, dentro del directorio de trabajo, de los si- guientes archivos: Directorio Directorio Proyecto Proyecto conttolasm—> MPASM—> contolasm ccontrol.cod Programacion Ahora es mas facil explicar la notacién usa- da en la linea de drdenes, mpasm (/[/, es un dato que debe escogerse a partir de un conjunto que ha sido estableci- do de antemano. En el caso del MPASM, puede tomar uno de los siguientes valores (aqui no se indican todas las alterna- tivas; en caso de requerirse se deben consul- tar las ayudas del ensamblador) Opcién Breve explicaciin Pardmetro ? pantalla de ayuda 2 generaciin de aidigo absoluto——- INHX8M INHX8S INHX32 © habla mayisculs 0 mindscuss © generaarchivo de erores 1 genera salida formateada ‘m —_habilca la expansin de macros p define cl tipo del procesador seeccionado permite suprimirla sida ala pantalla © establece el tamafio del tabulador define el sistema numéticoutizado HEX(base 16) DEC (hase 10) OCT (base 8) Observe que todas las opciones deben estar precedidas por el cardcter barra inclinada /. Ade- més, cuando la opcién deba elegir uno de entre varios pardmetros, éste serd colocado a continua- cidn de la opcién, Observe los ejemplos: rposn /pPICISCSS prucbol.ase ;procesador=PICLECS4 rmpasn /t3 /+HEX pruebo2.cam ;tabulador=3 espacios, sistena hexadecinal conpatcosensennrinm green: ey ES(CEMCLES Chere introlador Los puntos suspensivos indican que el ele- mento que le precede puede repetirse indefinida- mente. Si aplicamos este concepto a la linea de ‘rdenes, veremos que se pueden colocar tantas opciones, una después de otra, como queramos. En resumen, una opcién en la linea de coman- dos permite establecer una caracteristica particular del proceso de ensamblaje. Ahora bien, depen do del formato utilizado, la opcién puede habilitar o inhibir una funcionalidad especifica del MPASM. Formato Comentario Ejemplo |copcién> —Habilita la pein MPASM /e General archivo de icopcién>s Hiabilta la opcién MPASM fer Genera el archivo de |/- Inhibe la opcin - MPASM Je- Inhibe el archivo de Directivas Las directivas son érdenes del ensamblador que no son trasladadas a aédigo binario ejecutable. Ellas se utiizan para controlar diversos aspectos del funcio- rnamiento del ensamblador, como lasalida yl entra- dade informacién, el mangjo de las macros, al igual que la locaizacién de los datos en la memoria, Los tipos bisicos de directivas incluidas en el MPASM son las sigh * Directivas de control * Directivas condicionales * Directivas orientadas a los datos * Directivas de control de listado * Directivas de macros * Directivas orientadas al archivo objeto Cada programa requiere sus propias directi- vas, por lo que no es necesario, en un primer acer- camiento al tema, considerar todas las posibili- dades existentes. Explicaremos aquellas directi- vas que nos parecen més importantes, dejando para mds adelante el estudio de las directivas que se apliquen a los proyectos construidos. Nota: Las directivas no son sensibles alas maytisculas 0 mimdsculas. Esto significa que es lo mismo CONSTANT que Constant. Presentamos ahora una lista con las ditectivas clasificadas por categorfa. Adicionalmente se brinda una explicacién breve y clara de cada directive, ast como la sintaxis que corresponde. Los proyectos que iniciaremos en la préxima leccién hardn uso de las directivas mostradas. Convenciones Expr Hace referencia a una expresién matematica Valor Corresponde a un valor literal Nombre Nombre asociado a un objeto Addr Direccién Directivas de control Directiva Explicacion CONSTANT | Declata simbolos constantes sintaxis constant [= y.0 [= ] ] #DEFINE Define una etiqueta usada para sustitucidn de texto sintaxis #efine [[(s.s )]] END Finaliza un bloque de programa sintaxis end EQU Declara una constante sintaxis equ #INCLUDE | Permite incluir un archivo ex- terno dentro del programa fuente actual sintaccs include <> sintaxis include «» & ODT rs aces care sented ORG \sintacxis PROCESSOR sineaccis RADIX sintaxis SET sintacxis |#UNDEFINE sintais VARIABLE, sintaxis Establece el punto de del programa ‘ org Define el tipo de procesador utilizado procesor specifica el sistema numérico usado por defecto radix: Define una variable del ensamblador set Elimina una substitucién de etiquetas tundefine Define simbolos variables variable cetiqueta> [= y., setiqueta> (= )] Programacion WHILE lsintaxis Ejecuta un ciclo WHILE, (mientras) si la condicién es verdadera while Directivas orientadas a los datos Directivas condicionales Directiva ELSE |sintaxis ENDIF sintaxis ENDW sintais IF sintaxis IFDEF sintaxis IENDEF sintaxis Explicacién Empieza un bloque alternati- vo a la instruccién IF (si) che Finaliza un bloque condicional endif Finaliza un cido WHILE (mientras) endw Empicza un bloque de cédigo sila condicién es verdadera if ‘Bjecu sil simbolo es dfinido ifef Ejecuta si el simbolo no estd definido ifndef cetiqueta> |Directiva |_ BADRAM sineaxis CBLOCK |sintacxis |__CONFIG \sintaccis DA sineaccis DATA sintaxis sintaxis DB sintacis DE sintaxis DT sintaccis pw sintacis L , uu. ] Explicacién Especifica posiciones de me- moria de tipo RAM no vilidas badram Define un bloque de constantes cblock (] Establece los conmutadores de configuracién __config OR _ config , ‘Almacena cadenas en la memoria de programa [clabel>] da Almacena datos numéricos y de tipo textual data f, sn] data ["’,. Declara datos cuyo tamafio ¢s un BYTE db (,yao] Declara datos en la EEPROM de |,nu] Define una tabla dt (,vn) Declara datos cuyo tamafio es una PALABRA (WORD) diy (,s..] curso prt sore Mccontlores ACE’ Directivas orientadas al archivo objeto ENDC Finaliza un bloque automético de constantes sintaxis ende FILL Especifica un valor para llenar ‘una zona de memoria sintaccis fill. , Directivas de control de listado Directiva Explicacién ERROR Genera un mensaje de error sintaxis error «» ERRORLEVEL | Establece el nivel de mensajes de error sintasis errorlevel O|I|2\<+-> List Opeiones para generar listados sintaxis list [[,..., ]] MESSG Crea un mensaje definido por| ‘el usuario sintaxis ‘mesg «» NOLIST Inhibe el proceso de listar informacién sintaxis nolist PAGE Inserta un salto de pagina sintaxis page SPACE Inserta lineas en blanco sintacis space [] SUBTITLE | Define un subritulo para un programa sintaxis subtiel «ctexto-sub-tirulo>» TITLE Especifica un titulo para un programa sintaccis title «» Directivas orientadas a las macros Estas directivas serén comentadas en la seccién. de macros. Directiva Explicacién CODE Inicia una seccién de cédigo ejecutable sintasis [] code [] EXTERN Declara una etiqueta que ha sido definida externamente sintaxis extern [, cetiqueta> GLOBAL Exporta a otros médulos etiqueras locales sintaxis extern [. Macros ‘Una macro es un conjunto de instrucciones de- finidas por el usuario, evaluadas y ejecutadas por el ensamblador, cuando ella es llamada desde otro punto dentro del programa. Una macro se estructura, con mis precisién, mediante una secuencia de instrucciones de en- samblador y un conjunto particular de directi- vas, Las macros pueden aceptar argumentos, lo que las hace extremadamente flexibles, pues se asimilan a procedimientos o funciones de len- guajes de alto nivel. Entre las ventajas de las ma- ‘ros podemos citar: + Abstraccién de procesos * Cédigo fuente mas claro + Encapsulamiento de procesos que se presentan frecuentemente + Facilidad de manejo cuando deben realizarse cambios al cédigo + Verificacién simple del funcionamiento de un programa ‘Una macro es un bloque de cddigo que se scribe una sola vee, y que luego puede ser utiliza- do desde diversos puntos de un programa, Esto simplifica el desarrollo de programas. Una macro puede recibir pardmettos, lo que significa que pue- de particularizar su funcionamiento segtin las ne- cesidades del proceso que hace el llamado. & GRICIR: 120 ict stra merconeletoes Sintaxis de una macro Una macto se puede definir con la siguiente sintaxis < macro [, oy ] endm En esta notacién, representa un nombre vilido de etiqueta, mientras que es cualquier parimetro recibido por la macro, Los valores asignados a estos argumentos cen el momento del llamado, son transferidos di- rectamente a los nombres de los argumentos. El cuerpo de una macro, es decir, el con- junto de elementos que hay en su interior, est conformado por instrucciones del ensambla- dor y por directivas especificas. El final del cuerpo de la macro se marca con la directiva ENDM. Directivas orientadas a las macros Existen directivas especificas para usar dentro de las macros. A continuacién se presenta una tabla con las directivas asociadas a las macros, as{ como una explicacién breve y la sintaxis de cada una de ellas. Directiva Explicacién ENDM. sintaxis Finaliza una macro endm Obliga a salir de la macro exitm Expande una macro, es decir, icién actual local |, ] Gree MACRO Permite definir una macro |sintaxis macro [,...) INOEXPAND | Elimina aexpansién de macros linearis noexpand Uso de las macros Una ver que una macro ha sido definida, se la puede llamar desde cualquier punto de un pro- grama, como se describe a continuacién. [,. En la sintaxis mostrada, nombre-macro es el nombre de una macro definida previamente, y Jos argumentos son valores que se deben pasar en el momento de la llamada, Laexpansién dela macro se realza directamente en la memoria dl microcontrolador, lo que permite, naturalmente, su cjecucién. Lalista de argumentos de ‘una macro termina simplemente con un espacio en blanco o con un carécter punto y coma (). La directiva EXITM brinda un mecanismo flexible para terminar la expansin de una macro. Mensajes generados por el ensamblador (messages) Los mensajes generados por el ensamblador guar- dados en un archivo con extensién .err. Sise utili- za la opcién [e-, los mensajes no aparecen en la pantalla de la computadora. Sise utiliza a opeién fq, conjuntamente con la opcién /e-, los mensajes no seran enviados a la pantalla ni grabados en un archivo, aunque si incluidos en la salida. Los mensajes consisten en un cédigo numé- rico y un texto explicativo, Algunos mensajes del ‘ensamblador son los siguientes: Algunos mensajes basicos 301 MESSAGE: Explicac DMenejedeliumere, cmarscsnnecnrinns Cercrn: ep 303 _ Program word too large. Truncated to core size Explicacion Este mensaje hace referencia a un uso inadecua- do del tamafto de las instrucciones del progra- ma. Por ejemplo, la familia de microcontrolado- res PIC 16CXXX posee instrucciones de 14 bits, por lo que utilizar un formato diferente genera el mensaje indicado. 314 UNKNOWN MESSAGE Explicaci Este mensaje se presenta cuando el ensamblador no entiende cual es el tipo de problema encontrado. Nota: Refiérase a las ayudas del programa para una lis ta completa de mensajes. Advertencias (warnings) detectadas por el ensamblador Las advertencias son generadas por el ensambla- dor cuando el cédigo fuente presenta instrucci nes o estructuras que pueden reflejar, potencial- mente, algtin tipo de problema adicional. Para ilustrar lo anterior, presentamos una lista con advertencias tipicas. Algunas advertencias basicas 201 Explica El simbolo a que se hace referencia no ha sido definido previamente. nbol not previously defined. 202 Argument out of range. Least significant bits used. Explicaciin: El argumento posce un valor que no puede ser acomodado completamente en el espacio de memoria asignado. 203 Found opcode in column 1. Explicacién: Seha encontrado un cédigo de operacién en la pri- mera columna de la linea, lo cual es incorrecto, ya «que esta columna estéasignada a las etiquetas 208. Label truncated at 32 characters Explicacién: La maxima longitud de las etiquetas debe ser de 32 caracteres. Este mensaje indica que la etiqueta actual se ha truncado para cumplir con este requisito. Nota: Refiérase alas ayudas del programa para una lis- ta completa de advertencias. Errores (errors) detectados por el ensamblador Los ettores son fallas cometidas por el progra- mador, aunque algunas veces son producto de la ejecucién misma del programa, que impiden la generacién de cédigo binario, Algunos errores basicos 101 ERROR: Explicacién: Mensaje de error generado por el usuari 102. Out of memory. Explicacién: No hay espacio en memoria para la expan- sién de macros, definiciones © procesamien- to interno. 103 Symbol table full Explicacién: No hay memoria disponible para la cabla de simbolos. 104 ‘Temp file creation error, Explicacién: No puede crearse un archivo temporal de uso interno. Verifique el espacio disponible en disco. 105. Cannot open file. Explicacion: No se puede abrir el archivo de disco indicado debido a que el archivo no existe (cuando es archivo de entrada) o el disco esta protegido contra escritura (cuando es archivo de salida). & ercrr:. Curso préctico sobre Microcontroladores Nota: Refiérase a las ayudas del programa para una lis- ta completa de errores Operadores, operandos y expresiones Para terminar la exposicién de los conceptos te6ricos que se deben conocer para acometer la tarea de construir programas, vamos a des- cribir algunos elementos que, pese a su sim- plicidad, son de gran importancia préctica. Estos clementos son: cadenas, cédigos de es- cape (ANSI’C), sistemas numéricos, los ope- radores aritméticos y légicos y, por tltimo, los eédigos ASCH. Cadenas (strings) Una cadena (string) es una secuencia de carac- teres, pertenecientes al cédigo estindar ASCII, encerrados entre comillas. La longitud de una cadena esté comprendida en el rango 0 a 255, lo que significa que la cantidad de caracteres que se pueden almacenar dentro de la cadena no puede sobrepasar estos limites. La directiva DW almacena una cadena, de manera automitica, en posiciones sucesi- vas de la memoria. Esto es importante por- ‘que permite un significativo ahorro de tiem- po a la hora de almacenar cadenas en la me- moria, Para ilustrar lo anterior, considere la siguiente directiva: dw “prueba de texto” Con el uso de esta directiva se almacenan en la memoria los caracteres comprendidos en- tre las comillas (no se incluyen las comillas en el texto almacenado) La secuencia de codigos de escape ANSI’C. Los sistemas operativos han popularizado el uso de las secuencias de escape ANSI’C, las cuales consisten en caracteres especiales de control. El ensamblador MPASM acepta este método de representacién Los cédigos de escape ANSI’C los pode- ‘mos ver a continuacién: ‘Alarma sonora (alo) Retroceso (backspace) Salto de pagina (form feed) ‘Nueva linea (new line) Retomo de carro (carriage return) Tabulacién horizon (boron ad) Tabulacign vertical (vertical sab) Barra invertida (Bacslash) Interrogacién (guestion mark) Comilla simple (aposrophe) Doble comilla (double quo) Niimero octal (octal digi) Niimero hexadecimal (hexadecimal number) Sistemas numéricos El ensamblador MPASM reconoce tres sistemas de numeracién: hexadecimal (base 16), decimal (base 10) y octal (base 8). A estos sistemas se de- ben agregar las representaciones ASCIT y binaria. Cuando MPASM se inicia, asume por defecto el sis- tema hexadecimal. Esto significa que las asignacio- nes utilizan este sistema de manera automitica. Fjemplo D200 200 Sintaxis D'edigitos>” - H3f Ox3f Hr’ Oxcdigitos-hex> O'’ 0°347 B’oor 10110" B'cdigitos-bin>’ AH ep Accardcter>’ “’ Operadores numéricos Los operadores numéricos basicos reconocidos por MPASM son muy abundantes. En esta sec- cus oreo ste erconnaees: ABICET.: © Gore cién vamos a mencionar aquellos que puedan [* OR exclusivo entre bits presentar alguin interés especial: | OR entre bits ee AND légico hate Descripcién nN OR légico Contador de programa actual += m += h equivaleam=m+h t Complemento légico = m-=h equivaleam=m-h - Negacién en complemento a dos | |*= m *=h equivaleam=m*h fe Complemento = m /=h equivale am =m/h high Retorna el byte alto de una palabra | | ++ mes equivaleam =m +1 low Retorna el byte bajo de una palabra} | — m—equivaleam = m-1 lupper | Retorna el byte superior % Médulo (lo que sobra de una Para ilustrar el uso de la tabla de oéigos ASCII, divisién entera) considere el carécter ‘A’. Observe que se encuen- x Desplazamiento a la izquierda tra dentro de la columna 4 y la fila 1 (0x41). >> Desplazamiento a la derecha _ Comparacién Cardcter Cédigo ASCII - Asignacién w Ox4 & AND entre bits Tabla de cédigos ASCII Hex seth? icin 9 4 5 6 7 0 DLE | Space | 0 @ P é P 1 pe | ! 1 A seal q 2 kez B R [ob r 3 Pes cS s c : 4 $ [4 D Tati od t 5 % 15 E ule a 6 « |6 F eisai? y z : Z G wie w 8 anes H eei ok x 9 jae: I veld y A a i J Zz i z B + 3 K i k { ic aS i \ 1 ( D M J m i | E ra 5. N * n 2 E 2 ° 5 ° DEL LECCION 6 En esta leccién vamos a desarrollar va- tios proyectos de programacién en los que aplicaremos algunas de las técnicas aprendidas hasta ahora combindndolas con algunas herramientas, tales como el ensamblador y el grabador de la me- moria del microcontrolador. Cer er ‘Figura 6.1 Creuito para sneer un ood LED, empleando un microcontlagor Ejercicio N°1 El proyecto inicial que vamos a acometer es muy simple: el objetivo es energizar un diodo LED conectado a una linea del puerto B del micro- controlador PIC1GF84. A pesar de su simpli dad, este proyecto contiene ideas importantes que Juego van a ser clave en el desarrollo de proyec~ tos de mayor envergadura. Circuito basado en un microcontrolador A partir del conocimiento de la arquitectura del microcontrolador PICI6E84 se puede deducir cual debe ser la estructura fisica del circuito que resuelve el problema de energizar un diodo LED. Este es cl paso inicial en el desarrollo del proyec- co, La figura 6.1 muestra el disefio fisico, En este disefio se debe notar que hemos conec- tado un diodo LED alla linea 0 del puerto B (PBO), Dado que sobre el diodo LED se aplica una te de 5 voltios, es necesatio que esta linea se comporte como una linea de salida. Esto se consigue, como se vverd mas adelante, usando técnicas de programacién. Montaje del circuito utilizando un protoboard Un método convencional_utilizado en el desa- rrollo de circuitos clectrénicos, es el armado del ’, Circuito en un tableto de conexiones (prosoboard). Los componentes se insertan sobre él de acuer- do con la disponibilidad de los canales, proce- diendo después a la interconexién de los mis- mos con cables del grosor apropiado. La figura 6.2 presenta ¢! circuito usando un protoboard. in eet) El uso de un protoboard es una técni- ca viable cuando el ruimero de clementos utilzados no es muy alto. Elinconveniente de su uso tiene que ver con la inestabi dad de las conexiones entre componen- tes, lo que hace dificil la puesta a punto del circuito. Montaje del circuito utilizando un entrenador Una alternativa bastante cémoda p: probar el funcionamiento del circuito consiste en usar un sistema de desarrollo o, en su defecto, un entrenador de sistemas ba- sado en microcontrolador, Esta herramienta en esencia, es una tarjeta que contiene la mayorfa de componentes electrénicos utili- zados en los proyectos de control, ademés de un sencillo mecanismo de interconexién en- tre ellos. Como es natural, el entrenador debe disponer de un soporte para la insercién del microcontrolador, una vez que éste ha sido programado. Desarrollo del proyecto Ahora bien, si asumimos que el disefio fisico del circuito es correcto, y ademas se ha hecho el mon- taje empleando alguna de las técnicas descritas, slo resta disefiar el programa que pondré en marcha el sistema de control ‘Figura 6.2 Monaje de cicuto sobre un protoboard Vamos a proceder en orden, Para empezar, disefiaremos el programa que cumpla con los re- quisitos del proyecto. Registros utilizados Antes de empezar, queremos que usted recuerde cl significado de algunos registros del microcon- trolador, en particular aquellos que van a ser uti- lizados en nuestro proyecto. ‘Nimero del | Banco 0 Banco 1 registro 0x03 | ESTADO | ESTADO 0x06 | PUERTOB | TRISB Laposicién 0x03 contiene el registro ESTA- DO, sin importar cual sea el banco de memoria elegido. En relacién con el registro ESTADO se tienen las siguientes observaciones: © Cuando el bit 5 del registro ESTADO esté puesto en 0, el banco de memoria selecciona- do es el banco 0. * Cuando el bit 5 del registro ESTADO esté puesto en 1, el banco de memoria selecciona- do es el banco 1. La posicién 0x06 hace referencia al puerto B. Podemos hacer las siguientes observaciones: + Cuando el banco seleccionado es el banco 1, el registro 0x06 contiene una imagen de la informacién contenida en el puerto B. + Cuando el banco seleccionado es el banco 0, el registro 0x06 contiene la palabra de confi- guracién del puerto B. Cada ie de la palabra de configuracién es- tablece el comportamiento de la respectiva nea del puerto del microcontrolador. Notemos lo siguiente: if PUERTO B PBO Figura 6.3 Objetive central del proyecto Gere + Un bit puesto en 1 en el registro de confi- guracién hace que la correspondiente Ii- rea del puerto se transforme en una linea de entrada, + Un bit puesto en 0 cn el registro de confi- guracién hace que la correspondiente Ii- nea del puerto se transforme en una linea de salida Disefio del programa usando el lenguaje ensamblador La visién més simple del proyecto se presenta en el esquema de la figura 6.3, La idea es clara: ransferir el digito binario 1 ala linea PBO del puerto B. Tan pronto se cum- pla con esto, el diodo LED se encenderd. El esquema presentado en la figura 6.3 no nos dice nada sobre las restantes lineas del puerto, es decir, PB1 a PB7. Esto resulta ser titil, porque de esta manera podemos simpli- ficar el disefio, tal como se ve en la figura 6.4. Esca modificacién no altera el funcionamiento del programa. El propésito del proyecto es, en pocas pa- labras, transferir el dato binario 00000001 al puerto B. Nota: El nimero binario 00000001 se representa mas ficilmente con la notacién hexadecimal. El equi- valente del numero binario 00000001 es 0x01 en hexadecimal, Byte Puerto B 0 [a] 0 PB0 1 1 Semuneel : aoe? contenido del aipeme # EE 6 [0/6 7 7 Figura 64 Rediseo del objetivo central do proyecto curso prica sore Mooconroacaes AGREE: ® Transferencia de informacion hacia el puerto B Debe recordarse que la transferencia de informa- cién entreel microcontrolador y su entorno se hace a través de registros. Por esta razén es comprensi- ble que utilicemos la siguiente secuencia: 0x01 ———> Registro W Registro W —> Puerto B Lo primero es almacenar en el registro W la informacién que va a ser transferida (00000001). A ccontinuacidn, se debe mover el dato en el regis- tro W (00000001) hacia el puerto B. El resulea- do, siel puerto B es de salida, es la aplicacién de un voltaje positivo al diodo LED conectado en la linea PBO (bie 0) del puerto B. La figura 6.5 pre- senta un esquema que refuterza estos conceptos. Almacenamiento del dato 0x01 en el puerto B De manera més especifica el proveso puede enun- ciarse asf: Seleccionar el banco 0 Almacenar en el registro W el dato 0x01 Mover el contenido del registro W al puerto B Usando el lenguaje ensamblador se tiene Figura 6.5 Aplicacién de una seal eléctrica al dodo LED bef registro,dato Ta instruccién bef utiliza dos operandos. El| primero de ellos es el registro afectado; el se- gundo corresponde a un bit dentro del regis- tro. Esta instruccién coloca en el bit seleccio- nado el mémero 0, sin afectar los restantes bits del registro. movlw dato. bef @x03,5 jColoca @ en el bit 5 del jregistro ESTADO. Esta accién| 3selecciona el banco @ del jconjunto de registros Se coloca en 1 el bit de menor speso del registro W. |Sigrificado: oongmal. > W 3Se transfiere el contenido joel registro W al puerto 8. iSignificado: W -> PUERTOB. Esta accién energiza el. diodo’ LED conectado en el bit @ del’ SPUERTO 8 movin x01 ImowwF 0x06 Ta instruccién movlw tiene un solo operando. Esta instruccién almacena el valor del operan- do en el registro W, Otra forma de expresarlo es como sigue: dato —> W. movwt registro Ta instruccién movwF dispone de un solo operando. Este operando hace referencia a un registro. La instruccién movwF transfie- re el contenido del registro W al registro es- pecificado. En términos simples: W—> registro. En esta secuencia hemos utilizado tres ins- trucciones de uso comiin, La descripcién de ellas es la siguiente: Configuracion del puerto B Antes de que el puerto B pueda ser utilizado, es necesario configurar sus lineas como lineas de en- trada 0 como lineas de salida. + Para transformar una linea del puerto en una linea de entrada basta con escribir 1 en el bit correspondiente en la palabra de configuracién. + Para transformar una linea del puerto en linea de salida, basta con escribir 0 en el bit corres- pondiente en la palabra de configuracién. @ BICAT: crs,120 ste roel Banco 1 Palabra de configuracion 0706 Banco 0 Pusrto B Toisas ines son de sada ov06, Figura 6.6 Conigracin del puerto B como puerto de salide La figura 6.6 establece lo anterior y mues- tra como se debe configurar el puerto B para que todas sus lineas sean de salida. Para configurar el puerto B como puerto de salida se requieren dos pasos 1. Seleccionar el banco 1 2. Llenar con ceros el contenido del registro de configuracién del puerto B En lenguaje ensamblador tendrfamos: fost ox, ‘aleca 1 en el bit 5 jdel registro de estado, jEsto accién selecciona jel banco 1 del conjunt tde registros AUnacena ceros en el jregistro 0x06 CTRISB) {edo que el banco 1 esta jseleccionado, el puerto] 38 se configura como puerto de solida cine 0x06 Programacion Ta instruccion elrf utiliza un operando que corresponde a un registro del microcontrola- dor. Esta instruccién coloca ceros en todos los bits del registro seleccionado. Detencion del flujo de ejecucion El programa debe terminar de manera con- trolada. Cuando todas las tareas han sido com- pletadas es conveniente que el microcontro- lador entre en un ciclo cerrado durante cl cual no ejecuta ninguna tarea. Esto detiene el pro- ceso de ejecucién. La instruccién goto (saltara ..) permite con- figurar el mencionado ciclo. Vamos explicar bre- vemente la instruccién goto. goto etiqueta La instruccién goto utiliza un operando que debe coincidir con una etiqueta definida den- tro del programa, Esta inscruccién obliga al microcontrolador a continuar el flujo de eje- cucién a partir de la linea que contiene dicha etiqueta. ‘Veamos un ejemplo que muestra como crear un ciclo cerrado: Esta secuencia contiene algunas instruccio- nes nuevas. Vamos a explicarlas brevemente. bsf registro,nimero_bit Ta instruccion bef utiliza dos operandos: El primero corresponde a uno de los egistros del microcontro- lador. El segundo se refiee a uno de los bits del regis- ‘10, Esta instruccién coloca en 1 el bit seleccionado, pero sin afectar ls restates bits dl regisuo, lcicto goto ciclo La instruccién “goto” jsalta a la etiqueta #ciclo”. Ahora bien, spuesto que esta etiqueto| jcorresponde a 1a misna Hinstruccién, el prograna| 3no puede avanzar y se jdetiene el flujo de jejecuci6n. FL sistena termina cuando se retira| 31a alinentacién det scircuito. Directivas de control A continuacién explicamos en detalle algu- nas directivas que son necesarias cuando se escribe un programa de microcontrolador. mshi ae miscues) INCRE: @ rere sa Directiva para establecer el punto de inicio del programa Las instrucciones deben almacenarse a partir de cierta direccién de memoria. Ahora bien, es ne- cesario indicar mediante una directiva cudl es esa direccién de memoria La directiva ORG establece la posicién de memoria a partir de la cual se van a ensamblar Jas instrucciones escritas a continuacién, Ob- serve el siguiente modelo: sEsta directiva establece la sposicion a partir de la cual se ensanblan Las proxinas instrucciones. jEn este ejemplo, la direccién de jensanblaje es cero, A partir dela definicién anteros la cual asigna el nombre PUERTOB al registro 0x06, la notacién se ‘vuelve més sencilla. Observe el siguiente enunciado: movnf —PUERTOB > PUERTOB Las siguientes constantes son suficientes para el proyecto que estamos elaborando: Cuando el programa no utiliza interrupcio- nes puede usar todo el espacio de memoria para almacenar el cédigo binario. En este caso, el pro- grama se graba a partir de la posicién 0x00 utili- zando la memoria excedente en forma secuencial. Nota: Es posible colocar varias directivas ORG a lo lar- go del programa, De esta manera se pueden al- ‘macenar distintos bloques de programa en dreas no contiguas de memoria. Directiva para definir constantes En pérrafos anteriores utilizamos la siguiente instruccién: ovnf 0x06 5 W o> 0x06 Esta instruccién mueve el contenido de W al registro 0x06. Si usted tiene buena memoria recor- dar, sin duda, que el niimero 0306 se refiereal puer- to B. Sin embargo es mejor evitar este esfuuerzo, y para lograrlo se recurre al uso de la ditectiva EQU. Esta directiva permite definir constantes de propésito general. Veamos un ejemplo: PUERTOB EQU @x06 La posicién @x06 corresponde jal puerto B JPUERTOR EQU x06; EL registro G06 corresponde cl puerto 8, isi el banco 0 esté ;seleccionado SEL registro 0x06 spermite configurar el spuerto B, como entrada 30 cono salida, ssi el banco 1 esté ;seleccionado EL registro 0x03 scorresponde al registro jESTADO, sin inportar el JTRISB EQU @x@6 lestan0 EqU x03 sbanco seleccionado Directivas iniciales El proceso de ensamblaje del obdigo fuente requicre ‘que se especifiquen ciertos elementos que van a inci- dir en el cédigo generado. El primero de ellos hace referencia al tipo de microcontrolador utilizado. El segundo tiene que ver con el sistema numérico em- pleado en las diferentes operaciones. La directiva LIST sirve para indica la referencia del microcontrolador utlizado en el proyecto. Con la directiva RADIX se clige el sistema numérico. Veamos un ejemplo: ust RADIX poi6re4 HEX. jSe utiliza el PIC 16F84 e utiliza el sistena shexadecimal Directiva final Laerapadeensamblje ermina con la directiva END. Codigo fuente del proyecto Ya estamos preparados para observar el aspecto final del cédigo fuente. La estructura general del programa debe ajustarse al siguiente orden: @ err: Curso practico sobre Microcontroladores Programacion + Descripcién del microcontrolador utilizado Fensorblen Tos ‘+ Sistema numérico empleado jpréxinas instrucciones. + Definicién de constantes iEoests sleaples 8 ‘+ Establecimiento del punto de inicio del programa ee eee + Instrucciones ens = * Directiva que marca el final del programa |; c6orG0 DEL PROGRAMA 305 cero. El programa que presentamos en la figu- {inicio bsf ESTADO,S :coloca 1 en el bit 5 ra 6.7 resulta de unir las secciones de cédigo idol registro cess ray que hemos descrito en los parrafos anterio- ee en jel banco 1 del conjunta) res, de acuerdo con el orden que acabamos aforleces ea de plantear clrf TRIS8 — jAlnacena ceros en et iregistro 0x06 CTRISBD.| jana ence $Dodo ave el bonco 1 esta PROGRAMA Prodt.asa eleccionado, el puerto| AuTOR. CEKIT S.A, se configura 6, como FEGHA.....1 Julio de 2001 puerto de salida COMENTARIO: EL progrona Prodt.asa bef ESTADO,S ;Coloca @ en el bit 5 yenergiza un diodo LED jel registro ESTADO, ‘lL programa es ensamblado, 'sta accion selecciona secuencia, @ 1 banco 0 del conjunto| reir de 1a direccién cero fe registros atek novi 0x01 se coloca en 1 el bit ENCABEZADO le menor peso del iregistro W. LIST pel6F@4 ;Se utiliza el PIC 16°84 Signi ficado: eoe020e RADIX HEX Se utiliza el sistenal iow ihexodecinat nova PUERTOS Se transfiere el contenido del registro] sear 3M al puerto B. ZONA DE ETIQUETAS $Significad: Wo PLERTR. pose aia = Esta acctén energiza fpucrros equ x06 EI registro 0306 Jel diodo LED conectado jcorresponde ol puerto 8, jen el bit 0 del PUERTO 8 ist el banco @ esta | |ciclo goto ciclo La instruceién “goto” jseleccionado isalta a la etiqueta TRISB = EQU 0x06; El registro Oxf6 permite “ciclo”. Ahora bien, jeonfigurar el puerto 8, puesto que esta etiqueta jon entreda 0 como orresponde a 1a mista isalida, si el bonco 1 instruccién, el prograra jestd selecctonado no puede avanzar y se ISTADO EQ —AxB3__—GEL registro 0x03 detiene el flujo de conresponde ol registro yejecucién. EL sistend ESTADO, sin inportar el mira cuando se retira jbanco seleccionado ja olinentacién det icircuito INICIO DEL PROGRAMA @ Esta directiva define No sTermina el proceso d ila posicion a partir iensarbloje ide lo cual se Foura 6.7 Cédigo fuente del programa ere Ec Escriba este programa usando un editor de texto convencional, como ¢l EDIT del sistema DOS 0 el Bloc de notas de Windows. Guarde el programa con el nombre: Pro@i.asm Nota: No olvide que la extensién del programa debe ser ASM. Esto es importante, sobre todo si utili- za el Bloc de notas, En este caso debe elegir en Guardar como archivos de tipo:, la opcién To- dos los archivos (*."). Ensamblando el programa Una vez escrito el programa, es necesario ensam- blarlo para generar el cédigo binario correspon- diente (archivo con extensién HEX). Vamos a utilizar la versién MPASM para Windows de Microchip. La figura 6.8 muestra la interfaz vi- sual del ensamblador. Figura 6.8 £1 ensamblador MPASM (Windows) El born Browse ... permite examinar la es- tructura de directorios del sistema. Observe la figura 6.9. Figura 6.9 Eleccién del archivo que se va ensamblar ec fr Una ver elegidas las opciones presentadas por el ensamblador, figura 6.8, pulse el botén Assemble (cnsamblat). Pasado un breve tiempo, elensamblador despliega una caja de didlogo con el estado final de la compilacién. Si no ha come- tido errores al digitar el programa, obtendré la pantalla que se ve en la figura 6.10. MPASM vO2.1 Figura 6.10 Proceso de ensamblaje correcto Los datos que seguramente apareceran en st pantalla podrin no coincidir con los mostrados cn la figura 6.10, Esto se explica porque el mii- mero de Iineas de su programa podria contenet comentarios o lineas en blanco que no aparecen cn la figura 6.7. Una ver ensamblado el programa, se origi- nari un conjunto de archivos entre los que se destacan el hexadecimal (pro01-hex) y el del lis tado (pro01.Ist). El archivo del listado nos pro- porciona informacién muy titil para localizar po- sibles errores de escritura o sintaxis que se hayan ‘cometido en el cédigo del programa. El archivo hexadecimal representa la informacién que se al- macenard en la memoria del microcontrolador ‘mediance una tarjeta programadora. En el comér- cio se pueden conseguir muchas marcas de pro- gramadores de gran calidad, entre ellas la tar- jeta K-24 de CEKIT, cuya estructura, funcio- rnamiento y manejo se ha estudiado en el proyec 10 9 de este curso. Una vez programado el mi crocontrolador, se debe montar en el protoboard o en el circircuito impreso para hacer las prucbas finales y la depuracién del sistema final. Una ver clegidas las opciones presentadas por el ensamblador, figura 6.10, pulse el born Ass- emble (ensamblar). Pasado un breve tiempo, el ensamblador desplicga una caja de didlogo con el estado final de la compilacién. Sino ha come- tido errores al digitar el programa, obtendra la pantalla que se ve en la figura 6.12. Figura 6.12, Proceso de ensamblae corecto Los datos que seguramente aparecerdin en su pantalla podrén no coincidir con los mostrados en la figura 6.12, Esto se explica porque cl nti- mero de lineas de su programa podria contenet cas en blanco que no aparecen comentarios 0 en la figura 6.9. Haga clic para cerrarla caja de didlogo. Ahora usted dispone en su directorio de trabajo de los archivos generados por el ensamblador. Observe la lista mostrada en la figura 6.13. ‘Figura 6.13. Arctivos generados en ef proceso de ensamiajo Programacion El siguiente paso consiste en transfer el ar- chivo binario ProO1.hex a la memoria del mi- crocontrolador. Grabando el programa en el microcontrolador Para grabar un archivo binario en la memoria del microcontrolador usted debe disponer de un dis- positivo que cumpla con esta funcién, Un buen jemplo de ello es el Programador PIC K-224 de CEKIT S.A. La figura 6.14 muestra el Progra- mador K-24, Flgura 6.14. Programador de PIC K-224 EI K-224 debe conectarse al puerto serial de una computadora personal. Esto significa que el proceso de grabacién serd realizado a partir de un programa de computadora. El manejo de la rarjeray pliamente en el proyecto 9 de esta obra, de ma- nera que proceda a grabar el archivo hexadec mal dentro de la memoria interna del microcor trolador. Los pardmetros adecuados de configu- racién son: Oscilador XT, Proteccién de cédigo deshabilitado, Watchdog Timer deshabilitado y Power-up Timer deshabilirado. Inserte ahora el microcontrolador en alguno de los sistemas que usted ha elegido para probar su proyecto: el pro- soboard, el entrenador o un circuito impreso. Tan el programa ya se documentaron am- pronto energice el circuito, deberfa observar como se activa el diodo LED. Si ha tenido éxito, felicitaciones. En caso contrario, no se desani- ‘me: sin duda ha omitido algdn paso, Repita nue- vamente el proceso curso rte sobre Meroconttadores AIC ® en Algunas observaciones finales En los préximos apartados le mostraremos algu- nas variantes que usted puede probar en su pro- yecto y que tienen cierta importancia practic. Variantes en el conteol de terminacién del programa El mecanismo de terminacién que le presenta- mos en la figura 6.9 es el mas indicado para el proyecto que estamos desarrollando. En mu- chas ocasiones, sin embargo, es necesario re- gresar, dentro del ciclo cerrado, a una instruc- cidn anterior. Aunque no es el caso para nues- tro proyecto, observe como se podria aplicar. [ciclo movwf PUERTOB ;Se tronsfiere el Heontenido det jregistro W sal puerto B, es decir, W > PUERTOB. Con esto ise energiza el led jconectado al bit @ del PUERTO B Esta instruccién salta 30 la etiqueta “ciclo”. Esto crea un ciclo icerrado escribiendo ssobre el puerto B. goto ciclo El funcionamiento del circuito no se afecta en absoluto. Naturalmente, dependiendo de la linea en donde se coloque la etiqueta se produci- rin resultados diferentes, lo que tiene que ver con Ia estructura del programa fuente. Not Es posible escribir el programa sin emplear un ciclo cerrado al finalizar el cédigo. Observe el cédigo fuente que sigue: movwf PUERTOB_ ~—_;W -> PUERTOB sTenmina el. proceso jde ensanblaje Este programa funciona igualmente bien, pero no lo recomendamos como técnica valida de programacién. Utilice siempre un ciclo cerra- W. movw registro ra insteuccion movw? dispone de un solo ope- rando, Este operando hace referencia a un re- gistro. La instruccién movwf transfiere el con- tenido del registro W al registro especificado. En términos simples, W —> registro. bof registro ndimero_bit Faria ieeton at clea dr opeemdoe pr mero corresponde a uno de los registros del microcontrolador. El segundo se refiere a uno de los bits del registro. Esta instruccién coloca| en 1 el bit seleccionado, pero sin afectar los restantes bits del registro. clef registro [Ta instruccién ele? weliza un operando que co-| rresponde a un registro del microcontrolador. Esta instruccién coloca ceros en todos los bits del registro seleccionado. etiqueta Saran ee ELSE | coincidir con una etiqueta definida dentro del programa. Esta instruceién obliga al microcon- trolador a continuar el flujo de ejecucién a par- tirde la linea que contiene dicha etiqueta. Ejercicio No. 2. Encender y apagar un diodo LED Propésito general El objetivo del siguiente ejerecicio es continuar con las ideas bésicas desarrolladas en la leccién anterior. Vamos a aprovechar el circuito anterior, asi como los elementos de programacién del toe cue Figura 6.18 seo fsico del circuit de control de un odo LED PICIGE84, Como verd, una parte importante del ejercicio anterior tendra una aplicacién com- pleta en el presente cjercicio, Para empezar, recordemos la estructura del Circuito mostrado en la figura 6.16. Propésito especifico El proésito especifico de este ejercicioes hacer titilar un diodo LED con una frecuencia cons- tante. Fsto se logra aplicando al diodo un volta- je en forma de onda cuadrada, figura 6.17. Analisis Lo que se pretende en este proyecto es generar una sefial de nivel alto en la puerta PBO du- rante un cierto intervalo de tiempo y luego una sefial de nivel bajo durante el mismo periodo de non “0 | a i w freon a a " bere) i 8 0 0 Figura 6.17 Apicacén do una seal cuadrada aun olodo LED tiempo. Para que el ojo humano pueda visualizar el cambio de estado en el LED, debemos hacer que cada nivel de salida permanezca durante un intervalo de tiempo; si no lo hacemos, el microcon- trolador ejecutard tan répido el proceso que no veremos ningun cambio. A. este intervalo de tiempo se le conoce con el nombre de retardo. Pasado este tiempo, el cual se puede configurar usan- do técnicas de programacién, la sefial aplicada debe pasar a cero. Ahora bien, él tiempo durante el cual el voltaje permanece en cero también puede ser controlado con ins- trucciones de programa. Nota: Por comodidad, ambos tiempos pueden ser exac- tamente iguales. En este punto, si queremos que el proceso se desarrolle de manera repetitiva, basta con ejecutar nuevamente el proceso que se descri- bid en el pérrafo anterior. La figura 6.18 mues- tra el diagrama de flujo que se acomoda al pro- ceso descrito, ‘Figura 6.18 Diggrama de fyo del programa que permite ‘encendery apagar un LED & BHAT: curso ricvco sore Werocontladores Programacion Estructura repetitiva Observe como se aplican estas ideas al El diagrama de flujo presentado en la figura 6.18 diagrama de flujo de la figura 6.19. permite ilustrar un aspecto de gran importancia que se presenta al programar un microcontrolador. Este Condicién inicial ( N= 100) aspecto se refiere alas estructuras cclicas controla- das mediante el uso de una condicién logica. Algu- nas eseructurasrepetitivas son simples, como la mos- trada en la figura 6.18, pero otras presentan un mayor grado de complejidad. La figura 6.19 pre- sentael esquema general de una estructura repetci- va, pero ilustrando un caso particular: una instruc- Punto de retorno Instruccién (Instruccién) Instruceién (Instruccién) Cambiar condicién incial (N= N- 1) Verificar la condicién final (N= 02) SiNO se cumple la condicién final, saltar al punto de retorno (Saltar a punto de retorno) Si se cumple la condicién final, -———e continuar con la siguiente instruccién después del ciclo ‘—Instruccién idn simple que se ejecuta 100 veces. Estas instrucciones en seudocédigo (instruc- ciones en espanol) representan otro punto de vista de lo que es una estructura repetitiva, Para algunas personas es bastante més claro un diagra- ma de flujo, aunque en realidad todo depende del punto de vista y del estilo del programador si que esté desarrollando el trabajo. Figura 6.19 Digrama de yo de una estucturarevetiva Precaucién Las estructurasrepetitivas se caracterizan por _Esimportante tomar en cuenta el siguiente punto: disponer de los siguience elementos: Ecler WO repent ela per canismo que permita cambiar la condicién ini- Condicién inicial cial, En caso de no hacerlo, el programa podria -—-Punto de retorno dar vuelta ‘para siempre”, impidiendo que lasac- Instruccién. ciones que vienen a continuacién se ejecuten. Instruccién Elcaso mencionado es posiblemente el pun- Cambiar la condi to més importante que se debe tener en cuenta a Verificar la condicién final la hora de programar estructuras repetitivas. No SiNO se cumple la condicién final, respetar este principio puede Ilevar a errores que L____ saltar al punto de retorno impidan el normal desarrollo del programa. Si se cumple la condicién final, ;—— continuarconlasiguiente instruccién Subrutinas después del ciclo Una subrutina es un conjunto de instrucciones Ls Instruccién que se ejecutan sdlo si son Hamadas desde otro programa. El concepto es el siguiente: un pro- ars prictc sobre Mevocnraioes EMCI. © sa oo ESET grama de microcontrolador ejecuta, en ciertos puntos de su desarrollo secuencial, un conjunto de instrucciones externas mediante el uso de una instruccién de llamado (CALL). A este paquete externo de instrucciones s lo conoce con el nom- bre de subrutina. La figura 6.20 presenta la estructura de una subrutina, Subrutina ied Figura 6.20 Estructura de una subratina Programa principal 2Qué ventajas tienen las subrucinas? A uacién mencionamos algunas de las ms importantes: 1, El programa es mas ficil de leer y de escribir. La raz6n de esto se encuentra en que cada ver ‘que se requieren procesos repetitivos se escri- be una subrutina que contenga las instruc- ciones que deben repetirse,y se las llama cuan- do sea conveniente. 2. Al escribir una sola ver el conjunto de ins- trucciones se evita la posibilidad de cometer cerrores de digitalizacién. 3. Se ahorra un considerable espacio de memo- ria, ya que es mds corto utilizar una instruc- cin de Hamada, que escribir en su lugar todas las instrucciones contenidas en la subrutina. Instruccién CALL La instruceién que permite llamar a una subru- tina es la instruccién CALL. Lo tinico que se re- quiere es indicar la direccién en donde se en- cuentra dicha subrutina. La sintaxis de la instruc- cién CALL es la siguiente: CALL etiqueta La etiqueta es una constante que se refiere a una posicién en memoria y esté ligada a la pri- ‘mera instruccién de la subrutina, Mas adelante se vera como aplicar la instruccién CALL. Instruccion RETURN La instruccién RETURN permite retornar des- de una subrutina, La sintaxis de un retorno de subrutina es la siguiente: RETURN La subrutina rerorna al punto en donde fue llamada, Existen otras instrucciones de retorno de subrutina que serin vistas en su debido momento, Estructura de una subrutina Lacstructura general de una subrutina es la siguiente: struccién 1 truccién 2 exiquera RETURN Una subrutina debe escribirse aparte del pro- grama principal. Llamados a una subrutina desde un programa Laapariencia que tendrd, en términos informales, cl proceso de llamadas a subrutinas es la siguiente: instruccién —_retardo_instruecién ; instruccién CALL retardo’ 5 instruccién instruccién return CALL retardo! instruccién En este ejemplo se supone que la etiqueta retardo marca el punto en donde se encuentra la & GIT: ows pices en crete primera instruccidn de la subrutina. La tltima instruccién de la subrutina es return, Instruccién de soporte Para que los ciclos repetitivos se puedan ejecu- tar efectivamente, es necesario tener instruccio- nes que permitan verificar una determinada condicién. El siguiente segmento de cédigo ilus- tra este proceso. interno decfsz registro3 3Se resta uno al registro3. 3Si el valor resultante es cero 3(e curple 1a condicién), salta ja la instruccién después de goto”. 3Si el contenido del registro3 jatin'no es cero (no se cumple jla condicién), ejecuta lo Hinstruccién “goto”. jla instruccién goto Csaltar) eva nuevanente a la etiqueta interno” gotointerno 3Genera un ciclo E] registro3 es un registro del microcon- uolador que contiene un valor numérico. La instruccién decfsz se caracteriza por hacer, ella sola, varias funciones muy particulares. En pri- ‘mer lugar, resta el ntimero uno al contenido del registro correspondiente, en este caso al regis 103. Si el contenido del registro3 atin no es cero, es decir, no se cumple la condicién final, cjecuta la instruccién siguiente. Dado que esta instruccién es un salto (goto) a la etiqueta interno, el programa entra a.un ciclo repetitivo. Si después de restar uno al registro3 en alguna iteracién del ciclo, se obtiene el valor cero, se habré alcanzado la condicién final. La instruccién deefse genera un salto automatico ala siguiente instruccién después de goto in- terno. Esto garantiza que cuando se alcance la condicién final el ciclo terminard, y el progra- ‘ma podré continuar su desarrollo normal. Programacion Nota: Todos los ciclos generan algiin tipo de retardo. La figura 6.21 presenta el diagrama de flujo de la estructura repetitiva basada en el eédigo presentado, re Figura 6.21 Diagrama de fuo de ies instruciones que generan un retardo Registros de trabajo Usualmente los ciclos (estructuras repetitivas) requieren el uso de registros para almacenar informacién que varfa en el tiempo. Para nues- tro proyecto vamos a definir los siguientes re- gistros de trabajo: REGISTRO EQU OxaC Primer registro de trabajo REGISTROZ EQU Ox@D ;Sequndo registro de trabajo REGISTRO3 EQU Ox0E sTercer registro de trabajo Control de estructuras repetitivas El tiempo de un retardo generado por un ciclo repetitivo depende del valor inicial que se asig- ne al registro de trabajo. Para nuestro proyec- to vamos a utilizar las siguientes constantes. caro pits sobre merocontotares SGC: © ca ee DATOL «= EQU. «25, ;Dato usado para el sretardo externo paTO2 = EQU. 30 sDato usado para el jretardo medio DATs. EQU. 35 yDato usado para el sretardo interno Estructuras repetitivas anidadas Como se veré.a lo largo de su uso, las estructu- ivas_por sf solas, a pesar de su po- ras repet assure COPS Ciclo interno ea Figura 6.22 Estrocturas repetitvas anidadas tencia, en muchas ocasiones no son suficien- tes para lograr el objetivo propuesto. Por este motivo se acostumbra recurrir a ciclos dentro de ciclos, lo cual contribuye a aumentar el tiempo de retardo generado, Esta técnica de creacién de retardos muchos la denominan retardo por software y ya la hemos wtilizado en varias oportunidades en nuestra seccién de proyectos. La idea de esta técnica es ejecutar muchas veces una serie de instrucciones que en realidad no hacen ninguna tarea importan- te, pero que si emplean ciclos de méquina y por lo tanto mpo. Desde que la aplicacién que nos encon- tremos desarrollando lo permira (cuando el mi- crocontrolador entra a esta rutina, desatiende cualquier otra tarea a menos que ocurra una interrupcién), podemos incorporar estas ¢s- tructuras para logear un retardo de cualqui tiempo. La figura 6,22 muestra'la estructura de un ciclo anidado. Codificacion de un ciclo anidado A continuacién se presenta la codificacién en len- guaje ensamblador de un ciclo anidado. retardo moviw ——DATOL movwf ——_-REGISTROL externo moviw ATOZ movwf _-REGISTRO2 medio movlw ——_-DATO3 movwf ——_-REGISTRO3 interno decfsz —_REGISTRO3 goto interno decfsz REGISTROZ goto medio decfsz REGISTROL goto externo Listado del programa Estudie con cuidado el siguiente listado, el cual corresponde al programa completo, tal y como debe introducirse en la memoria del microcontrolador, una vez convertido en cé- digo hexadecimal. @ RICH: cursoprcteo ste Merconraadoes Pro@S.asm seat CEKIT S.A. 5 FECHA.....: Mayo de 2001 + COMENTARIO: £1 prograna Pro0S.asm enciende ‘apaga alternativanente un idiodo LeD. ust pal6F84 —_;Se utiliza el PIC 16F84 RADIX Hex 3Se utiliza et jsistena hexadeciral 5 ZONA DE ETIQUETAS Iw EU 8 5 Si el destino yes W, debe utilizarse sel numero @ F eu 3St el destino es F, jdebe utilizarse el jndmero 1 PUERTOB EQU —@x06_—_;La posicion Oxo6 scorresponde al puerto 8) seuando el bonco 0 esté) jseleccionado [TRISB EQU x86; La posicién ax06 jpermite configurar el jpuerto 8 como entrada 30 como solide JESTADO EQU x03 EL Registro de estado] EGISTIOL EQU —@xOC_—_—;Registro de trabajo EGISIR EQU @X9D._——;Registro de trabajo IRGISINB EQU —OxOE_—jRegistro de trabajo loaToxEQU © 25 Dato usado para el pretardo externo Joaroz equ 30 Dato usodo para el retardo medio Dato usado para el retardo interno loatos equ 35 INICIO DEL PROGRAMA orc @ sEstablecimiento GOTO INICIO. del punto de inicio ore 5 del. progrona CODIGO DEL PROGRAMA inicio bsf —_ESTADO,5 ;Coloca un 1 en el bit| 35 del registro de Iciclo clrt bef movin call novlw now call goto TRISE. EsTa00,5 PueRTOR retardo PUERTOR retardo ciclo estado, Esto selecciona el banco 1 de conjunto jde registros de memoria 5AM Cuando se alnoceran ceros| yen 0x06, estando $seleccionado el banco 1, el puerto B se configura sbanco @ del. conjunto de| 5registros de memoria Rab iver mopa) Se coloca a 1 el bit de {menor peso del registro W. 3En W se almacena 0000001 3Se transfiere el cntani jdel registro W ol puerto B. Esto significa 3W > PUERTOB. Esta accion permite jenergizar el diodo LED sconectado al bit 0 del sPUERTO B Antes de qpagar el LED, jse Tana a la subrutina jde retardo. Esto jgarantiza que el diodo jLED permaneceré jencendido durante un stiempo espect Fico 3Se coloca a cero el jregistro W. 38 N se olmacena 00e0000| ;Se trensfiere el cantenido| del registro W al puerto| B. Esto significa W ->| ;PUERTOB.. Esta accion permite jopagar el diodo LED jeonectado al bit 0 det! PUERTO B Antes de encender inuevanente el diodo LED, se Vana a le subrutina| ide retardo. sEsto garantiza que el idtodo LED permanecera Sepagado durante un tierpo sspecifico La instruccién “goto” jsalta a la etiqeta “ciclo” sEsta instruccién de jsalto permite repetir Snuevanente el proceso de encendido y apagado + SUBRUTINA DE RETARDO + Las instrucciones que siguen sélo se lejecutan si son Tlamadas con } una instruccién “cal” datot ;Se carga W con el valor jen datot (25) registrol ;Se treslach W al. registrol| @ato2 ;Se carga W con el valor yen dato2 (30) movnf registra? ;Se trasladh W al registr2| Inedio moviw dato3_;Se carga W con el valor jen dato3 (35) movnf —ragistre8 ;Se traslara W al registra} finterno decfsz registr3 ;Se resta uo al. registr3. jsi el volor resultante jes cero salta a la sinstruccién siguiente. En caso contrario jeentinin cn lo siguiente Hinstruccion. Esta jinstruccién (goto) 1o jhace regresar a la etiqueta “interno” interno ;Gener el ciclo “interno” registred ;Si Tega a esta jinstruccién, es porque jel registro3 alcanz6 el valor cero, Ahora se jrepite lo anterior jpara el registro2, pero jesta vez saltando a ja etiqueta “medio” medio Genera el ciclo “redio™ registrot;Si llega a esta Finstruccién, es porque jel registrez alcanz6 el valor cero, Ahora se srepite lo anterior para el registrot, pero esta vez saltondo a 1a jetiqueta “externa” Sin erborgo, chora hey yuna diferencia: ‘cuando et registrot goto dectsz goto decfsz jadquiere el valor cero, je no hay nds irstrucciores| sde salto. E1 prograna| fantinia an la instruccin| jtreturn® 1a cual hace| que el prograna termine sel Llama a 1a subruting Genera el ciclo “exterma”| ; RETORNO DE LA SUBRUTINA goto externo return sPermite retomnar de 1a jsubruting 5; FINAL DEL PROGRAMA END 3Fin del. prograna Nota: Para el registro TRISB se ha utilizado la direc- mn 0x86. Esto dirige al microcontrolador di- rectamente al segundo banco de memoria Conclusion La programacién es un arte que se estructura por capas: cada ver que usted domina una técnica en particular, ésta le ser ttil para un problema de mayor complejidad. Ejercicio No. 3 Lectura de una interrupcion externa (INT) Este tipo de interrupcién trabaja detectando los flancos de una sefial de entrada por un pin deter- minado, el cual se puede ubicar ficilmente por poseer la denominacién INT en el diagrama de las hojas de datos. Como se mostré en la seccién de teorfa, el tipo de flanco debe seleccionarse me- diante el bi¢6 del registro OPCION (INTEDG), siendo las posibilidades la deteccién de flancos de subida o flancos de bajada. El procedimiento exacto que sigue un crocontrolador, desde el momento en que apare- cela interrupcién, es el siguiente. Si se encuentra ejecutando una instruccién la CPU la termina de ejecurar completamente, lee la bandera indi cadora del habilitador global (GIE) y si la en- BIR: cam rics sve arvessvintion ‘cuentra activada quiere decir que las interrupciones se encuentran habi Titadas. Ahora debe decectar si la bandera indicadora de incerrupcién INT se encuentra activada, si es asi procede la secuencia de interrup- cién, Si alguna de las dos banderas anteriores se encuentra desactivada, el microcontrolador hari caso omi- so de las interrupciones que oct ran y continuaré con su trabajo normalmente. Fue oie Asumiendo quese detectaron co- rrectaamente ambas bandera el micro- controlador borra la bandera del ha- bilitador global, esto para evitar reconocer interrup- jones adicionales, luego guarda la direccién de re- tomo en la pila y sata ala direccién 04. El circuito de la figura 6.23 nos serviré como jercicio para detectar una interrupcién de este tipo y familiarizarnos con su manejo, y las posi- bilidades que podemos tener. En la figura 6.24 observamos el c6digo fuen- tedel ejercicio y en la figura 6.25 su diagrama de flujo, con estos dos elementos poclemos tener una idea muy completa del desarrollo del ejercicio. En este ejercicio el microcontrolador lee el jumper J\ que se encuentra conectado al pin 1 del puerto A y muestra su estado en el pin 2 del puerto A; en esta operacién permanece hasta que aparece una interrupcién externa. Cuando aparece una interrupcién externa el microcontrolador salra a la posicién 04, donde se encuentra la subrutina de la interrupeién, Ella activa el LED indicador ubicado en el pin 3 del puerto A como sefializacién de que ha ocurrido dicha interrupcién, Descripcion del programa En el cddigo fuente mostrado en la figura 6.24, podemos observar las partes fundamentales que curs pricico sot Merocontoadons GACT: On TEE ACL Figura 6.23 Circuito basco para trabajar con una intorupciin externa INT ; EJERCICTIO: LECTURA DE UNA INTERRUPCTON EXTERNA i — List pei6Fe4 radix "hex oR @ Coto Nrcro ors 4 Movin 8701122112" OPTTON, CF TNTCON,1 —jBORRAR BANDERA. INT BSF INTCON|7 ACTIVA ABILITADOR LOBAL BSF INTCON,4 —:HABTLITAR TNTERRUPCTON lint MovLN 8790000030" TRIS PUERTOA BCF PUERTOA,2 CF PUERTOA,3 jon E [PRUEBRBTESS PUERTOA,1 SCONETGURAR PUERTO A INTCIALTZAR PINES 2 ¥ 3 DEL PUERTO & LEO EL JUMPER 31 Goro errquerAt | lerrqueraz {ST ESTA DEsacTrvano BSF PUERTOA,2 SE PONE EN ALTO EL PIN 21 GOTO PRUEBA "DEL PUERTO & lerrqueTaa SI ESTA ACTIVADO CF PUERTOA,2 SE PONE EN BAJO EL PIN 2] GOTO PRUEBA "DEL PUERTO A 5 ae - LINTERRUPCION BSF PUERTOA,3 lcrcto Goro cxcio END SE PONE EN ALTO EL PIN 3 DEL PUERTO A Figura 6:24 Ccgo fuente del aecicio de lectura de una Interupoién extra @ Figura 6.25 Diagrama de fj del jeri de letra de una iterupcin extorna componen un programa en lenguaje ensam- blador. En la parte etiquetada con la letra A se han escrito dos directivas que simplemente sir- ven para establecer algunas configuraciones que el programa ensamblador utilizaré para crear el cédigo objeto; en este caso se declara que se va a trabajar con un PICI6F84 y que el for- mato por defecto de los valores constantes es el hexadecimal. Siempre que desarrollamos un programa para microcontrolador, debemos especificar el mapa cde memoria RAM que se va a manejar. Este mapa de direcciones debe contener los puertos, el re- gistro de estado, el registro de interrupciones, etc. esto es, los registros especiales o SFR y los regis- twos de propésito general que vamos a utilizar para nuestras variables. Esas definiciones estin dadas en la seccién B del programa a través de las directivas EQU. La funcién de esta directiva es definir una cons- tantea un nombre en el programa; cualquier va- lor definido por EQU es fijo y no se puede mo- dificar en ninguna parte del programa. Especificamente para este ejercicio, solo ne- cesitamos definir las direcciones del puerto A y de INTCON que son los registros que vamos a utilizar; al registro de trabajo W se ha asignado el miimero 1 y a la letra F el ntimero 0, de esta manera, dentro del programa, cada que ponga- mos la letra W, el microcontrolador entender4 que equivale a poner un 1. En el bloque C del programa establecemos las direcciones dentro de la memoria de pro- grama, del inicio del programa y del cédigo de la rutina de interrupcién, a través de la ditecti- va ORG. Recordemos que en la leccién de or- ganizacién de la memoria observamos que efec- tivamente la rutina de interrupcién se ubica en la direccién 04. En el bloque D es donde realmente se inicia nuestro programa. En primer lugar configuramos adecuadamente el registro OPCION; para llevar a cabo esta tarea debemos cargar W con el ntime- ro deseado y teclear la instrucci6n OPTION. En este caso W se ha cargado mediante la instruccién MOVLW BOLL 11111". Ella carga en W el ntimero B’0111111’ en donde la B an- tes del ntimero quiere decir que se encuentra en noracién binaria, Si nos basamos en el mapa del registro OPCION que vimos en la leccién de la ALU y la CPU, podemos decir que se van a leer flancos de bajada para la interrupcién externa debido al 1 en el bit 6 (INTEDG). @ RIT cw icten rire Merseenveietces Ahora debemos trabajar con el registro INT- CON que vimos en la leccién de teorfa de mane- jo de interrupciones. Para que el microcontrola- dor esté en capacidad de manejar la interrupcién externa debemos habilitarla, poniendo un 1 en los bins 4 y 7 de INTCON, que corsesponden al ha- bilitador de la interrupcién INT y al habilitador global de las interrupciones (GIE). Finalmente, dentro del mismo bloque D configuramos el fun- cionamiento del puerto A para que opere de acuer- do al circuito planteado en este ejercicio. A partir de este momento, el microcontrolador estaré ala espera de un flanco de bajada por el pin INT para generar una interrupcién y saltar a Ja subrutina correspondiente. Los numerales 1 al 5 del diagra- ma de flujo corresponden a este bloque. Enel bloque E se encuentra el programa prin- cipal del ejercicio. Este se ejecutars normal y conti- ‘nuamente hasta que no se presente el flanco de ba- jada en el pin INT. En la linea donde se encuentra la etiqueta PRUEBA se hace una lectura del pin 1 del puerto A que es donde se encuentra el jumper de entrada. Para ello utilizamos la instruccién BTFSS PUERTOA,1, que pregunta siel bit 1 del puerto A se encuentra en 1 y se salta la siguiente instruccién si la respuesta es afirmativa. De acuer- do al estado de dicho bit, saltamos a ETIQUETAL 6 a ETIQUETA2 donde se activa 0 desactiva el LED, deacuerdo alla lectura del jumper. En el diagra- ‘ma de flujo este procedimiento lo podemos apre- ar desde el bloque 6 hasta el bloque 8, donde po- demos ver cada uno de los pasos seguidos. En el bloque F, numeral 9, se encuentra la subrutina de interrupeién, Cuando el microcon- trolador detecta el flanco correspondiente por el pin INT, se dirige hasta este bloque del progra- ‘ma. En este punto el microcontrolador simple- ‘mente activa su salida por el pin 3 del puerto A, sefial con la que nos damos por enterados que se ha entrado a la rutina de interrupcién. Copie este programa en un editor de texto, ensimblelo a través del programa MPASMWIN, (disponible en wwu.mierochip.com) y progrime- Programacién Jo en un microcontrolador PICIGF84, utilizan- do nuestro programador K-224 0 cualquier otro. ‘Monte el circuito en un provoboard y haga todas las pruebas y variaciones que se le ocurran, Re- cuerde que es la préctica la que hace al maestro. Instruccién GOTO El contador de programa salta ala direccién “k’, No afecta a ningiin bir del registro de estado. Sintaxis: GOTO k Ejemplo: GOTO ciclo ‘Antes de la instruccién Contador de programa Después de la instrucci6n Contador de programa = ciclo Instruccién BTFSS Sintaxis BTFSS —&b Prueba el bit“b” del registro “f” y sata una linea si esté en uno. Fjemplo: aqui BIFSS falso. GOTO verdad. regis, 0 Antes de la instruecién Contador de programa = aqui Después de la instruccién Siel bit 0 del registro regis ‘Contadorde programa = verdad Siel bir 0 del registro regis Contador de programa Instruccién BTFSC Sintaxis: BTFSC fb Prucba el bir“b” del registro “f” y salta una linea si ‘std en cero. ‘Fjemplo: aqui BTFSC falso GOTO verdad. regis,0 ‘Antes de la instruccién Contador de programa = aqui Después dela instrucci6n Sie bit 0 del registro regis = 0 Contador de programa = verdad Sic bit 0 del registro regis Contador de programa caw leis sae memmanontonny ANCE e Ete ene Ti Ejercicio No. 4. Partai Generacion de sefiales digitales a través del TMRO En este ejercicio vamos a utilizar las propieda- des del temporizador interno de los PIC deno- minado TMRO para generar una onda cuadra- da que se entrega por un pin del microcontro- lador y se aplica sobre un diodo LED, figura 6.26. Como fuente de sefial para el temporiza- dor se utilizan los ciclos de reloj internos del microcontrolador, sometidos a un proceso de divisién con el médulo prescalador con un fac- tor de 256, Es decir, vamos a dividir la frecuen- cia interna por 256 y con esa frecuencia resul- ante vamos a incrementar secuencialmente el registro del TMRO. ea) Eo ed errr pen) Avagar LED Subrutna de ams En la figura 6.27 podemos apreciar el diagrama de flujo del ejerci configura el funcionamiento del TMRO por —_fagura 6.27 Generactén de sefales digtales mecante el TMRO medio del registro OPCION, se configura el ‘Subrutina de puerto A como salida y luego se entra a un ci- cans clo que basa su funcionamiento en el resultado . del TMRO, En primera instandia se activa e (as) LED de salida permaneciendo en ese estado durante un tiempo determinado, luego se des- activa el LED permaneciendo apagado durante inicialmente se el mismo periodo de tiempo que estuvo encen- Si) dido; este ciclo se repite de manera indefinida. La parte mds interesante del programa es la No} subrutina de retardo desarrollada alrededor del TMRO, la cual vemos en la figura 6.28. Figura 6.28 Subrutina de retardo Cada ver que se invoca la subrutina RETAR- DO, la primera accién que se ejecuta es un borrado del registro TMRO, lo que hace que el temporizador cempiece su ineremento desde cero, Cuando el TMRO trabaja en modo temporizador, quiere decir que se incrementa automticamente con los pulsos inter- nos del relojdividides pore factor establecido con el prescalador. En esta subrutina se hace un chequeo Figura 6.26 Diqrama ssquomatio del eric constante de bit 6 del registro TMRO, que se man- & GIT curs0pr8ct00 vere Mercontetaeres tiene hasta que dicho birse ponga en uno; l iempo transcutrido para que el bit 6 se ponga en uno es el que vamos a utilizar para generar el retardo. Para calcularel retardo procedemos dela iguien- te forma: si utlizamos un cristal de 4 Mhz la frecuen- cia intema es de IMbz, ya que se divide por cuatro (debido a los ciclos de bisqueda y gecucién que stu- diamosen laseccién de tora, lecciones sobre la CPU). Esta frecuencia interna se debe dividir por 256 que es valor configurado con el prescalador lo que nos da un petiodo de 256 us, Este valor mulkplicado por 65, «que esel valor hasta el cual cuenta el TMRO para llegar al bir6, nos da un petiodo final de 16.64 ms. En la prictica, el LED parece estar encendi- do todo el tiempo debido a que 16.64 ms es un tiempo muy corto para ser detectado por el ojo humano. La verdadera forma de esta onda puc- de apreciarse en un osciloscopio. Enlka figura 6.29 podemos apreciar el valor que se debe asignar al registro OPCION para cumplit los requerimicntos del ejercicio;sitcne alguna duda so- bre el significado de cada uno de estos bis, consulte la seccién de teorfa donde se hace una descripcién com- peta del registro OPCION. Finalmente en la figura 6.30 podemos apreciar el eddigo fuente del ejercici. Ejercicio No. 5. Contando eventos externos En el anterior cjrcicio utlizamos el TMRO en el modo de tempotizador; esto significa que se incre- ‘mentaba con los ciclos internos de reloj. En este ejer- BORRO DE NUEVO| RETURN I -> SALGO OE LA SUBRUTINA END. Figura 6.30 Géalgo para ia gneracién de sees ditales curso price str Meeconratoes ARCA: @ Figura 6:31 Dagrama esquemético del jerciio En la figura 6.32 podemos apreciar el diagra- ma de flujo del presente ejercicio, en la figura 6.33 la configuracién del registro OPCION para este caso y en la figura 6.34 el cédigo fuente. La princi- pal diferencia con respecto al jercicio anterior, es Ja configuracién establecida en el registro OPCION, Ja cual brinda la directriz sobre cual es la fuente de sefial que va a utilizar el TMRO; en este caso son los pulsos externos y sobre ellos no ejecuta su accién el prescalador debido a que ese médulo se ha evitado al asignarlo al temporizador watchdog. mt Entiat Cad er acs Geer Figura 6.22 Diagram pare conta eventos externos [INICIO MOVLW OXF; CONFTGURAR PUERTO A ‘TRIS PORTA ; COMO ENTRADAS MOVLW 0x00; CONFIGURAR PUERTO 8 ‘TRIS PORTE ; COMO SALIDAS CLRF PORTB ; INCTAR EL PUERTO 8 CLRF THRO; INCIAR EL TMRO CLRWOT 5 DESACTIVAR WATCHDOG MOVLW 8701101111"; CONFIGURAR EL OPTION 5 REGISTRO THRO CLRF THRO; INICTAR DESDE CERO DE NUEVO cxc.o LIsT p-16F84 RADIX HEX MOVE TMRO,W ; LEER EL THRO MOVWF PORTB ; VISUALTZAR RESULTADO EN EL 3 PUERTO B Goro crcto END @ ICA: 20 pste0 0 Meroconadoes Figura 6.34 Cicigo fuente dei eercicio No.5. CLAWDT Borra la cuenta del temporizador watchdog Sintaxis: CLRWDT Ejemplo: CLRWDT ‘Antes dela instruceién Contador WDT Despues de la instruccién Contador WDT = 00 RETURN Rerorno desde subrutina Después de la subrutina, contador de programa = pila Ejercicio No. 6 Generaci6n de sefiales mediante el TMRO e interrupciones Eneste ejercicio vamosa estudiar otra técnica para ‘generar sefiales digitales; en el ejercicio No. 4 ob- servamos que cada vez que el registro TMRO lle- gaba hasta cierto valor se generaba cada uno de fos tiempos. En esta ocasién vamos a cargar un valor inicial en el TMRO a partir del cual se incre- ‘menta el registro mediante los ciclos de reloj ternos y al desbordarse, genera una interrupcién. El diagrama esquemético de este ejercicio lo podemos apreciar en la figura 6.35 y su montaje prictico sobre un circuito impreso universal en |a figura 6.36. Estando dentro del servicio de interrupcién, se chequea el estado del pin de salida. Si esté en estado légico alto, se pone en bajo y viceversa El cuerpo principal de este programa lo podemos apreciar en el diagrama de flujo de la figura 6.37. Inicialmente se hacen las con- figuraciones basicas para el manejo que se va ahacer sobre las interrupciones y el modo de trabajo del TMRO; se carga un valor especifi- co en el registro TMRO y se entra en un ciclo de espera para el momento en que se presen- te la interrupcién. Programacion Figura 6.25 Diagrama esquemético dl ejerccio Figura 6.36 Monta sobre un circuit moreso universal Figura 6.37 Diagrama de Mj del eercicio cs pric ste vetoes ARCH: @® Geetha) 765A Sutil 0 incon Bandera que se actva cuando se origina una generacién de la interrupcién y ya solo basta esperar el momento en que ella ocurra para ejecutar la subrutina denominada servicio debido al desborde del dei ‘| je interrupcién. das nterrupciones por TRO * Year ial erence La configuracién del TMRO se hace mediante el registro OP- ‘Figura 6.38 Contgurain del regisho WTCON CION; en él se establece que se Resistencias del Getpuets dsteitadas Interupetin externa at flanco fe bajada (no utlizada en este ejercici) Fuente de seal = reo interno ‘ein Prescalador—»Dividir por 128 -asignado al TRO ‘cremento en flanco de subida {no utlizado) va a trabajar con los ciclos inter- nos de reloj y el valor que se va a tomar para el prescalador, figura 6.39. A partir de ese momento el programa espe- ra que se presente el desborde del TMRO y por Jo canto la interrupcién. Cuando ella llega se ejecuta la estructura mostrada en la figura 6.40, en donde se pregunta por el estado actual de la linea de salida y se origina una salida que in- vierte dicha lectura. El cédigo fuente de este cjer- cicio es el que se muestra en la figura 6.41. Servicio de Fgura 6.39 Cogeco del rpsoOPGON Sennen de Es de suponer que dependiendo del valor cargado en el registro TMRO, varfa la frecuen- cia de salida de la sefial digital. Como hemos visto, la configuracién de las interrupciones se hace por medio del registro INTCON (INTerrupt CONtrol), figura 6.38; el primer paso es borrar la bandera TOIF (bit 2), la cual se activa cada vez que se presenta una interrupcién originada por un desborde del registro TMRO. Esta precaucién también se debe tener cn cuenta dentro de la rutina de interrupcién; mien- tras esta bandera permanezca activa no se podrén atender nuevas interrupciones del TMRO. Finalmente se deben activar el bit habili- tador global de interrupciones (GIE) y el bit habilitador de la interrupcién por desborde del TMRO. Con el cumplimienco de estas dos condiciones, se activa en forma definitiva la Pot 0 Figura 6:40 Dagrama de yj el servicio deintrpcién Programa SIRO Emenee] Por la linea de salida, pin I del puerto B, + DEMOSTRACTON DEL USO OEL TIMER® podemos conectar un diodo LED o atin me- jor, visualizar el resultado por medio de un ust panera osciloscopio. Este ejercicio se vuelve intere- faotx Hex sante cuando jugamos con los parametros del sistema para variar la frecuencia de salida y vw Fon llegar a un valor deseado. } MAPA DE MEMORIA Los parimetros con los que podemos jugar Tent es son: al valor dil cristal extern, cl valorasigaado TNTCON «QU 08 al prescalador y el valor cargado inicialmente en el registro TMRO. oe aro cro En las figuras 6.42, 6.43, 6.44 y 6.45 po- coro SeRanr demos apreciar diversas frecuencias gencradas con distintos pardmetros; recordemos que para INICIO YOVLN_8¢000000" | 0 Ho conocer el momento en que se genera la inte- CONFIGURAR PINES EL TRIS oRTS—_ PUERTO B COMO SALTDAS ; CLRF PORTE trupcién, debemos dividir la frecuencia del CF INTCON,2—; AORRAR AANDERA DE INT. | cristal externo por cuatro para saber la frecuen- pea cia interna del microcontrolador; de esta ma- SSF WTC? ABILITAIOR GLOBAL DE ee : peisintinaes neta, sabemos cada cuanto tiempo se incremen- BSF INTCON,S ——§ HABILITAR INTERRUP- ta el registro TMRO. 5 TONES DEL RO nome La veloci mn nt : fond wenn” Curienin nes eetbllern gee cocmm ascent eri tro se ve alterada por la divisién que origina el wov.n x00 prescalador y esta nueva frecuencia incrementa MoVNE TuRo. al TMRO desde el valor en que fue cargado ini- acl ovo ciclo cialmente. Cuando llega a FF y pasa a 00 se ori- SERVICIO 0 rTERRUPCION gina una condicién de desborde y se genera la SeRINT interrupcién donde se modifica la salida. SCF INTCON,2 ——;BRAR BAERS DE INT. et joao, ESTO PERMITE LEER eC TER ‘ed Big bies ‘on este ejercicio culminamos esta serie de BTFSS poRTB,2. PIN REKTO B EVUD?| _Ejercicios bésicos en microcontroladores PIC, al coro acrrv.srT _; ST ESTA EN CERO SE DEBE] igual que el aprendizaje sobre el médulo tempo- wee ia rizador TMRO, que es uno de los més importan- oa oven en sao et err 1 | ts dentro de los microcontroladores. DEL PUERTO 8 eee Hasta ahora hemos visto como utilizar un acrwv.s1t Tor pore, ; POWER eN ALTO eL err 1 | Mictocontrolador PIC como contador y como + EL PUERTO B. temporizador, al igual que se ha mostrado como cone 180 modificar todos los parimetros de su funciona- Hone + CARGAR ESTE VALOR PARA | miento, Ya estamos listas para abordar una nueva } IMICIAR DESDE ALL iene 1 aa Movnr THR INICTAR EL TwRO leccién de ejercicios de un nivel un poco mas ele- eTFIE vado, donde desarrollaremos ¢jercicios de comu- eno nicaciones seriales, manejo de médulos LCD, co- ‘Faure 6.41 Citgo fuente del ero No.6 _niexién de memorias seriales, ete. (Cada vez que el TMRO se desborda se genera ‘una interrupciénenla cual se cambia el estado de a sofa de salida. El nstante en que ocurre ‘un cambio de nivel es el momento exacto en ‘que la intrrupeién es atencida. Figura 6.42 En este caso se ha cargado el TMD con el valor ‘hexadecimal FI y 59a asignado un factor de cvs oe 128 Podemos notar que entre mayor sea el factor de division del TMRO, se necesitaré un tempo ‘mayor para legar al desborde, por o tanto un period mayor. Figura 6.43 Agu se ha iniciaizado el TMRO en 00 ys fa hecho un bypass del prescaladorasigndndolo al watchdog ‘Figura 6.44 En este caso también se ha borrado el TMRO pero se ‘ha hecho una dvsin por 2, crgando el prescalador con 000 en dos tes primaros bis del registro OPIN Fgura 6.45 Aqui ea icilzado of THRO en 00 y la frecuencia eenrace Se a Gi per 32 <> EIEN: corso pric sobre Merocontoldores MICROCONTROLADORE MICRO VIRG) Ya hemos conocido las principales herra- mientas para el desarrollo de proyectos con los microcontroladores PIC. También hemos estudiado algunos ejemplos que ilustran con- ceptos fundamentales para el manejo de es- tos dispositivos. Ahora estamos listos para en- trar a analizar procesos més elaborados de programacién como refuerzo a los concep- tos expuestos en la seccién de teorfa. curso prctico sobre Microcontrotadores MEME WT: 17> Ejercicio No. 7 Conexion de memorias seriales al PIC Las técnicas para almacenar informacién en me- dios electrdnicos se perfeccionan mis cada dia. A diario vemos ejemplos de su utilizacién en nues- tos hogares y oficinas, por ejemplo, en receptores de televisibn, reproductores de discos compactos, sistemas de control remoto, impresoras, fotoco- piadoras,celéfonos eclulares, ete. Una de estas tec- nologfas corresponde a las llamadas memorias EEPROM seriales, las cuales tienen grandes ven- tajas sise comparan con otras posibilidades. Entre sus principales caracteristicas se cuentan: + Se pueden conectar fécilmente con micro- procesadores 0 microcontroladores: inclu- sive algunos de ellos tienen pines dedica- dos para esta labor. “Transferencia de datos de manera serial, lo que permite ahorrar pines del microcontrolador para dedicarlos a otras funciones. Ocupan la décima parte del espacio de las me- morias que trabajan en paralelo. Esto permi- teahorrar dinero debido al menor tamafio del Circuito impreso. El consumo de cortiente es mucho menor que cen las memorias que trabajan en paralelo. Esto las hace ideales para sistemas portatiles que funcionan con baterfas. El objeto de este ejercicio es mostrar los as- pectos mds importantes de su tecnologia y ense- iar conceptos bisicos para su utilizacién en cit- ccuitos reales. Se basa en las memorias que tienen comunicacién a 2 hilos empleando la interfaz PC, 0, A, Vs SDA SCL wee vee “en Ettiseee eCeae e algunas de las_més conocidas son 24LC01/02/ 04/16. La velocidad de transferencia de informa- idn para estos dispositivos es de 100 6 400 kHz (aunque el limite lo impone el protocolo °C, mas no la tecnologfa del dispositive). Como caracte- ristica importance de este elemento se tiene la munidad al ruido, dado que estos circuitos inte agrados tienen fileros en los pines de comunicacién. Estas memorias utilizan el bus de 2hilos para comunicarse con otros dispositivos. Dado que cumplen con el protocolo I°C, tienen un pin lla- mado SCL que recibe los pulsos generados por el dispositivo maestro (0 sea el microcontrola- dor) y otro llamado SDA que mangja el flujo de datos en forma bidireccional (entrada/salida), En Ja figura 7.1 se muestra el diagrama de pines co- rrespondiente a estas memorias. Este dispositivo no requiere de un pin habi- litador 0 chip select, ya que en este esquema la transferencia de informacién sélo se puede ini- iar cuando el bus esté libre. En este caso, como cada dispositive tiene su direccién determinada mediante los pines AO, Al y A2, solamente res- ponderd la memoria cuya direccién coincida con la direccién que va encabezando la trama de in- formacién. En la figura 7.2 se muestra la capaci- dad de almacenamiento de estos dispositivos y las posibilidades de direccionamiento que tienen. ‘Transferencia de la informacién. Cuando el mi- crocontrolador desea entablar comunicacién con Ja memoria, debe enviarle una serie de bits que llevan la siguiente informacién: Dect dl dasa en ets Das y rows ids 0 Pretec eect Si sti on habia Nascruan ia ena 241.001 el pin WP no tan ninguna fncion Figura 7.1 Diagrama de pines de las memerias 24%X Curso practico sobre Microcontroladores «El bit de arranque o start bit Después de esto, la memoria debe enviar 1 2. El cédigo 1010 (propio de estas memorias) _un reconocimiento para informarle al micro- 3. La direccién del dispositive (A2, Al, AO) controlador que recibié la informacién. Dicho 4. Un bir “0” el cual indica que se desea escribir asentimiento, llamado ACK, consiste en poner en la memoria el bus en un nivel bajo (lo hace la memoria). wwe [BS [oo PR] ee migeronaaor zaccore,2aco1 | t 1 fr6ofieo]t6o] 8 ponden a la posicién de memoria za.ooes,24cn2 | 2 1 |re0|160/ 160] 8 que se quiere leer 0 escribir; nue- ‘240048, 24004 4 2 x |160}160 4 vamente la memoria envia un re- 24.0088 8 4 x | xX 1160 2 conocimiento. El paso siguiente 24LC168 16 8 XIX] 1 depende de la operacién que se ‘Figura 7-2 Capac de memory drecionamvento do las mernorias 24L0XX vaya a ejecutar. sol SOA oS ese] 1 $ 1. San. = O para esc ot 2 Codigo 1010 (prio de as 2400) 3 Direcién dl cispositvo en el bus w [pa $ 3 5. Reconocimiento envado por la memeria 6. Dieccion de memoria que se vaaWrabajar 7, Reconocimiento enviado por la memoria | Ox 5 AA Forma de dreccionar la memoria 24XX {7 Tee ToS ea SST eT aT OT ames el ETE TSTSTE TET TO x 7] pee! Orly come ce st Sept oT Lectura dl byte ‘Figura 7.3 Diagramas de tiempos para le letura yl escrtua en una memoria 24LCXX (om iy as nrvencbumars EIT & ¥ Parnes Sise tata de un proceso de escritura el micro- controlador sélo debe enviar el daco que va a ser almacenado y esperar el asentimiento por parte de la memoria para confirmar que llegé correctamen- te, Sise trata de una lectura, nuevamente se deben repetirlos primeros cuatro pasos, solo que en lugar de un “0”, que indica eseritura, se debe enviar un “1", que indica lectura. Después se espera el asenti- iento y, acto seguido, se puede leer el byte con ef dato que estaba en la posicién de memoria que se indicé anteriormente. Cuando se termina la opera- cién, el microcontrolador debe enviar una sefial de parada (stop bit). En la figura 7.3 se muestran los diagramas de tiempos correspondiente a todo el pro- ceso descrito anteriormente. Desarrollo del ejercicio El ejercicio propuesto consiste en hacer un conta- dor de 0 a9 con un interruptor pulsador y w2 display de siete segmentos, donde el ntimero que se muestra en el display se va a almacenar simuleé- neamente en una memoria 24LC01 (LC quiere decir que puede trabajar desde 2 voltios). Se va a utilizar un microcontrolador PICIGF84 (aunque se puede utilizar un 16C61 0 un 16C71). microcontroladores PIC En la figura 7.4 se muestra el diagrama es- quemitico del circuito. En este caso los pines de direccién de la memoria se conectaron a tierra, al igual que el pin WP. La resistencia de 4,7 kQ conectada al pin SDA es necesaria dado que di- cho pin tiene salida de colector abierto (open co- Uector). El display se conecta al puerto A y el pul- sador al pin RBO. El programa que se escribe en el microcon- trolador se muestra en la figura 7.5, su funcién principal es llevar el control de la cuenta decimal yalmacenar en la memoria el mismo dato que se cenvia al display En el programa, la subrutina WAIT pro- duce un retardo en milisegundos. La canti- dad de milisegundos deseada debe escribirse cn el registro /aops antes de hacer el llamado correspondiente. Se utiliza principalmente para hacer un retardo de 10 milisegundos hie- go de escribir un dato en la memoria. Se debe tener en cuenta que los retardos estén calcu- lados para un oscilador de 4 MHz en el mi- crocontrolador. Figura 74 Dagrama esquertico de contador con PCy memoria 24.001 & ARICA T:: corso ,r0t00 stra Merecontrsdores Programacion {ESTE PROGRAWA ELABORA UN CONTADOR DECIMAL CON UN {PULSADOR Y UN OISPLAY DE 7 SEGMENTOS, EL VALOR DE UA GUENTA SE GUAROA EN LA MEMORIA SERIAL 24LC01 Isravus equ 3k {REGISTRO DE ESTADOS roe” equ : Fu 6H FU DH {POSICHEN De MEMORIA QUE SE LEE 0 SCRIBE REGISTRO PARA ESCRIBIR JORTOS EN LA MEMORIA OIRECCION DEL OISPOSITIVO| TOW EL BUS Tze C10i0%xAx0) JUEFER OE TRANSMISION CONTADOR DE BITS {BUFFER DE BITS THUFFER OE RECECTON {SE UTILIZAN EN RETAROOS Ioavao equ ew ‘stave equ OFM Irxeur equ 30H OT QU 1H leepROM QU aH RXeUF QU 13K \Loors qu 15k lLoors2 equ 36k bre? {ATT DE ENTRADA DESDE EEmROM lo eq 6 {BIT OE SALIOA PARA EEPROM Isoara QU 6 LINEA OE DATOS SERIALES HIN 86) Iscux equ 7 RELOD SERIAL (PIN RB) NTA QU I7H FLUE LA GIENA Oe PULSACIES ONTAZ QU 18H VTRISA EU BSH {REGISTRO DE CONFICURACION Joe PUERTO A iTRIss =qU aH REGISTRO OE CONFTGURACTON DEL PUERTO 6. z eu aan BUERA DE CERO OEL REGISTRO $e ESTAS fe equ oon FINDICA QUE EL RESULTADO SE GUARDA EN W cu oon BANDERA DE CARRY RG 0H VECTOR DE RESET oro INICIO RG aH arr STOW ce feeED VME, jToP2 oven 210 EL NERD MLISEGNOS LEGA MavWE —L0OPs2 —JCARGAGO EN EL REGISTRO LoS trop Nor. Nor Nor Nop Nar Nop DECFSZ LOOPS2 —_jPREGINTA ST TERMINO 1 MS coro. 0°. DECFS2 LOOPS J REGNTA SI TERA EL RETHED oro. Tore Revin @ IRETAROO MOVLN 100 = RETARDO DE 100 MILISE@NDOS | wovwF (oops LL WAIT Revin [BSTART ;ES UDA GER EL STIR BT RA LA CDMRICACION SEI wovN 8700172121 TRIS. PTB; PROGRAMAR DATOS RELOJ COMO SALTOAS CF PTOB,SCLK [LINEA DE RELO) EX VEL 8x20 BSF PTOS,SDATA;SE AEA LDEA CE TS BALD no BSF PTOB,SCLK ;LINEA DE RELO) EN ALTO Noe. Nor ;AQUSTE DE TIEMPO nor no Noe CF PTOB,SOATA ;SE BAJA LA LINEA DE DATOS No IEEITAS EL REL ESTA ALTO nor HOUSTE OE TIEMPO Nor Nor BCE PTOB,SCLK SE BAJA LA LINEA O€ RELOD Nor $PARA TERMINAR EL PULSO Nop RETIN. @ stor 57 UDA GEM BL STP TT PPA LA CANCION SERIAL Movin proantai1! TRIS PTOB PROGRAMA RELOJ Y DATOS ack Nar Nor Nap BSF PTOB,SCLX LINEA DE RELO) EN NIVEL ALTO nor Nor Nor BSF PTOB, SDATA:LA LEA TE OT PASA A. LTD NoP {MIEATRAS EL RELO) ESTA ALTO Nop CF PTOB,SCLK ;1A LINEA DE RELO) BAJA No? JVAMENTE. Nop PARA COMPLETAR EL PULSO NOP Ren @ SITOUT ;ESTA RUTINA TOMA EL BIT QUE SE DEBE RANSMITIR Y LO SACA AL PUERTO MOVLN BY9Q11I111";ADEMAS GENERA EL PULSO YE RELOD TRIS PTOB PROGRAMA RELOJ Y DATOS HCOMO SALIDAS. sr SUME QUE EL BIT ES ALTO aTFSS SPREGUNTA ESTADO DEL BIT HQUE SE VA A TRANSMITIR, EL BIT ES BAJO PONE (A SALTOA EN 6420 cr TOR, SDATA LKOUT NOP nap BSF PTOB,SCLK ;SUBE EL NIVEL DE LA No? LINEA DE RELOD Nap PARA FORWAR. EL PULSO Nor Nar CF PTOB,SCLK ;TERMINA PULSO DE RELOD RETIN a SITIN ESTA RUTIMG LEE UN BIT OE LA MAGRIA Y LO FONE EN +N REGISTRO. SF EEPROM,OL PROGRAMA PIN DE DATOS $COMO ENTRADA Pros SF PTOB,SCLK ;SUBE LA LINEA DEL RELOD Nor BTFSS PTOB,SOATA ; ESTADO DEL PIN DE oaToS?| Cr EEPROM,OI {SI ES BAUD LO FOE eV EE CF PTOB,SCLK jSI ES ALTO LO DEJA COM RETIN 0 {SE ASIMIO ANTES ESTA RUTINA SE ENCARGA DE TRANSMITIR UN BYTE HACIA. LA MEMORIA wOvuN 8 MOWWE COUNT. EL NUMERO DE BITS ES 8 LP BCF_—EEPROM,O0 ASME QE BL IT A BD ES BD BTFSC TXBUF,7 QBTA EST FEA 05. BIT BSF EEPROM, DO {St BAUD 1 EX GN GOO HL | CALL BITOUT'—}SAOA EL BIT POR EL PUERTO. RLF TABUF,1._ ROTA EL BYTE QUE SE ESTA Sse se eric FTRANGMETIENGO NOP FMUEVANENTE. LA WEMORTA DECFSZ COUNT PREGUNTA SI YA PASARON Nor. 2 U DOOOA NOD OF LCA floss airs MOVE DATAQ, TOMA EL DATO QUE VA.A Goro THLP—}ST_NO HA TERMINADO SIGUE Move TXBUF” SER GRABADO Y LO EWVtA TRANSMETIENOO ca 1K CALL BETIN. —_JESPERA EL RECONOCIMEENTO CALL stop HENVEADO POR LA Movin 10 RETAROD DE 10 45 AL ESCRIBIR Rev 0 MEMORIA (ACK) wove Loops CADA DATO lax ESTA RUTINA RECIBE UN BYTE Y LO ENTREGA EN CALL WATT REGISTRO RXSUF RETIN @ LaF “RXBUF —;BORRA EL SUFFER DE @ITRADA) [INICIO BSF STATUS,S ;SE UBICA EW EL SEGUNDO son 8 FINOECA QUE RECIBE 8 BITS BANCO OE RAM some COuNT Nov OFOH SE CARGA EL REGISTRO W cn | BCE STATUS,@. ;BORRA EL CARRY Now —TATSA SE PROGRMA EL PUERTO A Ix RLF RXGUF, F ROTA A LA T2QUTEROA cowo satroas CALL BITIN’ LEE UN BIT MoviN —O7FH SE CARA EL REGISTO W cv | BTFSC EEPROM, OF Mom TRIS SE PROGRAMA EL PUERTO B BSF RXBU,O (STESNOSEND FEE ST, ALO {COMO ENTRADAS DECFS2_ COUNT” ;PREGINTA ST COMPLETO’ BITS SCF STATUS, SE UBTCA EN EL PRIMER GOTO RKP SE-NO, RECIE OTRO SIT BANCO DE MEMORTA RAN BSF EEPROM,00 ;ENVIA'EL ACK DE Movi B'10100000'; LA DIRECCTON AB, A, ¥ SSENTDUIENTO A DE LA MEMORIA CALL BITOUT PARA TERAINAR Mome SLAVE [EN EL BUS 12¢ ES 000 RETN CLRF “ADDR [CUANDO SE ENCTENDE EL lLceR ESTA RUTINA RECIBE LA DIRECCION GLE Se SISTEMA SE VERTFICA QUE {ESEA LEER Y DEVELVE EL DATO QUE TIENE GUsADD CALL LEER GEL DATO GUARDADO EN (ALL START GENERA EL START BIT {MEMORIA ESTA ENTRE @ 9) Nor i Movin @aH LA PRUEBR SE HACE PORQUE Nop HUA PRIMERA VEZ QUE’ BCE SLAVE, SELECCIONA LA MEMORIA ‘SUBNE —_RXBUF,M;SE ENCTENDA EL SISTEMA MOVF SLAVE, $Y SELECCIONA MOO DE {SE PUEDE TENER UN PESCRETURA STFS STATUS,C__sNOMERO FUERA DEL. RANco] Mowe Teeur j GTO CICLO" ;PARA LAS OCASIONES au % HEWVIA ESOS DATOS & LA POSTERTORES NO TNBORTA evorra lINr2 —CLAF_——COMTA_FINICTA CONTADOR EN CERO Mov A00R,m RF DATAO MOE TXBUE —jEWvER LA pOSICION DE CALL —_ESCRIB INICIA DATO 0e MeoRta eo POORER QUE Vi SeR Lemos | [crcLo CALL. LEER LEER MEWORIA, DEVUELVE au om ioaro enw Nr AWORA SE SELECCTONA MOVE ——RXBUF,M;PASA EL VALOR DE W AL PUERTO A COISPLAY) nor Mowe CONTA CALL START. GENERA START BIT MOE PTO. Nor CALL -RETARDO;RETARDO ESPERANDO QUE nor SSUELTEN (A TECLA BSF SLAVE, INDICA QUE SE VA A LEER | lpuLsA —BTFSC__PTO8,0 ;PREGINTA SI EL PULSADOR MOVE SLAVE, }SELECCTONA EL DISPOSITIVO ESTA opRINIDO hove TKaUE” Goro PULSA._$ST-NO LO ESTA cONTINOA alo JEWIA ESA INFORVACION REVISANDOLO Nor PA UA MEMORIA. CALL ——_-RETAROO}ST ESTA OPRIWIDO RETAROA CALL RK LA MENORIA ENTREGA EL #100 MILESEGUNOOS BYTE DE ESA DIRECCION BTFSC PTOB,0 ;PARA COMPROBAR BSF EEPROM,00 jENVEA EL ACK DE GOTO PULSA [ST NO LOESTA WELVE A Resa RECONOCINTENTO. INCE CONTA. }ST LO CONFIRM ca srTouT FEINCREMENTA EL CONTADOR CALL BSTOP—_;SE EAA EL STOP BIT PARA. MOVE CONTA,NCARGA EL REGISTRO W COW RETIN 0 INALTZAR COMNICACION SEL VALOR DE LA CUENTA lescrre ;ESTA RUTINA ESCRIGE UN DATO EN LA POSTION MOVE DATAO_ZEL DATO DE LA CUENTA LO DE MEMORIA QUE SE LE TONGUE EN EL REGISTRO ADDR UARDA EN MEMORTA CALL” BSTART GENERA EL START SIT CALL ESCRIB [PARA RECUPERARLO EN CASO Nor DE UN CORTE DE ENERGEA Nor vovE. —CONTA,R BC SLAVE,@_;SELECCTONA LA MEMORIA NORLW GAH" SHACE OPERACEON XOR PARA Move SLAVE.W jy SELECCINS MEKD De ESCRTRA | VER ST-ES TGUAL’A aa MOvNE TKBUF BTFSS —STATUS,2 _sPRUEBA ST EL CONTADOR aL WA E50 OATOS A LA MENCREA SLLEGD A @aH COTEZ) MOVE ADoR, A Goro cICLo_jSE-NO ES IGUAL SE MOVNF TXBUE —;EWEA LA POSICION OE INGREMENTA NORMALVENTE. RARTA QE VA A SER GBD com Nz au AHORA SE_SELECCTONA ENO) Figura 7.5 Programa para el manejo de una mernria serial La subrutina BSTART generacl bir de inicio de a comunicacién, con la temporizacién y estado de los pines adecuados. Por su pare, la subrutina BSTOP hace lo mismo con el bie de parada o de fin de la co- municacién. La subrutina B/TOUT toma el bit del dato que se debe transmit y lo envia hacia la memo- tia, encargindose de programa el pin del microcon- trolador como sida y de generar el puso de reloj ne- ccesario para la sincronizacién. La rutina BITIN hace su parte cuando se st leyendo un bie enviado por la memoria, genera el pulso de reloj y pasa el bit leido al registro 0 buf de entrada, Las rutinas TX'y RX se cencargan de transmitir y recibir un dyte completo de datos. Cada una hace ocho llamados seguidos a las rutinas BITOUT y BITIN respectivamente. Larutina LEER recibe en el registro addr la po- sicién de memoria que se debe leer y genera todas as sefiales necesarias (incluyendo el bitde startyelbitde stop) para obtener el dato que en ella se encuentra grabado, Al final devuelve el dato que recibié de la memoriaen el registro mxbuf La rutina ESCRIBtoma el dato contenido en el registro DATAO y lo escribe en la posicién de la memoria que esté direccionada en el registro addr Cada ver que se enciende el sistema, el micro- controlador lee el dato que se encuentra en la prime- ra posicidn de memoria y lo pasa al alsplay. Una ver que d pulsador sea oprimido, se debe incrementar dicho dato y actualizarse el display, al tiempo que se vuelve a almacenar ese niimero en la memoria. Un ‘caso especial ocurre cuando se enciende el sistema por primera vez, Como el dato que se encuentra gra- bado en la memoria es desconocido, y podria ser su- petior a9, éste se debe probar,ysise encuentra que es mayor, se borra y se empieza la cuenta en 0. Las rutinas que permiten leer y escribir en la memoria 24LCD1se pueden utilizar como parte de cualquier programa sin que se tengan contratiem- pos. Sélo se debe tener en cuenta que las tempori- zaciones estén calculadas para un oscilador de 4 MHz. Con las rutinas LEER y ESCRIB se tiene una velocidad de transferencia de informacién de aproximadamente 60 kHz. Programacion Una prueba, que es muy interesante, consiste en cambiar de posicién el interrupror que seleccio- na la proteccién de escricura. Cuando esté en la posicidn READ/WRITE, se puede incrementar el contador normalmente, mientras que cuando se encuentra en la posicién READ el contador no se incrementa debido a que la memoria esté protegi- da contra escritura. A continuacién detallamos tres instrucciones utlizadas en los ejercicios anteriores. (CALL. Llama una subrutina que est ubicadal aqui CALL rutina Antes de la instruccién: contador de programa = aqui Después de la instruccién: contador de programa = rutina = direccién aqué [RLF Rote el contenido del registro “F” a la iz-| uierda, usando el carry. ISimtaxis: RLF fd jsid= O el resultado se guarda en W, si d=1 el sresultado se guardaen IEjemplo: RLF regis,0 Antes de la instruccién: C=0, W=?, regis = 11100110 Después de la instruccién: C=1, ‘W=11001100 regis = 11100110 [DECESZ. Decrementa el contenido del registro ; sil contenido queda en 00, salta una linea. | |Simeaxis: DECESZ fd [Ejemplo: aqui DECFSZ _regis,1 GOTO ciclo Antes de la instruccién: contador de Programa = aqui Despuésdelainstruccién: regjs= gis 1 si regis = 0, entonces contador de programa = continda si regis <> 0, entonces contador de programa = aqui'+ 1 compaccosonsenarnes Speer: > ex eee ear ec Ejercicio No. 8 Manejo de un médulo LCD Cuando se trabaja en el disefto de circuitos electrénicos es frecuente encontrar la necesi- dad de visualizar un mensaje que tiene que ver con el estado de la maquina que se va a controlar, con instrucciones para el operario; o sies un instrumento de medida, mostrar el valor registrado. En la mayorfa de los casos recurrimos a los displays de siete segmentos; pero éstos, ademas de no mostrar caracteres alfanuméricos ni ASCII, tienen un elevado consumo de corriente y son un poco dispen- diosos de manejar, cuando se requiere hacer multiplexaje. Los médulos de cristal liquido o LCD so- lucionan esto: convenientes y presentan al- gunas ventajas, como un menor consumo de corriente, no hay que preocuparse por hacer multiplexaje, no hay que hacer tablas especia- les con los caracteres que se desea mostrar, se pueden conectar ficilmente con microproce- sadores 0 microcontroladores y, ademés, los proyectos adquieren una éptima presentacién y funcionalidad. En principio, vamos a cono- cer las caracteristicas mas importantes de los médulos, luego mostramos la forma de conec- tarlos con el microcontrolador y presentare- mos programas simples para escribir mensajes en la pantalla, =e Gees Modulos de cristal liquido o LCD Antes de mostrar la forma de conectar estos mé- dulos con el microcontrolador, haremos un pe- quefio recuento de sus principales caracteristicas, las cuales nos serviran para entender mejor los pro- gramas y los diagramas queveremos mas adelante: * Los médulos LCD se encuentran en diferentes presentaciones, por ejemplo (2 lineas por 16 cae racteres), 220, 4x20, 4x40, etc. La forma de ut lizalos y sus interfaces son similares, por 50, los cconceptos vistos aqui se pucden emplear en cual- uiera de ellos. En nuestro caso trabajaremos con un display de 2x16, ya que es de bajo costo, se consigue ficilmente y tiene un tamatio suficente para la mayoria de los circuitos * La figura 7.6 contiene una de las configuracio- nes de pines mas comunes en que se encuen- tran estos dispositivos. Algunos médulos LCD tienen una luz posterior 0 backlight, para me- jorar su visualizacién: ésta se maneja através de dos pines que normalmente se conectan a +5V yatierra, Para evitar que se presenten altas em- peraturas debido a la luz posterior, estos pines los debemos manejar de manera pulsante (en- cendiendo y apagando), con una frecuencia de aproximadamente 60 Hz. Otra opcién mucho més sencilla es utilizar una resistencia de 10 oh- ios (a 1/2WW) para alimentar el terminal posi- tivo de esta luz posterior. Figura 7.6 Configurecin dels pines de ls meédulos LCD 0 Nombre y funcién Tierra, OV Alimencacién +5V Ajuste de voltaje de contraste Seleccién datofcontrol Lectura/escritura en LCD Habiliracién DO Bit menos significative DL D2 D3 D4 Ds D6 D? Bit mis significative Figura 7.7 Funcién de os pines de! médulo LcO Los pines de conexidn de estos médulos inclu- yen un bus de datos de 8 bie, un pin de habili- tacién (E), un pin de seleccién que nos indica que el dato es una instruccidn o un carécter del mensaje (RS), y un pin que indica si se va a es- cribiro lecren el médulo LCD (R/W). La igu- 147.7 describe la funcién de cada uno de ellos. Seguin la operacién que descemos hacer so- breel médulo de cristal liquido, los pines de control E, RS y R/W deben tener un estado determinado. Ademés, debe tener en el bus de datos un cédigo que indique un caricter para mostrar en la pantalla o una instruc- 0, entonces contador de programa = etiqul + 1 [ANDWF Operacién légica AND entre un re- gistro “f” y el registro W Sintaxis: ANDWE fd ANDWF FSR,L TORLW Operacién logica OR entte el registro Wy el literal “KY Sintaxis: JORLW k Ejemplo: IORLW 35 ‘Antes de la instruccién: W = 9A Después de la instruccié [CLRW Borra el contenido del registro W, lo carga con 00 Sintaxis: CLRW Ejemplo: CLRW Antes de la instruccién: W=5A Después de la instruccién: W=00 TORWE Operacién légica OR entre el registro W y el registro “fF” Sintaxis: IORWE fd Ejemplo: IORWF regis,0 ‘Antes de la instruccién: regis = 13 , W Después de la instruccién: regis = 13, 1 3 a eo ince ag MOVE Mueve el contenido del registro Sintaxis: MOVE fd Ejemplo: MOVE regis,0 Antes de la instruccién: W=? Después de la instruccién: W= valor guardado on regis OPTION Carga el registro OPCION con el contenido del registro W Sintaxis: OPTION Ejemplo: OPTION Esta instruccién se considera obsolera, pero por facilidad en el aprendizaj, se utiliza en el nivel basico. RETFIE Retorno del llamado a interrupcién. Sintaxis: RETFIE Ejemplo: RETFIE Antes de la instruccidn: Contador de programa = ? Después de la instruccién: ‘Contador de programa = pila SUBLW testa el contenido del registro W del literal “K Sintaxis: SUBLW k Ejemplo 1: SUBLW 02 Antes de la instrucci Después de la instruc (positive) Ejemplo 2: ‘Antes de la instrucciéi W=2, C= Después della instruccién: W-0, C «1 (cero) Ejemplo 3: ‘Antes de la instruceién: W=3, C=? Después de la instruccién: (negativo) Después de la instruccion: regis=1, W = 2, C=1 (positivo) Ejemplo 2: Antes de la instrucci6n: regis=2, W = 2, C=? Después de la instrucci Ca1 (cero) Ejemplo 3: Antes dela inscruccién: re Después de la instruccis C-0 (negativo) SWAPF Intercambia los cuatro bits altos y los ‘cuatro bits bajos del registro “f” |Sintaxis: SWAPF fd [Ejemplo: SWAPF regis,0 ‘Antes de la instruccién: regis = AS, W Después dela instruccién: regis = A5, W=5A TRIS Carga el registro TRIS (programacién de los puertos como entrada/salida) con el conteni- ldo del registro W [Sintaxis: TRIS £ Ejemplo: TRIS puertoA. Esa inscruccidn se considera obsoleta, pero por facilidad en el aprendizaje, se utiliza en el nivel basico, IXORLW Operacién logica XOR entre el re- gistro W y el literal “k’ Sintaxis: XORLW kk Ejemplo: XORLW AF ‘Antes de la instruccién: W = BS Después de la instruccién: W= 1A SUBWE resta el contenido del registro W del registro “F" Sintaxis: SUBWF fd Ejemplo 1: SUBLW _regis,1 Antes dela instruccién: regise3,W'= 2, C=? [XORWE Operacién lgica XOR entre el regis- tro W y el registro “F” Sintaxis: XORWF fd Ejemplo: XORWE regis, Antes de la instruccién: regis = AF, W = BS Después de la instruccién: regis = 1A, W =B5 & GPCI Rare rtct00 sore Mescontetores SHH Ey EJERCICIOS CON MICROCONTROLADORES MOTOROLA A partir de esta leccién iniciaremos una serie de ejercicios con los microcontroladores Moto- rola. Debido a su arquitectura CISC, los mi crocontroladores de la familia HC08 cuentan con una gran cantidad de instrucciones. Para poder desarrollar mejor los ejercicios, podemos tenerlas como referencia en la tabla con que ini- ciamos esta leccién. 00 moe a0. 100 ooo ‘00cm ‘oem ed suaron ey sree sP meter at otc Foucon aa ase sews canvecee Sedona Efecto sobre con Viwjt pez ye ae tty aye yt secansiie-m slehe shes ee 8m -|- ewan of-tett ht r tect sobre ok Forma | Oper owen Teta ete] oldee ore famruuvn — |pe=-ponencanonns : ore manerReaee [re-post > st lewatoeRiaene fe ron 0 > see Iran oom ofllg dt : rox ai mee : er fausrenrons —|pea-poumasone : inant | wom |e roe pension : tie amet —fee-po.tuzttant : wor fwsomerar — fee-roroazmwons |-|-|-| : me frs me jes rosmanes | -| ttm raenmmae pearance : mew fomswnnw —frepovnannae | -| > out faa rox ecco dele ep 5 sansa leaiaracantoen| ie ronsosintai) | t > ree eowsme a : re rosntnnaent : ‘ ea | ‘ cece lomemerseyean ee ro-sectemi att ‘ coms Possiasnnn 0-50 ‘ cam fe Posse ano ‘ ca rors 0 : cour + Poon MAD ‘ cose! ro-s - ‘ co |omaaenineteas| =? ° | : anes = > one o ‘ ore empenemacen— |qyan thle : own 3 = =e iia cate oovertmsre neferr e- can {ow s-astan | ea par core tenses cous ams cee "esr coon sinner | gx gang) t omrerome nes [am t norte |g of fret rocco ane | fee Pontmtenanemete ce fame ne-mose t ee neo oe je eg enact mx (mes (mee nest frcwme eons t es eae er aso reat won rooce went seers I+ smesrcin news sew Haass |ree-pousmizes see Pees Fr 00t ae Pee 8 F001 & ICI: cars 800 soe mervconretcores cre Programacion Forma | operacta Desc wore lem mito xe pnese ol l-lalet- torr lewetinee ten) 2-0 of-y Tete (ae fsemie | aegeme |t]-|-| tent ia gtc over oe eto das . rw hie svn ou sx iameninnape fA 0 . (ite foe ad = sn Ps paxoses tows we s-0 ae ns areas nom seman ware , tt romaine |= 809 Siam crane looters (n= ann eels Saas ARERR REERRESasrasrnl teh fot fetaaransenas [rte moet [asa erases |aeesnoroerees} tape Geese seat met sex sme mee ocasobre COR ve - + nat nant [eran smi [ann | 9.800 Somme) GEG |!) juerwcnarumenze [sneer smaeON jemanarunenes |ste- crc mmpor acre 2 (nasaexn rn) lotsa e ° lmarpecowe ce |it-btmecar | late nwa t az fe Programacion i br 0 ies lions sooo vaqi[ul2 te Ste ont ey | 2 or : nee HOCr Rear i c = sreort tn ean pigeon | | | | a aerate ae tlelelelels . eco feereaerslee 5: ee ea eee eats ’ = pa : eS eon : aire armel nem | ft m8 [Rar rote tin ws _| P< MeX-S0001 |- i 2 Tabla 8.1 Continuacién de! conlunto de instrucciones dela familia HCO8 Nomenclatura X = Parte baja del registro indice A continuacién se listan las nomenclaturas utliza- PC. = Contador de programa das dentro del anterior conjunto de instrucciones. .SP_ = Puntero a la pila (szack pointer) OPR = Operando Operadores () = Contenidos del registro o posicién de me- Rara iniciar el estudio de la programacién moria ubicada dentro del paréntesis de los microcontroladores Motorola, vamos a <= Es cargado con desarrollar una secuencia de ejercicios con los & = Operacién AND ‘cuales aprenderemos paso a paso el manejo de |. = Operacién OR las principales funciones que se pueden llevar a ® = ORexclusiva cabo mediante este tipo de circuitos integrados. x. = Multiplicacién isis Ejercicio No. 9 Energizar un diodo LED . El objetivo de este ejercicio es energizar un dio- - = Negar (complemento a dos) do LED conectado a una linea del puerto B del « 0 extendido microcontrolador Motorola 68HC908)K3. A A = Acumulador pesar de su simplicidad, este proyecto contiene CCR = Registro de condiciones ideas importantes que luego van a ser clave en el H = Parte alta del registro indice desarrollo de proyectos de mayor compl reo pein etre mroconrcnseree AGMCET.: ® ‘Figura 8.1 Creuito para enereizar un iodo LED, empleando un ‘microcontoladar Motorola Teniendo en cuenta la arquitectura del microcontrolador 683HC908)K3 se puede de- ducir cual puede ser la estructura fisica del circuito que resuelve el problema de energi- zar un diodo LED. Este es el paso inicial en el desarrollo del proyecto. La figura 8.1 mues- tra el disefio fisico el cual se puede montar en un protoboard. El sistema de desarrollo Motorola K-218, que estudiamos en el proyecto 8 de este cur- so, permite ejecutar una simulacién dentro Stereos del circuito por medio de un programa de computadora, figura 8.2. ‘Como se ha mencionado en anteriores oportunidades, este programa cuenta con una linea de comandos a través dela cual podemos, enue otras Funciones, configurar el funciona- miento de los puertos y originar sefales desali- da, o leer datos de entrada, Por ejemplo, para configurar el puerto D podemos utilizar la ins- truccién DDRD. Conectemos la tarjeta al puer- to seria de una computadora y sigamos el pro- cedimiento mostrado en el proyecto 8 para po- ner la tarjeta en linea. Sigamos el procedimien- to que se menciona a continuacién, 1. Por medio del ratén ubicamos el cursor en la linea de comandos, localizada en la es- quina inferior izquierda. En esta linea configuremos el puerto D, pul- sando DDRD 80. Con esto se configura el pin 7 del puerto D como salida 7 y los demas pines como entradas, figura 8.3 . Ahora escribamos el comando PORTD 80 para activar el pin de salida 7 del puerto D. En este momento el diodo LED indicador del circuito se debe encender, figura 8.4. Ahora escribamos el comando PORTD 00 para desactivar la misma linea y apagar el LED, figura 8.5. + eoeraime Figura 8.2 Programa WinlDE de la empresa PEMICRO Programacion A DORD Puerto El propésito del proyecto es, en pocas pala- bras, transferir el dato binario 10000000 al puerto D. Recordemos que para transferir informacién entre el microcontrolador y su entorno se hace a través de registros. Por esta razén es comprensi- ble que se utilizara la siguiente secuencia: 0x80 Registro de trabajo Registro de trabajo—> puerto D En la figura 8.6 se muestra un diagrama que refuerza este concepto. Los microcontroladores Motorola, dentro de sus modos de direcciona- miento, permiten transferir informacién direc- tamente entre dos posiciones de memoria, evi- Figura 84 Actvando el pin 7 de puerto randonos esta secuencia Contrario a lo que ocurre en los microcon- toladores PIC, la arquitectura Motorola posee tun mapa lineal de memoria, por lo cual no se presenta la necesidad de direccionar bancos en memoria RAM, ni paginas en memoria ROM. Sot sn oo Enlla figura 8.7 apreciamos el eédigo fuente de este gercicio, En él podemos establecer cierta similitud existente con respecto a un programa escrito en lenguaje ensamblador para un micro- controlador de Microchip. El programa empieza estableciendo las di- recciones dentro del mapa lineal de memoria, de cada una de las porciones del programa; lue- ‘Figura 8.5 Desacvando tin 7 del puerto D go se definen los registros que se van a utilizar Tete sic dentro del cédigo, y a partir de la etiqueta INI- CIO, se encuentra el cuerpo principal del pro- grama, Después de desactivar el funcionamien- to del watchdog y configurar el puerto D, se ac- tiva la salida por el pin 7 por medio de la ins- truccién BSET7, PORTD. Dela misma manera que en los microcontro- ladores PIC, es posible incluir dentro de un pro- grama en ensamblador para microcontroladores Motorola, archivos adicionales que contengan de- finiciones o subrutinas especificas que puedan ser estandarizadas para ser invocadas desde cualquier programa y asi ahorrarnos tiempo de desarrollo. En la primera linea de este c6digo podemos apreciar la inclusién del archivo jl3regs.inc, el cual puede descargarse libremente de nuestra pagina en la internet www.cekit.com.co, en el cual se define el mapa de memoria y los registros es- pecificos de este microcontrolador. Esto lo po- demos hacer gracias a la directiva include. Dentro del programa es importante defi- nir las direcciones de cada uno de los espa- cios de memoria RAM y de memoria ROM, por ello se definen estos valores por medio de la directiva EQU, de acuerdo a lo expuesto en el mapa lineal de memoria de esta familia de microcontroladores. A continuacién se definen en la memoria RAM los registros que van a ser utilizados den- tro del programa, por medio de la directiva RMB. Con este tipo de instruccién se reserva un espacio de memoria sin especificar la posi- jén exacta (al como se debfa hacer en las fa- milias de Microchip). Con la directiva ORG se establece la ubi- cacién en memoria de cada una de las partes del programa, a partir de la instruccién ORG RomStart se da inicio al cuerpo principal del mismo. Podemos observar claramente la con- figuracién del puerto D y la activacién del pin 7 dentro de la etiqueta INI. CURSO PRACTICO SOBRE MICROCONTROLADORES * Prograna en Lenguaje ensanblador para * el HCO8IK3 * EJERCICIO DE ACTIVACION DE UN LED Sinclude ‘j13regsg.inc’ ;ARCHIVO INCLUIDO 3DONDE SE DEFINEN LOS REGS. RAMStart —EQU. $0080 ; DIRECCIONES DE RomStart EQU $ECO0 ;RAM Y ROM EN EL Vectores EQU $FFOE ;MAPA LINEAL DE jRonFin QU. $F800 ;MEMORIA RESET_VEC QU. SFFFE org RAMStart ;DEFINICIONES DE LAS VARIA- 3BLES EN MEMORIA RAM CONTADOR «RMB 1._; RESERVANDO MEMO- REGISI RMB 1-;RIA PARA LAS REGIS2 RMB 1; VARIABLES org RomStart ; INICIO DE LA MEMORIA DE 5 PROGRAMA * ~ DESDE ESTE PUNTO SE INICTA LA * — EJECUCION DEL CODIGO . * DESPUES DE UN RESET. - INICIO: RSP ; INICTALIZAR EL PUNTERO A jLA PILA (SP) Bset COPD,CONFIGI ;OESHABTLITA 3EL_COP (WATCHDOG) CLRA 5; INICTALIZAR ACUMULADOR CLRX ; INICTALIZAR REGISTRO X MOV #$80,DDRO —; CONFIGURAR EL 3PIN 7 DEL PUERTO D COMO SALIDA INI: CLR PORTD sINICTAR PORTD BSET 7,PORTD jACTIVO EL BIT 37 DEL PUERTO D. DONDE SE SENCUENTRA EL LED INT 5CERRAR EL CICLO RETORNANDO A INT Org RESET_VEC Dw INICIO 3AL DARSE 3RESET SALTA A INICIO END ISR ‘Figura 8.7 Céxigo del eercico 9 Gey RICA: cur0pricteo ste mertconrotores Ejercicio No.9 Encender y apagar un diodo LED E] objetivo del siguiente ejercicio es continuar con las ideas basicas desarrolladas en cl ejer cio anterior. Aprovechando el circuito plantea- do vamos a hacer titilar un diodo LED a una frecuencia constante. Esto se logra aplicando al diodo un voltaje en forma de onda cuadra- da, para lo cual podemos utilizar el temporiza- dor interno e interrupciones o simplemente, como es este caso, por medio de subruitnas de retardo y ciclos de programa El circuito de este ejercicio lo podemos ‘montar en una tarjeta de pruebas (protoboard), 0 simplemente lo podemos ejecutar sobre el siste- ma de desarrollo K-218, el cual, como pudimos apreciar en el proyecto 8, posee un LED de prueba conectado al pin 7 del puerto D. Lo que se pretende con este ejercicio es ge- nerar una sefial de nivel alto en el pin 7 del puerto D (PTD7) durante cierto intervalo de tiempo y luego una sefal de nivel bajo durante el mismo periodo de tiempo. Figura 88 Diagram de fujo det ejerccio 9 ‘agramacién Para que el ojo humano pueda visualizar el cambio de estado en el LED, debemos ha- cer que cada nivel de salida permanezca du- rante un intervalo de tiempo; si no lo hace- mos, el microcontrolador ejecutaré tan répido el proceso que no veremos ningin cambio. Este tiempo de espera es el que hemos deno- minado retardo. Pasado este tiempo la sefal apli- cada debe pasar a cero. En este punto, si quere- mos que el proceso se desarrolle de manera repe- titiva, basta con ejecutar nuevamente el proceso que se describié en el parrafo anterior, La figura 8.8 muestra el diagrama de flujo que se acomoda al proceso descrito. La construccién en Lenguaje ensamblador del retardo utilizado se basa en el concepto de es- tructura repetitiva, Estructura repetitiva Este aspecto se refiere a las estructuras ciclicas controladas mediante el uso de una condicién logica. En la figura 8.8 observamos una secuen- cia de instrucciones que se ejecutan 100 veces y en donde la condicién que determina la termi- : Figura 8.9 Diagrama de fo de una estructura repettiva curs rita str Meroconroadores AGICNT: ey nacién del ciclo ¢s el momento en que una varia- ble denominada N llega a cero, despues de ser decrementada con cada ciclo ejecutado. La precaucién mas importante que se debe tener en cuenta, a la hora de programar estruc- tuiras repetitivas, es que se debe crear un meca- rnismo que permita cambiar la condicién ini- cial que determina el ntimero de veces que se repite el lazo En caso de no hacerlo, el programa podria encerrarse en un ciclo infinito, impidiendo que se ejecuten las acciones determinadas por el c6- digo escrito a continuacién. Control de estructuras repetitivas ‘Como hemos visto en varias leeciones anterio- res, las estructuras repetitivas por si mismas en muchas ocasiones no son suficientes para lograr los tiempos que requiere el programa. Para ello recurrimos a anidar ciclos, es decir, incorporar ciclos dentro de ciclos, lo cual contribuye a au- mentar el tiempo de retardo generado. En este gjercicio hemos incorporado esta técnica de pro- gramacién para generar los tiempos de encendi- do y apagado del LED, el diagrama de flujo ge- nérico para una estructura de este tipo lo pode- mos visualizar en la figura 8.9. En el cédigo fuente de este ejercicio, figura 8.10, podemos distinguir el cuerpo principal del programa, ubicado dentro de la etiqueta INI Dentro de este bloque se activa el pin 7 del puer- to D, se invoca a una subrutina de retardo por medio de la instruccién JSR RETLOS, donde RET10S es la etiqueta que indica el inicio de dicha subrutina. Una ver terminada la ejecucién de la subru- tina de retardo, se apaga el LED por medio de la inseruceién BCLR 7, PORTD, y de nuevo se invoca la subrutina de retardo para que los tiem- pos de encendido y apagado sean iguales. Final- mente se retorna a INI para que se repita nucva- mente el proceso. Costu eeu) Figura 8.10 Estructuras repetitvas anidedas En la parte final del programa podemos ob- servar las subrutinas de retardo utilizadas por las otras partes del cédigo, las cuales emplean es- tructuras repetitivas. La primera usa los registros acumulador ¢ indice y la segunda utiliza el acu- mulador y REGS co ICI: corso rica sobre Mierocontreadores Programacion * Software en assembler para el HCO8 JK3. EJERCICIO DE ACTIVACION Y DESACTIVACION DE UN LED Sinclude ‘313regsg. inc? ; INCLUSION DEL ARCHVIO .INC, DONDE SE ENCUENTRAN } LAS DEFINICIONES DE LOS REGISTROS Y BITS DEL MAPA DE MEMORIA DIRECCION DE INICIO DE LA MEMORIA RAM DIRECCION DE INICIO DE LA MEMORTA ROM RaMStart — EQU. $0080 Ronstart EQU. SECO@ Vectores EQU. SFFDE RESET_VEC EQU SFFFE UBICACION DEL VECTOR DE RESET org RAMStart CON LA DIRETIVA ORG ESTABLECEMOS DENTRO DEL PROGRAMA EL ESPACTO DONDE SE DEFINEN LAS VARIABLES. } ACESTAS TRES VARTABLES SE LE HA RESERVADO UN ‘CONTADOR RMB REGISI RMB BYTE DE LA MEMORIA. ELAS SON UTILIZADAS REGIS2 RMB ot DENTRO DE LAS SUBRUTINAS DE RETAROO. ‘AHORA ORG NOS PERMITE INDICAR EL ORIGEN DE LA MEMORIA DE PROGRAMA, + — DESDE ESTE PUNTO SE INICTA LA EJECUCION DEL CODTGO org RonStart. DBNZ CONTADOR, LAZ010 ; VEZ QUE SE EJECUTA ESTE CICLO DONDE SE INVOCA\ RTS UA SUBRUTINA RETAOL ‘+ RETARDO- SUBRUTINA DE RETARDO POR SOFTWARE : DESPUES DE_UN RESET INICIO: RSP. Bset COPD,CONFIGI _; DESHABILITA EL COP (watchdog) LRA } INICIALIZAMOS EL ACUMULADOR EN CERO CLRK } INICTALIZAMOS EL REGISTRO X EN CERO C{NDICED Mov #$80,00RD } CONFIGURAMOS EL BIT 7 DEL PUERTO D COMO SALTOA INT CLR PoRTD ; INICTALIZAMOS EL PUERTO D EN CERO BSET 7, PORTD } PONEMOS EN ALTO LA SALIDA DEL BIT 7 DEL.PUERTO D ISR RETi@s SALTAMOS ALA SUBRUTINA DE RETARDO BCLR 7, PORTD UNA VEZ TERMINADO EL RETARDO, APAGAMOS EL LED ISR RETIES Y DE NUEVO TNVOCAMOS LA SUBRUTINA DE RETARDO 35R INT } EN ESTE PUNTO SE RETORNA A INI PARA EJECUTAR ESTE } CICLO DE MANERA INDEFINIDA. RETIOS: } SUBRUTINA DE RETARDO. Mov #$10, CONTADOR} INICTALMENTE CARGAMOS EL REGISTRO CONTADOR CON UN LAz010 SR RETAGL } DATO, EL CUAL SE DECREMENTA PAULATINAMENTE CADA RETAOL ; ESTA ES LA VERDADERA SUGRUTINA DE RETAROO LOA #1287 } APROXIMADAMENTE DE 0,15 - 12 CLRK } AQUI SE CARGA EL ACUMULADOR CON EL NUMERO E13 DECK } 128 Y SE ENTRA A UNA ESTRUCTURA REPETITIVA BNE ET3 } DONDE DICHO REGISTRO SE VA DECREMENTANDO HASTA DECA } LLEGAR A CERO. BNE ET2 FINALMENTE SE RETORNA AL PUNTO DESDE DONDE RTS FUE INVOCADA. RET20S LDA #207 ; ESTA ES OTRA SUBRUTINA DE RETARDO QUE PUEDE STA REGIS2 } INSERTAR EN EL EJERCTCTO. ENSAYE REEMPLAZANDO ET1 JSR -RETAQL } LA ANTERIOR SUBRUTINA POR ESTA Y OBTENGA UN. DEC REGIS } TIEMPO DE RETARDO MAYOR TRABAJANDO CON REGISTROS BNE ETL } NORMALES RTS, Org RESET_VEC 5 EN ESTE CASO LA DIRECTIVA ORG ESTABLECE LO QUE } SE DERE HACER EN CASO DE PRESENTARSE UN RESET Dw INICIO } ST ESTE OCURRE, EL PROGRAMA SALTA INICIO END Figura 8.11 Gédigo fuente del ejercicio cus prctco str Merocontotacores AGACIT.: Ge Gen Meee nr) Simulaci6n dentro del circuito Ahora vamos a analizar la ventaja que representa simular un programa dentro del circuito, aprove- chando las posibilidades que nos brinda el siste- ma de desarrollo K-218. Una vee escrito el programa, depurado y ensamblado dentro del entorno WinIDE, ejecu- temos el simulador «in circuit» por medio del se- gundo icono de izquierda a derecha, figura 8.11. ‘Figura 8.11 Icano del programa para simular dentro de circuto Cuando estamos dentro del programa simu- lador, figura 8.12, tenemos a nuestra disposicién una serie de herramientas que nos permiten, por ¢jemplo, visualizar el valor que toman las varia- bles que intervienen en el programa. Dentro del programa simulador podemos apreciar entre otras, una ventana donde se muestra un mapa de la me- moria del microcontrolador y una ventana don- de se encuentra el cddigo fuente del programa {que se va a someter al proceso de simulacién. Pra ejecutar paso a paso el Drograma, pulse F5 0 escriba, ‘en esta linea de comandos la instruccin Step Una de las herramientas més importan- tes con que cuentan los programadores en len- guaje ensamblador es ejecutar los programas aso a paso, esto es, ejecutar una instruccién a Ia vez. Esto da la posibilidad de observar el com- portamiento de todos los registros, variables y estados de la CPU del microcontrolador cada que se ejecuta una Iinea de cédigo. Gracias a esta posibilidad se facilita la buis- queda y depuracién de errores, sobre todo si, como en este caso, el usuario puede leer sefiales presentes en los pines del microcontrolador y ori- ginar niveles de salida. Todo esto de acuerdo ala configuracién que se haga sobre los puertos. En este programa de simulacién podemos ordenar la ejecucién de una linea del c6digo (un paso) mediante el quinto icono de izquierda a derecha, o pulsando la tecla F5. ‘Cuando ejecutamos un programa paso a paso, en la ventana del cédigo de programa se resaltal linea que nos encontramos ejecutando y una flecha se ubica en el lado izquierdo de dicha Ifnea. Como ejercicio, recomendamos que cje- ‘cute paso a paso el programa de este ejercicio y visualice tanto el estado de LED conectado al bit 7 del puerto D, como las variaciones que van tomando las distintas posiciones de memo- ria y el estado de la CPU. Lallnea que se est ejecutando se visualiza Tesaltada y con una fecha en el lado izquierdo Figura 8.12 Eecuckin paso a paso de programa Ejercicio No. 11 Multiplexaje de indicadores (displays) de siete segmentos Para llevar a cabo con éxito los ejercicios pro- puestos en esta seccidn y lograr una buena com- prensién del manejo del sistema de desarrollo K.218, es recomendable ejecutar los siguien- tes pasos: 1, Montar el circuiro en una tarjeta de pruebas 6 protoboard. Alli se tendré la posibilidad de evaluar el hardware, es decir, hacer una revi- sién de los circuitos montados para compro- bar su buen funcionamiento y asf tener la se- guridad de que, si existe algin problema, éste debe buscarse en el programa. 2. Escribir el programa en el editor disponible, dentro del entorno WinIDE. Ensamblar el programa corrigiendo errores sintécticos. 4, Simular el programa utilizando el programa simulador del entorno WinIDE (haciendo clic en el icono del microscopio) fuera de li- nea, es decir, sin la tarjeta conectada. Esto permite verificar que el flujo del programa ha seguido el curso deseado y que los regis- tos se comportan de acuerdo a lo planeado por el programador. 5. Cuando la simulacién fuera de linea ha arrojado resultados satisfactorios, es tiem- po de ejecutar la simulacién dentro del cir- cuito (in circuit). Para ello se deben conec- tar los pines del microcontrolador de la tarjeta K-218 (utilizando los conectores en nea ubicados a lado y lado del microcon- trolador JK3) hasta las posiciones que co- rrespondan dentro del protoboard, figura 8.13, Una vez que el programa de la com- putadora se ha comunicado correctamen- te con la tarjeta de acuerdo al andlisis de- sarrollado en el proyecto 8 de este curso, se puede ejecutar nuestro programa en modo paso a paso, 0 en modo de miilti- ples pasos (ver comandos STEP, STEPO- VER, GO, etc.). El resultado final es que podemos observar el funcionamiento de la (én pero a una baja velocidad. Programacion ‘conectores en tinea para ccablear los puertos hasta 1 prototipo Figura 8.13 Conectores en lina para cablear hasta! prototivo 6, Ahora se debe programar el microcontrola- dor para poder inserrarlo de manera definiti- va dentro del prototipo y poder visualizar el resultado final en tiempo real. Ya analizados estos pasos podemos entrar ‘en materia, El manejo de displays de siete seg- mentos constituye una de las técnicas mas uti- lizadas dentro del campo de la programacién de microcontroladores, para el desarrollo de equipos electrénicos. Con estos dispositivos podemos lograr sistemas que permitan al usuario una buena visualizacién de las distintas variables que se estén manipulando, con la ventaja de ser mucho més econémicos que otros medios de visualizacién, como los displays de cristal Ii- quido (LCD). Aunque el principio de fun- cionamiento con que se lleva a cabo el multi- plexaje de displays ya lo hemos estudiado en lecciones anteriores, vamos a recordarlo bre- vemente ya analizar como hacerlo con un mi- crocontrolador Motorola y dos displays de ci- todo comin curso pricie sor Mevconroncars GREET: @ Cree ee Hemos analizado la estructura biésica de un programa en ensamblador para microcontrolado- res Motorola, figura 8.14; podemos notar que siempre empezamos insertando el archivo jlBregsg.ine, el cual contiene todas las definicio- nes del mapa de memoria del microcontrolador, lo que nos ahorra el tener que escribir las mismas definiciones en cada programa que elaboremos. Lugo se definen las direcciones de la memoria RAM lamemoria de programa. Con la directiva org, establecemos primero el inicio de la memoria RAM, lo cual nos permite definir los registros que vamos a utilizar dentro de nuestro cédigo, y se- gundo el inicio dela memoria de programa; partir de este punto escribimos el cuerpo del programa © cédigo fuente propiamente dicho. Dentro de la memoria RAM podemos defi- air si se utilizan los macros de nuestro progra- ma. Recordemos que los macros son porciones de cédigo que se utilizan repetidamente dentro de un programa, por lo que se encapsulan den- trode un nombre para ser invocados répidamente y asi darle a los programas mayor versatilidad y facilidad de comprensién, Un macro no equi valea una subrutina, la diferencia radica en que, cuando se invoca una subrutina, el contador de programa cambia de valor para dirigir la CPU a determinada posicién de memoria y luego re- torna a la posicién de memoria inicial. Por cl contrario, el macro no modifica el contador de programa, simplemente cada que se invoca un macro, incorporamos las lineas de cédigo en- capsuladas dentro de éste, al punto exacto del programa desde donde se ha llamado. Consideremos Ia estructura de Ia figura 8.15. Alli tenemos dos displays de siete segmen- tos y un que puerto controla dos transistores NPN, que finalmente alimentan los cétodos de cada uno de los displays, en donde el pin PTD4 controla el display de menor peso. Los displays se conectan a los pines PTB4, PTBS, PTB6 y PTB7 del microcontrolador por medio de un circuito integrado decodificador Sinclude ‘j13regsg. inc” RAM_START equ $008 3RAM FLASH_START_IK3 equ SECOO RESET_VEC equ SFFFE org RAM_START datoDist datoDis2 dispStatus rnb 1 mb 1 rnb 1 UPDATE UPDATEZ equ @ equ 1 * DEFINICION DE MACROS, SI LOS HAY ‘org FLASH_START_JK3 sincluye archivo de jdefiniciones idireccion de inicio de la jonly for 3K3/JL3 sinicio de 1a Flash del $microcentrolador Tc, rere foo ;Reset Vector a separa un byte ic separa un byte aa Nile de estado para 1a ;tarea de visualizacion ** Estados de la tarea de Visualizacion**** jactualizando el display 1 jactualizando el display 2 ‘Figura 8.14 Encabezado tpico de un programe y descrpctn en bloques del estructura en un microcontrotador Motorola Programacion Observando la configura- cién del circuito es ficil deducir que, cuando se tiene un nivel l6- gico bajo en la base del transis- tos, éte se comporta como un interrupror abierto y no citcula corriente entre emisor y colec- tor; se necesita un uno légico en Jas bases de étos para que el tan- sistor se comporte como un in- 7448; las resistencias R2 a RS tienen como funcién limitar la cortiente que fluye a través de los segmentos. De esta manera se ahorran pines del microcon- trolador que pueden ser titles para otras funciones dentro del proyecto, Una de las considera- ciones més importantes que de- terruptor cerrado y se presente dicha corriente. Si queremos mostrar el nii- mero tres en el display de la de- recha, debemos establecer bisi- camente los siguientes pasos: + Activar el transistor conec- tado al pin PTD4 + Enviar el ntimero 0011 por los pines PTB4, PTBS, PTB6 y PTB7. El secreto para visualizar adecuadamente un valor numé- rico en dos o mis displays de sie- te segmentos, consiste en habi- litar, por medio de un pin del microcontrolados, uno por uno los displays de manera indepen- diente y secuencial. Cada uno de ellos se habili- ta durante un corto espacio de Figura 15 Evora det ero iemPO, repitiéndose el proceso de manera ciclica, figura 8.16. bemos tener en cuenta dentro del disefiocon microcontrolado- Los segmentos del display res, es aprovecharal méximolos deben ir conectados al puerto pines disponibles; para ello de- del microcontrolador directa- bemos hacer uso de algunas téc- mente o a través de un circuito nicas para multiplexarlasfuncio- _integrado decodificador. nes y los tiempos de uso de cada uno delos pines;sobreeste tema En el mismo instante en hhablaremos mas adelante gue el primer display se en- ire pric sabre tasvemniaceresl CCIE & Grete aro os 1 : U. ——— ps2 Tetefe Teel C cuentre habilitado, el microcontrolador debe enviar el dato correspondiente que debe ser vi- sualizado en la primera posicién. Un buen observador encontrard que, aun que los anteriores pasos consiguen el objetivo ropuesto, este proceso puede conllevar efec- tos indescados. Aqui, por ejemplo, si el puerto que contro- Ja los segmentos tenfa un valor diferente entre la ejecucién de los dos pasos dados, mostrard en el display un mimero o un simbolo que es diferente del valor deseado. Por ello, cs convenicnte apagar momenténca- mente los segmentos, de tal manera que nos per- a seleccionar adecuadamente el display en cues- tidn, y, posterior a esto, enviar el dato correcto a los segmentos. (Otra opcién que permite obtener el mismo re- sultado, con un proceso diferente seria la siguiente: + Colocar el ntimero binario 00 en el puerto que controla los transistores + Enviardl dato al puerto que mangja los segmentos + Colocar el ntimero binario 01 en el puerto que controla los transistores paTO2 S41 Dis 2 Ss feteretelarel ao —— 4} Figura 8.16 Habiltacién secuencal dels displays Ambos procesos conllevan al mismo obje- tivo propuesto, climinando la posibilidad de que se presenten efectos indeseados. Ahora, si pretendemos visualizar no uno sino los dos displays de siete segmentos (0 mds), es necesario empezar a controlar se- cuencialmente la activacién de los transisto- res a la vez que se envian por el puerto que controla los segmentos los datos correspon- dientes que se desean visualizar en el display en cuestién, haciendo este proceso a una ve~ locidad tal que de nuevo parezca que el pro- ceso se esté ejecutando simultdneamente so- bre todos los displays. El tiempo minimo que necesitamos para mantener el dato en cada display puede va- riar significativamente, dependiendo del va- lor de las resistencias limitadoras conectadas a cada uno de los segmentos, del ntimero de digitos que se tengan para mostrar y de la caracteristicas fisicas o eléctricas propias del display, experimentalmente se ha encontra- do que, mostrar cada digito durante 3 mili- segundos, cuando se tienen resistencias mitadoras de 100 ohmios, proporciona un brillo aceptable y una buena visualizacién a una distancia prudente. 6 AABEAT: sox rne ser econ

Você também pode gostar