Curso Práctico Sobre Microcontroladores, Tomo II - Programación [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

C u rs o p rá c tic o sobre

( Teoría, Program ación, Diseño, Prácticas y Proyectos com p le tos )

El C u rs o p rá c tic o s o b re MICROCONTROLADORES ele CEKIT S. A. se publica en forma de 40 fascículos de aparición sem anal, en cuadem ables en 3 volúmenes. Cada fascículo consta de 4 páginas de cubiertas y 20 páginas de contenido a todo color. De e sta s ú ltim as, 8 están d e d ic a d a s a la se c c ió n d e ,4 a PROGRAM ACIÓN y 8 a la secció n d e PROYECTOS. I-as páginas de cada sección son encuadem ables por separado. Por esta razón, al form ar los volúm enes, d eb e cu id arse de despren der previam ente, de todos los fascículos, las 8 p ágin as centrales d e PROYECTOS, las 4 d e PROGRAM ACIÓN y por último las 8 páginas de . Durante la publicación d e los fascículos se pondrán a la venta las tapas de los 3 volúmenes de la obra para su encuadem ación.

C a p a cita m o s p a ra v iv ir m ejttr C a lle 2 2 N° 8 - 2 2 , P is o 2. Teléfonos (6 )3 3 4 8 1 7 9 -3 3 4 8 1 8 7 3348189 - 3348193 F ax: (6 ) 3348020 B e r e ir a C x A x n b ia

C a r r e r a 13 N° 3 8 - 4 3 , P is o 1. T e lé fo n o s : 2 8 7 3 0 8 6 2873420 - 2877318 B o g o tá

CEKIT S.A. garantiza la publicación d e la totalidad de la obra, e l sum inistro d e la tapas necesarias para su encuadem ación y el servicio de números atrasados hasta un año después de terminada la circulación del último fascículo. También garantiza la fidelidad de la infonnación teórico-práctica suministrada y el correcto funcionamiento de los programas incluidas como ejemplos de la obra. Motorola, Microchip, PIC, Intel, Atmel, Parallax. Zilog, Phillips, son mancas registradas de las diferentes empresas en los Estados Unidos y en otras países. Otros productos y ncm ines de compañías mencionadas en esta obra pueden ser marcas registradas de a is propietarios.

C o lo m b ia

e-mail: [email protected] http://www.cekit.com.co

Gerente General: J o r g e H e rn á n A lv are z GerenicComercial: M arcelo A lv arez H. Director Editorial: M a n u e l F elip e G o n z ález G. Circulación Internacional: H u in l)e rto R eal B lan co .

Este cu rso li a sid o ela b o ra d o s e g ú n e l p la n d e l ed ito r y d e s u s autores, y b a jo s u resp o n sab ilid ad , p o r lo s sig u ien tes in tegran tes d e l d e p a rta m e n to té c n ic o d e CEKIT S A

D is trib u c ió n In te rn a cio n a l

Argentina: Importador: Editorial C o n o surS .A . Av. B elg ran o 355 10°. Tel: 4342-9029 Fax: 4342-9025 e -m a il: g c o n o su r@ sp eed y .co m .a r

D isi. C ap ital: VACCARO SANCHES Y CLA. - M o ren o 794.

9 °(1 0 9 2 ) B u e n o s A ires. Dist. In terior: DISTRIBUIDORA

BERTRAN

S.A .C. - Av. V éle z S arsfie ld

1950(1285) B u e n o s A ires. - Bolivia: AGENCIA MODERNA LTDA. - Chile: DISTRIBUIDORA a l f a s . a . - Colombia: d is t r i b u i d o r a s u n i d a s . - Venezuela: DISTRIBUIDORA CONTI­

México: c o n s o r c i o s a y r o l s - Ecuador: d i s t r i b i i d o r a a n d e s . - Panamá: PANAMEX S.A. - Perú: DISTRIBUIDORA BOUYARI.ANA S.A. - P araguay: SELECCIONES S.A.C. NENTAL-

- U ru g u a y :D IS T R IB n D O R A CAREAGA

Suscripciones (n o válidas e n A rgentina), núm eros atrasados y consultas técnicas en Colom bia CEKIT S.A. Calle 22 N° 8 - 22, Piso 2, A.A. 194 P ereira(C olom bia) o a n u e stro c o rre o electrónico: ecekit@ col2.telecom .com .co ISB N ( F a s c íc u lo 8 ) :9 5 8 - 6 5 7 - 5 1 0 - l IS B N ( V o lu m e n 1 ) :9 5 8 - 6 5 7 - 4 9 8 - 9 IS B N (O b r a c o m p le t a ) : 9 5 8 - 6 5 7 - 4 9 7 - 0

Autores

JUAN ANDRÉS CASTAÑO W. MANUEL FELIPE GONZÁLEZ G. GILBERTO VARGAS C. JUAN DIEGO HERNÁNDEZ F. Proyectos

JOHN JAIME ROBBY G. Diseño carátula: Luz Angela Plata B. Diseño: Gloria M arcela Gómez G. Diagramación: H éctor HugoJim énez © CEKIT S.A. 2001 Fereira-Colom bia Todos los derechos reservados. Prohibida su reproducción parcial o total por cualquier medio sin permiso escrito del editor.

EDICIÓN CONO SUR In te rn a c io n a l G ra p liic s & P rin tin g C o. 2 6 0 0 D o u g la s R o ad . S u ite 4CK3 C o ra l G a b le s , F lo rid a 3 3 1 3 4 , U .S .A .

Im p re so y e n c u a d e rn a d o por: RR D o n n elley A m érica Latina R u ta P a n a m e r ic a n a K m . 3 8 .7 0 0 B u e n o s A ir e s A r g e n t in a I m p r e s o e n A r g e n t in a J u n io 2002

C urso p ráctico sobre

M IC R O C O N T R O L A D O R E S Teoría. P r o g r a m a c ió n . D is e ñ o . P r á c tic a s y P r o y e c to s c o m p le t o s

Estudie

f c o n el m éto d o de CEKIT d e “Aprender haciendo ’, la tecn o lo ­

L ib e re su

g ía d e los M icro co n tro lad o res, u n a d e las q u e m ás h an cam b iad o el m u n d o en los ú ltim o s años y g a n e m u c h o d in e ro . Estos p eq u eñ o s cerebros electró n ico s se e n c u e n tra n e n todas partes: a u ­ to m ó v ile s, c o m p u ta d o ra s, electro d o m éstico s, alarm as, ju eg o s de lu ces, in stru m e n to s, equip o s

de c o m u n ic a c io n e s, etc.

m itirá la com un icación de hechos y datos entre personas y objetos form ando la red del conoci­

n este curso in cluim o s los principios teóri

m iento, base de la eco n om ía del nuevo m ilenio

eos, los fundam entos de su program ación, un a gran can tid ad d e actividades prácticas y

Capacítese y forme parte activa de la nue­ va economía.

;ctos com pletos para ensamblar. Las p erso n as co n b u e n o s c o n o c im ie n to s d e sicos y fu n d a m e n ta le s de u n a n u eva revo lució n ,

esta te c n o lo g ía , te n d rá n m u c h a s o p o r tu n id a ­ d es la b o ra le s o p o d rá n fa b ric a r sus p ro p io s

la in te rc o n e x ió n d e to d o c o n to d o en u n a red

a p a ra to s en fo rm a in d u s tria l, lo q u e p u e d e

m u n d ia l d e in fo rm a c ió n y c o n tro l. E sto p er-

ser la base p ara u n a e m p re sa m u y ren tab le.

Los m ic ro c o n tro la d o re s so n los e le m e n to s b á­

curso El C u rs o p rá c tic o sob re M ic ro c o n to la d o re s de C E K IT S.A . se pub licará en 4 0 fascículos con tres secciones cada uno, y al final, se agru p ará en tres to­ mos de pasta d u ra con cada uno de los tem as p rin ci­ pales. Para su fácil identificación, cada una de las sec­ ciones tiene un color diferente. La distrib ució n de los tom os es la siguiente:

Tomo 1: Teoría

Tomo 2: Programación

Tomo 3: Proyectos

3 2 0 p á g in a s ( l a 3 2 0 )

1 6 0 p á g in a s (1 a 1 6 0 )

3 2 0 p á g in a s (1 a 3 2 0 )

Los siguien tes son los principales tem as tratados en esta sección:

En la sección de teoría, se estudian los fundam entos teóricos y funcionales de los m icrocontroladores. Esto se refiere a la estructura o arqu itectu ra interna de los m ism os, así com o a la función de cada uno de los term inales o pines de los diferentes dispositivos tratados en el curso cuyo co no cim ien to es ne­ cesario para diseñar circuitos con estos com ponentes. Se em pieza con un repaso sobre el tem a de los m icroprocesadores, los cuales dieron origen a los microcontroladores, y se desarrollan d u ran te las lecciones, los diferentes aspectos técnicos de esta tecnología.

Caitacitatatm p u ra vivir tarjar

Introducción a los microprocesadores Introducción a los microcontroladores Diferencias entre un microprocesador y un m icrocontrolador Principales familias de microcontroladores Estuctura básica de los sistemas con m icrocontrolador (M otorola y P1C de M icrochip) A rquitecturas de microcontroladores La C P U y la ALU Los registros O rganización de la m em oria La E PRO M de datos Las interrupciones Los puertos de entrada/salida (I/O) Los temporizadores ( Timers) Las opciones Com paración/Captura/PW M El puerto serial síncrono SSP, bssp La U SA R T Las referencias de voltaje Los comparadores Los converso res A/D M odos de bajo consum o (sleep y w a tch d og) Bits de configuración Program ación en el circuito (in circuit) El conjunto (set) de instrucciones Las com unicaciones seriales Otros microcontroladores Parallax (Basic Stamp) Intel Atmel

ion de Programación Todo aparato o proyecto con m icrocontroladores incluye, además de los diferentes cir­ cuitos, uno o varios program as q u e se deben encrib ir en el lenguaje apropiado según el tipo de m icrocontrolador utilizado. Este curso le proporcionará los conocimientos nece­ sarios para que ad q u iera la h ab ilid ad de program arlos. Los principales tem as tratados son: Diagramas de flujo

Programas

Explicación de los programas

ion de proyectos

Programación de un m icrocontrolador El ciclo de desarrollo de un program a H erram ientas de softw are Program ación en modo inm ediato Program ación orientada a registros C ontrol de flujo de un programa Puertos de entrada/salida Subrutinas Interrupciones Programación en lenguaje estructurado Temporizadores Program ación serial Program ando los conversores A/D y D/A Program ación en lenguaje C Tópicos avanzados de program ación

En esta im p o rta n te secció n d e l cu rso , se en treg a Indicador binario de 4 bits A larm a para el hogar y el autom óvil Reloj digital y calendario Secuenciador de luces program able C erradura codificada Activación de aparatos vía telefónica Tem porizador universal Aviso lum inoso con diodos LED Luces rítmicas C onvertidor paralelo-serial Punta lógica Tem porizador m iniatura Frecuencímetro G enerador de señales Program ador de m em orias A dquisición de datos en 16 bits M in iro b o t con m icrocontrolador A dquisición de datos por el puerto serial Tarjeta I/O para el puerto serial y m uchos otros...

u n a a m p lia in fo rm a c ió n co n la c u al el a lu m n o p o d rá e n s a m b la r u n a b u e n a c a n tid a d d e p ro yec­ tos. P ara c a d a u n o d e ello s se in c lu y e la te o ría de fu n c io n a m ie n to , el d ia g r a m a esq u em ático , la lis­ ta d e m a te ria le s, las in stru c c io n e s p ara el e n sa m ­ b la je y el listad o del p ro g ram a. Guia de ensamble

Diagrama de bloques

Teoría y funcionamiento

Diagrama esquemático

A quienes va dirigido el curso El tem a de los microcontroladores es de gran utilidad para un grupo m u y amplio de perso­ nas que requieran conocer esta tecnología por su gran cantidad de aplicaciones. Los principales grupos de usuarios son: Estudiantes y profesionales de Ingeniería y Tecnologías:

• • • • • • • •

Electrónica Eléctrica M ecán ica Sistem as B ioingeniería ^ M ecatró n ica A utom atización ^ Estudiantes de colegios téc

con énfasis en electrónica

Técnicos en:

• • • •

Electrónica industrial A utom atización Electrónicos en general A lu m n o s de los cursos de C E K IT S.A. • Estudiantes y profesionales en FISIC A , para sus necesidades de instrum entación

"

Autodidactas o aficionados con conocim ientos en:

• Electrónica D igital • M icroprocesadores

Certificado U na vez term in ad o el curso y aprobada la evaluación q u e se p u b li­ cará al finalizar la obra, el alu m n o recibirá un C ertificad o de A p ti­ tud O cu p acio n al otorgado por C E K IT S.A. y aprobado por las respectivas autoridades educativas. Este certificado 1er perm itirá acceder a puestos calificados de trabajo.

Otra obra con la calidad editorial y didáctica de é m

iK

iim

:

C 'a p u c ita n iitM p t ir t i v i v i r m r j t t r

Icwtoo* microcontroladores

LKBtíf» «WWW ¡fetienoai

rocavío

CONCEPTOS BÁSICOS DE PROGRAMACIÓN C uando se incluye un microcontrolador en un circuito o en un aparato electrónico, se debe establecer la com ­ binación adecuada de hardware (cir­ cuitos) y software (programas). A esto se le llam a un diseño con microcontrolador. C uando éste se adquiere del fabricante o a través de un distribui­ dor, no incluye el program a el cual debe ser planeado y escrito por el d i­ señador del hardware o por un pro­ gramador, que en la m ayoría de los casos, es él mismo. Curso práctico de M icrocontroladores

Introducción Los microcontroladores permiten configurar un sistema de acuerdo con los requerimientos im ­ puestos por el problema que se va a resolver, gra­ cias a una característica fundam ental que com­ parten con las computadoras convencionales: son programables. Por esto es posible incorporarlos a un sistema electrónico, norm alm ente orientado a la captura y entrega de información, perm itien­ do decidir lo que debe hacerse con los datos y señales procesados. El arte de trabajar con m icrocontroladores requiere del dom inio de dos habilidades funda­ mentales: la prim era es la destreza para selec­ cionar com ponentes electrónicos y conectarlos adecuadam ente, y la segunda, es el dom inio de las técnicas de program ación, gracias a las cua­ les se puede lograr que el m icrocontrolador se com porte según los requerim ientos de la solu­ ción propuesta. Si el lector ya ha estado inmerso en el m un­ do de la electrónica, entonces tendrá las bases necesarias para entender el funcionam iento in­ terno y operativo del microcontrolador y podrá

configurar el hardw are o los circuitos sin m ayo­ res dificultades. Sin embargo, el aspecto de la programación puede resultarle un poco comple­ jo. De todas maneras, independientemente de las bases teóricas y prácticas que usted posea, encon­ trará 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 programación 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 com putadora genérica. El diagram a de la fi­ g u r a 1.1 corresponde al esquema de control uti­ lizado en algunos aeropuertos para detectar la presencia de objetos metálicos escondidos en la ropa o adheridos al cuerpo de los pasajeros.

Persona

Detector de metales

Computadora tipo PC

Alarma sonora

Figura 1.2 D iagram a de bloques d e l sistem a de detección de objetos m etálicos

La misión del detector de metales es la de producir una señal eléctrica cada vez que una persona cruce frente al detector portando algún objeto metálico. En cuanto a la alarm a sonora, ésta debe producir una señal audible en presen­ cia de un elemento peligroso, con el fin de aler­ tar a las autoridades correspondientes, fig u r a 1.2. ¿Cuál es el papel que cum ple la com putado­ ra en este proceso? Com o seguram ente podrá deducir el lector, la com putadora está conectada de modo permanente tanto al detector de meta­ les, como al dispositivo sonoro, fig u r a 1.3.

Figura 1.1 Sistema de control para la detección de objetos m etálicos

La interfaz de entrada se encarga de adaptar la señal proveniente del detector, introduciéndo­ la en la m em oria de la com putadora. El am plifi­ cador de salida se utiliza para aum entar el tam a­ ño de la señal eléctrica generada, aplicándola a la alarm a sonora y generando un sonido percepti­ ble por el oído humano.

Figura 1.3 Diagram a de bloques del sistem a de detección de objetos m etálicos

Ahora surge una pregunta más interesante que la anterior: ¿cómo es posible que la com pu­ tadora active la alarm a sonora únicam ente cuan­ do un pasajero cruza portando un objeto m etáli­ co, mientras que la m antiene en silencio cuando no detecta el metal? Antes de responder a esta pregunta, es necesario com prender un aspecto clave relacionado con el funcionam iento interno de una computadora.

En palabras sencillas, ¿qué funciones debe­ ría realizar la com putadora de la figura 1.1 para ser eficiente en la tarea de detectar objetos metá­ licos?. Observe los siguientes pasos presentados en la figura 1.5.

En contra de lo que pudiera pensarse, ésta no "observa” ni controla el m undo exterior de m anera continua. Ella utiliza pequeños perío­ dos de tiem po para realizar las acciones que le son encom endadas, por lo que la única opción que le queda es la de organizar sus tareas de for­ m a secuencial en el tiem po, figu ra 1.4. Este punto debe recordarse siem pre, ya que es la base del funcionam iento de cualquier sistem a basa­ do en com putadoras, microprocesadores o m icrocontroladores.

Figura 1.5 Programa para resolvere lproblema del detector de metales.

Computadora "introduciendo” el siguiente dato proveniente del detector

Ahora le preguntam os al lector: ¿en dónde piensa usted que debe alm acenarse este conjun­ to de instrucciones? La respuesta no es com pli­ cada: en el interior de la com putadora, de un m icrocontrolador o de un sistem a con microprocesador.

Figura 1.4 La com putadora trabaja a in te rva lo s de tiem po predefinidos

Pues bien, el conjunto de instrucciones que acabamos de presentar es lo que se conoce con el

M * Curso práctico de M icrocontroladores

5.A.

C-o u q Ct ptos

básicos de programación

nombre de PRO G RAM A y representa el cora­ zón de los sistemas electrónicos modernos, en los cuales es tan im portante la interconexión de los circuitos eléctricos como el desarrollo de los pro­ gramas orientados a la solución del problema. Recuerde que: Los p ro gram as son escritos por PROGRAM ADORES La misión de un program ador es la de en­ tender el problema que debe resolver, escribir la secuencia de instrucciones requeridas en el len­ guaje apropiado, alm acenar la secuencia de ins­ trucciones en la m em oria interna de la com puta­ dora y, por últim o, ejecutar o poner en marcha el programa creado, f ig u r a 1 .6 .

Figura 1.6

El trabajo de un programador

Lenguajes de programación ¿Qué lenguaje debe utilizarse para escribir un pro­ grama? La respuesta depende de la computadora o en nuestro caso, del microcontrolador utiliza­ do y del problema que se va a resolver. Si su pro­ blem a es únicam ente describir los pasos que de­ ben seguirse para alcanzar el resultado deseado, es suficiente con emplear frases tomadas del idio­ m a español, naturalm ente en el orden que resul­ te más adecuado. Un ejemplo de ello es el pro­ gram a que presentamos en la figura 1.5.

(gM/KUTs

Curso práctico de M icrocontroladores

Pero, ¿será posible que una com putadora, com o una de las m uchas utilizadas en un aero­ puerto, pueda entender este tipo de programa? El sentido com ún nos dice que no: es necesario convertir cada una de las instrucciones al “idio­ ma” que com prenden las com putadoras. Exis­ ten varios idiom as o lenguajes utilizados por las com putadoras m odernas. Algunos de ellos tie­ nen como finalidad ayu dar a resolver proble­ mas de carácter adm inistrativo, como el lenguaje C O B O L , por ejem plo, m ientras que otros ayu ­ dan a crear programas de u tilid ad para ingenie­ ros, com o FO RTRAN o PASCAL, para citar solam ente dos ejemplos. C uando se trata de resolver un problema cuya característica es el control de com ponen­ tes electrónicos, como en el caso de los m icro­ controladores, se debe recurrir a un lenguaje es­ pecializado. El m ás com ún de ellos recibe el nom bre de LENGUAJE E N SA M BLA D O R o ASSEMBLER. Este lenguaje está compuesto por un conjunto de palabras sencillas que perm iten describir acciones básicas, com o por ejem plo el m ovim iento de datos entre las diferentes partes del sistema. Una de las dificultades que aparece cuando se utiliza el lenguaje ENSAM BLADOR tiene que ver con el hecho de que cada com putadora o 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 im portar cual sea, esta­ rá en condiciones de transferir sus habilidades a un sistema diferente. Con el objeto de aclarar las ideas, y empezar a entrar en m ateria, vamos a mostrarle como es­ cribir el programa de la figura 1.5 en lenguaje EN SAM BLAD O R. Por com odidad y facilidad didáctica, vamos a utilizar por ahora instruccio­ nes para una com putadora genérica, es decir, una com putadora que tenga la m ayoría de elementos presentes en las restantes computadoras.

Programación Iniciar

Detector de metales Posición de memoria

Alarma sonora Vale 1

¿Qué valor tiene dato en memoria? Para facilitar las cosas, vamos a mostrar el proceso gráficamente, figura 1.7.

Ras

Mover el dato desde el detector de m etales hacia un a posición de la memoria.

Figura 1.7 Solución visual d e l problem a del detector de m etales

C om parar el dato alm acenado en la m e m o r ia c o n el v a lo r 1.

Ahora que usted ha visto la solución gráfica del problema, podrá entender la conversión a palabras del mismo proceso, figura 1.8.

Si de la comparación resulta que el d ato a lm ace n ad o N O es 1, el d e te c to r no h a p e r c ib id o la p resen cia de un m etal, y debe regresarse al paso 1 para continuar con una nueva lectura. En caso contrario, el valor del dato es 1 (presencia de m etal) y debe a c t iv a r s e la a la r m a s o n o r a .

Paso 5

Terminar

Term inar el proceso

Figura 1.8 Solución en palabras delproblema del detector de metales

Ya estam os preparados p ara escrib ir la so­ lu ció n en le n g u aje E N SA M B L A D O R g e n é ­ rico. En realid ad , todo lo q u e tenem os que h acer es u tiliz a r palab ras m ás cortas, y esta­ blecer convenios q u e p erm itan realizar una escritu ra un ifo rm e. C ad a paso se num era en forma ascendente, y en cada uno de ellos se alm acena la corres­ pondiente instrucción, figu ra 1.9. La colum na de “C om entario” se utiliza para dar una expli­ cación de cada instrucción y si la instrucción es m u y obvia, no se utiliza. Curso práctico de M icrocontroladores

S .Á .

lu ís »

os básicos de program ación

Paso Instrucción

C om entario

0001 0002 0003 0004 0005

d a to _ d e te cto r , m em oria_ interna m em oria _ in tern a , 1 p a so 0001 d ife re n te _ a a la rm a _ ex tern a

mover comparar salta r_ si_ d ife re n te _ a a c tiv a r p a ra r Figura 1.9

El program a escrito en lenguaje ENSAMBLADOR genérico .

El lector debe aco stum b rarse a trad u cir m en talm en te las instrucciones escritas en len­ g u a je E N S A M B L A D O R . Para ilu s tra r este proceso, vam os a realizar las co rresp o n d ien ­ tes conversiones de los pasos m ostrados en la fig u ra 1. 9.

P aso 0001

Tomar el dato correspondiente al estado del detector y almacenarlo en una posición de m em oria en el in te r io r de la c o m p u ta d o ra . Com parar el dato alm acenado en la m e m o ria c o n el v a lo r 1.

P aso 0 0 0 3

P aso 0 0 0 4

P aso 0 0 0 5

• Si de la com paración resulta que el dato alm acenado es diferente al valor 1, debe saltar al paso 0001 para continuar con la ejecución del programa. En caso de que el dato almacenado sea igual al valor 1, se debe activar la alarm a sonora. Detener la ejecución del programa.

Paso

Instrucción

C om entario

0001 0002 0003 0004 0005

mov comp s d if escr fin

d e t e c t o r , mem mem, 1 0001 a la r m a , 1

Figura 1.10 El program a escrito en lenguaje ENSAMBLADOR genérico, pero m ás compacto.

S im p lem en te, hem os u tilizad o palabras m ás cortas. Vamos a repetir, nuevam ente, la traducció n m ental de instrucciones. Sin em ­ bargo, le sugerim os que observe con cuidado la in strucció n del paso 0 0 0 4 , ya que en ella hem os realizado un a m ejora q u e confiere m a­ yor clarid ad al proceso de program ación. En lugar de indicar que se activa la alarma sonora, es preferible escribir (enviar) un dato al dispositivo físico: 1 para activar, 0 para apagar. M ás adelante estudiaremos programas sim i­ lares a los mostrados en las figuras 1.9 y 1.10, pero utilizando el lenguaje EN SAM BLAD O R de un microcontrolador real.

El diagrama de bloques o de flujo El le n g u a je E N S A M B L A D O R d e las c o m p u tad o ra s reales es aú n m ás co m p acto q u e el m o strad o en la fig u ra 9. U na versión m ás cercan a a la re alid ad se m u estra en la f ig u r a 1 .1 0 .

M W l l Curso práctico de M icrocontroladores

Es bastante com ún, para facilitar su trabajo, que los programadores utilicen elementos gráficos para realzar visualm ente las características de los componentes que hacen parte de la solución de un problema. Por este motivo, no es tampoco de extrañar que los programas de las com puta­ doras se diseñen a partir de esquemas concretos,

Programación Mover el dato correspondiente al estado del detector de m etales, alm acenándolo en la p o s ic ió n de m em o ria d en o m in ad a m em . N o d eb e p re o c u p a rse p o r el n o m b re u t iliz a d o p a ra e sta posición de memoria. Es suficiente con saber que todos los elementos in tern o s de un a co m p u tad o ra poseen algún nombre en particular.

Inicio

1

r

Com parar el dato almacenado en la posición de m em o ria (d en o ­ m in a d a m em ) con el v alo r 1. Si de la com paración resulta que el dato guardado en la m em oria (p ro v e n ie n te del d e te c to r) es diferente al núm ero 1, se debe saltar al paso 0001 para continuar con una nueva lectura del e s ta ­ do del detector. P aso 0 0 0 4

Paso 0 0 0 5

En caso de que el dato guardado en m em sea igu al al valor 1, es decir, se detecta la presencia de un objeto metálico, se debe escribir el número 1 en la dirección asignada a la alarm a sonora. Esta acción inicia el sonido de la alarm a. En caso de necesitar apagarla (quizá un poco más adelante) se utilizaría la in stru cció n : e s c r a la r m a , 0 (e s c r ib ir el n ú m e ro 0 en la dirección asignada a la alarm a). Detener la ejecución del programa.

lo que ha dado origen a una representación de­ nom inada D IAGRAM A DE BLO Q UES, cono­ cida también con el nombre de DIAGRAMA DE FLUJO. Observe a continuación el programa de la figura 1.9, pero presentado mediante un diagra­ m a de bloques, figura 1.11. En esta construcción se observan varios ele­ mentos que es conveniente enumerar. En primer lugar, las figuras con forma rectangular represen-

¿Mem = 1? NO

•m SI 1

Alarm a

fr Fin L

1

----------------------- J

Figura 1.11 Diagrama de bloquespara elprograma del detectorde metales

tan acciones concretas que deben ser ejecutadas por la com putadora, figura 1.12.

Figura 1.12 Una acción sim ple

Las flechas indican el flujo que debe se­ guir la com putadora para ejecutar las acciones indicadas. No es necesario num erar los elemen­ tos gráficos, ya que estas indican con claridad el camino que debe seguirse, figura 1.13.

Figura 1.13 Flechas que indican e l flujo de ejecución d e l program a

Curso práctico de M icrocontroladores

9 .A .

ffleD to s básicos de program ación Un figura con forma de rombo representa una condición que debe ser evaluada o analiza­ da, y en base a este análisis, tomar una decisión. Si la respuesta es satisfactoria, es decir, si se cum ple la condición, debe tomarse un determ i­ nado cam ino; en caso contrario, cuando no se cum ple la condición, debe tomarse un camino diferente, figura 1.14.

Figura 1.14 Rombo que indica una decisión

Un rectángulo con los extremos redondea­ dos indica una acción especial. En particular, si la figura contiene la palabra Inicio se indica a la com putadora el punto en donde comenzar el programa. Si el componente contiene la palabra Fin, se indica a la com putadora que el proceso ha ter­ m inado, figura 1.15.

De la computadora al microcontrolador En esta prim era visión del m undo de la pro­ gram ación , sólo nos resta observar un detalle de gran interés: ¿es lógico utilizar un a podero­ sa y costosa com p utado ra personal para detec­ tar la presencia de objetos m etálicos? Es evi­ dente que en el caso de que existan a lte rn a ti­ vas más sim ples y económ icas, éstas deben ser escogidas. Pero, ¿cuáles son estas alternativas? A la pregunta plan teada en el párrafo anterior se puede responder haciendo referencia al com ­ ponente electrónico m ás notable de nuestro tiem po: e l m icr o co n tr o la d o r . D esde otro punto de vista, podem os defi­ n ir un m icrocontrolador com o un a co m p uta­ dora en m in iatu ra alo jada en un solo circuito integrado, pero con la capacidad suficiente para resolver p ro b lem as esp ecífico s de d iferen te co m p lejid ad , con lo que se obtiene un sign ifi­ cativo ahorro en los recursos físicos utilizados, figu ra 1.16. La arquitectura y el modo de operación del m icrocontrolador se estudian en la sección de teoría de esta obra. Los aspectos relacionados con las técnicas de program ación aplicadas al m icrocontrolador serán descritos com pletam en­ te a lo largo de las próxim as lecciones.

Figura 1.15 Inicio y Fin del program a

Los textos presentes en los diversos com ­ ponentes hacen referencia a las acciones que se deben ejecutar. La inform ació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. N aturalm en­ te, en programación existen otros elementos que deben considerarse, pero las estudiaremos cuan­ do sean necesarios. Curso práctico de M icrocontroladores

Figura 1.16 Estructura interna de un m icrocontrolador

SISTEMAS DE NUMERACION EN LA PROGRAMACIÓN DE MICROCONTROLADORES .•

IW IW 1 1w

cmti

Los seres humanos trabajamos con el sis­ tema decimal, los microcontroladores tra­ bajan con el sistema binario y para facili­ tar la escritura de los programas de estos, se trabaja en el sistema hexadecimal. Por esto es importante conocer estos dos últi­ mos sistemas de numeración si queremos aplicar en forma eficiente esta tecnología. o

Curso p rá c tic o so b re M icro co n tro la d o re s

Los microcontroladores son sistemas cuyo comportamiento no se define en el momento de su fabricación. Para que un microcontrolador sea útil, se debe grabar en su memoria interna el con­ ju n to de acciones que debe ejecutar. Una vez hecho esto, se dice que el microcontrolador ha sido program ado, y se encuentra preparado para ejecutar los procesos de control que le han sido encomendados. Habitualmente, un microcontro­ lador embebido ( em bedded) o incluido en un cir­ cuito de control electrónico, m antiene su pro­ gram a original, en tanto no se presente ningún desperfecto en el circuito integrado. ¿Q ué técn ica se u tiliza p ara p ro gram ar un m icro co n tro lad o r? En la sección d ed ic ad a a los conceptos básicos, se m en cio n ó q u e las in stru ccio n es del p ro gram a se deben c o d ifi­ car u tiliz an d o el len g u aje llam ad o E N S A M ­ B L A D O R . Esto, au n q u e en p rin c ip io parece correcto, no refleja exactam en te lo q u e pasa en el in te rio r del m icro co n tro lado r. En ú lti­ m a in sta n c ia , los m ic ro co n tro lad o re s so la­ m en te com p renden el len gu aje de los “unos” y los “ceros” o sistem a b in ario ; en otras p ala­ bras, son c ircu ito s d igitales. El program ador, in icialm en te, codifica la solución del problem a en len guaje E N SA M ­ BLA D O R . A co n tin u ació n , utilizan d o una com putadora de soporte, transform a el progra­ m a co n virtién d o lo a código de M Á Q U IN A (unos y ceros). Este código binario se graba en la m em oria del m icrocontrolador, y es el que realm ente se ejecuta al in icia r el ciclo de ope­ ración del sistem a.

Estructura de los datos Un concepto fundam ental a la hora de pro­ gram ar un m icrocontrolador, es el relacionado con la m an ip u lació n de los datos provenientes del m undo exterior. Suponga, por un m om en­ to, q u e usted decide con struir un sistem a que m id a la tem peratura de una h abitación y que active un a alarm a sonora cuando la tem p era­ tura sobrepase los 26°C .

(Ú M M IIT

¿Cómo hace el microcontrolador para cono­ cer y m anipular los datos que corresponden a la temperatura del m edio ambiente? Recuerde: to­ dos los datos manejados por un microcontrola­ dor son de tipo digital. Esto significa que la in ­ formación se representa internam ente mediante niveles de voltaje discretos. Por ejemplo, un ni­ vel de voltaje de 0 voltios se representa con el núm ero cero (0), mientras que un nivel de volta­ je de +5 voltios se representa con el número uno (1), figura 2.1.

+5V 0 voltios, núm ero 0

1

+ 5 voltios, núm ero 1

Figura 2 .1 Representación de un dígito binario

¿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 binario (base dos). El sistem a binario se caracteriza por em ­ p lear ún icam en te los d ígitos 0 y 1. Para em pe­ zar a entrar en m ateria, vamos a mostrarle cómo se pueden representar las tem peraturas 0 °C y 1°C en este sistem a. Para el ejem plo p lan tea­ do, la representación es directa: basta con u ti­ lizar un sim p le dígito b in ario (tam bién deno­ m inado bit). Tem peratura 0°C 1°C

N úm ero binario 0 1

Pasemos ah ora a representar con n ú m e­ ros b in ario s las tem p eratu ras 0 °C , 1°C, 2°C y 3 °C . Si sólo disponem os de dos valores en el sistem a b in ario , 0 y 1, ¿cóm o es posible representar cuatro tem peraturas diferentes? La so lució n se o b tien e agregando a la izquierda del núm ero binario, un segundo d íg ito {bit) con el cual se p uedan crear com binaciones que no se repitan.

Curso práctico sobre M icrocontroladores

Programación Tem peratura

0°C re 2°C 3°C

N úm ero binario

00 o 1 10 1

El dígito (bit) situado más a la derecha del nú­ mero binario, toma los valores 0 y 1 para las tempe­ raturas 0°C y 1°C (exactamente igual que antes). Sin embargo, observe que esta situación se repite para las temperaturas correspondientes a 2°C y 3°C. La clave para diferenciar los dos rangos de tem­ peratura (0°C -1 °C y 2°C -3°C) está en el b it más a la izquierda del número binario. Este b it toma el valor 0 para las dos primeras temperaturas (0°C y 1°C), y adquiere el valor 1 para las dos temperatu­ ras restantes (2°C y 3°C). De este modo, aunque el b it 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 única. Tem peratura 0°C 1°C

0 1

4°C 5°C 6°C 7°C

N úm ero binario TT 0 0 0 0 1 0 1 0 _0 1 1 1 1 1 1

0 0 1 1

0 1 0 1

C om o regla general, cada b it que se agrega a la izquierda de un núm ero binario, perm ite du­ plicar la cantidad de elementos que se podían diferenciar antes de agregarlo.

Números binarios de dos díg ito s

Números binarios de tre s dígitos

El te r c e r b it de la iz ­ quierda agrega el va lo r 4 al número de la derecha

| Tercer dígito

Representemos ahora las temperaturas 0°C, 1°C, 2°C, 3°C, 4°C, 5°C, 6°C y 7°C. Cómo podrá adivi­ nar el lector, es necesario agregar un nuevo bit en el extremo izquierdo del número binario, de modo que se creen combinaciones únicas. Observe el resultado: T em peratura 0°C 1°C 2°C 3°C

Para empezar, observe el dígito (bit) del ex­ tremo izquierdo de los números binarios de la tabla anterior. Este dígito vale 0 para las prim e­ ras cuatro temperaturas, mientras que vale 1 para las últimas cuatro. Gracias a la presencia de este tercer bit, se puede disponer de ocho tem peratu­ ras diferentes.

El esquem a de la figura 2 .2 ilustra el peso o valor relativo que tiene el tercer dígito (de dere­ cha a izquierda) en cualquier número binario.

N úm ero binario 0

2°C 3°C

Las combinaciones de dígitos binarios son únicas; esto garantiza que cada tem peratura se representa, tam bién, de m anera única. Podría­ mos continuar haciendo crecer la tabla mostra­ da, pero es evidente que se debe encontrar un método que perm ita representar cualquier tem ­ peratura, sin im portar cual sea su valor.

000

001

010

011— 100

0 1

2

101

3 4 5

110

6

111

7

0 +

-------

00 01 10 11

00 4 +

01 10 11

0 1 2 3 4 5

6 7

t______

Figura 2 .2 El peso de un b it de acuerdo con su posición

El efecto de colocar el valor 1 al tercer dígito es similar a sumar 4 al número binario de la dere­ cha. En este sentido, el peso del tercer dígito es 4. Al hablar de un bit, es conveniente conocer su posición dentro del núm ero binario. Es usual Curso práctico sobre M icrocontroladores

S .A .

tem as de num eración de la suma de los pesos de los dígitos binarios cuyo valor es 1. El d íg ito situ ad o m ás a la iz­ q u ierd a tien e el peso más alto , m ien tras que el d íg ito situ ad o más a la derecha es el d ígito q u e tien e el m en o r peso. El d íg ito con m ayor peso se d en o m in a M SB {Most S ign ifica n t B it), m ien tras q u e el d íg ito con el m en o r peso se d e n o m in a LSB (Least S ig n ifica n t B it).

que los dígitos binarios se num eren de dere­ cha a izquierda, en orden creciente, em pezan­ do con el valor 0. Para ilustrar los conceptos vis­ tos hasta ahora, presentamos la estructura que tiene un núm ero binario de 8 bits, con los pesos asociados a cada dígito binario, figura 2.3. Peso del bit

128

Posición del bit

64

7

6

32 16 8

5

4

4

3

2

2

1

1

Dígito con mayor peso

Dígito con m enor peso

(MSB)

(LSB)

0

“ El peso de cada b it es el doble que el peso del b it situado a su derecha" Figura 2 .3 Pesos asociados a cada b it

Figura 2 .4 Los dígitos MSB y LSB

Los primeros 16 números binarios son de gran im portancia en el dom inio de la electrónica digital, de los microcontroladores, de los microprocesadores y de las computadoras. Estos nú­ meros forman la base del sistema hexadecimal, el cual consiste de 16 símbolos diferentes. En la tabla de la figura 2.5 se muestran los números del 0 al 15 en su representación bina­ ria, decim al y hexadecimal. Además, se 0 1 1 1 indica cómo derivar los valores decim a­ les a partir de los pesos asociados a los 4 2 1 8 bits cuyo valor es 1. (8x1) + (4x0) + (2x1) + (1x1) =

Los pesos permiten establecer el valor deci­ mal de un número binario. Observe el número binario 1011, correspondiente a una tem peratu­ ra de 1 1°C. Si queremos encontrar el valor deci­ mal a partir de esta representación binaria, basta sim plem ente con sum ar el peso de los dígitos cuyo valor es 1. N úm ero binario Pesos

N úm ero decim al

8

+

0

+

2

+

“Ú nicam ente im portan los pesos de los bits del número binario, cuyo valor es 1” Fácil, ¿verdad? ¿Podría el lector indicar qué temperatura se representa con el núm ero bina­ rio 11001101 ? Observe abajo la solución: Hemos resaltado en negrilla los pesos de los bits cuyo valor es 1. El núm ero decimal resulta N úm ero binario Peso de los dígitos binarios

1

1

128

64

1

En el sistema hexadecimal, los últi­ mos seis números se representan con las letras A, B, C, D, E y F, tomadas todas ellas del alfabeto. La conversión de un número binario al sistema hexadecimal no cambia el valor del nú­ mero representado. Sin embargo, es una norma en electrónica utilizar números hexadecimales en lugar de números binarios ¿por qué? Observe la siguiente simplificación: dado el número binario 1100110110110011, encuentre el número hexa­ decimal equivalente. = 11

0 32

0

1

1

0

1

16

8

4

2

1

(128x1) +(64x 1)+(32x0)+(16x0)+ (8xl) + (4xl) + (2x0)+ (lxl) N úm ero decim al

128

+ 6 4 + 0 +

Curso práctico sobre M icrocontroladores

0

+ 8 + 4

+

0

+ 1 = 250

Programación

N úm ero bin ario

Equivalente

Equivalente

H exadecim al

Decim al

D erivación decim al a p a rtir ■

de los d ígito s bin ario s 8

4

2

1

Peso 8

4

2

1

0

0

0

0

0

0

o+o+o+o

0

0

0

1

1

1

0+0+0+1

0

0

1 0

2

2

0+0+2+0

0

0

1 1

3

3

0+0+2+1

0

1 0

0

4

4

0+4+0+0

0

1 0

1

5

5

0+4+0+1

0

1 1 0

6

6

0+4+2+0

0

1 1 1

7

7

0+4+2+1

1 0

0

0

8

8

8+0+0+0

1 0

0

1

9

9

8+0+0+1

1 0

1 0

A

10

8+0+2+0

1 0

1 1

B

11

8+0+2+1

1 1 0

0

C

12

8+ 4+ 0+ 0

1 1 0

1

D

13

8+4+0+1

1 1 1 0

E

14

8+4+2+0

1 1 1 1

F

15

8+4+2+1

Figura 2 .5 Equivalente binario, hexadecim al y decim al

El prim er paso que se debe dar para resolver el problema propuesto consiste en dividir el nú­ mero binario en grupos de 4 bits: se empieza agrupando los 4 bits a la derecha del núm ero bi­ nario, se agrupan luego los 4 bits ubicados in­ m ediatam ente a la izquierda, y el proceso conti­ núa hasta que se agotan todos los dígitos del nú­ mero binario original. Si el últim o grupo creado no contiene exactamente 4 bits, se recurre a com­ pletarlo agregando ceros (no significativos) a su izquierda. A pliquem os este procedim iento al número binario 1100110110110011.

1100110110110011

1100 1101 1011 0011

Número binario original Grupos de 4 bits

El segundo paso en la solución del problema consiste en buscar en la tabla de números hexadecimales el grupo binario a ser reemplazado, escribiendo en su lugar el núm ero hexadecimal correspondiente, figura 2 .6 . 1100110110110011 1 1 1 1 ▼ ▼ ▼ ▼ 1100 1101 1011 0011 l i l i ▼ ▼ ▼ ▼ C D B 3

Número binario original Grupos de 4 bits Números hexadecimales equivalentes

Figura 2 .6 Generación de un núm ero hexadecim al

Una consecuencia positiva de la representación hexadecimal estriba en que es mucho más fácil re­ cordar el número CD B3 en base 16, que su equiva­

Curso práctico sobre M icrocontroladores

S .A .

tem as de numeración lente binario 1100110110110011. Otra ventaja que se deriva del uso de los números hexadecimales tie­ ne que ver con la disminución del espacio emplea­ do para su representación en documentos escritos.

pesos. Para ilustrar lo anterior, consideremos el núm ero 32; su representación en binario es: 001 0 00 00 . En la figura 2 .7 puede apreciar su representación en BCD.

En los próximos apartados vamos a estable­ cer algunas definiciones que serán útiles más ade­ lante. Figura 2.7. Representación en BCD del núm ero 32

Bit Un b it es la unidad m ínim a de información en un sistema binario, y puede tomar sólo uno de estos valores: 1 ó 0.

Nibble Un n ibble es un grupo de 4 bits. El n ib b le es útil para representar conjuntos de dígitos decimales, com o se verá a continuación.

Byte Un byte es un grupo de 8 bits. En un byte, el bit de mayor peso, usualmente el de la izquierda, se denom ina b it M SB ; el b it de. menor peso, usual­ mente el de la derecha, se denom ina b it LSB. El byte es una de las estructuras de datos más u tili­ zadas en todos los sistemas de computación.

Word BCD Un dígito decimal: 0, 1 ,2 , 3, 4, 5, 6, 7, 8 o 9 se puede representar mediante 4 dígitos binarios (un nibble). La siguiente tabla muestra los dígitos deci­ males y su equivalente binario, al cual se lo conoce con el nombre BCD (Binary C oded Decimal).

Una palabra ( w ord) es un conjunto de 16 bits, y equivale a la unión de 2 bytes. Ocasionalmente, es necesario 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 (dou ble ).

Algunos sistemas permiten la representación de los núm eros decim ales en form ato B C D . C uando se utiliza esta forma de representación, se reemplaza cada dígito decim al por su equiva­ lente en B CD , uno después de otro. El resultado que arroja este proceso difiere del que se obten­ dría aplicando la num eración binaria basada en

dremos diferenciar entre 4 entidades distintas: 00, 01, 10 y 11. ¿Cuántos elementos podremos diferenciar con 16 bits? La respuesta a esta pre­ gunta no se obtiene generando todas las posibles combinaciones y luego contándolas, ya que esto llevaría demasiado tiempo. En su lugar se em ­ plea la siguiente fórmula:

’M W ll Curso práctico sobre M icrocontroladores

Programación cero. El uno que sobra se acu m u la y pasa a la sigu ien te colum na.

N úm ero de com binaciones = 2" en donde n es el núm ero de dígitos binarios. Aplicando la fórmula al problema planteado se obtiene: N úm ero de com binaciones = 2 16 = 6 5 5 3 6

Operaciones básicas Los microcontroladores permiten el uso extensi­ vo de las operaciones m atem áticas básicas: es posible sum ar o restar números binarios, realizar operaciones de tipo lógico y desplazar el conte­ nido binario de un registro o posición de m em o­ ria. A continuación, vamos a ilustrar las opera­ ciones de sum a y resta binaria.

La operación binaria: 1 + 1 + 1, se puede resolver recurriendo a sum as sucesivas. Obser­ ve la fig u ra 2 .1 0 . En el paso (a) se sum an los dos prim eros unos. La respuesta es cero y “lle­ vo” uno. En el paso (b) se tom a el valor calcula­ do en el paso anterior (10) y se agrega al tercer uno que teníam os pendiente por sumar. La res­ puesta final es 11.

01+ 01-

------- I T ! -> o i 10-

? •

* 10 01 + ■■

1 (a)

La suma de dígitos binarios

^ I +

0

0

1

+

1 0 1

(b)

Figura 2 .1 0 Sum a de tres dígitos binarios cuyo valor es 1

La sum a de números binarios es sim ilar a la suma de números decimales. Basta con recordar que en el caso del sistema binario, sólo se utilizan dos dígitos: el cero y el uno. La figura 2 .9 permite entender el mecanismo empleado cuando se su­ man números binarios. 0 + 0

11

+

1 1 10

Figura 2 .9 La sum a binaría

La primera suma es evidente: al sum ar dos ceros se obtiene un cero. La segunda suma, al igual que la tercera, tampoco presenta ninguna dificul­ tad: al sumar el número uno con el número cero se obtiene como resultado el número uno. El caso más interesante corresponde a la cuarta colum na: si sum a el núm ero uno con el núm ero uno, obtiene como respuesta el núm e­ ro dos. Recuerde: el núm ero dos se representa en el sistem a binario con la com binación 10. Sum ar dos d ígitos con valor uno en el sis­ tem a b in ario produce com o resultado el valor

Suma de números binarios La sum a de números binarios es similar a la suma de números decimales: se empieza con los dígitos situados a la derecha del número binario, sum án­ dolos entre sí, y calculando, tanto el resultado de la suma como el valor del acarreo (curry) que se transfiere a la siguiente columna. El proceso se repite para cada nueva co­ lu m n a a la izquierda, pero tom ando en cuenta el b it de acarreo que viene de la co lu m n a más a la derecha. El proceso descrito en el párrafo anterior pue­ de resultar difícil para quien no tenga experien­ cia previa con los sistemas binarios. Por esta ra­ zón, sugerimos que las sumas binarias que ten­ gan algún grado de com plejidad (números con muchos dígitos binarios) se resuelvan convirtien­ do primero los números al sistema decimal, rea­ lizando a continuación la sum a y por últim o, pa­ sando la respuesta a su equivalente binario (un método más sim ple consiste en utilizar una cal­ culadora que tenga incluida la posibilidad de su­ m ar números binarios).

m as de num eración

Oi o

Números binarios negativos En apartados anteriores hemos visto como represen­ tar números decimales en notación binaria. Pero podríamos preguntar: ¿y si el número 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 número decimal 3: D ecim al

Binario

cuyo valor es cero se cam bian por uno. A esto se lo llam a com plem ento a uno. 3. Por últim o, se sum a el bit 1 al número obteni­ do en el paso anterior. El resultado es el núme­ ro negativo buscado.

Ejemplo: Representar en binario el número - 2 5 . Aplicación del algoritm o 1. Convertir el número 25 a binario.

000000 1 1

3

¿Cóm o se representa, en binario, el número decim al —3 ?.

Peso N úm ero 25

128 64 32 16 8 4 2 1 0 0 0 1 1 0 0 1

2. C om plem entar los dígitos binarios. Para empezar, si usted sum a el valor 3 al nú­ mero - 3 , debe obtener como respuesta el núm e­ ro 0. Entonces, ¿qué valor debe sumarse al nú­ mero binario 00000011 (3 decim al) para obte­ ner el número 0 0 0 0 0 0 0 0 (0 decimal)? Observe la respuesta en la figura 2 .11. D ecim al

+

Binario

3 -3

+

0

000000 1 1 1 1 1 1 1 1 0 1-4-----

000 1 100 1 11100110

3. Sum ar al número en complemento a uno con el valor 1. C om plem ento a uno Sum a con b it 1

11100110 00000001

N úm ero (-25)

11100111

Respuesta

100000000 Figura 2.11

Número binario negativo

Resta de números binarios

Supongamos, por un momento, que el b it de acarreo no importa y puede desecharse. Si este fue­ ra el caso, p o d ríam o s a su m ir q u e el valor 11111101 equivale al número —3, ya que al su­ marlo al número 3 produce el valor 0.

Del apartado an terio r debe resultar evidente que el proceso para realizar restas binarias con­ siste sim p lem en te en encontrar el núm ero ne­ gativo del valor a restar, sum ándolo a co n ti­ nuació n al núm ero positivo. Esto es equiva­ len te (en d ecim al) a un a operación del tipo: 48 - 3 2 = 4 8 + (-32).

¿Cómo puede representarse, en general, un número decimal negativo usando el sistema bina­ rio? La respuesta está contenida en el algoritmo denominado co m p lem en to a d os lo cual se lograde la siguiente manera: 1. Se convierte el núm ero decim al a su repre­ sentación en binario. 2. Se invierten los dígitos binarios: aquellos cuyo valor es uno se cam bia por cero, y aquellos

De nuevo, al igual que en la sum a binaria, es más cómodo realizar primero la conversión de los números binarios a su equivalente decimal antes de proceder a realizar la resta. El resultado obtenido se convierte al equivalente binario ne­ gativo, obteniéndose la respuesta deseada. En capítulos posteriores tendrem os la ocasión de aplicar este método.

1 T *1



N úm ero 25 C om plem ento a uno

Curso práctico sobre M icrocontroladores

LECCIÓN 3 M P tA Ü

PHIICI CURSI

C \ A R a i I V “ 1 \M P L A B \C X A M P lE \IN V tH S 0 H P J I

Programador R O Ñ IC A

IN

JU A N AMORES C A S I AÑO JORGE EDUARDO HERNANDEZ

Archivo ejecutable

Programa ensam blador

PROGRAMACIÓN DE MICROCONTROLADORES U no de los aspectos m ás im portantes en el diseño y en la ejecució n de pro­ yectos y aparatos con m icro co n tro la­ dores, es la planeación y escritura ad e­ cuadas de sus p ro gram as, los cuales varían según la m arca y el m odelo del dispositivo u tilizad o , los circuitos ex­ ternos a él conectados y la fun ció n a realizar. A p artir de esta lección ire­ mos exp lican d o , paso a paso, la m e­ to d o lo g ía y las técn icas ap ro p iad as para hacerlo.

UiiUHHUni) UII1 t i UOI1 nuniiniiiin llllOOUOOO nnot t 1 1 1 oniioonou

I

>I •

i

amación de microcontroladores

La solución de un problema de control elec­ trónico, basado en microcontroladores, incluye dos etapas fundamentales: escribir el programa en lenguaje ensamblador y generar el archivo binario ejecutable que debe grabarse en la memoria del microcontrolador. Para empezar, estudiaremos el proceso de ensamblado de código. El ensamblador está conformado por varios módulos independientes, cada uno de los cuales cum ple una función específica. Los módulos más importantes son los siguientes: E n sam b lado r básico. G enera, a p artir del có­ d igo fuente, un archivo b in ario relocalizable. Este archivo puede ser alm acenado en cualquier segm ento disponible en la m em o ria del m icro­ controlador. Enlazador (litiker). Crea, a partir del archivo bi­ nario relocalizable, un archivo binario ejecuta­ ble. Este código es el que ejecuta directam ente el microcontrolador. C ontrol de librerías {lib). Este módulo permite crear archivos binarios que pueden ser unidos (enlazados) con otros bloques de código binario, lo que facilita la reutilización de partes de pro­ gramas generados en otros proyectos. El uso de librerías sim plifica el desarrollo de programas de gran tam año y complejidad. La figura 3.1 muestra la estructura del en­ samblador, así como el flujo de información en-

En lo sucesivo emplearemos el término en­ samblador para referirnos al conjunto completo de programas que genera un archivo binario a par­ tir del código fuente de un programa de usuario. Un program a de usuario es un programa escrito usando el lenguaje ensamblador. Su objetivo es la solución de un problema de control electrónico. Un p ro g ram a e n sam b lad o r es aquel que reci­ be el código fuente de un program a de usuario y genera un archivo b in ario ejecutable. Este código se alm acen a en la m em o ria de progra­ m a, y es ejecutado por la u n id ad central de proceso cada vez que el m icrocontrolador se pone en m archa.

Control o sistema embebido Un proyecto de control o sistem a em bebido ( em beddedsystem ) utiliza un microcontrolador para gestionar de manera autónoma los procesos de ad­ quisición de datos y la activación de las líneas de sali­ da conectadas a periféricos extemos. Debido a que el precio de un microcontrolador es insignificante com­ parado con el de una computadora personal (PC) y, además, su tamaño es bastante reducido, se entiende que se lo prefiera en el control de procesos electróni­ cos y en el diseño de aparatos electrónicos modernos dotados con cierta “inteligencia”. El desarrollo de un proyecto embebido está sujeto a un ciclo de vida particular, según se apre­ cia en la figura 3.2.

Figura 3 .1 Estructura deI ensam blador

ir ;.

Curso práctico sobre M icrocontroladores

Figura 3 .2 Ciclo de vida de un proyecto embebido

Programación 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 más sim ple, y tal vez más 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. E d ito r de te xto

P ro g ra m a d o r

Archivo ejecutable

C ódigo

P ro g ra m a e n s a m b la d o r

En la figura 3.4 se plantea el método de tra­ bajo que recoge las ideas presentadas previamente y que son la clave para desarrollar un programa con éxito. Aunque el proceso es de naturaleza secuencial, es com ún que se elabore uno en espiral en el que, cada cierto tiempo, se practique una revisión m inuciosa de los objetivos alcanzados hasta el momento. Esto implica una revisión per­ manente del trabajo desarrollado. —

►H

s is T Í a ión

Adem ás del código binario, el ensam blador ge­ nera un co n ju n to de archivos adicio n ales, gra­ cias a los cuales es posible controlar la evolu­ ción del proyecto. La extensión que acom paña a cada nom bre de archivo, y que consiste en tres letras después de un p un to (.), in d ica cual es el tipo de inform ación que contiene el ar­ chivo. Un ejem plo tom ado de un ensam bla­ dor típico es el siguiente:

fuente

Figura 3 .3 Etapas en e l desarrollo de una aplicación para m icrocontroladores

R eq u isito s del p ro b le m a

Archivos generados por el programa ensamblador

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ^

D ise ñ o de los re c u rs o s

C ódigo fu e n te

G rabación en m e m o ria

P ruebas del s is te m a

Tipo de archivo

Extensión

Ejemplo

Código fuente del programa

ASM HEX LST

primero.asm primero.hex primero.lst primero.err

Código binario ejecutable Listado del programa Lista de errores Código objeto ejecutable Archivo de librería

ERR OBJ LIB

primero.obj rutinas.lib

Un archivo con extensión A SM (ó asm, dado que aquí no im portan las mayúsculas o m inús­ culas) contiene el código fuente del programa. El nombre del archivo (la palabra prim ero, en el ejemplo mostrado) está separado de su extensión m ediante un punto, y debe cum plir con las res­ tricciones impuestas por el sistema operativo. El método más sim ple para crear un nombre co­ rrecto consiste en empezar con una letra (y en algunos casos con un carácter de subrayado (_))> agregándole a continuación una combinación ar­ bitraria de letras, números y caracteres de subra­ yado. Algunos sistemas operativos restringen la longitud del nombre a un m áxim o de ocho ca­ racteres. Ejemplos válidos de nombres de archi­ vos fuente son los siguientes: primero.asm _control.asm alarm a_l .asm tempX20.asm

A n a lista P ro g ra m a d o r E le m e n to s d e l s is te m a

Figura 3 .4 M étodo de trabajo para e l desarrollo de program as basados en m icrocontrolador

Un archivo con extensión HEX u O BJ con­ tiene el código binario ejecutable, y se deriva au­ tomáticamente de un archivo con extensión A SM .

Curso práctico sobre M icrocontroladores

# r;

I’ IOC'I

¡p ació n de microcontroladores]

El proceso de ensamblado puede generar tam­ bién, de manera automática, dos archivos de gran importancia práctica. El primero de ellos (con exten­ sión LST) es un listado que contiene el texto del programa fuente debidamente formateado, lo que permite documentar con claridad el desarrollo del mismo. Este listado incluye la numeración de pági­ nas, la fecha y la hora en que se hizo el proceso de ensamblado, la tabla de símbolos del programa fuen­ te, la distribución de los datos en la memoria, así como los errores y advertencias que se derivan directamente del código Ríen te. Las instrucciones se organizan en columnas de acuerdo con una tabulación estándar.

naturaleza particular, cada ensamblador tiene sus pro­ pias reglas que deben ser respetadas. Afortunadamen­ te, existen ciertas normas de tipo general, comunes a la mayoría de los ensambladores, que es necesario conocer para reducir el tiempo invertido en el proce­ so de escribir un programa de usuario. A continua­ ción, comentamos algunas de estas características. Un programa escrito usando instrucciones del lenguaje ensamblador debe organizarse según un diseño basado en columnas. En la figura 3.5 se muestra la estructura de un programa escrito en ensamblador.

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.

E tiquetas

Es im portante establecer el significado de algu­ nos térm inos que serán m uy utilizados en las próximas lecciones: Registro. Es un depósito de números 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­ crocontroladores de la familia PIC) se utiliza en la mayoría de operaciones que manipulan datos. Su nombre viene de la palabra inglesa work (trabajo). Literal. Se refiere a un valor constante, usualmen­ te un núm ero escrito en formato hexadecimal. Ejemplos de literales: 3, 12, 3F.

Estructura de un programa escrito en lenguaje ensamblador Todos los microcontroladores disponen, como mí­ nimo, de un ensamblador. Ahora bien, debido a su i t

:

Operandos

C om entarios

I •

Figura 3 .5 División en colum nas de un program a fuente escrito

Los tipos de archivo descritos anteriormente pueden diferir de acuerdo con el m icrocontrolador utilizado.

Términos usuales

In s tru c c io n e s

en ensam blador

C ada una de las colum nas cum ple una fun­ ción específica, según se indica a continuación. Etiqueta Una etiqueta es un nombre con el cual se identi­ fica una posición de m em oria del microcontrolador, y sirve para marcar puntos específicos den­ tro del programa. Toda etiqueta debe empezar a escribirse en la prim era colum na de la línea y su longitud no puede sobrepasar (usualmente) los 31 caracteres; puede incluir, además, caracteres alfanuméricos, el carácter de subrayado (_) y el símbolo de interrogación (?). Instrucción Una instrucción hace referencia a una de las ope­ raciones básicas que puede ejecutar un microcontrolador. Un ejemplo de una instrucción tí­ pica es M O V LW , utilizada para cargar el regis­ tro W c o n un valor literal. El término c a r g a r s e interpreta en este contexto como a lm a cen a r e n , por lo que la instrucción M O V LW puede leerse así: “alm acenar un valor literal en el registro W ”.

Curso práctico sobre M icrocontroladores

Programación O perando Un operando es un elemento utilizado por una instrucción. Algunas instrucciones, debido a su sim plicidad, no utilizan operando. O tras, un poco más complejas, requieren el uso de un sólo operando. Por últim o, existen instrucciones que requieren el uso de dos operandos para cum plir cabalm ente su función. El prim er operando, cuando está definido, se denom ina operando fuente. El segundo operando, com plem ento del anterior, recibe el nombre de operando destino. La información fluye desde el operando fuente hacia el operando destino. C om entario Un comentario es un bloque de texto que le sir­ ve al programador para docum entar sus progra­ mas. Los comentarios son ignorados por el en­ samblador, y se reconocen porque empiezan con el carácter punto y coma (;).

Tipos de línea que se pueden incluir en un programa Los programas en ensamblador se deben escribir según un esquema que perm ita estructurar de manera sólida al trabajo desarrollado. En la figu­ ra 3 .6 se muestra la arquitectura general de un program a para microcontrolador.

namiento del ensamblador. Para ilustrar lo ante­ rior, considere la familia de microcontroladores PIC , la cual utiliza el ensamblador M PA SM . En este ensamblador la directiva list indica la versión del microcontrolador utilizado, lo que establece el tipo de programa binario generado. Esta directiva es obligatoria, ya que cada microcontrolador ge­ nera su propio código binario y el ensamblador debe adaptarse al modelo utilizado. Para ilu strar lo expuesto en el párrafo an ­ terior, supongam os que usted utiliza en un pro­ yecto el m icrocontrolador 1 6 C 8 4 . La d irecti­ va que debe in clu ir al com ienzo del program a es la siguien te: list

p=16C84

Constantes 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 program a, ya que, en lugar de referirse a un valor hexadecim al en par­ ticular, se puede utilizar el nom bre de la cons­ tante asociada. La m ayoría de los ensam blado­ res utilizan la palabra equ para definir una cons­ tante. Por ejem plo, la línea puertoA

Encabezado Constantes

; microcontrolador 16C84 I

equ

05

le indica al ensamblador que se puede utilizar la palabra puertoA en lugar del núm ero 05.

Definición de origen Instrucciones Final del programa Figura 3 .6 A rquitectura general de un program a en ensam blador

A continuación presentamos el significado de cada uno de los bloques mencionados. Encabezado Es el primer componente del programa, y en él se definen algunas directrices de tipo general, cono­ cidas como directivas, que modifican el fúncio-

D efinición del origen del program a Al programar un microcontrolador es necesario indicar explícitam ente en que sitio de la m em o­ ria se debe alm acenar el código binario del pro­ gram a que está a punto de ser ensamblado. Esto se consigue con la palabra org (origen). Por ejem ­ plo, la siguiente línea org

0

indica al ensam blador que debe almacenarse, a partir de la línea 0 en la m em oria de programa,

Curso práctico sobre M icrocontroladores

i r

S.A.

t o íh

] im ación

de microcontroladores

el código binario generado. Existen algunas va­ riaciones que indicaremos oportunam ente cuan­ do sea necesario.

nos (m ediante el uso de puertos de entrada), debe alm acenar esta información en la m em o ria de datos; esto perm ite que los datos estén disponibles para ser utilizados más adelante. 5 El microcontrolador posee una unidad arit­ mética y lógica 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 líneas en los puertos de salida. 6 Un sistema embebido (basado en microcon­ trolador), cum ple con el objetivo de con­ trol para el cual ha sido diseñado gracias a la existencia de un conjunto de instruccio­ nes (program a) que indica de manera pre­ cisa lo que debe hacerse en cada instante del tiempo. 7 Un programa (conjunto de instrucciones) se alm acena en la m em oria de program a del microcontrolador. 8 Un microcontrolador puede recibir señales del exterior (en instantes del tiempo que no es posible predecir), ante las cuales debe re­ accionar sin pérdida de tiempo. Esto im pli­ ca el abandono temporal de aquello que se está ejecutando, para dar cumplimiento a una función que atienda la interrupción. A los procesos implicados en este tema se los co­ noce con el nombre de procesos para el m a­ nejo de interrupciones.

Instrucciones del program a Esta sección se utiliza para alm acenar las instruc­ ciones del programa. U na instrucción típica in­ cluye los siguientes campos: etiqueta

código de operando(s) instrucción

; comentario

A excepción del campo código de instrucción, los restantes campos pueden aparecer (o no apa­ recer) dentro de una línea de programa. Final del program a Esta sección contiene una instrucción simple que m arca el final del program a. El ensam blador M P A SM (de la familia de microcontroladores PIC ) utiliza la siguiente instrucción para conse­ guir este propósito: end

El entorno de programación El objetivo de cualquier programa de usuario es, en principio, m uy sim ple: leer datos de periféri­ cos externos, calcular, y activar líneas de salida que produzcan cambios en el am biente externo. Las siguientes afirmaciones permiten entender la estructura del entorno de programación del microcontrolador: 1 El microcontrolador accede al contenido o a las señales de los componentes externos, a través del uso de puertos de entrada. 2 El microcontrolador modifica el contenido o envía señales a los componentes externos, m ediante el uso de puertos de salida. 3 Los datos leídos en un puerto de entrada son almacenados, en prim er lugar, en un registro interno del microcontrolador. 4 C uando un m icrocontrolador lee muchos datos provenientes de componentes exterM T 1

La figura 3 .7 presenta un modelo sim plifi­ cado del entorno en el que se desenvuelve la eje­ cución de un programa de microcontrolador.

El contador de programa El microcontrolador utiliza un registro especial, denominado contador de programa, para saber cuál es la siguiente instrucción que debe ejecutar. El pro­ ceso es simple: al comienzo de la ejecución, el con­ tador de programa apunta a la primera instrucción del programa; cada vez que ejecuta una instrucción, el contador de programa incrementa su valor, de modo que la instrucción que se ejecuta la próxima vez es la siguiente en la memoria de programa.

Curso práctico sobre M icrocontroladores

Programación

O R e g istro s in te rn o s

P u e rto de e n tra d a

U n id a d A r itm é tic a y

O

O P uerto de sa lid a

O

L ó g ic a

Señales de interrupción

Instrucción Unidad de control

O

O

Datos

O

O Memoria de datos

Memoria de programa

Figura 3 .7 El entorno de program ación fundam ental

La ejecución de las instrucciones, y el cam ­ bio en el contador de programa, es un proceso autom ático y transparente para el programador, lo que significa que se produce bajo el control interno del microcontrolador. A lgun as veces el co n tad o r de program a cam b ia su con tenido por un valor que no co­ rresponde a la siguien te posición de m em oria. Esto se verá en el siguien te apartado. La figu ra 3.8 m uestra el flujo probable en la ejecución de un program a.

Conjunto ( set) de instrucciones

alteran componentes conectados a los puertos de salida, lo que en cierto sentido im plica un proceso de escribir inform ación. Este proceso se ilustra en la figura 3.9. • Un conjunto especializado de instrucciones per­ mite acceder a información almacenada en la m em oria, realizando a continuación sobre ellas operaciones aritm éticas o lógicas. Los resulta­ dos intermedios pueden ser devueltos nuevamen­ te a la memoria, o almacenados en registros tem­ porales, para ser utilizados posteriormente. La figura 3 .1 0 muestra este tipo de instrucción. M em oria de program a

Antes de iniciar el estudio de las técnicas de pro­ gram ación, y su aplicación a problemas concre­ tos en el campo de los microcontroladores, es im portante com prender la naturaleza de las ins­ trucciones disponibles y la forma como se orga­ nizan jerárquicam ente, según las funciones para las que han sido diseñadas. • C ada instrucción perm ite actuar sobre un de­ terminado elemento del entorno de programa­ ción: algunas de ellas perm iten leer inform a­ ción proveniente de periféricos externos (me­ diante puertos de entrada), mientras que otras

C ontador de program a

El c o n ta d o r de program a alm acena la dirección de la siguiente instrucción que debe ejecutarse.

Figura 3 .8 Flujo probable en la ejecución de un program a

Curso práctico sobre M icrocontroladores

iri

ón de microcontroladores

iT o c iia iu a

In stru c ció n de le ctu ra D ato

P uerto rio ae e n tra d a

D a to

R eg istro Hol uei m ic ro c o n tro la d o r

In stru cció n de escritura D ato

R eg istro del m ic ro c o n tro la d o r

P u e rto de s a lid a

1 j

Figura 3 .9 Instrucciones de entrada/salida.

• Los program as no siem pre se ejecutan de m a­ nera lin eal; algunas veces es necesario alterar el contenido del contador de program a, lo que deriva en una ejecución no secuencial de las instrucciones. Esta característica con­ fiere una m ayor flexibilidad a los program as. Las instrucciones de salto se dividen en dos categorías. La prim era de ellas corresponde a las in stru ccio n es de salto co n d icio n al, en las cuales el salto se produce si, y sólo si se cu m ­ ple un a d eterm in ad a condición.

D a to in te rm e d io

La segunda categoría 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 muestra los dos tipos de salto indicados.

Dato 2 D a to u sado p o s te rio rm e n te

M em oria de program a

D ato in te rm e d io

Puerto

M em oria de program a

R e g is tro in te rn o

de

salida

D a to u sado

Figura 3 .1 0 Instrucciones de transferencia a m em oria y cálculos aritm éticos y lógicos.

En ocasiones es conveniente m anipular direc­ tam ente los bits individuales de los datos alm a­ cenados en la m em oria o disponibles en un re­ gistro interno. El microcontrolador dispone de instrucciones que aíslan cada b it de m anera in­ dividual. De este modo se puede tomar una decisión según el valor del b it o alterar su con­ tenido cam biándolo por un valor diferente. La figura 3.11 muestra algunas posibilidades brin­ dadas por estas instrucciones. B il s e le c c io n a d o

6

5

4

3

2

1

0

0

0

1

0

1

1

0

A cció n 1: Tomar una decisión según el valor del b it seleccionado

B y te

A cció n 2: Cambiar el valor del b it

Figura 3.11 Instrucciones de m anipulación de bits # W ll Curso práctico sobre M icrocontroladores

Salto con d icio n a l El camino seguido depende de una condición

S alto in co n d icio n a l El camino seguido siempre es el mismo

Figura 3 .1 2 Salto condicional e incondicional

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 instrucciones de con­ trol, y su presencia ayuda a mejorar de manera significativa el funcionamiento de los programas. A título de ejemplo, podemos citar las instruc­ ciones que habilitan (o inhiben) las interrupcio­ nes externas. En su momento se mostrará un panorama completo de ellas.

Programación Instrucciones de desplazamiento de bits En ocasiones es conveniente desplazar los bits de un registro (o posición de memoria) para ejecutar una operación matemática sencilla, o simplemente para crear un efecto que pueda reflejarse en el me­ dio de salida, como es el caso de un display o des­ pliegue luminoso o un conjunto de diodos LED. Para iniciar el tema, vamos a plantear el si­ guiente problema: se debe m ultiplicar el conte­ nido del registro W con el literal 2, reemplazan­ do el contenido previo del registro con el valor obtenido en la m ultiplicación.

W *2

■>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. (2 4 )

0 0 0 1 1000

(4 8 )

*2

R eg istro W a n te s

0 0 1 10 0 0 0 R e g is tro W d esp ués

Figura 3 .1 3 El contenido del registro W m ultiplicado p o r 2

Si com para el contenido del registro W an­ tes y después de la m ultiplicación, verá que la diferencia radica en la posición que ocupa cada bitr. es suficiente desplazar el contenido original del registro W una posición a la izquierda, para obtener el resultado de m ultiplicar el número por 2 (figura 3.14). 0 0 0 1 1 0 0 0

Registro W antes

0 0 1 1 0 0 0 0

R e g is tro W d e s p u é s

En cuanto a la operación de división, el pro­ ceso es a la inversa: basta con desplazar el conte­ nido del registro un b it a la derecha, para obte­ ner como resultado la división del número entre dos. Observe el proceso en la figura 3.15.

(2 4 )

(

12 )

0 0 0 1 1 0 0 0 -r- 2 W

w Figura 3 .15 Desplazam iento a la derecha

¿Qué ocurre con el b it que sale del registro, tanto a izquierda como a derecha, después del desplazamiento? Este se debe alm acenar en un sitio preparado especialmente para ello. El microcontrolador posee un registro especial, denominado registro de estado, para el cual el valor de los bits cambia según el resultado de las operacio­ nes ejecutadas. La figura 3.16 muestra el uso del re­ gistro de estado para almacenar el bit excedente que resulta de un desplazamiento a la derecha.

0\ 0\ 0\ 0\ 11 \ \ V'

V 'l 'l o]

00000

B it d e l re g is tro de estad o

Figura 3 .1 6 El registro de estado d e l m icrocontrolador

Ahora bien, ¿cuál es el valor del b it que ingre­ sa por el extremo más a la izquierda del registro en un desplazamiento hacia la derecha? Usualmente, es el valor cero. Esto se aplica también al desplaza­ miento en sentido contrario, en cuyo caso el bit que ingresa por el extremo más a la derecha es el dígito cero. La figura 3 .1 7 ilustra este proceso.

Figura 3 .14 Desplazam iento a la izquierda

Desplazar el contenido de un registro un bit a la izquierda, es equivalente a m ultiplicar su contenido por 2. Figura 3 .1 7 Bits que ingresan a l registro Curso práctico sobre M icrocontroladores

5 .4 .

h c u i i a i mación

de microcontroladores r

El desplazamiento de bits permite llevar a cabo tareas diferentes a las que se derivan del cál­ culo numérico: es posible desplazar circularmente el contenido de un registro, de modo que el b it más a la derecha se inserta com o prim er b it más a la izquierda (o en sentido inverso, según se de­ see). La figura 3 .1 8 ilustra los desplazamientos mencionados.

0000 1 10 1

Inicio

1

-11000010

Desplazamiento circular de W

Dato original Desplazam iento

lyou 0 0 \ j \0j 1i 1i 0

1i

1 0 0 0 0 1 10

Puerto de salida

circular

Resultado Pausa

Figura 3 .1 8 Desplazam iento circu la r Figura 3 .2 0 Diagram a de flujo

Aplicación del desplazamiento circular Estudie el siguiente programa: en el encontrará la solución a un problema de anim ación visual sobre un dispositivo óptico. La figura 3 .1 9 mues­ tra el resultado de este proceso y la figura 3.20 su diagram a de flujo. 1. C argar el registro W con el valor binario

11000010. 2. Desplazar circularm ente el contenido del re­ gistro W un b it a la derecha. 3. Enviar al puerto de salida el dato almacenado en el registro W. 4. Hacer una pausa. 5. Regresar al paso 2, con lo que el proceso se repite indefinidam ente.

El registro de estado El registro de estado de un microcontrolador perm ite verificar condiciones derivadas de pro­ cesos internos o externos, así como establecer condiciones especiales de control. C ada b i t c n el registro de estado tiene un significado particular el cual puede variar según la marca y familia del microcontrolador. A continuación vamos a des­ cribir los bits más importantes, dejando la expli­ cación de los restantes para cuando corresponda según las aplicaciones desarrolladas. En la figura 3.21 se m uestra una parte de la estructura típica de un registro de estado.

I Inte rrupciones

Tiempo 0

1 10 0 0 0 I0

Tiempo 1

0 1 1 0 0 00 1

Tiempo 2

10 1 10000

Tiempo 3

0 10 1 1 0 0 0

Tiempo 4

00101 100

Figura 3 .1 9 Aplicación d e l desplazam iento circular

N

Z

C

Cero Negativo

Acarreo

Figura 3.21

El registro de estado

A continuación describimos el significado de los bits de control. C - C ontrol de acarreo, l oma el valor 1 cuando se produce un b it d e acarreo ( Carry ) en una sum a de números binarios.

Curso práctico sobre M icrocontroladores

Z - C ontrol de cero. Toma el valor 1 cuando el resultado de una operación es cero. N - Control de número negativo. Toma el valor 1 cuando el resultado de una operación es negativo. I - Activación global de interrupciones. Al esta­ blecer su valor a 1 se activa la detección de interrupciones: el microcontrolador puede ser interrumpido en su funcionamiento por ele­ mentos externos. El microcontrolador dispone de instruccio­ nes que permiten tomar decisiones de acuerdo con el valor presente en los bits de estado. Estas instrucciones son útiles para crear ciclos o bifurcar a otras posiciones de memoria.

programa, a pesar de lo cual es útil porque consu­ me cierta cantidad de ciclos de máquina y por ello permite la creación de retardos de tiempo. D ireccionam iento inm ediato Se presenta cuando el dato no proviene de la memoria, sino que está incluido en la m isma ins­ trucción. Por ejemplo: M O V LW

5A

Esta instrucción almacena el literal 5A en el re­ gistro W. Se puede apreciar que el dato no pro­ cede del exterior ni tampoco de la memoria de datos. La figura 3 .2 2 muestra el efecto del direc­ cionam iento inmediato.

Modos de direccionamiento Uno de los problemas al que se enfrenta un progra­ mador es el de acceder a los datos disponibles en la memoria de una manera rápida y eficaz. Existen diversos mecanismos para lograr esto, a los que se denomina modos de direccionamiento. Los modos de direccionam iento más conocidos son los siguientes: Direccionamiento Direccionamiento Direccionamiento Direccionamiento Direccionamiento Direccionamiento Direccionamiento

w Figura 3.22 Direccionam iento inm ediato

El direccionam iento inm ediato se utiliza cuando los datos que toman las instrucciones son literales (constantes) conocidos de antemano. D ireccionam iento directo El direccionam iento directo se utiliza cuando el dato se transfiere hacia, o desde, una posición de memoria particular. Por ejemplo:

implícito inmediato directo relativo indexado extendido indirecto

MOVWF

D ireccionam iento im plícito Las instrucciones que usan este modo de direccio­ namiento se caracterizan por no requerir el uso de operandos, debido a que no necesitan acceder a la memoria de datos. Por ejemplo, la instrucción NOP pertenece a esta categoría. La instrucción NOP no produce ningún efecto visible en la ejecución del

OxOC

Esta instrucción mueve el contenido del registro W hacia la posición de m em oria OxOC. El con­ tenido de la posición OxOC desaparece y en su lugar se coloca el valor del registro W. La figura 3 .2 3 ilustra el direccionam iento directo. NOTA:

Los números hexadecimales se escriben an­ teponiéndoles Ox. De lo anterior se deduce que el valor OxOC puede leerse: “núm ero hexadecimal OC ’. Este valor corresponde al número decimal 12.

Curso práctico sobre M icrocontroladores

8

S .A .

•y-:

Programación

I ’ i o c 'i a i u

ación de microcontroladores M em o ria de datos

Dirección

Dato

OxOB OxOC

37 -

-

37 w

OxOD

Figura 3 .2 3 Direccionam iento directo

D ireccionam iento relativo Las instrucciones de salto permiten alterar la eje­ cución secuencial de un programa. Las instruc­ ciones que utilizan este modo deciden a que posi­ ción deben saltar, realizando para ello un cálculo sencillo: suman un cierto valor numérico al valor del contador de programa, el cual contiene la di­ rección de la instrucción de salto. La ejecución del programa continúa a partir de la dirección cal­ culada. Una ilustración de lo anterior se observa en la f i g u r a 3.24. Instrucción Operando 02

JNE ^

0010

N 0P

.

Desplazamiento relativo a la dirección que contiene la instrucción

N0P JN E 02 Salta, si el resultado previo no es cero, dos posiciones más adelante.

D ireccionam iento extendido El d ireccio n am ien to ex ten d id o p erm ite acce­ d er a todo el espacio de m em o ria del m icro ­ controlador. La dirección se almacena en dos o tres bytes del operando, de modo que sin impor­ tar el tamaño de la dirección destino se puede acceder directam ente a ella. La f i g u r a 3.26 ilustra el modo de direccionamien­ to extendido. Dirección 3A4F LDA S 3A4F Cargue el registro A Utillizando el dato almacenado en la dirección absoluta 3A4F.

Figura 3 .2 6 Direccionam iento extendido

D ireccionam iento indirecto En el modo de direccionam iento indirecto la dirección de una posición de m em oria se cal­ cula m ediante una doble referencia. En prim er lugar se obtiene el dato contenido en una cierta posición de m em oria, y con base en este dato, se obtiene la dirección efectiva de la posición de m em oria deseada.

Figura 3.24 Direccionam iento relativo

D ireccionam iento indexado La dirección de destino se calcula utilizando como base un registro especial. En la f i g u r a 3 .2 3 se muestra el caso en consideración. Dirección

Dato

La dirección efectiva es la dirección deseada. En el modo de direccionam iento indirecto esta se calcula como se aprecia en la f i g u r a 3.27.

Registro base X

. 3000 3001 v 3002 LDA (S 3000) LDA S 3000, X Cargue el registro A usando el dato de la dirección 3000 +el contenido de X, es decir, el número 28.

Figura 3 .2 5 Direccionam iento indexado Curso práctico sobre M icrocontroladores

Cargue el registro A utilizando como base el dato contenido en la dirección 3000.

Figura 3 .2 7 Direccionam iento indirecto

R E G IS T R O D E E S TA D O

PU ERTO A

>6 5 4 3 2

PU ERTO B

v

6 8 R E G IS T R O S OE P R O P Ó S IT O G EN ER AL (G P R )

-Vv>>\N V:^»\

•>>*:........... ?í

M e m o r ia de

8 niveles

EEPROM

MODELO DE PROGRAMACION PARA LOS MICROCONTROLADORES PIC Antes de elaborar cualquier programa, se debe conocer el modelo de progra­ m ación o estructura lógica de los prin­ cipales componentes de un m icrocon­ trolador. En esta lección veremos el del PIC 16F84, el cual puede ser aplicado, con algunas pequeñas variaciones pro­ pias de cada fam ilia, a los otros m ode­ los fabricados por M icrochip.

Curso práctico sobre M icrocontroladores

IT ,

9

5 .4 .

Modelo de programación para los microcontroladores PIC Vamos a in iciar este tem a estudiando las ca­ racterísticas lógicas del PIC 16F84 de M icrochip, un m icrocontrolador versátil y de arqui­ tectura sim ple. Estos conceptos se pueden ap li­ car en su gran m ayoría a los demás m icrocon­ troladores PIC. M ás adelante, cuando veamos la programación de otros microcontroladores de 7

6

5

4

3

diferentes modelos, explicaremos los detalles es­ pecíficos de cada uno. Esta lección presenta el estudio sistemático de los elementos que todo programador debe conside­ rar a la hora de elegir un microcontrolador: la orga­ nización de la memoria, el conjunto de instruccio-

2

1

0

REGISTROS ESPECÍFICOS (SFR) BANCO 0

BANCO 1

REGISTRO DE ESTADO GIE

IRP

RPO

T0#

PD#

Z

DC

C

PUERTO A 7 6 5 4 3 2 1 0 N o u tiliz a d o s

PUERTO B REGISTROS DE PILA ( StacK)

7 6 5 4 3 2 1 0

68 REGISTROS DE PROPÓSITO GENERAL (GPR) 4FH

00 H

8 niveles

Memoria de datos EEPROM

3FH

lili H

¿ A > y ,

V e c to r de re s e t

/ / s/ A

ni 4 H ni 5 H

V e c to r d e in te rru p c io n e s

MEMORIA DE PROGRAMA

( 1K) 03FFH

Figura 4.1

La arquitectura del PIC 16F84 desde e l punto de vista del program ador

#Til Curso práctico sobre M icrocontroladores

Programación nes disponible, los modos de direccionamiento y las particularidades generales del sistema elegido. Sin em­ bargo, estudiaremos estos elementos desde la óptica del programador, a quien le importa en primera ins­ tancia, sólo la naturaleza lógica de los componentes y no su comportamiento eléctrico.

Los elementos A continuación se listan los principales compo­ nentes del microcontrolador PIC 16F84, im pli­ cados en el diseño y construcción de la mayoría de aplicaciones basadas en los PIC. • • • • • • •

El registro de trabajo W El registro de estado La m em oria de programa La m em oria de datos Los registros de propósito especial Los registros de propósito general Los registros de pila (stack) • El puerto A • El puerto B

7

6

5

4

3

2

1

0

W

Figura 4 .2 El registro de trabajo W

microcontroladores PIC se basan en la tecnología RISC, la cual se caracteriza por un conjunto redu­ cido de instrucciones que se ejecuta en un sólo ciclo de m áquina. Las tecnologías mencionadas confieren a este modelo de microcontrolador una enorme potencia en comparación con sus compe­ tidores, en cuanto a la relación costo/beneficio.

El registro de trabajo W El registro W, de 8 bits, sirve para almacenar un dato, usualmente de forma temporal, cuyo valor será utili­ zado posteriormente en un cálculo matemático o en la transferencia entre registros y memoria (figura 4.2). Toda la información debe pasar por este registro, razón por la cual es de sum a im portancia para la m ayoría de instrucciones del microcontrolador.

La arquitectura del PIC 16F84 (La visión del programador)

El registro de estado (status registei)

Un programador concibe la arquitectura del PIC 16F84 como un conjunto de recursos disponi­ bles, al que puede acceder m ediante el uso siste­ m ático de un conjunto de instrucciones. El or­ den con el que escribe las instrucciones influye en el funcionam iento del sistema; es por este motivo que el program ador debe conocer con todo detalle el com portam iento lógico de los di­ ferentes elementos que conforman la arquitectu­ ra del microcontrolador. La figura 4.1 muestra la apariencia que presenta el PIC 16F84 a un programador. En los siguientes apartados vere­ mos cada elemento en detalle. Los microcontroladores de la fam ilia M icrochip utilizan la arquitectura Harvard, la que se caracteriza por independizar el bus de datos del bus de m em oria. Esto perm ite adaptar el tam a­ ño de los buses de acuerdo con los requerim ien­ tos del sistema, además de aum entar sensiblemen­ te la velocidad de trabajo. Adicionalm ente, los

La mayoría de los procesos ejecutados por el m i­ crocontrolador generan efectos que pueden reper­ cutir sobre el desenvolvimiento del programa. Com o ejemplo de lo anterior, considere la instruc­ ción que desplaza a la derecha el contenido de una posición de memoria. Esta instrucción puede dar como resultado, en algún instante del tiempo, un valor igual a cero. En ocasiones, esta situación puede ser de interés para el programador. El b it Z (cero) del registro de estado toma el valor 1 si el contenido de la últim a operación efectuada es cero. En este caso, el uso de una ins­ trucción apropiada perm ite al programa verifi­ car el valor del b it y bifurcar a una posición de m em oria no secuencial, continuando desde allí la ejecución del programa. La figura 4.3 muestra la estructura del registro de estado. Los campos en color gris representan es­ tados cuyo uso se relaciona con problemas de ma­ yor complejidad que no aplicaremos por ahora.

Curso práctico sobre M icrocontroladores

S .A .

Modelo de programación para los microcontroladores PIC REGISTRO DE ESTADO lia

En el PIC 16F84 los programas de usuario se alm acenan en una zona de m em oria con un ta­ maño de 1K. Esto es suficiente para albergar la solución de buena parte de los problemas de con­ trol. La figura 4 .4 muestra un esquem a básico de la m em oria de programa.

rpo

_j Timer Out Activación global de interrupciones

Selección banco de memoria

Selección de bancos Power down para el direccionamiento indirecto Figura 4 .3 El registro de estado

Los bits del registro de estado que más se utilizan son los siguientes:

C arry {b it de acarreo). Este b it se activa cuando se presenta un acarreo en el b it más significativo del resultado. DC

D igit C arry {bit de acarreo de dígito). Este b it se activa cuando se presenta un acarreo en el b it 3 del resultado. Esto tiene rela­ ción, sobre todo, con operaciones en for­ mato BCD .

Z ero {bit de cero). Este b it toma el valor 1 cuando el resultado de una operación ló­ gica o aritm ética es cero. RPO Selecciona el banco de memoria que se va a utilizar. Si RPO = 0, se selecciona el banco 1; si RPO = 1, se selecciona el banco 0 (ver memoria de datos en la RAM un poco más adelante).

•n i

V e c to r de R eset

H

V e c to r de in te rru p c io n e s

0004 H

La memoria de programa

0005 H

MEMORIA DE PROGRAMA (1 K ) 03FFH

Figura 4 .4 La m em oria de program a

En esta m em oria hay dos posiciones que tie­ nen especial interés para el programador: 0000H y 0004H . La primera corresponde al punto de arran­ que de todo programa y se conoce con el nombre de vector de reset , mientras que la segunda es el inicio de la rutina de servicio de interrupciones y se la denomina vector de interrupción. En los párra­ fos siguientes se amplían estos conceptos. Vector de reset. C uando se aplica una señal de nivel bajo a la línea de reset, el contador de pro­ gram a toma el valor 0 000H y el programa em ­ pieza a ejecutarse a partir de la prim era instruc­ ción. La situación anterior se presenta también, pero de forma autom ática, al conectar la energía al circuito del microcontrolador. Vector de interrupción. Los programas con un cierto grado de complejidad admiten la aplicación de señales externas, denominadas interrupciones, que alertan sobre la aparición de condiciones que deben ser atendidas sin ninguna demora por par­ te del sistema. Las interrupciones también pue­ den producirse como consecuencia de variaciones en el estado de temporizadores internos o debido al cambio en el contenido de ciertos registros. Un teclado conectado a un puerto de entrada del microcontrolador es un buen ejemplo del m a­ nejo de interrupciones: cada vez que el usuario del sistema pulsa una tecla, el programa debe re­ accionar sin pérdida de tiempo para determinar la tecla presionada y almacenar su valor en un regis­ tro interno. La dirección de memoria 0004H es el punto de inicio de la rutina de servicio de la inte­ rrupción. La porción de programa que debe eje­ cutarse cuando ocurra la interrupción debe guar­ darse a partir de la dirección 0004H .

Curso práctico sobre M icrocontroladores

Programación De lo expuesto en los párrafos anteriores tene­ mos dos situaciones posibles: • El programa no contiene rutina de manejo de interrupciones, por lo que se puede utilizar toda la memoria de manera lineal para almacenar el programa de usuario, figura 4.5a. Esto en el caso del 16F84. En otros modelos este manejo puede ser diferente. •

El programa incluye una rutina de servicio de interrupciones, lo que obliga a la inclusión de un salto al comienzo del programa (dirección 00H ) para om itir el código de programa que atiende la rutina de servicio, figura 4.5b.

(a)

Registros de propósito especial Registros de propósito general

2FH Figura 4 .6 Esquema sim plificado de la m em oria de datos

Los registros de propósito especial El PIC 16F84 se caracteriza por disponer de dos bancos de m em oria de datos: el banco cero y el banco uno. Lo anterior im plica que cada registro está disponible tanto en el banco cero como en el banco uno. La figura 4 .7 muestra los doce pri­ meros registros (00H -0BFI) y su significado de­ pendiendo del banco de memoria utilizado.

00 H BANCO 0

BANCO 1 D ire c c io n a m ie n to in d ire c to T e m p o riz a d o r/c o n ta d o r P arte b a ja d e l c o n ta d o r d e p ro g ra m a R e g is tro d e estado S e le c to r d e re g istro s P uerto A

(b)

Puerto B

In icio d e p ro g ra m a

00 H

04 H / /

/ / /

/ / /

05 H / / / / / /

A cce so a la m e m o ria EEPR0M



Rutina de servicio de interrupción *—

é

Parte a lta d e l c o n ta d o r d e p ro g ra m a C on tro l de in te rru p c io n e s

i

Programa principal P ro g ra m a

Figura 4 .7 Los registros de propósito especial

M— !

Figura 4 .5 La rutina de servicio de interrupciones

La memoria de datos en RAM La m em o ria de datos en RAM del PIC 16F84 está co m p uesta por 64 registros alm acenados en posiciones de m em o ria consecutivas. Los prim ero s 12 registros, co m p ren d id o s en tre 0 0 H y 0 B H , cu m p len un propósito específi­ co en el contexto de fu n cio n am ien to del m i­ crocontrolador. Los ú ltim o s 48 registros, en el rango co m p ren d id o entre 0 C H y 2 F H , se usan p ara alm acen ar in fo rm ació n tem poral. La fig u ra 4 .6 m uestra un esquem a s im p lifi­ cado de la m em o ria de datos.

La forma de uso de los registros de propó­ sito especial se verá en detalle cuando estu d ie­ mos el con junto (set) de instrucciones del m i­ crocontrolador y la program ación de los bits del registro de estado.

Los registros de propósito general Los 3 6 registros de propósito gen eral (0 0 H 2 F H ) están m ap ead o s sobre el banco de m e­ m o ria cero; esto sign ifica que sólo uno de los registros, el co rresp o n d ien te al banco cero, estará d isp o n ib le para el program ador. La fi­ g u ra 4 .8 m uestra la disp o sició n de los regis­ tros de propósito general.

Curso práctico sobre M icrocontroladores

S.A.

Modelo de programación para los microcontroladores PIC La memoria EEPROM de datos

BANCO 0

OCH D ire c c io n e s m a p e a d a s s o b re e l b a n co 0

2FH Figura 4 .8 Los registros de propósito general

El PIC 16F84 dispone de una m em oria EE­ PRO M que consta de 64 bytes , comprendidos entre 00H y 3FH (figura 4 .1 0 ). Para acceder a estos registros hay que utilizar los registros de con­ trol EEDATA, EEADR, E E CO N 1 y EECON2. En capítulos posteriores veremos la forma de aplicar la programación de estos registros.

Los registros de pila ( stack) Es b astan te co m ú n d iv id ir un p ro gram a en p eq ueñ as porciones de có digo , cada un a de las cuales cu m p le un propósito especial. El p ro gram a p rin cip al, es decir, aq u el que será ejecu tad o cu an d o el m icro co n tro lad o r reciba una señal de reset (o cu an d o sea energizado) efectuará llam ad as a estos sub p ro gram as en diferentes p u n to s, de acuerdo con las necesi­ dades establecidas. Un subprograma debe terminar con una ins­ trucción de retorno. Esta instrucción deposita en el contador de programa la dirección de memo­ ria en donde debe reanudarse la ejecución del programa. El microcontrolador utiliza para con­ seguir este propósito un conjunto de registros internos denom inados registros de pila {stack). El conjunto de registros de pila está conformado por ocho registros (figura 4.9).

00 H E EPR O M

3FH

Figura 4 .1 0 La m em oria EEPROM de datos

Subprogramas Un su b p ro gram a es un co n ju n to de in stru c ­ ciones que sólo son ejecutadas com o respuesta a un a in stru cció n CA LL. La ú ltim a in stru c­ ción de un subprogram a debe ser un a in stru c­ ción de retorno (R E T ), la cual devuelve el co n trol a la in stru c c ió n in m e d ia ta m e n te a c o n tin u a c ió n de la in stru cció n de llam ad o (C A L L ). La F ig u ra 4.11 m uestra el llam ado a un subprogram a.

03 2 0 ■ ■ 1 I1 ___________

.

* 1

Primero en entrar, últim o en salir

i

5en o

1

A lm a c e n a h a s ta 8 lla m a d a s

E

1

o. -Q h

J

Z3 C /D

Figura 4.11 Llam ado a un subprograma

Figura 4 .9 Los registros de pila (stack)

En cada nueva llam ada a un subprogram a se almacena la dirección de retorno en el siguien­ te registro de la pila, lo que perm ite regresar al sitio correcto cada vez que finalice cada subpro­ gram a. Debe hacerse notar que el program ador no puede acceder directam ente al contenido de ninguno de los registros de la pila. S.A.

¿Por qué son útiles los subprogramas? Im agin e q u e elige un m icro co n tro lad o r que no posea la in stru cció n para m u ltip lic a r dos núm eros enteros. Un m étodo p ara resolver este problem a consiste en id ear un co n ju n to de in stru ccio n es que realicen la m u ltip lic a ­ ción a p artir del co n ten id o de dos registros preestab lecidos, dejan do la respuesta en un tercer registro.

Curso práctico sobre M icrocontroladores

Programación El uso más inteligente de las instrucciones que multiplican dos números enteros consiste, no en agregarlas cada vez que se deban m ultiplicar dos números, sino en escribirlas aparte (fuera del pro­ gram a principal) y llamarlas cada vez que se las requiera. Con esta idea en mente observe la Figu­ ra 4 .1 2 y siga la dirección de las flechas.

03

mostrado en la Figura 4 .1 4 hace un llamado al subprograma rotulado con la etiqueta SubA. An­ tes de que el contador de programa modifique su contenido por el de la instrucción CALL, es necesario preservar la dirección de retorno. Esto perm itirá que, una vez finalizado el subprogra­ ma, el microcontrolador continúe la ejecución a partir de la siguiente instrucción en donde se produjo el llamado.

03

E ~ 03

CL

0 3 E

2a. < I= V3 g_

SubA

I

* 20

1

82 Figura 4 .1 2 Un subprogram a para m u ltip lica r dos núm eros enteros

mam RET

C A L L e s tá en la d ire c c ió n 8 0 El o p e ra n d o 2 0 e s tá e n la d ire c c ió n 81

Figura 4 .1 4 Llamado a un subprograma

La pila (stackj Los registros de pila están m uy ligados al con­ cepto de subprograma (así como al manejo de las interrupciones). En principio, una pila no es más que un depósito de datos en donde el últi­ mo dato en entrar es el primero en salir. Cuando se recuperan los datos guardados en la pila, se los obtiene en orden inverso a como fueron alm ace­ nados. La Figura 4 .1 3 muestra el uso de una pila con 3 números enteros.

i

“1 7 5

3 7 5

r

r

r

La instrucción CA LL guarda en el fondo de la pila la dirección de retorno, la cual corresponde a la dirección de la siguiente instrucción. En la Figura 4.15, a grandes rasgos, se observa la estructura del subprograma SubA. Este subpro­ grama contiene un llamado a un segundo subpro­ grama, SubB, lo que genera un dato adicional en la cima de la pila, antes de proceder a modificar el contenido del contador de programa. r" 20 1 "i 1 + 1 • 28 CALL 1 - 30 30 82

7 5

Figura 4.13 Funcionam iento de una pila

En el siguiente apartado veremos la relación que existe entre las pilas y los subprogramas.

Funcionamiento de los registros de pila del microcontrolador Para entender de manera cabal el funcionam ien­ to de los registros de pila, considere un ejemplo sim ple de llamado a subprograma. El programa

SubB 40

--► 40

Pila Figura 4 .1 5 Llam ando a un subprogram a desde otro subprograma.

C uando se ejecuta la instrucción RE 1 del segundo subprograma (SubB), la unidad de con­ trol del microcontrolador extrae el dato almace­ nado en el tope de la pila (el cual corresponde a la dirección de retorno) y lo deposita en el con­ tador de programa. El programa continúa ejecu-

Curso práctico sobre M icrocontroladores

S .A .

— O

C ontinúa en la in stru cció n 82

X

RET

o

Figura 4 .1 7 Retorno del p rim e r subprogram a

Los procesos relacionados con el manejo de la pila son transparentes al programador, es de­ cir, ocurren de manera autom ática en el interior del microcontrolador.

Puertos Recordemos que un puerto es un elemento a tra­ vés del cual se introduce o se extrae información de un microcontrolador. El PIC 16F84 posee dos puertos denom inados A y B.

El puerto A El puerto A consta de 5 líneas que pueden utili­ zarse como entradas o como salidas, dependiendo de las necesidades de la aplicación, figura 4 .18. La línea RA4 puede servir como entrada para los pul­ sos de reloj aplicados al temporizador interno TMRO. El programador puede acceder al conte­ nido del puerto leyendo (o escribiendo) el conte­ nido del registro 05H del banco 0 de memoria.

Figura 4 .1 9 El puerto B

Configuración de los puertos A y B C ad a b it de un puerto puede ser configurado, de m anera individual, com o entrada o como salida, dependiendo de las necesidades particu­ lares del proyecto. Un m ecanism o sim p le p ara con figurar los bits de los puertos A y B, ya sea com o entrada o com o salida, consiste en em plear los registros T R IS A y TR1SB del banco 1 de la m em o ria de registros en R A M . La fig u ra 4 .2 0 m uestra la relación entre los puertos A y B y los corres­ pondientes registros de program ación. Al es­ tudiar el set de instrucciones se verán en detalle. PUERTO A

PUERTO B

Tris A

Tris B

El puerto B El puerto B está conformado por 8 líneas que pue­ den configurarse como entrada o como salida se­ an los requerimientos de la aplicación, figura 4.19. S.A.

Curso práctico sobre M icrocontroladores

Figura 4 .2 0 Registros TRISA y TRISB

\» « f re l« | r r**« « \« «e

.

Ka*r

laeoe Illa

C»*%» l*lf»ri»te I I Ir I i »i i«y t i l *

lj? '

V*«

INRX1M . t i l

|C\MiSOOCrim6ePTCftMlCftOC~1V y»

EQ U

F

EQ U

S i

0

1

e l

d e s tin o

es

W,

e l

n ú m e ro

S i

e l

debe

debe

PUERTOB

EQ U

0x06

La

m ovwf

PUERTOB

u tiliz a rs e

es

W - > PUERTOB.

F, e l

E s ta

1

p o s ic ió n

cuando

e l

0x06 a l

p u e rto

banco 0

B

e s tá

EQU

0x86

La

p o s ic ió n

p e rm ite

c a li

re ta rd o

0x06

d io d o

LED

c o n e c ta d o

b it

del

B com o

o

s a lid a

e l

LED

REG ISTR01 E Q U

0x0C

R e g is tro

de

tra b a jo

REGISTRCe EQ U

0x0D

R e g is tro

de

tra b a jo

re g is tro

R E U S l K L t í EQ U

0x0E

R e g is tro

de

tra b a jo

En

DAT01

25

D a to

re ta rd o DAT02

EQ U

30

D a to

EQU

35

D a to

p a ra

m ovwf

PUERTOB

Se

e l

e s p e c ífic o

c o lo c a

a

e l

W s e a lm a c e n a 000 0 00 0 0 W a l p u e rto

E s to

W ->

s ig n ific a

PUERTOB.

p a ra

e l

E s ta

in te rn o

a c c ió n

apagar

PROGRAMA

PUERTO c a li

re ta rd o

A n te s

e l

p e rm ite

d io d o a l

b it

LED 0 del

B de

encender

ORG

0

; E s ta b le c im ie n to

n u e v a n e n te e l d i o d o LED,

GOTO

IN IC IO

;d e l

p u n to

se lla m a a l a

ORG

5

;d e l

p ro g ra m a

de

in ic io

de

DEL

PROGRAMA

s u b ru tin a

re ta rd o .

E s to C O D IG O

c e ro

W.

c o n e c ta d o DEL

un

S e t r a n s f i e r e e l c c n te rrlc b

B.

> IN IC IO

d io d o

d u ra n te

d e l re g is tro

m e d io

usado

re ta rd o

e l

0

e x te rn o

usado

re ta rd o DAT03

p a ra

tie m p o m o v lw

e l

p e rm a n e ce rá

E l

usado

e s ta d o

E s to

que

e n c e n d id o

de

LED,

s u b ru tin a

re ta rd o .

g a ra n tiz a

e n tra d a

0

B

0x03

EQ U

a l

A n te s d e a p a g a r e l

de

c o n fig u ra r

R e g is tro

e n e rg iz a r e l

EQU

ESTADO

p e rm ite

se lla m a a l a

p u e rto com o

a c c ió n

PUERTO

s e le c c io n a d o T R IS B

W al

re g is tro

p u e r to B. E s to s i g n i f i c a

u tiliz a rs e

co rre sp o n d e

S e t r a n s f i e r e e l c c n te rrid o d e l

0

d e s tin o

n ú m e ro

;

en

b a n c o 0 d e l c o n ju n to de

;s is te m a h e x a d e c im a l

;

0

5 d e l r e g i s t r o d e e s ta d o .

>

;

s a lid a

g a ra n tiz a

d io d o

LED

que

e l

p e rm a n e ce rá

apagado d u ra n te u n tie rrp o in ic io

b s f

E S T A D O ,5 ; C o l o c a ;5

d e l

un

1

en

e l

re g is tro

de

b it

e s p e c ífic o g o to

c ic lo

La

in s tru c c ió n a

“ g o to ”

*

Curso práctico sobre Microcontroladores m M B C M T s .

y ORG

0

IN IC IO

C o n fig u rar TMRO

C o n fig u rar r e g i s t r o OPCION

MOVLW 0 X F F

C O N F IG U R A R

T R IS

COMO E N T R A D A S

PORTA

MOVLW 0 X 0 0

C O N F IG U R A R

T R IS

PORTB

COMO S A L I D A S

CLRF

PORTB

IN C IA R

EL

CLRF

TMRO

IN C IA R

E L TMRO

CLRW DT

*

O P T IO N CLRF

B

WATCHDOG

C O N F IG U R A R ;

TMRO

PUERTO

PUERTO B

D E S A C T IV A R

MOVLW B ’ O l l O l l l l ' ;

B o rra r TMRO

PUERTO A

EL

R E G IS T R O TMRO

:; I N I C I A R

DESDE CERO DE NUEVO 1 i

L e e r TMRO

C IC L O

T

MOVF

TMRO, W ;

MOVWF P O R T B

M o stra r el c o n te n id o d e l TMRO e n e l puertoB

LEER

EL

TMRO

:; V I S U A L I Z A R

RESULTADO

EN

EL

; PUERTO B GOTO

C IC L O

END

Figura 6 .3 2 Diagrama para contar eventos externos S .A .

Curso práctico sobre M icrocontroladores

Figura 6.34 Código fuente del ejercicio No.5.

I Programación CLRWDT 16

B o rra la c u e n ta d el te m p o riz a d o r w a tch d o g

0SC1

Cristal 4M H z

S in t a x is : C L R W D T E je m p lo : C L R W D T

VDD MCLR 1

0SC2 13 1 u(O

A n tes d e la in stru cc ió n C o n ta d o r W D T = ?

o

D esp u és de la in s tru c c ió n

Q-

PB1

l

n Salida de u la señal

C o n ta d o r W D T - 0 0

vss

RETURN R e to rn o d e sd e s u b r u tin a S in t a x is : R E T U R N

Figura 6.35 Diagram a esquem ático del ejercicio

E je m p lo : R E T U R N D espués de la subrutina, contador d e program a = pila

Ejercicio No. 6 Generación de señales mediante el TMRO e interrupciones En este ejercicio vamos a estudiar otra técnica para generar señales 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 los 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 in­ ternos y al desbordarse, genera una interrupción. Figura 6 .3 6 M ontaje sobre un circuito im preso universal

El diagram a esquemático de este ejercicio lo podemos apreciar en la f i g u r a 6 .3 5 y su montaje práctico sobre un circuito impreso universal en la f i g u r a 6.36.

C o n fig u ra r p u e rto A c o m o sa lid a

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 p rin cip al de este p ro gram a lo podem os ap reciar en el d ia g ram a de flujo de la f i g u r a 6 .3 7 . In icia lm en te se hacen las co n ­ figuracio n es básicas para el m anejo q u e se va a hacer sobre las in terru p cio n es y el m odo de trab ajo del T M R O ; se carga un v alo r esp ecífi­ co en el registro TM RO y se en tra en un ciclo de espera para el m om ento en que se presen­ te la in terru p ció n .

Figura 6 .3 7 Diagram a de flu jo del ejercicio

Curso práctico sobre M icrocontroladores

S .A .

E jercicios de p ro g ram ació n

Registro INTCON

7

6

1

5

4

2

3

gen eració n de la in terru p ció n y y a solo basta esperar el m om ento en que ella o cu rra para ejecutar la su b ru tin a d en o m in ad a servicio de in te rru p c ió n .

o

1

1

L B a n d e r a q u e s e a c tiv a c u a n d o s e o rig in a u n a in te rru p c ió n d e b id o a l d e s b o r d e d e l TM RO

•H a b ilita d o r d e la s in te r r u p c io n e s p o r TM RO

La configuración del TMRO se hace m edian te el registro O P­ Figura 6 .3 8 Configuración del registro INTCON C IO N ; en él se establece que se va a trabajar con los ciclos in ter­ R e s i s t e n c i a s d e l p u ll-u p nos de reloj y el valor q u e se va a to m ar para el del p u erto d e sh a b ilita d a s prescalador, fig u ra 6 .3 9 . • H a b ilita d o r g lo b a l d e in te rru p c io n e s

In terru p ció n e x t e m a a l fla n c o ♦ - d e b a ja d a (n o u tiliz a d a e n e s t e e je rc ic io )

► F u e n t e d e s e ñ a l = re lo j in te rn o

Registro OPCION

o

1

ip D D D i i

A1

~

P r e s c a l a d o r — ► D iv id ir p o r 1 2 8

L

P re sc a la d o r a s ig n a d o al TM RO

A p artir de ese m om ento el program a espe­ ra que se presente el desborde del TMRO y por lo tanto la interrupción. C uando ella llega se ejecuta la estructura m ostrada en la figura 6 .40, en donde se pregunta por el estado actual de la línea de salida y se origina una salida que in ­ vierte dicha lectura. El código fuente de este ejer­ cicio es el que se m uestra en la fig u ra 6 .41.

In c re m e n to e n fla n c o d e s u b id a (n o u tiliz a d o )

Figura 6 .3 9 Configuración d e l registro OPCION

S e rv ic io d e in te rru p c ió n

Es de sup o n er q u e d ep en d ien d o del valor cargado en el registro TM RO , varía la frecuen­ cia de salid a de la señal d ig ita l.

B o rrar b a n d e ra d e in te rru p c ió n d e l TMRO

C om o hemos visto, la configuración de las interrupciones se hace por m edio del registro IN T C O N (IN T errupt C O N trol), figu ra 6 .38; el p rim er paso es borrar la bandera T O IF (b it 2 ), la cual se activa cada vez que se presenta una in terrup ció n o rigin ad a por un desborde del registro TMRO.

¿ B it O d e l p u erto A

= 0 ?

Si P ortA , 0 = 0

No 1

1 P ortA , C

Esta precaución tam bién se debe tener en cuenta dentro de la rutina de interrupción; mien­ tras esta bandera permanezca activa no se podrán atender nuevas interrupciones del TMRO. F in alm en te se deben activ ar el b it h a b ili­ tad o r glo b al de in terru p cio n es (GIE) y el b it h ab ilita d o r de la in terru p ció n por desborde del TM RO. C on el c u m p lim ie n to de estas dos co n d icio n es, se activa en form a d efin itiv a la

GEBCIT,

S .A .

Curso práctico sobre Microcontroladores

C a rg a dato en el tim er

1 1

S a lir d e la

|

in te rru p c ió n

Figura 6 .4 0 Diagrama de flujo del servicio de interrupción

Programación EJERCICIO 6=

Por la lín ea de salid a, pin 1 del puerto B, podem os co n ectar un diodo LED o aún m e­ jor, visu alizar el resultado por m edio de un osciloscopio. Este ejercicio se vuelve in tere­ sante cuando jugam os con los parám etros del sistem a p ara variar la frecuen cia de salid a y lleg ar a un valor deseado.

¡g a s a ;

DEMOSTRACIÓN DEL USO DEL TIMER0 LIST

P=16F84

RADIX

HEX

W

EQU

0

F

EQU

1

; MAPA DE MEMORIA TMR0

EQU

01

PORTB

EQU

06

INTCON EQU

0B

ORG

0

GOTO

INICIO

ORG

4

GOTO

SER.INT

Los parámetros con los que podemos jugar son: el valor del cristal externo, el valor asignado al prescalador y el valor cargado inicialm ente en el registro TMRO.

B’00000000'

CONFIGURAR PINES DEL

TRIS

PORTB

PUERTO B COMO SALIDAS

CLRF

PORTB

BCF

INTCON,2

INICIO MOVLW

BORRAR BANDERA DE INT. DEL TMR0

BSF

INTCON,7

HABILITADOR GLOBAL DE INTERRUPCIONES

BSF

INTCON,5

HABILITAR INTERRUP­

En las figu ras 6 .4 2 , 6 .4 3 , 6 .4 4 y 6 .4 5 po­ dem os apreciar diversas frecuencias generadas con distintos parám etros; recordemos que para conocer el m om ento en que se genera la in te­ rrup ción , debem os d iv id ir la frecuencia del cristal externo por cuatro para saber la frecuen­ cia interna del m icrocontrolador; de esta m a­ nera, sabemos cada cuanto tiempo se increm en­ ta el registro TMRO.

CIONES DEL TMR0 CLRWDT MOVLW

B ’01010110'

La velocidad con que se aum enta este regis­ tro se ve alterada por la división que origina el prescalador y esta nueva frecuencia incrementa al TMRO desde el valor en que fue cargado ini­ cialmente. C uando llega a FF y pasa a 00 se ori­ gina una condición de desborde y se genera la interrupción donde se modifica la salida.

CONFIGURAR TMR0

OPTION

CICLO

MOVLW

0X00

MOVWF

TMR0

GOTO

CICLO SERVICIO DE INTERRUPCION-

SER.INT BCF

INTCON,2

BORRAR BANDERA DE INT. DEL TMR0. ESTO PERMITE LEER FUTURAS INTERR.

BTFSS

P O R T B ,1

¿PIN 1 DEL PUERTO B EN UNO?

GOTO

ACTIV_BIT

SI ESTA EN CERO SE DEBE ACTIVAR

BORRA.BIT BCF

P O R T B ,1

PONER EN BAJO EL BIT 1

Con este ejercicio culm inam os esta serie de ejercicios básicos en microcontroladores PIC, al igual que el aprendizaje sobre el módulo temporizadorTMRO, que es uno de los más im portan­ tes dentro de los microcontroladores.

DEL PUERTO B GOTO

CONFIG.TMR0

ACTIV.BIT BSF

P O R T B ,1

PONER EN ALTO EL BIT 1 DEL PUERTO B.

CONFIG.TMR0 MOVLW

0X00

CARGAR ESTE VALOR PARA INICIAR DESDE ALLÍ

MOVWF

TMR0

INICIAR EL TMR0

RETFIE END

Figura 6.41 Código fuente del ejercicio No. 6

Flasta ahora hemos visto como utilizar un microcontrolador PIC como contador y como temporizador, al igual que se ha mostrado como modificar todos los parámetros de su funciona­ miento. Ya estamos listos para abordar una nueva lección de ejercicios de un nivel un poco más ele­ vado, donde desarrollaremos ejercicios de comu­ nicaciones seriales, manejo de módulos LCD, co­ nexión de memorias seriales, etc.

Curso práctico sobre Microcontroladores

Ejercicios de program ación

w

F re c u e n c ia = 2 5 0 Hz 2 ms

2 ms

F re c u e n c ia = 1 ,6 KHz C ad a v e z q u e el TM R O s e d e s b o rd a se g en era un a in te rru p c ió n en la c u a l s e c a m b ia el estado de la s e ñ a l d e s a lid a . El in s ta n te en qu e o c u rre un c a m b io de nivel e s el m o m e n to e x a c to en q u e la in te rru p c ió n es a te n d id a .

0,3 ms

0,3 ms

Figura 6 .4 2 En este caso se ha cargado e l TMRO con e l valor hexadecim al F1 y se ha asignado un facto r de división de 128

F re c u e n c ia = 1 KHz P od em os n o ta r q u e e n tre m a y o r s e a el fa c to r de d iv is ió n d el TM R O , s e n e c e s ita rá un tie m p o m a y o r p a ra lle g a r a l d e s b o rd e , p o r lo ta n to un p e río d o m ayor.

Figura 6.43 A quí se ha inicializado e l TMRO en 00 y se ha hecho un bypass del prescalador asignándolo a l watchdog

1 1ms 05 ms

16 ms

Figura 6.44 En este caso tam bién se ha borrado e l TMRO pero se ha hecho una división p o r 2, cargando e l prescalador con 000 en los tres prim eros bits del registro OPCION Figura 6 .4 5 A quí se ha inicializado e l TMRO en 00 y la frecuencia de entrada se ha dividido p o r 32

cck i t :. Curso práctico sobre Microcontroladores

EJERCICIOS AVANZADOS DE PROGRAMACIÓN CON MICROCONTROLADORES PIC Ya hem os conocido las principales herra­ m ientas para el desarrollo de proyectos con los microcontroladores PIC. También hemos estudiado algunos ejemplos que ilustran con­ ceptos fundam entales para el m anejo 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 teoría. áL * Curso práctico sobre Microcontroladores e m

/K H T ,:

Ejercicios avanzados de program ación con m icrocontroladores PIC

Ejercicio No. 7 Conexión de memorias seriales al PIC Las técnicas para almacenar información en me­ dios electrónicos se perfeccionan más cada día. A diario vemos ejemplos de su utilización en nues­ tros hogares y oficinas, por ejemplo, en receptores de televisión, reproductores de discos compactos, sistemas de control remoto, impresoras, fotocopiadoras, teléfonos celulares, etc. Una de estas tec­ nologías corresponde a las llamadas memorias EEPROM seriales, las cuales tienen grandes ven­ tajas si se comparan con otras posibilidades. Entre sus principales características se cuentan: • Se pueden conectar fácilm ente con m icroprocesadores o m icrocontroladores; in clu ­ sive algunos de ellos tienen pines d ed ica­ dos para esta labor. • Transferencia de datos de manera serial, lo que perm ite 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 perm i­ te ahorrar dinero debido al m enor tamaño del circuito impreso. • El consumo de corriente es mucho menor que en las memorias que trabajan en paralelo. Esto las hace ideales para sistemas portátiles que funcionan con baterías. El objeto de este ejercicio es mostrar los as­ pectos más importantes de su tecnología y ense­ ñar conceptos básicos para su utilización en cir­ cuitos reales. Se basa en las memorias que tienen comunicación a 2 hilos empleando la interfaz I2C,

8

1 ,2 ,3 4 5

6 7

algunas de las más conocidas son 24LC01/02/ 04/16. La velocidad de transferencia de informa­ ción para estos dispositivos es de 100 ó 400 kHz (aunque el límite lo impone el protocolo 12C, mas no la tecnología del dispositivo). Como caracte­ rística importante de este elemento se tiene la in­ m unidad al ruido, dado que estos circuitos inte­ grados tienen filtros en los pines de comunicación. Estas memorias utilizan el bus de 2 hilos para comunicarse con otros dispositivos. Dado que cum plen con el protocolo I2C , tienen un pin lla­ mado SCL que recibe los pulsos generados por el dispositivo maestro (o sea el microcontrola­ dor) y otro llamado SDA que maneja el flujo de datos en forma bidireccional (entrada/salida). En la figura 7.1 se muestra el diagram a de pines co­ rrespondiente a estas memorias. Este dispositivo no requiere de un pin habilitador o ch ip select, ya que en este esquema la transferencia de información sólo se puede ini­ ciar cuando el bus esté libre. En este caso, como cada dispositivo tiene su dirección determinada m ediante los pines A0, A l y A2, solamente res­ ponderá 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 alm acenam iento de estos dispositivos y las posibilidades de direccionamiento que tienen. Transferencia de la información. C uando el m i­ crocontrolador desea entablar comunicación con la m em oria, debe enviarle una serie de bits que llevan la siguiente información:

A 0, A 1 , A2 Vss SDA SCL W P*

D ire c c ió n d e l d is p o s itiv o e n e l b u s T ierra D a t o s y d i r e c c i o n e s s e r i a l e s I/0 R elo j P ro te c c ió n d e e s c r itu r a . S i e s t á e n 0 h a b ilita la e s c r itu r a , e n 1 la d e s h a b ilita

8

VCC

+5V

* En la 2 4 L C 0 1 , e l p in W P n o t ie n e n in g u n a fu n c ió n

F igura 7.1 Diagram a de pines de las m em orias 24XX

* Curso práctico sobre Microcontroladores

Programación 1. 2. 3. 4.

El b it de arranque o start b it El código 1010 (propio de estas memorias) La dirección del dispositivo (A2, A l , A0) Un b it “0" el cual indica que se desea escribir en la memoria

Después de esto, la m em oria debe enviar un reconocim iento para inform arle al m icro­ controlador que recibió la inform ación. Dicho asentim iento, llam ado ACK, consiste en poner el bus en un nivel bajo (lo hace la m em oria).

C a p a c id a d

B lo q u e s

e n K b its

in te rn o s

24LC01B, 24C01

1

1

1 0 0

1 0 0

1 ÓO

8

24LC02B, 24C 02

2

1

1 0 0

1 0 0

1 0 0

8

24LC04B, 24C 04

4

2

X

1 0 0

1 0 0

4

24LC08B

8

4

X

X

1 0 0

2

24LC16B

16

8

X

X

X

1

R e fe re n c ia

AO

A1

D isp o sitiv o s

A2

e n el bus

F igura 7.2 Capacidad de m em oria y direccionam iento de las m em orias 24LCXX

Luego, el m ic r o c o n tr o la d o r debe e n v ia r los b its q u e c o rres­ p o n d en a la p o sició n de m em o ria q u e se q u iere leer o escrib ir; n u e­ v am en te la m em o ria en v ía un re­ c o n o c im ie n to . El paso sig u ien te d ep en d e de la o p eració n q u e se v a y a a ejecu tar.

SCL

SD A

ÍA2~| | a Í ~ | [ A O f ] W

f-



6

f l A c k 1 1 A 7 || A 6 | | A 5 || A 4 | | A 3 | | A 2 | | A 1

'¿ T

i

4

i

5

b it

1. S tart

| | A 0 | l Ack [ |

5 . R e c o n o c im ie n to e n v ia d o p o r la m e m o r ia

2 . C ó d ig o 1 0 1 0 (p ro p io d e la s 24X X )

6 . D ire c c ió n d e m e m o r ia q u e s e v a a tr a b a ja r

3 . D ire c c ió n d e l d is p o s itiv o e n e l b u s

7 . R e c o n o c im ie n to e n v ia d o p o r la m e m o r ia

4. W

= 0 p a r a e sc rib ir

A. F o rm a d e d ire c c io n a r la m e m o r ia 24X X

SCL

+i T j m r L n n r m j T r i n ^ d7 IId6 II d5 II d4 II d3II d2II d1 ||d0||Ack[[d7T|d6|ld5||d4 ||d3 ||d2 ||d1 || dO~[lAck [|d7T] f

SD A

1

Ó

P rim e r

byte d e

1

1

d ato s

1 Segundo

byte d e T ercer

1 d ato s

byte, e t c . Stop b it

B . E sc ritu ra d e l

byte

SCL .

n jin jiT L n r L n n r L r m n n n ^ ^ SD A

- P I H - O - P I 0 [p l

SD*¿

5

1

1.

|ÁÓ| p p Ack |d7 ||d6 ||d5 ||d41| d3|| d2|| dT||d0lAck[fd7Tl f

5 ¿o 4

S tart b it

7 8

6

5

5 . R e c o n o cim ie n to e n v ia d o por la m e m o ria

2. C ó d ig o 1 0 1 0 (p ro p io d e la s 24X X )

6 . P r im e r b y t e le íd o .

3. D ire c c ió n d e l d is p o sitiv o e n e l b u s

7. Segun do

4 . R = 1 p a r a le e r

8.

C. L ectu ra d el

¿¿

ó

byte d e

d ato s

Stop b it

byte F igura 7.3 Diagram as de tiem pos para la lectura y la escritura en una m em oria 24LCXX Curso práctico sobre Microcontroladores

S.A.

Ejercicios avanzados de program ación con m icrocontroladores PIC

Si se trata de un proceso de escritura, el micro­ controlador sólo debe enviar el dato que va a ser almacenado y esperar el asentimiento por parte de la memoria para confirmar que llegó correctamen­ te. Si se trata de una lectura, nuevamente se deben repetir los primeros cuatro pasos, solo que en lugar de un “0”, que indica escritura, se debe enviar un “ 1”, que indica lectura. Después se espera el asenti­ miento y, acto seguido, se puede leer el byte con el 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 señal 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 a 9 con un interruptor pulsador y un display de siete segmentos, donde el número que se muestra en el display se va a almacenar simultá­ neamente en una memoria 24LC01 (LC quiere decir que puede trabajar desde 2 voltios). Se va a utilizar un microcontrolador P1C16F84 (aunque se puede utilizar un 16C61 o un 16C71).

A0

*

vcc

A1

1—1

WP

A2

04

SCL

i VSS

En la f ig u r a 7 .4 se muestra el diagram a es­ quem ático del circuito. En este caso los pines de dirección de la m em oria se conectaron a tierra, al igual que el pin WP. La resistencia de 4 ,7 k£2 conectada al pin SDA es necesaria dado que d i­ cho pin tiene salida de colector abierto {open collector). 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 f ig u r a 7 .5 , su función principal es llevar el control de la cuenta decimal y alm acenar en la memoria el mismo dato que se envía al display. En el p ro gram a, la su b ru tin a WAIT pro­ d u ce un retardo en m ilisegu n d o s. La c a n ti­ dad de m ilisegu n d o s deseada debe escribirse en el registro loop s antes de h acer el llam ado c o rre sp o n d ie n te . Se u tiliz a p rin c ip a lm e n te para hacer un retardo de 10 m ilisegun d o s lu e­ go de escrib ir un dato en la m em o ria. Se debe ten er en cu en ta que los retardos están calcu ­ lados para un o scilad o r de 4 M H z en el m i­ crocontrolador.

C áto d o c o m ú n

SDA

READ +5V P u ls o s de e n tra d a R E A D /W R ITE

s

i He

t

PIC16F84 RA4/T0CKI

_ A -o -

20pF 2N3906

10012

R ESET

F igura 7.4 Diagram a esquem ático del contador con PIC y m em oria 24LC01

* (S /M I/G H IT s a. Curso práctico sobre Microcontroladores

i.

1;ESTE PROGRAMA ELABORA UN CONTADOR DECIMAL CON UN 1 ;PULSADOR Y UN DISPLAY DE 7 SEGMENTOS, EL VALOR DE ;LA CUENTA SE GUARDA EN LA MEMORIA SERIAL 24LC01 STATUS EQU 3H REGISTRO DE ESTADOS PTOA EQU 5H PTOB EQU 6H ADDR 0DH POSICIÓN DE MEMORIA QUE SE EQU LEE 0 ESCRIBE DATAO EQU 0EH REGISTRO PARA ESCRIBIR DATOS EN LA MEMORIA SLAVE EQU 0FH DIRECCIÓN DEL DISPOSITIVO EN EL BUS I2C (1010XXX0) TXBUF 10H BUFFER DE TRANSMISION EQU COUNT EQU 11H CONTADOR DE BITS EEPROM EQU 12H BUFFER DE BITS RXBUF EQU 13H BUFFER DE RECEPCIÓN SE UTILIZAN EN RETARDOS LOOPS EQU 15H LOOPS2 EQU 16H BIT DE ENTRADA DESDE EEPRCM DI EQU 7 BIT DE SALIDA PARA EEPROM DO EQU 6 SDATA EQU 6 LÍNEA DE DATOS SERIALES CPIN RB6) SCLK 7 RELOJ SERIAL (PIN RB7) EQU CONTA EQU 17H LLEVA LA CUENTA DE PULSACIONES CONTA2 EQU 18H TRISA REGISTRO DE CONFIGURACIÓN EQU 85H DEL PUERTO A TRISB EQU 86H REGISTRO DE CONFIGURACIÓN DEL PUERTO B Z EQU 02H BANDERA DE CERO DEL REGISTRO DE ESTADOS w EQU 00H INDICA QUE EL RESULTADO SE GUARDA EN W 00H BANDERA DE CARRY c EQU 00H VECTOR DE RESET ORG GOTO INICIO ORG 03H WAIT slbrjtina ce retardo bí miliseg . TOP2 MOVLW .110 EL tim o DE MILISEONOS LLEGA MOVWF CARGADO EN EL REGISTRO LOOPS LOOPS2 TOP NOP NOP NOP NOP NOP NOP iPREGUNTA SI TERMINO 1 MS DECFSZ LOOPS2 GOTO TOP DECFSZ LOOPS [PREGUNTA ■ »W ^-w-— SI ■ TERMINA - - - EL - - RETARDO - GOTO TOP2 RETLW 0 ¡RETARDO DE 100 MILISEGUNDOS RETARDO MOVLW .100 MOVWF LOOPS CALL WAIT RETLW 0 BSTART ¡ESTA RUTINA (B & A EL STAKT BIT RfiRA LA G X N I O O Ó N SERIAL MOVLW B *00111111' ¡PROGRAMAR DATOS Y RELOJ TRIS PTOB ¡COMO SALIDAS BCF PTOB,SCLK ;LÍNEA DE RELOJ EN NIVEL B/UO BSF PTOB,SDATA;SE ASEORA UD€A CE DATOS BJ ALTO NOP BSF PTOB,SCLK ¡LÍNEA DE RELOJ EN ALTO NOP ¡AJUSTE DE TIEMPO NOP NOP NOP NOP BCF PTOB,SDATA SE BAJA LA LÍNEA DE DATOS NOP MIENTRAS EL RELOJ ESTÁ ALTO AJUSTE DE TIEMPO NOP NOP

NOP BCF NOP NOP RETLW

Programación

PTOB,SCLK ;SE BAJA LA LINEA DE RELOJ ;PARA TERMINAR EL PULSO 0

BSTOP

;ESTA RUTINA GENERA EL STOP BIT ;PARA LA CCMMCACICN SERIAL MOVLW TRIS

B’00111111' PTOB

;PROGRAMA RELOJ Y DATOS ;COMO SALIDAS PTOB,SDATA ;ASEQJRA LÍhEA DE DATOS EN BA30

BCF NOP NOP NOP BSF PTOB,SCLK ;LINEA DE RELOJ EN NIVEL ALTO NOP NOP NOP BSF PTOB,SDATA;LA LÍI€A DE DATOS PASA A ALTO NOP ;MIENTRAS EL RELOJ ESTÁ ALTO NOP BCF PTOB,SCLK LA LINEA DE RELOJ BAJA NOP NUEVAMENTE NOP PARA COMPLETAR EL PULSO NOP RETLW 0 BITOUT ;ESTA RUTINA TOMA EL BIT QUE SE DEBE ¡TRANSMITIR Y LO SACA AL PUERTO MOVLW B ’00111111*;ADEMAS GENERA EL PULSO DE RELOJ PTOB TRIS PROGRAMA RELOJ Y DATOS COMO SALIDAS BSF PTOB,SDATA ASUME QUE EL BIT ES ALTO BTFSS EEPROM,DO PREGUNTA ESTADO DEL BIT QUE SE VA A TRANSMITIR BCF PTOB,SDATA SI EL BIT ES BAJO PONE LA SALIDA EN BAJO CLKOUT NOP NOP BSF PTOB,SCLK SUBE EL NIVEL DE LA NOP LÍNEA DE RELOJ NOP PARA FORMAR EL PULSO NOP NOP BCF PTOB,SCLK ;TERMINA PULSO DE RELOJ RETLW 0 BITIN ;ESTA RUTINA LEE UN BIT DE LA MEMDRIA Y LO PONE EN ;UN REGISTRO BSF EEPROM,DI ASUME QUE EL BIT ES DE NIVEL ALTO KJVLW B ’01111111' PROGRAMA PIN DE DATOS COMO ENTRADA TRIS PTOB BSF PTOB,SCLK ;SUBE LA LINEA DEL RELOJ NOP NOP NOP NOP NOP ; BTFSS PTOB,SDATA ;¿ESTADO DEL PIN DE DATOS? BCF EEPROM,DI ;SI ES BAXD LO PCNE EN ESE NIVEL BCF PTOB,SCLK ;SI ES ALTO LO DEJA COMO RETLW 0 ;SE ASUMIÓ ANTES TX ;ESTA RUTINA SE ENCARGA DE TRANSMITIR UN BYTE ;HACIA LA MEMORIA MOVLW .8 MOVWF COUNT EL NÚMERO DE BITS ES 8 TXLP BCF EEPROM,DO ASlft QJ: EL BIT A EWIAR ES BA30 TXBUF,7 CCNSULTA EL ESTACO REAL CEL B U BTFSC BSF EEPROM,DO SI ffiA ALTO LO CEJA CBJ DICK) N M L CALL BITOUT SACA EL BIT POR EL PUERTO TXBUF,1 RLF ROTA EL BYTE QUE SE ESTÁ

C urso p rá c tic o so b re M icro co n tro la d o re s

MT,S .A .

Ejercicios avanzados de program ación con m icrocontroladores PIC

INICIO

NOP NOP MOVF MOVWF CALL CALL MOVLW MOVWF CALL RETLW BSF MOVLW MOVWF

0F0H TRISA

MOVLW MOVWF

07FH TRISB

BCF

STATUS,

MOVLW

INI2

CICLO

B ’10100000

MOVWF CLRF

SLAVE ADDR

CALL

LEER

MOVLW

0AH

SUBWF

RXBUF,W

BTFSS GOTO

STATUS, CICLO

CLRF CLRF CALL CALL

CONTA DATAO ESCRIB LEER

MOVF MOVWF MOVWF CALL PULSA

DATAO,W TXBUF TX BSTOP .10 LOOPS WAIT 0 STATUS,5

BTFSC GOTO CALL BTFSC GOTO INCF

MOVWF CALL MOVF XORLW BTFSS GOTO GOTO END

¡RETARDO DE 10 MS AL ESCRIBIR ¡CADA DATO

SE UBICA EN EL SEGUNDO BANCO DE RAM SE CARGA EL REGISTRO W CCN 0F SE PROGRAMA EL PUERTO A COMO SALIDAS SE CARGA EL REGISTRO W CCN 00 SE PROGRAMA EL PUERTO B COMO ENTRADAS ¡SE UBICA EN EL PRIMER BANCO DE MEMORIA RAM ¡LA DIRECCIÓN A0, Al, Y A2 DE LA MEMORIA EN EL BUS I2C ES 000 CUANDO SE ENCIENDE EL SISTEMA SE VERIFICA QUE EL DATO GUARDADO EN MEMORIA ESTÁ ENTRE 0 Y 9 LA PRUEBA SE HACE PORQUE LA PRIMERA VEZ QUE SE ENCIENDA EL SISTEMA SE PUEDE TENER UN ¡NÜMERO FUERA DEL RANGO PARA LAS OCASIONES POSTERIORES NO IMPORTA INICIA CONTADOR EN CERO


c

\

RS 1 •

V álid o

¿ * -

450ns

/

: •

á

_____________________ X

X

V álid o

x:

F igura 7.8 Diagrama de tiem pos d e l m ódulo LCD Curso práctico sobre Microcontroladores

Ejercicios avanzados de program ación con m icrocontroladores PIC

C o n tro l y d a to

S eñal de c o n tr o l

D A T O /D IR E C C IO N D E S C R IP C IO N

IN S T R U C C IO N E S

RS

RW

07

06

05

0

0

0

0

C u rs o r a c a s a

0

0

0

S e le c c io n a r m o d o

0

0

E n c e n d e r /a p a g a r p a n ta lla

0

D e s p la z a r c u r s o r /p a n ta lla

A c tic a r fu n c ió n

B o r r a r p a n ia lla

|

D4

03

02

Dt

DO

0

0

0

0

0

1

L im p ia to d o e l (d ire cció n Oi

0

0

0

0

0

1



R etorna e l c u rs o r a la p o s to ó n d e im cio (d ire c c ió n 0 ) También re to m a e l disptay. d espla zán do lo a la p osición o ng m al l o s contenidos d e la R AM D D p e rm a n e c e n sm cam bio

0

0

0

0

0

1

1/D

0

el d t s p i a y Esta o p e ra ció n e s e je c u ta d a d u ra n te o p e ra c io n e s d e le c tu ra y e se ntu ra

0

0

0

0

0

1

0

c

B

C onfigura e l e sta d o ON/OFF de to d o e l tfis o la y (D). e l c iís o r 1C 1y de^ c a rá c te r e n la p o s ició n d e l cursor

0

0

0

0

0

1

S /C





M u e v e e l c u rs o r y d e s p la z a e l d / S D RAM DO

0

0

0

0

1

D /L

N





C o n fig ura e l ta m a ñ o d e la in te rfa z (01). e l n úm e ro d e lin e a s d e l t f t s p fu e n te d e l c a rá c te r * 0



A i

V

* i

bO

ASRA

1

ASRX

1

ASR opr.X

4

ASR opr.X

3

ASL opr.SP

5

BCC reí

Saltar si c a rry e s cero

P C - # - (PC )+S 0002+rel?|C )=0

BCLR n. opr

Borrar b it e n m em oria

M n -#— 0

BCS reí

Saltar si carry es uno

P C -# - (PC)+S0002 -rel?(C )=1

BEQ reí

Saltar si es igual

PC-#— (PC)*S0002 *rel?(Z )=1

BGE opr

S a lt a r s i e s m a y o r o ig u a l a

P C - # - ( P C ) + S 0 0 0 2 + r e l? ( N © V | = 0

BGTopr

Saltar si es mayor a

3

4 •

3

*

3

*

P C -# - (PC)+S0002 *rel?(Z)

3 3

I (N ©V)=0 BHCC reí

S a lt a r s i e l b it d e h a l l c a r r y

• P C - # - (P C )+ S 0 0 0 2 + re P (H )= 0

3

e s tá e n c e ro

BHCSrel

< € M /K M W s ,

Saltar si bit hall está en uno

PC-#— (PC>+S0002 +ret?(H)=l

Curso práctico sobre Microcontroladores



_ _

_

3

Programación E fe c to s o b re CCR D e s c rip c ió n

O p e ra c ió n

F orm a

C ic lo s V

H

1

N

C

z

BHI reí

Saltar si es el mayor

PC-*— (PC|+S0002+rel?(C)l(Z)=0

3

BHSrel

Saltar si es mayor o igual

PC-*— (PC)+S0002+rel?(C)=0

3

BIH reí

Saltar si el pin ÍRQ está en alto

P C - * - (PC»+$0002+rel?IRQ=1

3

BlL reí

Saltar si el pin ÍRQ está en bajo

P C - * - (PCI+S0002+rel?IRQ=0



-



BIT «opr

Probar bit

(A) & (M)

0

-



-

-

A

A

y

w ▼



3



2

BIT opr

3

BIT opr

4

BIT opr.X

4

BIT opr.X

3

BIT ,X

2

BIT opr.SP

4

BIT opr.SP

5

BLE opr

Saltar si es menor ó igual



3

P C - * - (PC)+S0002+rel?(Z) I (N ©V)=1

BLO reí

Saltar si es el más bajo

P C * * - (PC)+$0002+rel?(C)=1

3

BLS reí

Saltar si es menor ó igual

P C - * - (PC)+ S0002 -*-rel?(C|l(Z)= 1

3

BLT opr

Saltar si es menor que

P C - * - (PC)+S0002+rel?(N © V)=1

3

BMC reí

Saltar si la mascara de la

PC-*— |PC)+S0002--rel?(n=0

3

3

interrupción esta en cero BMIrel

Saltar si menos

P C - * - (PC)+$0002+rel?(N>= 1

BMS reí

Saltar si la mascara de la

PC-*— (PC)+S0002+rel?(l)=l



3

interrupción está activada BNE reí

Saltar si no es igual

PC-*— (PC)+S0002+rel?(Z)=0

3

8 PL reí

Saltar si más

PC-*— (PC)+S0002+rel?(N)=0

3

BRA reí

Saltar siempre

P C * - (PC)+S0002+rel

35

BRCLR n.opr.rel

Sa to

BRN reí

Nunca saltar

A V

9 d b tn en menrra estáencero P C * - (PC(+S0003+rel?(Mn)=0

3 5

P C * - (PQ+S0002

8 RSET n.opr.rel Salta9 a M n en menxráesé en iro

P C * - 1 C /> >

1L

Pin 2 5 - GND 13

íT í¡

25

>

O

co o

Q_

T-

c_3

Q

>

O O

+5V n i CC

O Q_

i l i 1 1

O Q_

C\J Q_

Q-

tt CL.

in

q

_

co

o

_

r-

o

_

_ i.

i

P in 1 1 - busy

'— Q_

co

+5V +5V

I

1 0 k í2

o3 T3

O 03 g 03

Q.

•c 03 Pin 2 - DO

F ig u ra 9 .9 Circuito de prueba con un LED y un botón pulsador

ducción lo indica, sirve para conmutar el estado de un pin. En este caso el pin 7, que es donde está conectado el LED. Luego de la instrucción que cam­ bia el estado lógico del pin, se agrega un retardo generado por la instrucción PAUSE. Si este retardo no se pone en este sitio, el LED se vería permanen­ temente encendido ya que la conmutación sería demasiado rápida. Nuevamente, se utiliza la etiqueta CICLO y la instrucción GOTO CICLO para eje­ cutar el programa indefinidamente.

Experim ento No. 14 Controlando el diodo LED con un pulsador

rimento. A llí tenemos un ciclo en el que se veri­ fica el estado del pin número 5, donde está co­ nectado el pulsador; luego se hace un retardo de algunos milisegundos, y, por últim o, se asigna el valor leído en la entrada al pin de salida número 7, donde está conectado el LED. La instrucción DEBUG es m uy especial, sir­ ve para mostrar en la pantalla de la com putado­ ra el valor o estado de algunas variables presen­ tes en el microcontrolador. Por lo tanto, se utili­ za frecuentemente durante el desarrollo de al­ gún programa para monitorear como se está eje-

En la figura 9 .9 se muestra el circuito utilizado para el experim ento, allí se ha adicionado un botón pulsador conectado al pin 5 del Stamp. En ese punto tam bién se ha puesto una resisten­ cia que sirve para fijar un nivel lógico alto cuan­ do éste no es pulsado. La idea es leer el estado del pulsador y de acuerdo a éste (pulsado o no pulsa­ do), tom ar la decisión de encender o dejar apa­ gado el LED. Este ejercicio es m u y im portante ya que por prim era vez se hace lectura de señales externas al microcontrolador. Primer caso. En la figura 9 .1 0 se m uestra el prim er programa que se escribió para este expeS.A.

I

C urso p rá c tic o so b re M icro co n tro la d o re s

Figura 9 .1 0 Programa LED3.BAS. Controla un diodo LED

Programación cutando una tarea. En este caso particular se uti­ liza para m ostrar en la pantalla el estado lógico que tiene el pin núm ero 5, así podemos ver el cambio entre unos y ceros cada vez que es opri­ m ido el pulsador. La instrucción PAUSE genera un retardo de varios milisegundos, luego de los cuales, el valor leído del pin 5 es pasado al pin 7 para controlar el LED. Así pues, cuando el pulsador está libre se lee un nivel lógico alto y al poner este nivel en la salida del LED, éste permanece apagado dada la forma en que está conectado. C uando el pul­ sador está oprim ido, se lee un nivel lógico bajo, el cual, al pasar a la salida del LED perm ite que se encienda. En algunos casos se nota el retardo que hay entre el m om ento de oprim ir el pulsa­ dor y el encendido del LED, esto se debe a la instrucción PAUSE. Segundo caso. En la fig u ra 9 .1 1 se m ues­ tra el segundo program a correspondiente a este ejem plo, com o se puede ver, es más sim p le que el anterior. En este caso, recurrim os a un a de las herram ientas de program ación más cono­ cidas en los lenguajes de alto nivel, los ciclos condicionales. En la lín ea if p in 5 = 1 then ci­ clo, se prueba el estado lógico que posee el pin donde se conectó el pulsador. Si éste no está o p rim id o , el nivel lógico es 1 y por lo tanto el program a regresa a la etiq u eta m arcada ciclo y vuelve a hacer la pregunta.

Si por el contrario, el pulsador está oprim i­ do, se leerá un nivel lógico 0 y el microcontrola­ dor ejecutará las instrucciones TO G G LE 7 y PAUSE, lo que genera un cambio en el estado lógico del pin que m aneja el LED y genera un tiem po de retardo, respectivamente. Esto quiere decir que, si se deja oprim ido el pulsador, el LED va a estar cam biando de estado constantemente por lo que se verá titilar. Para hacer los experimentos siguientes va­ mos a utilizar el entrenador o circuito para prue­ bas para el Basic Stam p I que se presentó en la sección de proyectos. Para cada experimento se entregará el diagram a pictórico en donde se pre­ sentan las conexiones que se deben hacer en el entrenador para hacer el ejercicio, el diagram a esquemático y, por últim o, el programa que se debe grabar en el microcontrolador.

Ejercicio No.15 Secuenciador con diodos LED Este ejercicio consiste en hacer una rotación en los cuatro diodos LED que posee el circu i­ to entrenador, los cuales se conectan a los pines de entrada/salida PO a P3 del m icrocon­ trolador. En la fig u ra 9 .1 2 se m uestran los diagram as esquem ático y pictórico del experi­ m ento. El program a que se escribió en el m i­ cro co n tro lad o r in c lu y e varias in stru ccio n es nuevas para nosotros, a co n tin uació n explica­ remos cada un a de ellas. La in stru cció n LE T D IR S p erm ite co n fi­ g u ra r los p uerto s del m icro co n tro lad o r; en este caso, un uno (1) co n fig u ra el p in corres­ p o n d ien te com o sa lid a y u n cero (0) lo hace com o en trad a. El v alo r con q u e se p ro gram a la d irecció n de los p uerto s está precedido por u n signo de p o rcen taje (% ) lo q u e sign ifica q u e está dado en binario.

Figura 9.11 Programa LED4.BAS. Controla un diodo LED

El ciclo p rin c ip a l del p ro gram a consiste en llev ar a los pines del p uerto el valor co­ rresp o n d ien te a las rotaciones, con el fin de lo grar u n efecto visual agrad ab le.

Curso práctico sobre Microcontroladores

I

#r

1 .4 .

Ejercicios de program ación con el BASIC Stam p

AS•IC Stam p

O o >

PCI

PCO

vss

VIN

OT

+5V

1 LO LU ir

O n

1

CV1

*“ o.

o.

1

co Q.

m O-

O-

■ u

1 1 1 1

cd Q_

r>Q_

n

' " I “

+5V

t ___ -| RESET

TTT^T

□□

IC 2

is v d c 9VAC

E*1 1

¡?U

■ B A S IC STA M P I

TUENTE

= (l« p 780?

3

ca +

S IS £ S 3 < «

X I

MEV ONU « j v

CD C D CD 35

00

S-U #EK*

iCLy> ‘1

P U LS A D O R E S

r

fO

CDM

NC

b«00t>'

CX

C13

cid

C O M U N IC A C IO N R S - 8 3 c

P C E A PcPI

I

¡ C *

^SU)PCn| S6

ssst-

K -1 9 0

I ] 05, til; ci? B19! 6£0 Bcj]

Q og O I

El ciclo FO R realiza el m ism o proceso d u ­ ran te cuatro veces, d ic h a c u en ta se lleva en la v ariab le o posició n de m em o ria R A M lla m a ­ da b2. La in stru cció n L O O K U P se encarga de p asar a la v ariab le b3 los núm eros q u e es­ tán in d icad o s dentro del paréntesis. La in stru cció n Let p in s pasa el co n ten i­ do de la v ariab le b3 h acia los pines del m i­ crocontrolador. De esta form a, los núm eros 1, 2, 4 y 8 se llevan a los puertos en form a s e c u e n c ia l, fo rm an d o u n a ro ta c ió n en los LED del en tren ad o r. La in stru cció n P ause 1000 genera u n retardo de 1 segu n d o (1 .0 0 0 m s) en tre cada rotación. El uso de la in strucció n LO O K U P es bas­ tante interesante ya que perm ite hacer una se­ cuen cia de núm eros, sin q u e ten ga que existir alg u n a lógica u orden establecido entre ellos. 3

I

D IS P c

D IS P 1

D IS P L A Y S

l e t d i r s = B00001111 ro ta r: f o r b2 = 0 t o 3 LOOKUP b Z , ( l , 2 , 4 , 8 ) , b 3 l e t p i n s = b3 p a u s e 1 000 next g o to r o ta r

F igura 9 .1 2 Secuenciador con diodos LED

Ejercicio No. 16 Transmisión de datos seriales vía RS-232 Este experimento consiste en transmitir una serie de datos desde el microcontrolador Basic Stamp I ha­ cia una computadora tipo PC, en la cual los datos se reciben por un puerto serial y se muestran en la pan­ talla. En nuestro caso, recurrimos al uso del progra­ m a Hyperterminal de Windows 93 para la recep­ ción de los datos ya que es de fácil uso y se encuentra disponible en casi cualquier computadora. Para convertir los datos que entrega el m i­ crocontrolador en lógica T T L a niveles RS-232, se u tiliz a un c irc u ito in te g ra d o referen cia M A X 232 y un conjunto de condensadores, tal como se muestra en la figura 9 .13. El pin de transmisión de este sistema debe conectarse al pin de recepción de la computadora. Para ello, el entrenador posee un cable serial especialmen­ te construido para estos experimentos.

Curso práctico sobre M icrocontroladores

Programación

~

1dJ

BAS!IC Stam p 1

1_ f_ L I

I

L*

1

i 1 1 1 L

(S i U J CC

II

O O -

-

Q .

CNJ Q -

cv 2 Q _

" • i Q _

lo Q _

c o Q _

MAX232

r>'~ Q _

■ l i l i

i l i l í

i

t—

+5V

L Reset

+5V

H

L

Condensadores de 10uF de tantalio

lcVD C

BP1 '

¡ e(]

st)



B A S IC S TA M F I

FU E N TE

C O M U N IC A C IO N RS

3: i cE: S JS£S3S«

*1£V GNP u n CD U3

su ncw

D1SP1

PüLi-ADDRES

=■

Al pin de Rx de la computadora

S ym bol d a t o = b0 S ym bol i = bl l e t d i r s = %00000001 l e t p i n s = %11111111

O ’Ü C T c f 9V A C

t x

D IS P L A Y S

c ic lo : l e t d a to = 0 fo r i = 1 to 8 l e t d a to = d a to + 1 s e r o u t 0 ,T 1 2 0 0 ,(# b 0 ) p a u s e 1000 next g o to c ic lo Figura 9.13 Transmisión de datos seriales vía RS-232

Para convertir los datos que entrega el m i­ crocontrolador en lógica T T L a niveles R S-232, se u tiliz a u n c irc u ito in te g ra d o referen cia M A X 232 y un conjunto de condensadores, tal como se muestra en la figura 9.13. El pin de transmisión de este sistema debe conectarse al pin de recepción de la computadora. Para ello, el entrenador posee un cable serial especialmente construido para estos experimentos. El programa empieza por la definición de dos variables, dato e i, las cuales ocuparán las posiciones de memoria RAM llamadas bO y b 1. Luego, se hace la programación de los puertos con la instrucción LET DIRS, dejando como salida únicamente el pin PO del microcontrolador. Además, el pin PO se inicializa en un nivel lógico alto con la instrucción de cargar el puerto llamada LET PINS.

El ciclo principal del programa consiste en ha­ cer un simple contador de 1 a 8 y enviar por la salida serial dicho número de tal forma que, en la pantalla de la computadora, vayan apareciendo en forma se­ cuencia!. Para ello, recurrimos a un ciclo FOR que se repite 8 veces, utilizando la variable dato para ha­ cer la cuenta. La instrucción SEROUT se encarga de sacar por un pin el dato en formato RS-232. D icha instrucción tiene varios parámetros de configuración que son: el pin del puerto por donde se sacan los datos serialmente (en este caso el pin 0), la velocidad de transmisión (1.200 bps) y el dato o valor que se va a transm itir (corres­ ponde a la variable bO ó dato). La instrucción PAUSE genera un retardo de 1 segundo entre el envío de cada dato serial. Obviamente, en la com­ putadora el program a H yperterm inal se confi-

Curso práctico sobre Microcontroladores

I

guró para recibir datos a 1.200 bps, sin paridad, con datos de 8 bits (1.200, 8, N, 1). Note que en la instrucción SE R O U T la velocidad se escri­ bió como T i 200 lo que signi­ fica 1.200 bps con polaridad verdadera ( True); ésta corres­ ponde a lógica RS-232 conven­ cional. También existe la con­ figuración N 1200, que corres­ ponde a una velocidad de 1.200 bps con lógica R S-232 inverti­ da; ésta es útil cuando se com u­ nican dispositivos T T L sin que haya conversión a valores de voltaje RS-232.

Ejercicio No. 17 Recepción de datos seriales vía R S-232

9 .1 4 aparece el h a rd w a re u ti­ lizado para el ejercicio.

Este experim ento consiste en recibir datos que llegan serial­ m ente desde una computadora m ediante una interfaz RS-232. Los datos son enviados desde el p ro g ram a H y p e rte rm in a l, el cual se ha configurado para tra­ bajar a 1.200 bps, datos de 8 bits, sin paridad y 1 bit de para­ da o stop (1.200, 8, N, 1).

El p ro gram a d el m icro ­ co n tro lad o r se in ic ia con la defin ició n de la variable dato, que ocupa la posición de m e­ m oria R A M bO. Los puertos se program an de tal forma que

Los datos que se van a en­ viar corresponden a los valo­ res A S C II de las te clas que pulse el usuario. En la figu ra

S ym bol d a t o = b0 l e t d i r s = *00001111 l e t p in s = *00000000 c ic lo : s e r in 7 ,T 1 2 0 0 ,b 0 l e t p in s = d a to g o to c ic l o

RESET

Al pin de Tx de la computadora

Condensadores de 10 jiF de Tantalio

IcV D C 9VAC

■ B A S IC S TA M F I

“ UENTE L E OS

C O M U N IC A C IO N R S - 2 3 2

s u

: ic h

2N3906 +5V

D 1SP2

FU LSADO R ES

D 1S P 1

D IS P L A Y S

Figura 9.14 Recepción de datos seriales vía RS-232

* Curso práctico sobre M icrocontroladores

Programación los pines PO a P3, que m an ejan el display, q u e­ den com o salidas y los dem ás com o entradas, in cluyen d o el p in que lee los datos seriales. El ciclo prin cip al del program a se lim ita a recibir datos con la instrucción SERIN y luego los pasa al display. Note que la in strucció n SERIN tie­ ne varios parám etros que deben ser especifica­ dos: el pin por donde se reciben los datos (el pin 7 ), la velocidad de los m ism os y su p olari­ dad (T 1 2 0 0 ), y la variable a donde se pasa el dato que es recibido (posición bO). En el display sólo se m uestra el dígito de m enor peso del valor A SC II recibido, por lo tanto, si se oprim en las teclas de los núm eros del 0 al 9, se puede apreciar dicho núm ero en los displays.

Ejercicio No. 18 Com unicación serial sincrónica Existen dos formas de intercambiar información bi­ naria: la paralela y la serial. La comunicación serial transmite un bit a la vez, por lo cual posee la ventaja de necesitar un menor número de líneas para la trans­ ferencia de la información y las distancias a las cuales se puede hacer el intercambio son mayores.

Existen dos formas de com unicación se­ rial: la sincrónica y la no sincrónica. En la co­ m u n icació n sincrónica, adem ás de un a línea sobre la q u e se transfieren los datos, se necesi­ ta otra q u e contenga pulsos de reloj que in d i­ q u en cuando cada b it de datos es válid o ; la d u ració n del b it está d eterm in ad a por la d u ra­ ción del pulso de sincronism o. En la co m u n i­ cación no sincrónica los pulsos de reloj no son necesarios y se acude a otros m ecanism os para hacer la lectura/escritura de los datos; la d u ra­ ción de cada b it sobre la lín ea está d eterm in a­ da por la velocidad con la cual se hace la trans­ ferencia de datos. Los m icrocontroladores BASIC Stam p II poseen instrucciones especiales para hacer los dos tipos de com unicación serial. Para la co­ m unicación no sincrónica, por ejem plo del tipo R S-232, se utilizan las instrucciones SERIN y SE R O U T para recibir y transm itir datos, res­ pectivam ente. Para hacer la com unicación sin ­ crónica, que es la que nos interesa, existen las instrucciones denom inadas SH IF T IN y SH IFT O U T , las cuales perm iten recibir y enviar da­ tos, respectivamente. Para explicar el funciona-

C o n e c t a r s e al p u erto serial

±

2 05

V IN



SOUT

ro

S IN

VSS

ATN

RES

VSS

VDD

23

22



co co •

DB9 hem bra

CO •

RESET

• -fe

PO



P1

O I •

P2

8

Q. E

ez

co o co < co

21

+5V

J

20 P15 P14 P13

19_

2! 17

P3

P12

P4

P11

P5

P10

21

P6

P9

21

P7

P8

16 +5V

W

vcc

C3 Vin (+) Serial (0-5V )

i

CLK

ü 11_ 12

13

o V in (-) OND

§

DO Vref

F ig u ra 9 .1 5 Conexión d e l BASIC Stam p II y e l ADC0831

Curso práctico sobre M icrocontroladores

i

S .Á .

Ejercicios de program ación con el BASIC Stam p

m iento de estas instrucciones vamos a leer un co n vertid o r A/D serial de 8 bits, referencia A D C 0831 de N ational Semiconductor.



• L ectu ra del co n v ertid o r A D C 0 8 3 1 . En la fi­ g u ra 9 .1 5 se m uestra el d iagram a esquem ático d e l c ir c u i t o c o n s t r u id o . El c o n v e r t id o r A D C 0831 puede leer un a señal an álo ga con un intervalo de variación entre 0 y 5V, y, entre­ ga en su salida, de forma serial, el equivalente d ig ita l de 8 bits de la señal leída. Este conver­ tido r posee tres pines de control para hacer la co m un icació n : el pin llam ad o C S (ch ip select) se debe h a b ilita r antes de hacer un a lectura (pasar a nivel lógico bajo) y se debe d esh ab ili­ tar al term in arla (nivel lógico alto ), el p in CLK (reloj) debe recib ir una onda cuadrada en la cual cada pulso h ab ilita la salid a de un b it de datos a través del pin D O . El programa escrito para que el microcontro­ lador lea el dato del convertidor y lo presente en la pantalla de la computadora, se muestra en la figu­ ra 9.16. En dicho listado se utiliza la instrucción SH IFTIN para leer el dato serial; este comando se encarga de controlar los dos pines de comunica­ ción, es decir, genera los pulsos de reloj para el pin CLK y lee los bits que provienen del pin DO. Esta instrucción posee el siguiente formato:



• •

D pin es una variable o constante (entre 0 y 15) que especifica el pin que se conecta a la línea de datos. C pin es una variable o constante (entre 0 y 15) que especifica el pin en el cual se conectará la señal de reloj para la comunicación serial. M ode es un valor entre 0 y 3 que especifica en que forma se recibirán los datos seriales, trabaja como se indica en la tabla 9.1. Result es un bit, nibble, byte o palabra en la cual se almacenará el dato recibido. bits es un parámetro opcional en el cual se espe­ cifica cuantos bits de datos se recibirán (1 a 16), por defecto está configurado para datos de 8 bits.

La instrucción DEBUG se encarga de mostrar en la pantalla de la computadora el dato recibido del convertidor. Obviamente, el cable de programación debe permanecer conectado a la PC para que fun­ cione correctamente. El resto del programa es muy sencillo y puede ser comprendido fácilmente. • M SB P R E 0 Lee el bit M SB muestrea bits antes del pulso de • LSBPRE 1 Lee el b it LSB muestrea bits antes del pulso de • M S B P O S T 2 Lee el bit M SB muestrea bits después del pulso • L S B P O ST 3 Lee el b it LSB muestrea bits después del pulso

primero, reloj prim ero, reloj primero, prim ero,

Shiftin dpin,cpin,m ode, [result\bits] Tabla 9.1 Forma de re cib ir los datos seriales

A D res

v a r

b y t e

4

r e s u l t a d o

d e

l a

c o n v e r s ió n :

CS

co n

0

4

C h ip

A D ata

co n

1

4

D a to s

CLK

co n

2

4

R e lo j

h ig h

CS

4

D e s h a b i l i t a

lo w

CS

*

A c t i v a

s h i f t i n

A D a ta , CLK , m s b p o s t , [A D re s \ 9 ]

4

L e e

h ig h

CS

4

D e s a c t iv a

A D res

4

M u e s t r a

e l

r e s u l t a d o

1 0 0 0

4

R e t a r d o

d e

u n

4

V u e lv e

un

b y t e

s e l e c t

ADC

a g a i n :

d e b u g

?

p a u s e g o t o

a g a i n

e l

l o s

A D C 0831.

d a t o s

a

e l

A D C 0831 e n

l a

p a n t a l l a

s e g u n d o

e m p e z a r

F ig u ra 9 .1 6 Program a que lee los datos del ADC0831 con la instrucción SHIFTIN a.

I

Curso práctico sobre M icrocontroladores

A

ECCIO IM 1 0

•r:^-

PROGRAMACION DE MICROCONTROLADORES INTEL En la sección de teoría se analizan aspectos como la arquitectura, la organización de la m e­ m oria y los m ódulos periféricos. Basándonos en esa inform ación, podemos analizar breve­ m ente algunos aspectos relacionados con su modo de program ación y desarrollaremos al­ gunos ejercicios básicos que nos darán una base para introducirnos en esta tecnología.

€SMKTTil *

Curso práctico sobre M icrocontroladores

l

Program ación de m icrocontroladores Intel

Los m icrocontroladores Intel siguen sien­ do considerados entre los más poderosos del m ercado, pues poseen un considerable n ú m e­ ro de instrucciones y m odos de d ireccio n a­ m iento para acceder a la m em oria R A M . En esta in tro du cció n a esta tecnología de m icro­ controladores estudiem os sus modos de direc­ cio nam ien to y su con junto de instrucciones agrupados por categorías así: Instrucciones Instrucciones Instrucciones Instrucciones Instrucciones

aritméticas lógicas para la transferencia de datos booleanas de salto

Modos de direccionam iento • D ireccionam iento directo En este caso, el operando se especifica dentro de la m isma instrucción. Ejemplo: AD D A ,2B H . Esta instrucción significa sumar (ADD) el contenido del acumulador con el conteni­ do de la posición de memoria (2B). A 4—(A) + (2B) Recuerde que un número o registro entre paréntesis se refiere al contenido, así: (A) es el contenido del acum ulador (2B) es el contenido de la posición de memoria 2B • D ireccionam iento indirecto La instrucción especifica un registro que contie­ ne la dirección del operando. Los registros para direccionar sobre la m em oria RAM son el RO y el R1 del banco de registros seleccionados, o el puntero a la pila (stack pointer). El carácter (@) es el identificador de direccionam iento indirec­ to. Ejemplo: AD D A,@R0. Así, si (RO) = 4BH la operación será: A