Está en la página 1de 101

Entrenador para F87X PIC Laboratory

MANUAL DE USUARIO

INGENIERIA DE MICROSISTEMAS PROGRAMADOS S.L.


C/ Alda. Mazarredo N 47 - 1 Dpto. 2 48009 BILBAO - BIZKAIA Tel/Fax: 94 4230651
Email: info@microcontroladores.com www.microcontroladores.com

PIC Laboratory
Indice de materias

Indice de materias
TEMA 1: El Hardware de PIC Laboratory
1.1 INTRODUCCION 1.2 CARACTERISTICAS 1.3 ARQUITECTURA DE PIC LABORATORY 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.3.10 1.3.11 1.3.12 1.3.13 La Fuente de Alimentacin Los microcontroladores El Oscilador Las entradas digitales El generador analgico El generador lgico El teclado Las salidas digitales Salida a display de 7 segmentos La pantalla LCD El canal serie RS232 El conector de interface Smart Card La tarjeta de memoria Memory Card 1-1 1-2 1-3 1-3 1-4 1-6 1-7 1-8 1-9 1-10 1-12 1-13 1-14 1-15 1-17 1-19

TEMA 2: El monitor PICMOS7X y el software Real_PIC


2.1 INTRODUCCION 2.2 EL PICMOS7X 2.3 RECURSOS EMPLEADOS POR EL PICMOS7X 2.3.1 2.3.2 2.3.3 2.3.4 Restricciones en la memoria FLASH de programa Restricciones en la memoria RAM de datos Restricciones en la memoria EEPROM de datos Restricciones de perifricos 2-1 2-1 2-1 2-2 2-3 2-3 2-4 2-4 2-6 2-7 2-7 2-9 2-9 2-10 2-11 2-11 2-12 2-13

2.4 SECUENCIA DE INICIO 2.5 EL SOFTWARE Real_PIC 2.5.1 El men principal 2.5.1.1 2.5.1.2 2.5.1.3 2.5.1.4 2.5.1.5 2.5.2 2.5.3 2.5.4 Archivo Edicin Herramientas Ejecucin Ayuda

El rea de EDITOR El rea Mem Programa El rea de la EEPROM de datos

i -1

PIC Laboratory
Indice de materias
2.5.5 2.5.6 2.5.7 El rea RAM de datos Operaciones con la tarjeta de memoria Memory Card Ejecucin 2-14 2-15 2-15

TEMA 3: Mdulos OEM y aplicaciones


3.1 INTRODUCCION 3.2 EL MODULO OEMPICMOS76 3.2.1 3.2.2 Esquema elctrico Aplicaciones 3-1 3-1 3-3 3-4 3-6 3-8

3.3 EL CIP PICMOS76 3.4 RESUMEN

TEMA 4: Tutorial
4.1 INTRODUCCION 4.2 INSTALACION 4.3 MANOS A LA OBRA 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 Editando el programa fuente Ensamblando Grabando el programa Ejecutando Modificando 4-1 4-1 4-3 4-3 4-4 4-5 4-6 4-6 4-7 4-7 4-10 4-11 4-13 4-13 4-13 4-13 4-14 4-14 4-14 4-15 4-15 4-15 4-16 4-16 4-17 4-17 4-17

4.4 EDICION DE REGISTROS 4.4.1 4.4.2 Editando la memoria RAM Editando la EEPROM de datos

4.5 LAS TARJETAS DE MEMORIA 4.6 EJEMPLOS 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.6.10 4.6.11 4.6.12 4.6.13 4.6.14 Simple manejo de las E/S Funcin lgica NOT Decodificador combinacional Automatismo secuencial, simulando una maniobra de torneado Automatismo secuencial, simulando una maniobra de taladrado Automatismo secuencial, mquina de envasar Mquina de envasar, versin mejorada Juego de luces La interrupcin del TMR0 La interrupcin externa RB0/INT El display de 7 segmentos Decodificador BCD a 7 segmentos Contador decimal UP/DOWN El TMR0 como contador de eventos externos

i -2

PIC Laboratory
Indice de materias
4.6.15 4.6.16 4.6.17 4.6.18 4.6.19 4.6.20 4.6.21 4.6.22 4.6.23 4.6.24 4.6.25 4.6.26 4.6.27 4.6.28 4.6.29 4.6.30 4.6.31 4.6.32 4.6.33 4.6.34 4.6.35 4.6.36 4.6.37 4.6.38 4.6.39 La memoria EEPROM de datos, la mquina Su Turno Introduccin al manejo de la pantalla LCD Seguimos con la pantalla LCD Visualizando mas mensajes El teclado El teclado y el LCD Interrupcin por cambio de estado El TMR1, interrupcin peridica El TMR1 como contador de eventos externos El TMR1 como divisor de frecuencias Frecuencmetro El TMR2, interrupcin peridica El TMR2, temporizaciones ajustables Capturas con el mdulo CCP1, midiendo periodos Capturas con el mdulo CCP1, midiendo la anchura de un pulso Capturas con el mdulo CCP1, midiendo el tiempo entre un pulso y el siguiente Comparacin con el mdulo CCP1, contador de eventos ajustable Modulacin de anchura de pulsos (PWM) mediante el mdulo CCP1 PWM mediante el mdulo CCP1, variando la anchura El convertidor ADC Modulacin PWM mediante el convertidor ADC El USART, Transmitiendo caracteres El USART, recepcin/transmisin de caracteres Saludos Juego, Adivina el nmero 4-18 4-18 4-18 4-19 4-19 4-19 4-20 4-20 4-21 4-21 4-21 4-22 4-22 4-22 4-23 4-23 4-24 4-24 4-25 4-25 4-25 4-26 4-26 4-27 4-27

ANEXO 1: El mdulo LCD


AN1.1 INTRODUCION AN1.2 CONEXIN CON PIC Laboratory AN1.3 JUEGO DE INSTRUCCIONES AN1.4 JUEGO DE CARACTERES AN1.5 CARACTERES GRAFICOS AN1.6 SECUENCIA DE INICIALIZACION AN1.7 DIAGRAMA DE TIEMPOS AN1.8 RUTINAS DE CONTROL AN1.9 DIMENSIONES DEL MODULO LCD AN1-1 AN1-1 AN1-2 AN1-5 AN1-6 AN1-7 AN1-8 AN1-9 AN1-12

ANEXO 2: CARACTERISTICAS GENERALES DEL PIC16F876/877


AN2.1 INTRODUCCION AN2.2 CARACTERISTICAS GENERALES AN2.3 DESCRPCION DE PINES AN2-1 AN2-1 AN2-2

i -3

PIC Laboratory
Indice de materias
AN2.4 ORGANIZACIN DE LA MEMORIA FLASH DE PROGRAMA AN2.5 LA MEMORIA RAM DE DATOS AN2.6 CONDICIONES INICIALES TRAS EL RESET AN2.7 JUEGO DE INSTRUCCIONES AN2-4 AN2-5 AN2-8 AN2-10

i -4

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

Tema 1: El Hardware de PIC Laboratory


1.1 INTRODUCCION Bienvenido al fascinante mundo de los microcontroladores PIC. Ingeniera de Microsistemas Programados S.L. pone en tus manos el nuevo entrenador PIC Laboratory. Se trata de un entrenador diseado para el aprendizaje y diseo de aplicaciones con los microcontroladores PIC16F876/877 de Arizona Microchip. A pesar de pertenecer a la gama media, estos microcontroladores son de los mas potentes y flexibles que hay en el mercado, gracias a la gran cantidad de recursos hardware internos que poseen. Entre estos recursos cabe citar los siguientes: Memoria FLASH de programa y EEPROM de datos. Pueden ser borrados y re utilizados en numerosas ocasiones. Disponen tambin de 368 bytes de RAM para datos de tipo variable. Disponen de hasta un mximo de 33 lneas de entrada/salida (en el caso de emplear el PIC16F877). Permiten el control de gran cantidad de perifricos. Incluyen circuito conversor A/D con hasta 8 canales de entrada y 10 bits de resolucin que permiten procesar variables o seales de tipo analgico. Tres circuitos temporizadores o Timers totalmente independientes entre s y con diversos modos de funcionamiento para cada uno de ellos. Puerta Serie Sncrona Master (MSSP) que permite el control y conexin con dispositivos SPI e I2C diseados al efecto. Receptor/transmisor universal (USART) que permite comunicaciones serie tanto sncronas como asncronas. Dos circuitos CCP para la captura, comparacin y modulacin de anchura de pulsos que permiten el diseo de aplicaciones donde se requiera muestreo de seales, medidas y regulacin. Puerto paralelo esclavo (PSP) de 8 bits que permite rpidas transferencias de informacin (slo el PIC16F877). Adems y, como otros miembros de la numerosa familia PIC, estos dispositivos disponen de temporizador Watchdog, Power On Reset, Power Up Timer, etc. Toda la informacin tcnica, Data Sheets y notas de aplicacin estn a disposicin de los usuarios en el sitio web que Microchip dispone al efecto: www.microchip.com

El objetivo de Ingeniera de Microsistemas Programados S.L. ha sido desarrollar una herramienta sencilla, potente y de bajo coste que facilite al usuario el aprendizaje y aprovechamiento de todos los recursos anteriormente expuestos. El resultado de ello es el presente entrenador "PIC Laboratory". Se trata de una herramienta verstil que dispone de gran cantidad de perifricos para el diseo, control y comprobacin de aplicaciones as como el soporte necesario para la grabacin final del microcontrolador. Posteriormente el usuario podr incorporar dicho microcontrolador en el hardware propio que haya diseado al efecto.

1-1

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

1.2 CARACTERISTICAS Las caractersticas ms relevantes del entrenador "PIC Laboratory" se muestran a continuacin. Alimentacin nica desde un transformador AC/DC de 12V. El entrenador dispone de su propio sistema de rectificacin, filtrado y estabilizacin a +5Vcc. Soporta al PIC16F876 o al PIC16F877. El PIC 16F876 viene incorporado de serie. El PIC16F877 es opcional y se puede adquirir por separado. Ambos modelos de PIC vienen grabados de serie con el programa monitor PICMOS76 o PICMOS77 que facilita el interface del usuario con el PC. Canal serie RS232 a 38.400 baudios para conexin con el PC. El PC dotado del software Real PIC incluido en "PIC Laboratory" , permite un cmodo interface con el usuario quien podr grabar el PIC, ejecutar programas de aplicacin, editar/modificar la memoria, etc. El usuario dispone de 4K de memoria FLASH de programa, 352 bytes de RAM para datos y 246 de EEPROM para datos no voltiles. Alta velocidad de trabajo controlada por cristal de cuarzo a 20 MHz. El tiempo de ejecucin es de 200nS por instruccin (excepto las instrucciones de salto que es de 400nS). Seis entradas digitales mediante conmutadores deslizantes que estn asociadas a las lneas RA0-RA5. Dos pulsadores permiten generar la seal RESET de inicio y la de interrupcin externa INT. Tensin de entrada analgica variable asociada al canal AN0. Esta tensin es seleccionable mediante Jumper y puede proceder de un potencimetro o bien de un foto transistor sensible a la luz ambiente. Generador lgico de frecuencia variable mediante potencimetro que permite aplicar pulsos de entrada a los diferentes temporizadores/contadores del PIC. Teclado matricial de 4 x 4 gobernado desde las lneas RB0-RB7 de la puerta B Ocho salidas digitales asociadas a RB0-RB7 y que estn representadas mediante diodos leds y display de 7 segmentos. Salida a pantalla LCD de 2 x 16 caracteres alfa numricos. Conector de la serie Smart Card de 8 contactos que permite la insercin de tarjetas de memoria externa para salvar aplicaciones y/o tarjetas de expansin va SPI, I2C, etc.. Conector de expansin PIC-BUS 2 de 40 pines que transporta todas las seales del PIC y que permite conectar perifricos externos al "PIC Laboratory" , segn las necesidades y aplicaciones del usuario. Todos los perifricos que incorpora "PIC Laboratory" pueden ser inhabilitados mediante sus correspondientes jumpers con objeto de que no interfieran con los perifricos externos que pudiera conectar el usuario a travs del PIC-BUS 2.

1-2

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
El "PIC Laboratory" se suministra completamente montado y comprobado e incluye el cable serie, el microcontrolador 16F876 grabado con el monitor PICMOS76, disco con ejemplos y el programa de interface Real-PIC. Tambin se incluye el presente manual de usuario.

1.3 ARQUITECTURA DE PIC LABORATORY En este apartado se explicar la arquitectura completa del entrenador "PIC Laboratory" presentado en la fotografa de la figura 1-1. Mediante los correspondientes esquemas elctricos el usuario podr comprender la conexin de los diferentes perifricos de que consta as como las consideraciones que se deben tener sobre los mismos. Estas explicaciones pueden ayudar al usuario ha realizar su propio hardware en sus aplicaciones a medida.

Figura 1-1. Imagen del entrenador "PIC Laboratory" 1.3.1 La Fuente de Alimentacin Se encarga de obtener la tensin general de +5Vcc con la que se alimenta el entrenador "PIC Laboratory" en su totalidad. Su ubicacin se muestra en la figura 1-2.

Figura 1-2. La fuente de alimentacin

1-3

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
El esquema elctrico de dicha fuente se presenta en la figura 1-3.
J1 12 VAC INPUT + D13 1A 1 U5 UA7805 IN OUT 3 R3 330 + C14 100uF C11 100n D10 VCC ON +5Vcc GND 2

+ C13 100uF

Figura 1-3. Esquema de la fuente de alimentacin El entrenador "PIC Laboratory" trabaja con una nica tensin de alimentacin de +5Vcc. Esta se obtiene en el propio entrenador a partir de una tensin de entrada de 12VAC o de +12VDC que se aplica por el conector J1. El puente D13 formado por 4 diodos se encarga de rectificar la tensin alterna de entrada. Esta se filtra mediante C13 y se estabiliza a +5Vcc mediante el regulador UA7805 (U5). El diodo led D10 monitoriza la tensin de trabajo obtenida. 1.3.2 Los microcontroladores El sistema es capaz soportar dos modelos de PIC diferentes: el 16F876 de 28 patillas y el 16F877 de 40. tal y como se muestra en la fotografa de la figura 1-4, se puede apreciar que existen sendos zcalos para insertar uno de los dos microcontroladores. El entrenador "PIC Laboratory" incorpora de serie el PIC16F876 que viene grabado con el programa monitor PICMOS76. En la imagen tambin se puede apreciar el conector de expansin PIC-BUS 2, gracias al cual el usuario puede conectar los perifricos que le interese en cada aplicacin. Ingeniera de Microsistemas Programados S.L. vende estos dos modelos de PIC grabados con el software que luego se describe y para identificarlos les denomina PICMOS76 y PICMOS77, respectivamente.

Figura 1-4. Zcalos para los PIC y conector de expansin

1-4

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
El esquema de la figura 1-5 muestra el patillaje de ambos modelos de PIC as como la distribucin de seales que transporta el conector de expansin PIC-BUS 2 (J4).
U2 40 39 38 37 36 35 34 33 7 6 5 4 3 2 1 13 14 12 31 11 32 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd Vdd PICMOS'77 RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 26 25 24 23 18 17 16 15

U1 7 6 5 4 3 2 1 9 10 8 19 20 RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS'76 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11

RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 RE2/AN7/SS RE1/AN6/WR RE0/AN5/RD

30 29 28 27 22 21 20 19 10 9 8

J4 MCLR RA0 RA1 RA2 RA3 RA4 RA5 RE0 RE1 RE2 NC NC RC0 RC1 RC2 RC3 RD0 RD1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2

+5Vcc

+5Vcc

PIC-BUS 2

Figura 1-5. Conexiones de los PIC y del conector PIC-BUS 2 Las patillas de los microcontroladores PICMOS76 y PICMOS77 se corresponden exactamente con el patillaje de los PIC16F876 y 16F877 respectivamente. Estn debidamente documentadas en los manuales y Data Sheets de Microchip. Por su parte el conector PIC-BUS (J4) consiste en un conector macho para cable plano de 40 vas. Pone a disposicin del usuario de todas las seales del microcontrolador (excepto OSC1 y OSC2). De esta manera es posible desarrollar hardware a medida de la aplicacin y hacerlo funcionar desde el entrenador "PIC Laboratory" .

1-5

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

1.3.3 El oscilador La seccin del oscilador se muestra en la fotografa de la figura 1-6. Consta de un cristal de cuarzo y de dos condensadores.

Figura 1-6. El oscilador Su esquema elctrico se muestra en la figura 1-7. Consiste en un cristal de cuarzo de 20MHz y dos condensadores de 27 pF que se conectan a las entradas OSC1 y OSC2 del microcontrolador.
U1 7 6 5 4 3 2 1 9 10 Y1 20MHz 8 19 20 C1 27p C2 27p RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS'76 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11

Figura 1-7. Esquema elctrico del circuito oscilador En el diseo se ha elegido una velocidad de trabajo de 20MHz. El PIC viene programado por defecto con la versin HS de su oscilador. Trabajando a esta velocidad el ciclo de reloj es de 50nS. Teniendo en cuenta que una instruccin se ejecuta siempre en cuatro ciclos de reloj, el tiempo de ejecucin o ciclo de instruccin es de 200nS por instruccin. Todas las instrucciones se ejecutan en el mismo lapsus de tiempo excepto todas aquellas que impliquen algn tipo de salto o desplazamiento del PC. En este caso se emplean 2 ciclos de instruccin y tardan en ejecutarse 400nS. Esta alta velocidad permite un eficaz rendimiento en el trabajo del entrenador "PIC Laboratory". Igualmente el usuario podr desarrollar aplicaciones que requieran una elevada tasa en su ejecucin.

1-6

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
Aunque es relativamente fcil modificar la velocidad por parte del usuario, no se aconseja hacerlo ya que tambin se modificara la velocidad de comunicacin entre el canal serie de "PIC Laboratory" y el PC con su software de interface Real-PIC. 1.3.4 Las entradas digitales Bsicamente estn formadas por 6 interruptores deslizantes y dos pulsadores, tal y como se muestra en la figura 1-8.

Figura 1-8. Las entradas digitales Tal y como se puede apreciar en el esquema de la figura 1-9, los interruptores SW1-SW6 estn asociados respectivamente a las lneas RA0-RA5. Por su parte el pulsador SW7 puede emplearse para provocar la interrupcin externa INT asociada a la lnea RB0/INT del PIC. Finalmente el pulsador SW8 provoca, al accionarlo, un RESET general del sistema. En este caso el PIC inicia la ejecucin del programa monitor PICMOSXX con el que viene grabado de serie.
R42 +5Vcc R38 4K7 R37 4K7 R36 4K7 R35 4K7 R34 4K7 R33 4K7 RA5 RA4 RA3 RA2 RA1 RA0 SW6 SW5 SW4 SW3 SW2 SW1 R22 R21 R20 R19 R18 R17 220 RA5 220 RA4 220 RA3 220 RA2 220 RA1 220 RA0 +5Vcc 47K 470 7 6 5 4 3 2 1 9 10 8 19 20 U1 RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS'76 RA0 AN0 RA4 T0CKI JP4 RB0 INT SW7 RB0/INT R23 Lnea de E/S general 470 R0 100 +5Vcc RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11 R25 RESET SW8

JP5 Desde la entrada analgica

JP6 Desde el generador lgico

Figura 1-9. Conexin elctrica de las entradas digitales

1-7

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
Por su parte la lnea RA0 puede actuar como entrada analgica AN0. El usuario puede seleccionar, mediante el jumper JP5 si esta seal procede del interruptor SW1 (entrada digital) o bien del generador de tensin analgica (entrada analgica AN0). De la misma forma, la entrada RA4 puede actuar como entrada de pulsos para el TMR0 del PIC (T0CKI). El usuario puede seleccionar, mediante el jumper JP6 si esta seal procede del interruptor SW5 (entrada digital) o bien desde el generador lgico (entrada de pulsos T0CKI). La lnea RB0 puede actuar como entrada/salida digital o bien como entrada de interrupcin externa INT. En este caso la interrupcin es sensible al flanco descendente cada vez que se acciona el pulsador SW7. El jumper JP4 permite seleccionar una de las dos modalidades. Las resistencias pull-up y pull-down asociadas a los interruptores SW1-SW6 permiten que las seales RA0-RA5 procedan de otros perifricos externos sin que el estado lgico de dichos interruptores prevalezca sobre las seales generadas por esos perifricos. 1.3.5 El generado analgico Con objeto de poder experimentar con el convertidor AD que integran los PIC16F87X, el entrenador "PIC Laboratory" dispone de dos generadores de tensin variable que permiten el estudio, diseo y comprobacin de aplicaciones relacionadas con medidas y procesos de variables analgicas. Se pueden apreciar en la figura 1-10.

Figura 1-10. Los generadores de tensin analgica variable Tal y como se muestra en el esquema elctrico de la figura 1-11 se puede comprobar que es un circuito muy simple. La seal RA0/AN0 del PIC puede, al igual que otras seales, programarse como entrada digital (RA0) o entrada analgica (AN0). Adems el usuario puede y debe seleccionar el origen de esa seal mediante el jumper JP5. Cuando se coloca en la posicin RA0 la seal aplicada al PIC procede del interruptor SW1 como ya se explic anteriormente. Se supone que dicho PIC ha sido programado para que RA0 acte como entrada digital. Si el jumper se coloca en la posicin AN0 la seal que entra a la patilla 2 del PIC procede de uno de los dos generadores analgicos disponibles en "PIC Laboratory". Uno de los generadores analgicos est formado por el foto transistor BPW40 (Q1). Este mide la luz ambiente que incide sobre l y genera una tensin analgica proporcional (VA1). El otro generador es un simple potencimetro (P1) que proporciona la tensin VA2 en funcin del recorrido de su cursor. Mediante el jumper JP7 se selecciona entre VA1 y VA2 como seal de entrada al canal 0 del PIC (AN0).

1-8

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
RA0 JP5 Desde el interruptor SW1 RA0 AN0 RA4 JP7 U1 7 6 5 4 3 2 1 VA2 9 10 R1 100 8 19 20 RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS'76 1K P1 +5Vcc RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11

VA1 Q1

BPW40

R40 10K

Figura 1-11. Esquema elctrico de los generadores analgicos 1.3.6 El generador lgico Algunas de las funciones implementadas en los PIC requieren de una seal externa que pueda ser empleada como entrada para los distintos circuitos contadores, de captura y de comparacin. El entrenador "PIC Laboratory" dispone de un sencillo pero eficaz generador lgico que proporciona una seal de onda cuadrada asimtrica y con una frecuencia ajustable entre 1 y 150 Hz aprox. Mediante su empleo el usuario podr realizar numerosas experiencias relativas a contar pulsos, medir la anchura de los mismos, periodos, etc. Se puede observar en la figura 1-12.

Figura 1-12. El generador lgico La figura 1-13 muestra el esquema elctrico del generador lgico del entrenador "PIC Laboratory". Est construido en torno al popular Timer 555 trabajando como multivibrador inestable. Mediante el potencimetro P2 se ajusta la frecuencia de la seal de salida, presente en la patilla 3 del NE555 (U4), en un rango que va desde 1 hasta 150Hz aproximadamente. El diodo led D8 da una idea visual de la frecuencia de salida.

1-9

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
Dicha frecuencia se aplica a los jumpers JP6, JP8 y JP9 que el usuario manipular segn le convenga. Cerrando JP6 con la posicin T0CKI la seal de salida del generador se aplica a la entrada RA4/T0CKI. Esto permite desarrollar aplicaciones en las que el TMR0 del PIC trabaje como contador de eventos externos.
T1CKI JP8 JP9 CCP1 +5Vcc C4 100n JP6 Desde el interruptor SW5 D8 GEN.ON R41 10K 3 R12 330 R2 100 7 6 7 6 5 4 3 2 1 9 C3 10n 10 8 19 20 U1 RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS'76 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11

RA4

T0CKI

4 R Q DIS THR U4 NE555 CV 5 TR 2 C12 1000n

1M P2

Figura 1-13. Esquema elctrico del generador lgico Si se cierra el jumper JP8 la salida del generador va a parar a la entrada RC0/T1CKI lo que igualmente permite el desarrollo de aplicaciones en las que el TMR1 del PIC acte como contador de eventos externos o bien con base de tiempos externa para las temporizaciones. Mediante el jumper JP9 se aplica, si se cierra, seal a la patilla RC2/CCP1. De esta forma es posible emplear el mdulo CCP1 del PIC para realizar aplicaciones de captura y comparacin de pulsos externos, medir la anchura de estos, el periodo, etc. Por ltimo cabe indicar que, si los tres jumpers mencionados quedan abiertos, la salida del generador se inutiliza. Las respectivas patillas del PIC quedan libres para otra tipo de aplicaciones. 1.3.7 El teclado Tal y como se muestra en la fotografa de la figura 1-14, el entrenador "PIC Laboratory" va provisto de un teclado matricial de 16 teclas. Se trata del perifrico de entrada por excelencia que va a permitir introducir todo tipo de datos para su posterior procesamiento. El control del mismo va suponer tener que utilizar una serie de tcnicas y conceptos que se emplean en las ms diversas aplicaciones de tipo industrial y comercial. Manejar conceptos tales como barrido del teclado, tecla pulsada, interrupcin al pulsar, rebotes, etc., darn la posibilidad al usuario de acometer ambiciosos proyectos de carcter profesional.

1-10

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

Figura 1-14. Imagen del teclado de "PIC Laboratory" Un dato a tener en cuenta es que, a pesar de tener 16 teclas, tan slo son necesarias 8 lneas del microcontrolador para su total control. Ello es debido a su distribucin matricial. En el caso que nos ocupa el teclado est conectado a las 8 lneas de la puerta B (RB0-RB7) tal y como se muestra en el esquema elctrico de la figura 1-15.
U1 7 6 5 4 3 2 1 9 10 8 19 20 RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS'76 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 R27-R30 4x2K2 8 7 6 5 4 3 2 1 SW9 F3 F2 F1 F0 C3 C2 C1 C0

1 4 7 *
C0

2 5 8 0
C1

3 6 9 #
C2

A B C D
C3

F0 F1 F2 F3

SECME ECO 16250 06_2

Figura 1-15. Esquema de conexiones del teclado Est organizado en 4 filas (F0-F3) que se conectan a RB4-RB7 y otras 4 columnas (C0-C3) que se conectan a RB0-RB3. La interseccin fila-columna da lugar a una tecla en concreto. Es decir, si se pulsa por ejemplo la tecla 4, supone unir elctricamente la fila F1 con la columna C0, que es tanto como decir que las lneas RB0 y RB5 del PIC se han unido. La rutina software encargada de explorar el teclado tiene que determinar qu tecla se ha pulsado. Para ello, por ejemplo, configura las lneas RB0-RB3 (las columnas) como salidas y RB4-RB7 (las filas) como entradas. Secuencialmente va activando cada una de las columnas al tiempo que lee el estado de las filas. Cuando se detecta que una fila est activada es porque se pulso una tecla. Basta conocer qu columna se activ en ese momento para sacar la relacin fila-columna que define a cada tecla. Esta tarea conocida como barrido del teclado ha de repetirse de forma constante y peridica. De esta manera y, a la velocidad de trabajo del PIC, ser posible detectar una pulsacin en cualquier momento.

1-11

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
Haciendo uso de algunas de las prestaciones que ofrece un PIC, es posible desarrollar rutinas ms sofisticadas y eficaces. Efectivamente, programando los registros oportunos de un PIC podemos hacer que las entradas RB4-RB7 (las filas) se conecten a unas resistencias pull-up internas que hacen que esas lneas, en estado de reposo, estn a nivel 1. Por otra parte tambin podemos habilitar la interrupcin por cambio de estado en cualquiera de esas lneas de entrada. Al mismo tiempo, las salidas RB0-RB3 (las columnas) las ponemos a nivel 0. Esta situacin de reposo se mantiene en caso de no pulsarse ninguna tecla. El microcontrolador puede dedicarse a otras tareas o quedarse en standby reduciendo el consumo hasta que haya un suceso. Dicho suceso puede ser la pulsacin de cualquier tecla. Efectivamente, puesto que RB0-RB3 (columnas) estn a 0 y RB4-RB7 (filas) estn a nivel 1 gracias a las resistencias pull-up internas, cuando se pulse cualquier tecla se produce una interrupcin por cambio de estado en cualquiera de las lneas RB4-RB7 (filas). Esa interrupcin provoca el fin del standby (wake-up) y la inmediata atencin al programa de tratamiento que se encargar de averiguar qu tecla se puls. 1.3.8 Las salidas digitales Estn formadas por un conjunto de 8 diodos tipo led que sirven para representar el estado lgico de las lneas a las que estn conectados. Ver la figura 1-16.

Figura 1-16. Las salidas digitales En el entrenador "PIC Laboratory" esos leds estn conectados a las 8 lneas de la puerta B (RB0-RB7) que son lneas de propsito general. El esquema de la figura 1-17 muestra las conexiones elctricas.
U1 20 19 8 10 9 1 2 3 4 5 6 7 Vdd Vss Vss OSC2 OSC1 MCLR RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3 RA4/T0CKI RA5/AN4 PICMOS'76 Desde el pulsador SW7 JP1 RC0/TCKI RC1/TCKO RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX RC7/RX RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28

JP4 INT RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 D7 D6 D5 D4 D3 D2 D1 RB0

R4-R11 8x330

LED ON

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

Figura 1-17. Conexiones de las salidas digitales

1-12

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

Las lneas de salida de un PIC pueden activar directamente cargas de hasta 25mA. Sin necesidad de una circuitera adicional las lneas de la puerta B activan directamente a los leds asociados a travs de sendas resistencias de absorcin. Un nivel lgico 1 por cualquiera de esas lneas provoca el encendido del led correspondiente. Un nivel 0 lo apaga. Es una forma muy simple y econmica de reflejar el estado binario de las lneas de salida, donde cada led simula la carga que se desea controlar. Abriendo el jumper JP1 todos los ctodos de los leds quedan desconectados. De esta manera las lneas de la puerta B quedan libres y se evita un consumo extra, pudiendo ser empleadas por los perifricos que el usuario de "PIC Laboratory" desee conectar a travs del PI-BUS 2. Segn la posicin en que se cierre el jumper JP4 la lnea RB0/INT puede ser empleada como lnea de E/S de propsito general o bien como entrada de interrupcin externa INT activada desde el pulsador SW7. 1.3.9 Salida a display de 7 segmentos Como perifrico destacado, el entrenador "PIC Laboratory" incluye el clsico display de 7 segmentos como el que se muestra en la fotografa de la figura 1-18.

Figura 1-18. El display de 7 segmentos Se trata de un perifrico de salida que permite la visualizacin de valores numricos. Tal y como se muestra en el esquema de la figura 1-19, los segmentos del display estn tambin conectados a las 8 lneas de la puerta B (RB0-RB7). Se trata de un display de ctodo comn. Cada uno de los segmentos, que a efectos prcticos consisten en diodos led, necesita un nivel lgico 1 en la salida correspondiente, para su correcta iluminacin. El usuario tiene control sobre cada segmento individual y pude visualizar cualquier tipo de smbolo que el display sea capaz de representar. Tambin puede disear las clsicas rutinas de conversin BCD a 7 segmentos para poder hacer representaciones numricas. Tanto las salidas digitales como los segmentos del display estn conectados en paralelo a las mismas lneas de la puerta B y a las mismas resistencias de absorcin. Mediante el jumper JP2 se puede desconectar el display cuando no vaya a emplearse evitando as un consumo extra sobre las lneas RB0-RB7.

1-13

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
U1 20 19 8 10 9 1 2 3 4 5 6 7 Vdd Vss Vss OSC2 OSC1 MCLR RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3 RA4/T0CKI RA5/AN4 PICMOS'76 Desde el pulsador SW7 RC0/TCKI RC1/TCKO RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX RC7/RX RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28

JP4 INT RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RB0 U7 1 13 10 8 7 2 11 9 14 a b c d e f g dp cc SC43-11HWA JP2 DISPLAY ON

R4-R11 8x330

Figura 1-19. Conexin elctrica del display a 7 segmentos 1.3.10 La pantalla LCD Se trata de uno de los perifricos ms verstiles e interesantes que dispone el entrenador "PIC Laboratory". Se presenta en la figura 1-20 y es capaz de visualizar dos lneas de 16 caracteres alfanumricos cada una.

Figura 1-20. La pantalla LCD Este potente perifrico de salida va a permitir representar cualquier tipo de mensaje compuesto de letras, nmeros y smbolos produciendo adems diferentes efectos de visualizacin como desplazamientos a izquierda y derecha, parpadeos, scrolls, etc. La transferencia de informacin entre la pantalla LCD y el microcontrolador se realiza en paralelo en conjuntos de cuatro u ocho bits. En el entrenador "PIC Laboratory" las transferencias se realizan en 8 bits, es por ello que las 8 lneas de datos del mdulo LCD se conectan con las 8 lneas RB0-RB7 de la puerta B, tal y como se muestra en el esquema de conexiones de la figura 1-21.

1-14

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

U1 20 19 8 10 9 1 2 3 4 5 6 7 Vdd Vss Vss OSC2 OSC1 MCLR RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3 RA4/T0CKI RA5/AN4 PICMOS'76 RC0/TCKI RC1/TCKO RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX RC7/RX RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 7 8 9 10 11 12 13 14

R39 10K U6 D0 D1 D2 D3 D4 D5 D6 D7 VSS VCC VEE RS R/W E 1 2 3 4 RA1 5 RA2 6 1K +5Vcc R26

JP3

LCD ON

MODULO LCD 2 x 16

LCD-WM-C1602

Figura 1-21. Conexiones elctricas entre el mdulo LCD y el PIC A travs de la puerta B el PIC transfiere tanto los cdigos ASCII de los caracteres a visualizar como los cdigos de instruccin gracias a los cuales se establecen diferentes modos de visualizacin sobre la pantalla. El estado interno de sta tambin puede ser ledo a travs de la misma puerta del PIC. De este modo el microcontrolador puede conocer si la pantalla est o no ocupada, la posicin actual del cursor, el carcter que hay en dicha posicin, etc. Adems de la puerta B de datos, se emplean otras 3 seales de control. Mediante la seal RS conectada a RA1 el PIC indica si est enviando un cdigo ASCII de datos o un cdigo de instruccin. Con la seal R/W conectada a RA2 el PIC establece si va a escribir datos/instrucciones o bien si va a leer el estado interno de la pantalla. Finalmente mediante la seal E conectada a RA3 mediante el jumper JP3 el PIC habilita o no el funcionamiento general del mdulo. Cuando esta seal se pone a nivel 0, el mdulo LCD queda desconectado en estado de alta impedancia. En esta situacin todas las lneas pueden ser empleadas por otros perifricos. Si el usuario deja abierto el jumper JP3 la seal E de habilitacin queda permanentemente a nivel 0 gracias a la resistencia pull-down R39. En este caso la pantalla queda desconectada y en alta impedancia independientemente del nivel lgico presente en RA3. Por las patillas 1 y 2 del mdulo se aplica la tensin de alimentacin de +5Vcc que alimenta a toda la electrnica interna del mismo. Por la patilla 3 (VEE) se puede aplicar una tensin variable entre 0 y +5Vcc que permite ajustar el contraste de la pantalla. En el caso de "PIC Laboratory" se ha puesto a tierra a travs de la resistencia R26 de 1K con la que se consigue un buen contraste. Variando el valor de la resistencia se puede variar el mismo. En el ANEXO 1 del presente manual de usuario se proporcionan ms detalles tcnicos de la pantalla LCD as como una serie de rutinas genricas que permiten al usuario el desarrollo de sus propias aplicaciones. 1.3.11 El canal serie RS232 El entrenador "PIC Laboratory" incorpora los circuitos necesarios para adaptar niveles lgicos a niveles RS232, con lo que se dispone as de un canal serie. Es posible por tanto, que el usuario pueda disear aplicaciones relacionadas con la comunicacin serie y, conectar "PIC Laboratory", con un PC, un terminal, modem, impresora, etc. Se muestra en la figura 1-22.

1-15

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

Figura 1-22. El canal serie RS232 El mircocontrolador que incorpora el entrenador "PIC Laboratory" viene grabado de fbrica con el sistema operativo denominado PICMOSxx y que se explicar en el TEMA 2 del presente manual. Este sistema operativo emplea el canal serie para comunicarse con un PC dotado del software Real-PIC tambin incluido. Entre ambos se dispone de una potente herramienta con la que el usuario podr descargar sus aplicaciones sobre el PIC, ejecutarlas, visualizar/modificar registros de RAM, de EEPROM y mucho ms. En la figura 1-23 se muestra el esquema elctrico de conexiones entre el PIC y el canal serie. El circuito de adaptacin de niveles est basado en el popular MAX232 (U3). Este circuito de alimentacin nica y con muy pocos componentes externos es capaz de obtener niveles RS232 de 12V a partir de niveles lgicos TTL y viceversa. El conector J2 de comunicaciones consiste en un conector DB9 hembra estndar que se conecta directamente al puerto serie del PC mediante el correspondiente cable (incluido). Por su patilla 3 (TxD) se reciben los datos que transmite el PC. Estos se convierten a niveles TTL y se aplican al PIC por la patilla RC7/RX. El PIC transmite datos por la patilla RC6/TX que, convertidos a niveles RS232, llegan al PC por la patilla 2 (RxD) del conector J2. El programa Real-PIC del PC puede provocar un RESET al entrenador "PIC Laboratory". Efectivamente, esto ocurre cuando se activa la seal de la patilla 7 de J2 (RTS). Una vez convertida a nivel TTL, esa seal se aplica mediante D14 y R24 a la patilla MCLR del PIC reiniciando todo el sistema. Los diodos led D11 y D12 se iluminan mostrando actividad por el canal serie tanto durante la transmisin como durante la recepcin de datos.

1-16

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
+5Vcc R42 47K R25 SW8 RESET +5Vcc C5 100n D14 1N4148 CTS RC7 C7 100n 2 11 12 U3 V+ V6 14 13 7 8 4 5 15 R16 C6 100n RTS RxD TxD C8 100n D11 RxD Red R14 D12 TxD Green 330 330 R15 5 9 4 8 3 7 2 6 1 RS-232 J2

U1 7 6 5 4 3 2 MCLR 1 9 10 8 19 20

PICMOS'76 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11 RC6

R24 470

470

RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd

T1IN R1OUT T1OUT R1IN T2IN R2OUT T2OUT R2IN C1+ C1VCC MAX232 C9 100n C2+ C2GND

330

TxD 10 9 RxD 1 3 16

+5Vcc

Figura 1-23. Esquema de conexiones del canal serie RS232 1.3.12 El conector de interface smart card El entrenador "PIC Laboratory" est dotado de un conector smart card stndar de 8 pines que permite otra forma de expansin adems del conector PIC-BUS 2 ya estudiado. Este conector est situado debajo del teclado tal y como se muestra en la fotografa de la figura 1-24.

Figura 1-24. El conector Smart Card Se trata de un conector estndar que admite tarjetas chip de tamao normalizado. Efectivamente, se trata de otra forma de expansin del entrenador que abre numerosas posibilidades y aplicaciones. Tal y como se muestra en la figura 1-25 podremos conectar tarjetas de expansin de memoria donde poder almacenar datos y

1-17

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
programas, tarjetas de expansin de perifricos que permita trabajar con diferentes dispositivos, tarjetas chip o tarjetas monedero con las cuales desarrollar distintas aplicaciones, tarjetas de diseo propio que incorporen aquellos elementos especficos que deseemos gobernar, etc.

Figura 1-25. Expansin de "PIC Laboratory" mediante diferentes tipos de tarjetas La figura 1-26 muestra el esquema de conexiones elctricas entre el PIC y el conector smart card J3. Un simple anlisis de las seales que transporta nos permite apreciar que corresponden con las 6 lneas de menos peso de la puerta C (RC0-RC5). Estas lneas en principio son lneas de E/S de propsito general y a disposicin del usuario.
U1 7 6 5 4 3 2 1 9 10 8 19 20 PICMOS'76 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11 SW10 +5Vcc R32 2K2 R31 2K2 RC5 RC3 RC2 RC1 RC4 RC0 R13 D9 1 2 3 4 5 6 7 8 INTERFACE CARD CARD ON J3 +5Vcc

RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd

330

BUS BUSY

Figura 1-26. Conexiones elctricas del conector smart card Si entramos en detalle podemos apreciar que las lneas RC3, RC4 y RC5 corresponden con las seales SCK, SDI y SDO empleadas por el estndar del bus SPI, y/o tambin se corresponden con las seales SCL y SDA correspondientes al estndar del bus I2C. El control de ambos buses est implementado en el propio hardware de los microcontroladores PIC16F876 y 16F877 que admite el entrenador "PIC Laboratory". Si aadimos el echo de que la mayora de las tarjetas chip existentes as como gran cantidad de dispositivos, se gobiernan mediante el protocolo SPI o I2C, es fcil intuir las grandes posibilidades de expansin y de aplicacin del entrenador.

1-18

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory

La distribucin de las seales sobre el conector smart card J3 se ha hecho de acuerdo con la distribucin de los pines de las tarjetas ms empleadas. As, por la patilla 1 se introduce la tensin +5Vcc de alimentacin. Esta tensin se aplica a travs del interruptor SW10 que est situado fsicamente sobre el propio conector y cuyos contactos se cierran cada vez que se introduce una tarjeta. La patilla 5 corresponde con tierra o GND. La patilla 3 est conectada con RC3/SCK/SCL. Por esta patilla se aplica la seal de reloj necesaria en la mayor parte de tarjetas existentes. Esta seal de reloj la puede generar el PIC trabajando en el modo SPI o I2C. La seal presente en la patilla 7 est conectada con RC4/SDI/SDA. Corresponde con la entrada de datos (SDI) para tarjetas SPI o similares. Tambin puede ser una seal bi-direccional de entrada/salida de datos (SDA) empleada por los dispositivos con protocolo I2C. En la patilla 2 disponemos de la seal RC5/SD0. Corresponde con la salida de datos (SDO) de tarjetas controladas mediante protocolo SPI o similares. Finalmente las patillas 8, 6 y 4 del conector smart card transportan las seales RC0, RC1 y RC2 del PIC. En principio no tienen ninguna asignacin concreta por lo que el usuario las puede emplear o no segn su propio criterio. No obstante algunas tarjetas chip pueden necesitar seales auxiliares como RESET, habilitacin, bussy, etc. que pueden ser generadas fcilmente, con el software adecuado, empleando las mencionadas RC0, RC1 y RC2. 1.3.13 La tarjeta de memoria Memory Card Con objeto de almacenar sobre una memoria externa los programas de aplicacin del usuario, Ingeniera de Microsistemas Programados S.L. pone a su disposicin la tarjeta de memoria Memory Card que se presenta en la figura.

Figura 1-27. Las tarjetas Memory Card Se basan en la memoria EEPROM 24LC64 de 64Kbits de capacidad de almacenamiento. En esta memoria es posible almacenar los 4K de memoria de programa disponibles para el usuario en los microcontroladores PIC16F876 y 16F877 dotados del sistema operativo PICMOS7X y soportados por el entrenador "PIC Laboratory". La figura 1-28 muestra el esquema elctrico de la tarjeta. El conector J1 corresponde con el conector Smart Card del entrenador y contiene las seales RC0-RC6 del PIC as como las de alimantacin de +5Vcc. Algunas de estas seales se emplean en el bus I2C para el control de la memoria 24LC64 (U1).

1-19

PIC Laboratory
Tema 1: El Hardware de PIC Laboratory
+5Vcc C1

100n J1 J2 1 3 RC0 5 RC2 7 RC4 9 + + + + + + + + + + 2 4 6 8 10 1 2 3 4 Vcc RC5 RC3 RC2 GND RC1 RC4 RC0 1 2 3 4 5 6 7 8 SMART-CARD

U1 RC1 RC3 RC5 A0 VCC A1 TEST A2 SCL GND SDA 24LC64 8 7 6 5

INTERFACE

Figura 1-28. Esquema de la tarjeta de memoria Smart Card Sobre la propia tarjeta se puede incluir un conector macho de 2x5 vas (J2) con objeto de que todas las lneas disponibles en el Smart Card (RC0-RC6 y alimentacin de +5Vcc) queden a disposicin del usuario para sus propios usos.

1-20

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Tema 2: El monitor PICMOS7X y el software Real_PIC


2.1 INTRODUCCION Los microcontroladores PIC con que van dotados tanto el entrenador "PIC Laboratory" como el mdulo OEMPICMOS76, vienen grabados de serie con un programa monitor denominado PICMOS (Microsystems Operating System). Este programa monitor aprovecha las prestaciones de los potentes PIC16F876 y 16F877 de 28 y 40 patillas respectivamente. Estos chips los denominaremos comercialmente PICMOS76 y PICMOS77 por el sistema operativo que contienen. El programa monitor est diseado para trabajar conjuntamente con un software para PC denominado Real_PIC. Entre ambos se crea una plataforma que proporciona al usuario las clsicas herramientas que facilitan la edicin, ensamblado y grabacin de sus programas de aplicacin para este tipo de microcontroladores. El presente tema est destinado a explicar las posibilidades que ofrece el sistema operativo PICMOS7X as como el manejo del software Real_PIC para PC con objeto de que el usuario disponga de un cmodo entorno de trabajo en el desarrollo de sus programas. 2.2 EL PICMOS7X Sistema operativo o monitor integrado en los PIC 16F87X. Aunque son prcticamente iguales, existen dos versiones. La versin PICMOS76 se integra en los modelos PIC16F876 de 28 patillas, mientras que PICMOS77 se integra en los modelos PIC16F877 de 40. Este programa monitor est pensado para trabajar conjuntamente con un ordenador PC dotado del software Real_PIC. La comunicacin se realiza a travs de un canal serie estndar y entre ambos se crea una plataforma o entorno de trabajo que ofrece las siguientes prestaciones: Velocidad de comunicacin a 38400 baudios. Permite una rpida carga y descarga de programas desde el PC al PIC y viceversa. Sincronizacin automtica entre el monitor PICMOS7X y el software Real_PIC del PC. Edicin de programas fuente *.ASM. Acceso directo al ensamblador MPASMWIN de Microchip. Lectura/escritura (grabacin) de la memoria de programa del usuario del PIC. Lectura y edicin de la memoria RAM de datos del PIC a nivel de bytes o de bloques. Lectura y edicin de la memoria EEPROM de datos del PIC a nivel de bytes o de bloques. Ejecucin de los programas de aplicacin del usuario. Gestin de las tarjetas Memory Card para el almacenamiento y recuperacin de programas. 2.3 RECURSOS EMPLEADOS POR EL PICMOS7X

2-1

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
El programa monitor PICMOS7X hace uso de algunos de los recursos internos del PIC para su correcto funcionamiento. Es por ello que el usuario tiene restringidas ciertas caractersticas y prestaciones del PIC que lo contiene. 2.3.1 Restricciones en la memoria FLASH de programa La figura 2-1 muestra el mapa de la memoria de programa de los PIC16F87X dotados del monitor PICMOS7X.

Figura 2-1. La memoria de programa Los PIC de la familia 16F87X disponen de un total de 8K de memoria FLASH de programa 0x00000x1FFF. Las direcciones 0x0000-0x0003 (4) estn reservadas para el vector de arranque del sistema. Los ltimos 4 K comprendidos desde las direcciones 0x1000-0x1FFF contiene el programa monitor PICMOS7X. Se trata del ncleo del sistema operativo que realiza todas las funciones relacionadas con la depuracin y puesta a punto de las aplicaciones. Comunica con el PC y el software Real_PIC diseado al efecto. Este programa monitor est grabado de serie y en ningn caso debe ser modificado ni borrado por el usuario, de lo contrario todas las funciones operativas del PICMOS7X pueden quedar inutilizadas de forma permanente. El rea libre a disposicin del usuario est comprendida entre las direcciones 0x0004-0x0FFF. Este es un rea de 4K totalmente libre donde el usuario podr descargar sus programas de aplicacin. En esta rea est incluida la posicin 0x0004 que contiene el vector de interrupcin para aquellas aplicaciones que as lo requieran. Al tratarse de una memoria tipo FLASH el usuario puede utilizarla en numerosas ocasiones con distintos programas de aplicacin. Microchip cifra en unos 1000, los ciclos de borrado y grabacin que esta memoria es capaz de soportar.

2-2

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

2.3.2 Restricciones de la memoria RAM de datos El programa monitor PICMOS7X emplea tambin algunas posiciones de memoria RAM donde guarda sus propias variables de trabajo. La figura 2-2 muestra el mapa de memoria con los diferentes bancos.

Figura 2-2. El mapa de memoria RAM El sistema de memoria RAM de datos de los PIC de la serie 16F87X est organizado en 4 bancos de hasta 128 bytes cada uno. En todos los bancos nos encontramos registros de funciones especiales (SFR), algunos incluso repetidos. Los registros SFR permiten el gobierno de todos los recursos hardware internos del microcontrolador, conocer su estado, habilitar interrupciones, etc. No todas las posiciones de los rangos destinados a los registros SFR estn ocupadas por estos ltimos. Algunas posiciones estn, actualmente, sin implementar. Para ms informacin acerca de los SFR se recomienda acudir a los Data Sheet del fabricante donde se explica detalladamente la direccin que tienen asignada, su cometido, sus bits, etc. El sistema operativo o programa monitor PICMOS7X emplea un total de 32 bytes de memoria RAM para realizar sus propias operaciones. En el banco 0 se emplea el rea comprendida entre 0x070-0x07F (16bytes). En el resto de bancos se emplea las reas 0x0F0-0x0FF, 0x170-0x17F y 0x1F0-0x1FF. Lo que ocurre es que estas tres reas son copias duplicadas de los 16 bytes comprendidos en 0x070-0x07F del banco 0, por lo que realmente estamos hablando de los mismos 16 bytes. En el banco 3 los 16 bytes comprendidos en el rea 0x190-0x19F son tambin empleados por el PICMOS7X, en total 32 bytes. Se recomienda que las aplicaciones del usuario no hagan uso de las posiciones RAM usadas por el PICMOS7X. Se puede producir un bloqueo del sistema con la consiguiente posible prdida de datos. Finalmente las posiciones RAM destinadas a las aplicaciones del usuario permiten almacenar un total de 320 bytes. Efectivamente, las reas comprendidas entre 0x020-0x06F, 0x0A0-0x0EF, 0x120-0x16F y la 0x1A00x1EF, disponen de un total de 80 bytes cada una distribuidos en los bancos 0, 1, 2 y 3 respectivamente. 2.3.3 Restricciones de la memoria EEPROM de datos La figura 2-3 muestra el mapa de memoria EEPROM de datos. Se trata de una memoria que permite guardar informacin no voltil pero si modificable por el usuario.

2-3

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Figura 2-3 Mapa de la memoria EEPROM de datos La capacidad total de almacenamiento de esta memoria es de 256 bytes. La mayor parte est libre, a disposicin del usuario. Se trata del rea 0x00-0xF7. El usuario puede acceder a ella mediante la ejecucin de sus propios programas y aplicaciones para leer/escribir datos constantes. Los 8 ltimos bytes comprendidos entre 0xF8 y 0xFF estn reservados para el programa monitor PICMOS7X. Sobre ellos el sistema registra una firma o cheksum del programa de aplicacin de usuario actualmente grabado en la memoria de programa. Esta firma tambin se copia en la tarjeta Memory Card cada vez que se hace un volcado del programa actual sobre ella. Cuando se conecta el entrenador "PIC Laboratory" con una tarjeta de memoria insertada, el programa monitor PICMOS7X comprueba si la firma que contiene la tarjeta es igual a la contenida en estos bytes de la EEPROM. En caso afirmativo la tarjeta de memoria no es leda y el programa monitor ejecuta el programa actual contenido en la memoria de programa del usuario. Ambos contenidos son iguales. En caso contrario se procede a realizar una lectura de la tarjeta que se supone contiene el nuevo programa actual, se graba sobre el PIC y se ejecuta. 2.3.4 Restricciones de perifricos De todos los recursos y perifricos que disponen los PIC16F87X, el programa monitor slo hace uso de uno de ellos, el USART. Efectivamente, gracias al USART se realiza la comunicacin entre dicho programa monitor PICMOS7X y el software Real_PIC del PC. Esto implica que tanto las lneas RC6/Tx y RC7/Rx as como los registros especiales (SFR) RCSTA,TXSTA, TXREG, RXREG y SPBRG del PIC, estn siendo utilizados. A pesar de todo, los programas de aplicacin del usuario pueden hacer uso de estos recursos sabiendo de ante mano que, la comunicacin con Real_PIC, se perder pero que podr ser re establecida cuando se inicia el sistema. Hay un detalle que se debe tener en cuenta. El software Real_PIC emplea la seal RTS del canal serie de comunicaciones para provocar un RESET en el entrenador "PIC Laboratory" y establecer la comunicacin entre dicho software y el programa monitor PICMOS7X. Sin embargo el usuario puede desarrollar sus propias aplicaciones con otros programas de comunicacin en las que la seal RTS se gestione de forma diferente. Esto puede provocar que el entrenador sufra seales de RESET no deseadas. Para evitar estas posibles situaciones se recomienda el empleo de otro cable de comunicaciones muy fcil de fabricar. Se necesita un cable con 3 conductores, 1 conector Cannon de 9 vas macho (DB9M) y otro conector hembra (DB9H). Las conexiones entre ambos conectores se realiza uniendo la 2 con la 2 (RxD), la 3 con la 3 (TxD)y la 5 con la 5 (GND). 2.4 SECUENCIA DE INICIO

2-4

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
A continuacin se explica la secuencia de inicio que se produce cada vez que el entrenador "PIC Laboratory" es conectado a la alimentacin o inicializado mediante RESET. La figura 2-4 presenta el esquema de trabajo de dicha secuencia.

Figura 2-4. La secuencia de inicio El proceso se inicia cada vez que se conecta la tensin de alimentacin, se activa la seal de RESET o se ejecuta el software Real_PIC desde el PC. El programa monitor trata de establecer comunicacin con este ltimo. Si dicha comunicacin es satisfactoria, el entrenador "PIC Laboratory" se sincroniza y queda bajo el control del programa monitor. El usuario a travs del PC puede editar sus programas, ensamblarlos, grabarlos sobre el PIC, visualizar/modificar registros internos, etc. El sincronismo con el entrenador se puede hacer en cualquier momento desde el software Real_PIC. Si el programa monitor no se sincroniza (p.e. Real_PIC no se ha ejecutado, PC desconectado, fallo de comunicaciones, etc.), trata de averiguar si en el zcalo Smart Card hay insertada una tarjeta de memoria Memory Card de Ingeniera de Microsistemas Programados S.L.. En caso negativo se procede a ejecutar el programa actual que contenga la memoria del usuario del PIC. Si la Memory Card estuviera insertada se procede a determinar si su contenido coincide con el contenido actual de la memoria de programa del PIC. Para ello se hace un anlisis de la firma o checksum que se coment anteriormente. Si ambos contenidos coinciden evitamos el ciclo de lectura de la tarjeta y el sistema ejecuta directamente el programa que contenga el PIC. En caso contrario se procede a la lectura de la Memory Card y escritura de su contenido sobre la memoria de programa del PIC. Este ciclo dura varios segundos, transcurridos los cuales, se procede a ejecutar el nuevo programa recin grabado.

2-5

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
2.5 EL SOFTWARE Real_PIC Este es el software de comunicaciones entre el PC y el programa monitor PICMOS7X del entrenador. Con l es posible realizar tareas tales como visualizar/modificar registros internos del PIC, editar, ensamblar y grabar programas, ejecutarlos, leer y escribir sobre tarjetas de memoria externa, etc. Para su correcto funcionamiento es necesario que el entrenador "PIC Laboratory" est debidamente alimentado y conectado al canal serie del PC mediante el correspondiente cable de comunicaciones (incluido con el entrenador). Al ejecutar este programa, se trata de establecer la comunicacin con el entrenador a una velocidad de 38400 baudios. Si dicha comunicacin es correcta, aparece un mensaje como el mostrado en la figura 2-5. Indica que el entrenador est bajo el control del software Real_PIC y de su propio programa monitor. A partir de este momento se puede iniciar la sesin de trabajo.

Figura 2-5. Comunicacin correcta Si la comunicacin con el entrenador no es posible aparecer el mensaje de la figura 2-6. Las causas ms probables son: Fallo de alimentacin en el entrenador Fallo en la conexin del cable de comunicaciones Error en la configuracin del canal serie

Figura 2-6. Error de comunicacin Existe otro motivo que genera fallo de comunicacin con la placa y que se producir con cierta frecuencia. Efectivamente, cuando el PIC del entrenador est ejecutando el programa de aplicacin del usuario, no puede estar ejecutando el programa monitor. Esto conlleva que no se atienda a la comunicacin serie con el PC y se pierda contacto con el software Real_PIC. Mas adelante estudiaremos un rpido procedimiento que permite establecer de nuevo la comunicacin. En cualquiera de los dos casos expuestos, al pulsar el botn de aceptar, nos aparece la pantalla de trabajo tal y como se muestra en la figura 2-7.

2-6

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Figura 2-7. Pantalla general de trabajo 2.5.1 El men principal El men principal consta de 5 mens cada uno de las cuales tienen a su vez diferentes opciones que van apareciendo en ventanas desplegables. Algunas de esas opciones se puede ejecutar seleccionndolas mediante el cursor, mediante una combinacin de teclas (Hot Keys) o bien haciendo clic sobre el icono que las representa. 2.5.1.1 Archivo Presenta un men desplegable con una serie de opciones relacionadas con la gestin de ficheros: Nuevo Inicia una nueva sesin de trabajo o proyecto y abre una pantalla como la que se muestra en la figura 2-8, que representa el entorno de trabajo del usuario. En dicho entorno se puede apreciar una serie de botones con iconos que representan a algunas de las opciones ms empleadas de los distintos mens. Cabe mencionar al botn Sincronizar PC-Placa. Permite llamar la atencin del entrenador "PIC Laboratory" cuando el PIC est ejecutando un programa de usuario, estableciendo as la comunicacin y sincronismo. Se produce el mismo efecto pulsando la tecla F2. Tambin aparecen 4 pestaas que permiten seleccionar las cuatro reas de trabajo en un PIC: EDITOR (rea de edicin del programa fuente); Mem.Programa (rea de la memoria de programa del PIC); Mem EEPROM (rea de la memoria de datos EEPROM) y Mem RAM (rea de la memoria de datos RAM). Estas se explicarn posteriormente.

2-7

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Figura 2-8. El entorno de trabajo Abrir ASM Mediante una caja de dilogos similar a la mostrada en la figura 2-9, se abre un fichero con extensin *.ASM y que corresponde con un determinado programa fuente. Dicho programa fuente se deposita y visualiza sobre el rea del EDITOR.

Figura 2-9. Abriendo un programa fuente Abrir HEX Mediante la correspondiente caja de dilogos similar a la anterior se abre un fichero con extensin *.HEX y que corresponde con un determinado programa ejecutable previamente ensamblado. Dicho programa se deposita sobre y visualiza sobre el rea Mem Programa Cierra el proyecto o aplicacin en curso, salvando y cerrando los ficheros que estuvieran abiertos. Salva el fichero que en ese momento est abierto, ya sea un programa fuente *.ASM o un ejecutable *.HEX. Esta accin tambin se puede realizar pulsando Ctrl+G. (Ctrl+S) Finaliza la ejecucin del software Real_PIC.

Cerrar Guardar

Salir

2-8

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
2.5.1.2 Edicin Presenta seis opciones relacionadas con la edicin de un programa fuente. Estas opciones slo estn activadas si se est trabajando sobre el rea EDITOR. Copiar Cortar Pegar (Ctrl+C) Copia en un buffer interno el bloque del programa fuente que est seleccionado. (Ctrl+X) Borra de la pantalla y copia en un buffer interno el bloque de programa fuente que est seleccionado. (Ctrl+V) Pega el bloque de programa fuente almacenado en el buffer interno sobre la posicin actual del cursor.

Seleccionar Todo Selecciona todo el texto o programa fuente. Buscar Reemplazar 2.5.1.3 Herramientas Presenta un conjunto de ocho opciones que, a modo de herramientas, permiten realizar una serie de operaciones sobre el entrenador y el entorno de trabajo. Sincronizar (F2) Inicia el proceso de sincronismo entre el software Real_PIC y el programa monitor del entrenador. Este proceso habr que hacerlo habitualmente. Hay que recordar que cuando el PIC est ejecutando un programa de aplicacin del usuario, la comunicacin con el PC queda rota. Este sincronismo permite recuperar esa comunicacin y devolver el control al programa monitor. Realiza la lectura de uno de los tres tipos de memoria existentes dentro del PIC: la memoria de programa, la memoria EEPROM de datos y la memoria RAM de datos. Segn el tipo de memoria seleccionada se abre el rea correspondiente y se visualiza el contenido actual de la misma. Esta opcin slo est activada si seleccionamos, mediante las correspondientes pestaas, el rea de memoria RAM o el de EEPROM. Permite escribir un rango de direcciones con un determinado valor, sobre cualquiera de estos dos tipos de memoria. Como se muestra en la figura 2-10, se abre una caja de dilogo en la que se indica direccin inicial, direccin final y valor a escribir. (Ctrl+B) Busca dentro del programa fuente una determinada cadena de caracteres. (Ctrl+R) Busca dentro del programa fuente una determinada cadena de caracteres y la reemplaza por otra.

Leer Memoria

Escribir rango

2-9

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Figura 2-10. Escribiendo sobre un rango de memoria Ensamblar (F8) Esta opcin se activa cuando haya un programa fuente sobre el rea del EDITOR. Llama al ensamblador MPASMWIN y realiza el proceso de ensamblado. El programa fuente se convierte as en un programa ejecutable vlido para ser grabado sobre el PIC y ejecutado. (F3) Comprueba que la tarjeta de memoria Memory Card de Ingeniera de Microsistemas Programados S.L. est debidamente insertada en el zcalo del entrenador.

Test_Tarj

Copiar PIC->Tarj (F4) Copia el contenido ntegro de la memoria de programa del usuario sobre la tarjeta de memoria Memory Card de Ingeniera de Microsistemas Programados S.L. De esta forma es posible salvar la aplicacin sobre la tarjeta. Leer tarj->PIC (F5) Lee el contenido ntegro de la tarjeta Memory Card de Ingeniera de Microsistemas Programados S.L. y lo graba sobre la memoria de programa del usuario. de esta forma se recupera la aplicacin salvada sobre la tarjeta. Permite seleccionar el puerto de comunicaciones del PC entre COM1 (Ctrl+1) y COM2 (Ctrl+2). Tambin permite establecer la ruta (Ctrl+P) donde se encuentra el programa ensamblador MPASMWIN. Dicho programa es el que se ejecuta cada vez que se active la opcin de ensamblar.

Opciones

2.5.1.4 Ejecucin Presenta dos opciones para ejecutar el programa de aplicacin del usuario que se supone grabado en la memoria de programa del PIC. Ejecucin (F9) Ejecuta la aplicacin del usuario desde la direccin 0x0005. Como ya se ha explicado anteriormente esta es la primera direccin libre que tiene el usuario para almacenar sus programas.

Ejecucin Desde (Ctrl+F9) Ejecuta la aplicacin del usuario desde la direccin que se indique. Se recuerda que el rea de memoria de programa disponible para las aplicaciones del usuario est comprendida entre las direcciones 0x0004 y la 0x0FFF. Aparece una caja de dilogo similar al mostrado en la figura 2-11

2-10

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Figura 2-11. Ejecucin desde una determinada direccin 2.5.1.5 Ayuda Consta de dos sencillas opciones Manual Acerca 2.5.2 El rea de EDITOR Se activa al accionar la pestaa EDITOR y/o la opcin/Botn Nuevo. Se muestra en la figura 2-12. (F1) Proporciona una pequea explicacin sobre el manejo del software Real_PIC. (F12) Informa de la versin del software Real_PIC

Figura 2-12. El rea de edicin Sobre esta rea se edita el programa fuente que, bien puede teclearse directamente, o bien cargarse desde un fichero con extensin *.ASM. Dispone de todas las funciones bsicas que permiten una cmoda edicin tales como copiar, pegar, mover, buscar, reemplazar, etc. El programa fuente se puede guardar en formato ASCII para ser nuevamente abiertos por este editor o por cualquier otro. Desde ste rea tambin se realiza el proceso de ensamblado pulsado el botn ENSAMBLAR. Como consecuencia de esto, si no hay errores, se obtiene un programa ejecutable *.HEX en formato INTELHEX. La ruta donde se encuentra el programa ensamblador MPASMWIN ha debido ser previamente establecida mediante la opcin correspondiente.

2-11

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
2.5.3 El rea Mem Programa Corresponde con el rea donde se representa la memoria de programa del PIC. Se activa mediante la pestaa correspondiente y se muestra en la figura 2-13.

Figura 2-13. El rea de programa El contenido de esta rea se puede salvar/recuperar desde ficheros *.HEX, siempre en formato INTELHEX. Este formato es el que generan la mayor parte de ensambladores y compiladores existentes. Mediante el botn LEER PROG se procede a leer el contenido actual de la memoria de programa del PIC. Se lee siempre el rea reservada al usuario, es decir, el comprendido entre las direcciones 0x0004 y 0x0FFF. El botn ESCR PROG transfiere el contenido de esta rea a la memoria de programa del PIC (0x00040xFFF). Realmente es el proceso de grabacin. Los pasos habituales son muy sencillos y se pueden resumir en tres puntos: 1.- Se supone un programa fuente ensamblado y libre de errores 2.- Se activa el rea de Mem Programa y se abre el fichero *.HEX correspondiente. 3.- Se pulsa el botn ESCR PROG. El PIC ha sido grabado Microchip estima en unas 1000 las veces que la memoria de programa puede ser escrita o modificada. La visualizacin de esta rea se realiza de dos formas diferentes que se seleccionan mediante las correspondientes pestaas: NEMONICO o HEXADECIMAL. La representacin en nemnico es la ms habitual y la que aparece por defecto (figura 2-13). En sendas columnas a la izquierda aparece un nmero de lnea y la direccin hex. donde se encuentra la instruccin. Seguidamente aparece el cdigo de operacin, a continuacin el nemnico y, finalmente, los operandos. En la figura 2-14 se muestra la memoria de programa representada en hexadecimal.

2-12

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC

Figura 2-14. El rea de programa representada en hexadecimal Cuando la memoria de programa de un PIC no ha sido utilizada, su contenido es 0x3FFF que se corresponde con la instruccin ADDLW 0xFF. Es por ello que en el rea de programa se visualiza este valor en aquellas posiciones que no hayan sido programadas. Las posiciones del rea de programa no puede ser modificadas de forma individual. Slo se modifican mediante la apertura de un fichero *.HEX o mediante la lectura de la memoria de programa del PIC. 2.5.4 El rea de la EEPROM de datos Se visualiza al accionar la pestaa Mem EEPROM. Su aspecto es el mostrado en la figura 2-15.

Figura 2-15. El rea de memoria EEPROM de datos

2-13

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
Por defecto todas las posiciones se visualizan con el valor 0xFF que es el que se supone en caso de que la memoria est borrada. El botn LEER EEPROM realiza la lectura del contenido actual de toda la memoria EEPROM de datos del PIC y lo visualiza sobre esta rea. La lectura de una posicin individual se realiza situando el cursor en la celda deseada y pulsando el botn derecho del ratn. Podemos modificar el contenido de la EEPROM. Para ello situamos el cursor en la celda o posicin deseada y tecleamos un byte en hexademial. Automticamente se selecciona la siguiente celda para introducir el siguiente valor. Tambin podemos llenar un rango de posiciones con un determinado valor. En el men Herramientas se selecciona la opcin Escribir Rango y se completa la caja de dilogo con la direccin inicial, la final y el dato a escribir. Se recuerda que las posiciones 0xF8-0xFF estn reservadas por el programa monitor PICMOS7X. No es aconsejable modificar el contenido de las mismas. 2.5.5 El rea RAM de datos Se activa mediante la pestaa Mem RAM y se presenta en la figura 2-16.

Figura 2-16. El rea de memoria RAM de datos Por defecto todas las posiciones se muestran borradas con el valor 0x00. El botn LEER RAM realiza la lectura de la memoria RAM y la actualiza sobre esta rea. A la derecha se representan los registros SFR que tambin coinciden con ciertas posiciones de las representadas a la izquierda. Por ejemplo, el registro STATUS coincide con la posicin 0x03 por lo que ambas tienen el mismo valor. Se puede leer una posicin individual situando el cursor sobre la celda deseada y pulsando el botn derecho del ratn. Dicha celda se modificar inmediatamente con el valor actual. Es posible modificar el contenido de cualquier posicin. Esta se selecciona y se introduce el nuevo valor. Inmediata y automticamente se selecciona la siguiente para su modificacin. Tambin es posible la modificacin de un rango de direcciones RAM escribiendo sobre ellas un determinado valor. En el men Herramientas se selecciona la opcin Escribir Rango. En la caja de dilogo que aparece se indica la direccin inicial, la final y el valor a escribir. La posibilidad de poder acceder y modificar cualquier posicin RAM, incluidos los SFR, es muy interesante. Permite hacer depuracin hardware en tiempo real a nivel de registros. Efectivamente se puede

2-14

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
acceder a las puertas de E/S para leer y/o modificar sus valores con el efecto inmediato sobre los perifricos a ellas conectados. No se recomienda acceder a las posiciones RAM empleadas por el propio programa monitor PICMOS7X. Ello puede originar una falta de sincronismo o bloqueo del sistema. 2.5.6 Operaciones con la tarjeta de memoria Memory Card Desde los tres botones que hay en el entorno de trabajo, mostrados en la figura 2-17, se realizan las operaciones relativas al manejo de la tarjeta de memoria Memory Card de Ingeniera de Microsistemas Programados S.L.

Figura 2-17. Botones para la gestin de la tarjeta de memoria En primer lugar hay que decir que tanto el programa monitor PICMOS7X como el software Real_PIC nicamente gestionan la tarjeta de memoria Memory Card desarrollada y comercializada por Ingeniera de Microsistemas Programados S.L. El hardware del entrenador "PIC Laboratory" admite la insercin de diferentes tipos de tarjetas que hay en el mercado, pero ser el propio usuario quien desarrolle el software oportuno para su control. La tarjeta est basada en el conocido chip 24LC64 que, con una capacidad de 64 Kbits, permite almacenar un programa de 4K words. Es justo la memoria de programa que el usuario tiene a su disposicin. A esta tarjeta se la puede considerar como una memoria externa auxiliar para salvar y recuperar distintos programas de aplicacin. El botn de la izquierda verifica si la tarjeta est o no insertada en el zcalo Smart Card, visualizando el mensaje oportuno en uno o en otro sentido. Pulsando la tecla F3 se obtiene el mismo resultado. El botn central y/o la tecla F4 permite transferir la memoria de programa del usuario sobre la tarjeta y de esta forma salvar la aplicacin para posteriores usos. Esta operacin puede tardar unos segundos en realizarse. Finalmente, el botn de la derecha y/o la tecla F5 transfiere el contenido de la tarjeta sobre la memoria de programa del usuario. Se recupera as la aplicacin salvada anteriormente. Esta operacin puede tardar unos segundos en realizarse. Se recomienda que los contactos de la tarjeta estn perfectamente limpios, de lo contrario se pueden producir errores en la transferencia de informacin. 2.5.7 Ejecucin Las opciones de ejecucin son dos y se pueden elegir mediante la opcin Ejecucin del Men principal o bien mediante los dos botones mostrados en la figura 2-18

Figura 2-18. Los botones de ejecucin

2-15

PIC Laboratory
Tema 2: El monitor PICMOS7X y el software Real_PIC
Con el botn de la izquierda se comienza la ejecucin desde la posicin 0x0005 que se considera la direccin inicial de la memoria de programa del usuario. Los programa empezarn normalmente mediante la directiva: org 0x0005

De todas formas un programa puede empezar en cualquier direccin siempre que est comprendida entra 0x0004 y 0x0FF. Este es el rea de programa del usuario. Esto se consigue pulsando el botn de la derecha. Aparece una ventana en la que se pide indicar la direccin de inicio.

2-16

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones

Tema 3: Mdulos OEM y aplicaciones


3.1 INTRODUCCION Qu significa la abreviatura OEM?. Procede del ingls Original Equipment Manufacturer, es decir, hace referencia a fabricantes de equipos o productos finales. Los mdulos OEM consisten en pequeas tarjetas o circuitos electrnicos de coste medio/bajo que realizan una determinada tarea concreta y que se integran y forman parte del equipo final a fabricar. En la imagen de la figura 3-1 se muestra el mdulo OEMPICMOS76 diseado por Ingeniera de Microsistemas Programados S.L.

Figura 3-1. El mdulo OEM de Ingeniera de Microsistemas Programados S.L. Contiene la electrnica de control basada en un microcontrolador PIC16F876 dotado del programa monitor PICMOS76, as como los circuitos de interface necesarios. El mdulo se inserta en el producto o aplicacin final donde, a travs de las patillas apropiadas, se conectan los perifricos a controlar. El programa desarrollado por el usuario y alojado en el propio microcontrolador determinar el funcionamiento general del sistema. 3.2 EL MODULO OEMPICMOS76 Se trata de una tarjeta de pequea dimensiones (75mm x 45mm) y bajo coste con una hilera de 26 pines con paso 2.54 y en formato SIP que permite insertarla fcilmente en la aplicacin o producto final. Es la versin econmica del entrenador "PIC Laboratory". El mencionado entrenador cumple una misin de carcter didctico y se emplea en las fases de desarrollo de una aplicacin. Para ello contamos con el mismo programa monitor PICMOS76 y los perifricos que el propio entrenador aporta, lo que nos permite evaluar el funcionamiento en tiempo real de un programa. Sin embargo una aplicacin final requiere gobernar sus propios perifricos a medida de la propia aplicacin. En este caso podemos emplear el mdulo OEMPICMOS76 que simplemente contiene la electrnica esencial que necesita el microcontrolador, siendo labor del usuario desarrollar el software adecuado y conectar los perifricos segn las necesidades. La fotografa de la figura 3-2 muestra las partes ms relevantes de que consta el mdulo. El programa que controla la aplicacin se graba sobre el microcontrolador PIC16F876. Este viene grabado de serie con el programa monitor PICMOS76 desarrollado por Ingeniera de Microsistemas Programados S.L.

3-1

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones
Gracias a este programa monitor junto con el software Real_PIC para ordenadores PC (incluido), el usuario podr, entre otras cosas, editar sus programas, ensamblarlos, grabarlos sobre el PIC, as como realizar tareas de depuracin a nivel de registros.

Figura 3-2. El mdulo OEMPICMOS76 El microcontrolador trabaja a una velocidad de 20MHz gracias al oscilador formado por el cristal de cuarzo incluido en el propio mdulo. Esto supone que las instrucciones del programa de aplicacin se ejecutan a razn de 200nS/instruccin. El pulsador incluido en el mdulo permite, en caso de bloqueo, resetar o iniciar el sistema de forma manual. El mdulo OEMPICMOS76 est dotado del circuito de adaptacin necesario para un interface RS-232 que, a travs de un conector estndar tipo DB-9 permite la conexin con el canal serie de un PC. De est forma es posible la comunicacin entre el mdulo y el software Real-PIC del PC con objeto de grabar los programas de aplicacin, en el microcontrolador. La velocidad de comunicacin se realiza a 38400 baudios. A travs de una hilera de 26 pines se realiza la alimentacin del mdulo as como la conexin con los perifricos a gobernar. Tal y como se muestra en la fotografa de la figura 3-3, el mdulo de la izquierda tiene la hilera de pines en paralelo a la propia placa. Esto permite la insercin vertical de dicho mdulo sobre la aplicacin o producto final, ocupando menos superficie pero ms altura. Es as como se suministra de serie. Sin embargo en el mdulo de la derecha la hilera de pines se coloca de forma perpendicular a la placa, lo que permite la insercin de la misma de forma horizontal. Ocupa ms superficie pero menos altura. Se suministra bajo pedido.

Figura 3-3. Disposicin de la hilera de pines

3-2

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones
La patilla n 1 es la primera empezando por la izquierda y la distribucin de seales es la que se muestra en la siguiente tabla: Pin N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 16 19 20 21 22 23 24 25 26 NOMBRE GND VCC GND RST RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREFRA4/T0CKI RA5/AN4 RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP2 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT DESCRIPCION Tierra de alimentacin Alimentacin positiva de +5Vcc Tierra de alimentacin Seal de inicio o RESET. Se activa a nivel bajo E/S digital o entrada analgica E/S digital o entrada analgica E/S digital o entrada analgica o entrada negativa de tensin de referencia E/S digital o entrada analgica o entrada positiva de tensin de referencia E/S digital o entrada de reloj externo para el TMR0 E/S digital o entrada analgica E/S digital o entrada de interrupcin externa E/S digital E/S digital E/S digital E/S digital o entrada de interrupcin por cambio de estado E/S digital o entrada de interrupcin por cambio de estado E/S digital o entrada de interrupcin por cambio de estado E/S digital o entrada de interrupcin por cambio de estado E/S digital o salida de oscilador del TMR1 o entrada de reloj externo para el TMR1 E/S digital o entrada de oscilador del TMR1 o E/S del mdulo CCP2 E/S digital o E/S del mdulo CCP1 E/S digital o E/S de reloj para los modos SPI e I2C E/S digital o entrada de datos SPI o E/S de datos I2C E/S digital o salida de datos SPI E/S digital o transmisin asncrona o reloj sncrono del USART E/S digital o recepcin asncrona o E/S de datos sncrono del USART

3.2.1 Esquema elctrico La figura 3-4 muestra el esquema elctrico del mdulo OEMPICMOS76. Se emplea el microcontrolador PIC16F876 dotado del programa monitor PICMOS76. Las 22 lneas de E/S que dispone estn organizadas en 3 grupos o puertas: Puerta A (RA0-RA5), puerta B (RB0-RB7) y puerta C (RC0-RC7). Cada una de esas lneas puede tener asignadas una o mas utilidades y todas ellas son accesibles a travs de la hilera de pines del conector de aplicacin J1, tal y como se expuso en la tabla anterior. La base de tiempos se obtiene a partir del oscilador formado por el cristal Y1 y los condensadores C1 y C2. La velocidad de trabajo es de 20MHz y el tiempo de ejecucin es por tanto de 200nS/instruccin. Esta velocidad se puede modificar cambiando el valor de Y1, C1 y C2 segn especificaciones de Microchip. Ahora bien el programa monitor PICMOS76 controla el USART para la comunicacin serie con el PC en base a los 20MHz para obtener una velocidad de transferencia de 38400 baudios. Si se vara la velocidad de trabajo no ser posible establecer la comunicacin entre dicho programa monitor residente en el PIC y el software de desarrollo Real_PIC del PC. Las lneas RC6 y RC7 del PIC se corresponden con las seales de transmisin y recepcin del USART respectivamente. Se emplean para la comunicacin serie. Mediante el circuito de adaptacin MAX232 (U2) estas seales adquieren los niveles lgicos propios de la norma RS-232 y van a parar al conector estndar DB-9 (J2). Mediante el tpico cable de comunicaciones DB-9 macho-hembra (no incluido) podemos conectar el mdulo OEMPICMOS76 con el canal serie de un PC. Los diodos led D2 y D3 pilotan y reflejan si hay o no transmisin/recepcin de datos.

3-3

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones
A travs de la seal RTS (pata 7 de J2) el software Real_PIC del PC genera la seal CTS que va a parar a MCLR del PIC. De esta forma el PC puede solicitar la atencin del mdulo cuando sea conveniente, estableciendo la comunicacin entre ambos.
+5Vcc

R6 47K R4 SW1 RESET

U1 7 6 5 4 3 2 1 9 10 Y1 20MHz C1 27p C2 27p 8 19 20 RA5/AN4 RA4/T0CKI RA3/AN3 RA2/AN2 RA1/AN1 RA0/AN0 MCLR OSC1 OSC2 Vss Vss Vdd PICMOS76 +5Vcc C3 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX RC6/TX RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RC1/TCKO RC0/TCKI 28 27 26 25 24 23 22 21 18 17 16 15 14 13 12 11 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 RC6 RC7

R5 470

470

+5Vcc

C5 100n U2 D1 1N4148 CTS TxD RxD 2 11 12 10 9 1 3 16 V+ V6 14 13 7 8 4 5 15

C6 100n R3 330 RTS RxD TxD C8 100n RxD TxD R1 R2 330 D3

J2 5 9 4 8 3 7 2 6 1 RS-232

T1IN R1OUT T1OUT R1IN T2IN R2OUT T2OUT R2IN C1+ C1VCC MAX232 C4 C2+ C2GND

C7 100n

D2

330

100n

+5Vcc

100n

+5Vcc RST RA0 RA1 RA2 RA3 RA4 RA5 J1 APLICACION RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7

A pesar de que RC6 y RC7 son empleadas para la comunicacin serie con el PC bajo el control del monitor PICMOS76, tambin estn disponibles. Estas lneas pueden ser empleadas por el programa de aplicacin del usuario bien, gestionando su propia comunicacin serie a travs de ellas, o bien como lneas de E/S de propsito general. En este ltimo caso se recomienda retirar el circuito de adaptacin MAX232 (U2). 3.2.2 Aplicaciones Dado su bajo coste, las aplicaciones de los mdulos OEM son numerosas. El mdulo contiene lo esencial para que el microcontrolador pueda ejecutar el software de control. Se inserta en el hardware diseado por el fabricante de la aplicacin donde se encuentra el resto de dispositivos que forman el producto o equipo final. A modo de ejemplo se presentan dos formas de emplear el OEMPICMOS76 que propone Ingeniera de Microsistemas Programados S.L. como solucin de coste medio/bajo. En la figura 3-5 se muestra el empleo del mdulo en aplicaciones de carcter didctico. Efectivamente, como soporte se emplea el entrenador UNIVERSAL TRAINER de Ingeniera de Microsistemas Programados S.L.. Este contiene fuentes de alimentacin; perifricos que simulan entradas (interruptores, pulsadores, generadores lgicos, etc.); perifricos que simulan salidas (diodos leds, displays, zumbador, etc.).

26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Figura 3-4. Esquema elctrico del mdulo OEMPICMOS76

3-4

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones
Tambin dispone de una amplia placa proto-board que permite el montaje y cableado sin soldadura de cualquier circuito elctrico a base de componentes discretos y/o integrados.

Figura 3-5. Aplicaciones didcticas con el OEMPICMOS76 El mdulo OEM se inserta en la placa proto-board como si de un componente mas se tratara. El estudiante cablea y conecta, a travs de la hilera de pines, las lneas de E/S del PIC con los perifricos que desee gobernar. Gracias al programa monitor PICMOS76 residente en el propio PIC y, con ayuda del software Real_PIC, los programas de aplicacin se editan, ensamblan y descargan desde el PC para su ejecucin, anlisis y comprobacin. De una forma rpida y fcil el usuario puede hacer infinidad de experimentos y proyectos. La fotografa de la figura 3-6 muestra una aplicacin de carcter mas comercial. Esta consiste en realizar una serie de medidas analgicas y visualizarlas sobre una pantalla LCD. Con un teclado se establecen una serie de parmetros y lmites de las medidas a realizar. Con unos DIP-SWITCH se seleccionan una serie de configuraciones del sistema y, finalmente, unos diodos leds monitorizan el estado de ciertas salidas digitales. El equipo final se presenta sobre una placa de tipo universal. En ella se ha montado la fuente de alimentacin, as como los perifricos empleados en la aplicacin: pantalla LCD, teclado hexadecimal, switches de configuracin y leds piloto. El mdulo OEMPICMOS76 se inserta en el equipo final (aparece arriba a la derecha de la imagen). El PIC contiene el programa que controla la aplicacin. Este programa a su vez ha sido descargado, va serie, desde el PC, gracias al monitor PICMOS76 residente en el mismo PIC y el software de desarrollo Real_PIC. Conviene tambin mencionar un detalle de suma importancia. La memoria de programa de la familia de microcontroladores PIC 16F87X es del tipo FLASH. Esto supone que dicha memoria puede ser utilizada en infinidad de ocasiones. Microchip cifra en unas 1000 las veces que esta memoria de programa puede ser borrada y nuevamente grabada. Tanto el entrenador "PIC Laboratory" como el OEMPICMOS76 incorporan un PIC16F876 con las caractersticas anteriormente mencionadas. Esto supone que los programas de aplicacin del usuario pueden ser modificados y/o actualizados de una forma rpida y eficaz.

3-5

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones

Figura 3-6. Aplicacin comercial del OEMPICMOS76 3.3 EL CHIP PICMOS76 Tanto el entrenador "PIC Laboratory" como el mdulo OEMPICMOS76 incorporan un microcontrolador PIC16F876 que viene grabado con el programa monitor PICMOS76. Dicho monitor permite, con ayuda del software Real_PIC, descargar desde el PC al PIC los programas de usuario previamente editados y ensamblados. Este PIC denominado PICMOS76 se comercializa de forma individual y es la solucin de ms bajo coste disponible. Efectivamente, con ayuda del entrenador "PIC Laboratory" o del mdulo OEMPICMOS76, el usuario graba en el PIC su programa de control. Luego, nicamente inserta el PIC grabado en el hardware de su producto final. Por supuesto dicho hardware debe contener todo lo necesario para que el PIC pueda funcionar: alimentacin, circuito oscilador, interface serie (si fuera necesario), etc. En la imagen de la figura 3-7 se puede apreciar el entrenador UNIVERSAL TRAINER donde el usuario ha insertado el PICMOS76 que se supone grabado con el programa de control. Se deben realizar las conexiones necesarias tanto con los perifricos que se emplean como con el circuito oscilador y la alimentacin general del sistema. Por su parte en la imagen que se ofrece en la figura 3-8, se aprecia una placa de prototipos MPIC 28/40 de Ingeniera de Microsistemas Programados S.L. en la que se ha cableado una serie de perifricos (unos leds y un potencimetro) y se ha insertado el PICMOS76 en el lugar reservado para el mismo. La placa MPIC-28/40 se suministra con la fuente de alimentacin y el circuito oscilador montados.

3-6

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones

Figura 3-7. El PICMOS76 en aplicaciones didcticas

Figura 3-8. El PICMOS76 controlando un determinado proceso

3-7

PIC Laboratory
Tema 3: Mdulos OEM y aplicaciones
3.4 RESUMEN La imagen de la figura 3-9 muestra las tres alternativas o herramientas que Ingeniera de Microsistemas Programados S.L. propone para el desarrollo de aplicaciones basadas en los potentes PIC de la familia PIC1687X.

Figura 3-9. Herramientas de desarrollo El entrenador "PIC Laboratory" es la herramienta de ms alto nivel. Admite microcontroladores PIC16F876 y 16F877 de 28 y 40 patillas respectivamente. Estos microcontroladores estn dotados del sistema operativo PICMOS7X gracias al cual y, con ayuda del software Real_PIC, es posible editar, ensamblar y grabar la aplicacin del usuario desde el canal serie de un ordenador PC. El entrenador incluye numerosos perifricos tpicos con los cuales poder probar, depurar y poner a punto infinidad de aplicaciones. El mdulo OEMPICMOS76 es la solucin de coste medio. Consiste en una pequea placa que se enchufa en el hardware del producto final del usuario. El mdulo incorpora circuito de reset, circuito oscilador e interface para canal serie, adems del microcontrolador PICMOS76 con su programa monitor. El microcontrolador PICMOS76 es la solucin ms econmica. Contiene el sistema monitor que permite la grabacin del programa de aplicacin del usuario. El chip se inserta en el hardware final del usuario que debe estar compuesto de los perifricos a gobernar, el sistema de reset, el circuito del oscilador, interface serie, etc.

3-8

PIC Laboratory
Tema 4: Tutorial

Tema 4: Tutorial
4.1 INTRODUCCION En este tema no tratamos de hacer un tutorial dedicado a explicar la teora, arquitectura y programacin de los microcontroladores de la familia PIC16F87X. En Ingeniera de Microsistemas Programados S.L. pensamos que existe excelente y abundante literatura tanto en castellano como en ingls dedicada a ellos. Los libros de texto Microcontroladores PIC, la solucin en un chip, de la editorial ITES Paraninfo, as como la 1 y 2 parte de Microcontroladores PIC, Diseo prctico de aplicaciones, de la editorial Mc Graw-Hill, son un buen ejemplo. As mismo recomendamos la visita peridica a las pginas www.microchip.com donde podemos encontrar abundante informacin tcnica de productos Microchip as como actualizaciones de herramientas software y www.microcontroladores.com de Ingeniera de Microsistemas Programados S.L. En esta ltima se ofrece informacin de nuevos productos y actualizaciones de las distintas herramientas software empleadas. Se trata de un tema de carcter netamente prctico. Se pretende que el usuario se familiarice con las herramientas y recursos que ofrece el entrenador "PIC Laboratory", objeto del presente manual. Para ello se ensea como instalar los diferentes programas y ejemplos que se suministran en el disco que acompaa al equipo. Tambin se explica paso a paso el proceso para editar, ensamblar y grabar nuestros propios programas de aplicacin as como el empleo de diferentes utilidades. Para ello contamos con el programa monitor PICMOS7X residente en el propio PIC de que consta el entrenador, el software Real_PIC de comunicaciones con el PC y del propio ensamblador MPASMWIN suministrado por Microchip. Finalmente se proponen una serie de ejemplos resueltos que se suministran en el propio disco en formato fuente *.ASM. Con ellos se pretende aprovechar algunos de los recursos internos del propio PIC as como los perifricos de que consta el entrenador. De esta forma el usuario adquiere unos conocimientos generales de programacin, del empleo de ciertas rutinas de control, del manejo de perifricos y de las numerosas posibilidades que ofrece el mundo de los microcontroladores. Todo ello tiene el objetivo final de que sea el propio usuario quien desarrolle sus aplicaciones. 4.2 INSTALACION Vamos a proceder a instalar las herramientas software que requiere el entrenador. El disco que acompaa al equipo contiene un nico fichero llamado Usuario. Este fichero est comprimido mediante el conocido programa WinZip de Windows. Hay que descomprimirlo mediante dicho programa y extraer as los diferentes ficheros que usaremos posteriormente. A continuacin se detallan los pasos a realizar. 1.- Aquellos usuarios que no dispongan del programa WinZip instalado en su ordenador, pueden acceder a la pgina www.winzip.com. En ella existen diferentes versiones del programa. El usuario puede adquirir una versin share-whare o de evaluacin o la versin definitiva con el correspondiente registro. 2.- Copiar, desde el disquete, el fichero comprimido Usuario sobre la raz del disco duro C:\. Para ello utilizar las clsicas utilidades de copiar/pegar y/o arrastrar que ofrece Windows. 3.- Ejecutar el programa WinZip. Haciendo doble clic sobre el icono que representa al fichero comprimido Usuario, la ejecucin de WinZip es automtica. Aparece una ventana como la mostrada en la figura 4-1. En ella se muestra la lista de ficheros comprimidos que se van a obtener en el proceso de descomprimir.

4-1

PIC Laboratory
Tema 4: Tutorial

Figura 4-1. Lista de archivos a descomprimir 4.- Pulsar el botn Extract. Aparece una caja de dilogos como la mostrada en la figura 4-2. En ella se pide la ruta donde debe depositarse la extraccin de los ficheros comprimidos. Se recomienda que dicha ruta sea la raz del disco duro C:\. Se pulsa nuevamente el botn Extract.

Figura 4-2. Estableciendo la ruta de extraccin de ficheros. 5.- Transcurrido un cierto tiempo se produce la extraccin de los ficheros comprimidos. En el directorio raz debe aparecer una nueva carpeta de nombre PIC_Laboratory y cuyo contenido es el mostrado en la figura 4-3. Es nuestra carpeta de trabajo.

Figura 4-3. Contenido de la carpeta PIC_Laboratory El fichero MPASMWIN es el propio programa ensamblador de Microchip en versin Windows. Se puede actualizar con las versiones mas recientes accediendo a la pgina www.microchip.com de Microchip.

4-2

PIC Laboratory
Tema 4: Tutorial
El fichero Real_PIC es el programa de comunicaciones entre el PC y el programa monitor PICMOS7X residente en el microcontrolador del entrenador. Se puede actualizar con las versiones mas recientes accediendo a la pgina www.microcontroladores.com de Ingeniera de Microsistemas Programados S.L. . Una nueva carpeta llamada Ejemplos contiene los programas fuente de los diferentes ejemplos propuestos, as como ficheros con definiciones y rutinas para el manejo de perifricos. 6.- Ahora vamos a ejecutar el programa y realizar una serie de configuraciones. En Opciones del men Herramientas tenemos la posibilidad de cambiar de puerto de comunicaciones entre COM1 y COM2. Tambin debemos seleccionar la ruta donde se encuentra el programa ensamblador MPASMWIN. Cada vez que queramos ensamblar, Real_PIC ir a la ruta establecida. Segn la instalacin realizada anteriormente, el MPASMWIN se encuentra en la carpeta PIC_Laboratory. Podemos por tanto seleccionar la ruta mediante la caja de dilogos mostrada en la Figura 4-4.

Figura 4-4. Estableciendo la ruta del ensamblador MPASMWIN 4.3 MANOS A LA OBRA Vamos a probar un programa de ejemplo muy sencillo. Es el TUTOR.ASM contenido en la carpeta de Ejemplos. Una vez ejecutado el programa Real_PIC y sincronizado con el entrenador, pulsamos el botn Nuevo y abrimos el fichero TUTOR.ASM. 4.3.1 Editando el programa fuente La figura 4-5 muestra el listado del programa. Se puede apreciar el entorno de trabajo con el programa fuente en el rea de EDITOR. Este puede ser modificado para adaptarlo a nuestras necesidades. La secuencia de inicio suele ser muy similar en todos los programas diseados para PICs. Se empieza definiendo el tipo de procesador que en el caso que nos ocupa es el PIC16F876 e incluyendo el fichero P16F873.INC. Este fichero, suministrado por Microchip, contiene la definicin de etiquetas de todos los registros SFR as como de sus bits. El programa fuente se hace ms simblico permitiendo el empleo de esas etiquetas ya definidas.

4-3

PIC Laboratory
Tema 4: Tutorial

Figura 4-5. El programa fuente de TUTOR La directiva org 0x05 determina la direccin de inicio a partir de la cual se obtendr el programa ejecutable. Como ya es conocido, la memoria de programa del entrenador "PIC Laboratory" destinada a las aplicaciones del usuario, est limitada a las posiciones comprendidas entre 0x004 y 0xFFF. La posicin 0x004 est destinada al vector de interrupcin. En el presente ejemplo no se usa. Cualquier direccin fuera de este rango est ocupada por el programa monitor PICMOS7X por lo que se consideran direcciones no vlidas. A partir de la etiqueta Inicio se comienza a definir los puertos de E/S indicando qu lneas son de entrada y salida. En el ejemplo, la puerta A se comporta como puerta de entrada digital y la puerta B como salida. El cuerpo principal del programa comienza a partir de la etiqueta Loop. Es muy simple. Se limita a leer el estado de las entradas de la Puerta A (interruptores) para seguidamente reflejarlo sobre las salidas de la Puerta B (diodos led en el entrenador). Este bucle se repite de forma indefinida de manera que cualquier cambio de estado en una lnea de la Puerta A se refleje inmediatamente sobre la Puerta B. 4.3.2 Ensamblando Ensamblar consiste en leer el programa fuente simblico y convertirlo en instrucciones mquina interpretadas directamente por el microcontrolador. Para ello hace falta una herramienta software que recibe el nombre de Ensamblador. El programa MPASMWIN se encarga de ello. Este programa suministrado por Microchip es el que instalamos anteriormente y cuya ruta para su acceso ya qued establecida. Ahora, el proceso de ensamblar es tan sencillo como pulsar el botn ENSAMBLAR que tenemos en el entorno de trabajo que ofrece Real_PIC. Este botn llama al programa ensamblador MPASMWIN que lee y traduce el programa fuente que tenemos actualmente en el rea del EDITOR. Se trata de un proceso relativamente rpido. Cuando finaliza, aparece una ventana indicando los mensajes, avisos y errores que se hayan producido. Si hay errores aparece un resumen de los mismos que nos ayudar a localizarlos y corregirlos en el programa fuente para poder volver a ensamblarlo. Si no hay errores, se generan una serie de ficheros auxiliares:

4-4

PIC Laboratory
Tema 4: Tutorial
*.HEX Para el caso que nos ocupa, es el fichero ms importante de todos los obtenidos. Contiene el cdigo mquina ejecutable del programa. Es el que se emplear posteriormente para la grabacin del microcontrolador. *.LST Se trata de un fichero tipo texto imprimible que contiene el programa fuente original as como la traduccin a cdigo mquina de cada una de las instrucciones. *.ERR Es tambin un fichero texto imprimible que contiene todos los mensaje, avisos o errores que se produjeron durante el proceso de ensamblado. *.COD Este fichero contiene informacin til de cara a emplear herramientas de desarrollo del tipo simuladores o emuladores en tiempo real. 4.3.3 Grabando el programa Ensamblado el programa y libre de errores podemos proceder a su grabacin sobre la memoria de programa del usuario del PIC. 1.- Activamos el rea Mem Programa haciendo clic en la pestaa correspondiente. Es posible que el contenido de esta memoria de programa se visualice con el valor 0x3FF que corresponde con la instruccin ADDLW 0xFF. Esto es porque se supone que la memoria de programa del PIC est inicialmente borrada. 2.- Con la opcin de abrir fichero abrimos el ejecutable del programa TUTOR. La figura 4-6 muestra el listado del programa representado en nemnicos. En la columna de la izquierda aparece un nmero de lnea y en la siguiente se representa en hexadecimal la direccin de memoria donde se depositar la instruccin. La primera libre siempre ser la 0x0004. Finalmente se muestra el programa. A la izquierda el cdigo OP de cada instruccin, en el centro el nemnico de la misma y a la derecha los operandos.

Figura 4-6. El rea de la memoria de programa El listado del programa mquina tambin se puede visualizar en formato hexadecimal si hacemos clic en la pestaa correspondeinte.

4-5

PIC Laboratory
Tema 4: Tutorial
3.- Haciendo clic sobre el botn ESCR PROG procedemos a enviar el programa ejecutable a la memoria del PIC de forma que quede residente y listo para ser ejecutado. Aparece una barra de estado que informa del tiempo que dura la transferencia. Este depender de lo largo que sea el programa. 4.3.4 Ejecutando Editado el programa, ensamblado y grabado sobre el PIC, ya slo queda ejecutarlo y verificar su funcionamiento. Existen dos formas de ejecucin. La ms habitual consiste en ejecutar un programa siempre desde la direccin 0x0005. Esta es la primera direccin libre disponible para el usuario en la memoria de programa del PIC. Se asume que el usuario comenzar sus programas en esta direccin (org 0x0005). Basta seleccionar la opcin de Ejecucin en el men principal o pulsar la tecla F9. Sin embargo no es obligatorio que un programa empiece siempre en la 0x0005, puede hacerlo en cualquier otra direccin libre. Seleccionando la opcin Ejecucin desde del men Ejecucin o bien la combinacin de teclas Ctrl + F9 se abre una ventana que nos permite establecer la direccin de inicio. Para comprobar lo expuesto, vamos a realizar los siguientes pasos: 1.- Pulsar F9 (ejecucin desde la 0x0005) 2.- Comprobar el correcto funcionamiento del programa TUTOR del ejemplo. Para ello cambiar de estado los interruptores RA0-RA5 del entrenador y observar que los leds RB0-RB5 reflejan el nivel lgico de entrada. 3.- Se debe tener en cuenta que cuando el PIC ejecuta una aplicacin del usuario, el programa monitor pierde el control. Es por ello que cualquier operacin posterior que queramos realizar (p.ej. LEER PROG) ser rechazada por falta de comunicacin con el PC. 4.- Pulsar el botn Sincronizar PC-Placa o la tecla F2. El sistema se sincroniza de nuevo. El programa de usuario deja de ejecutarse y el control lo toma nuevamente el programa monitor. 5.- Vamos a ejecutar desde una direccin de inicio distinta a la real. Pulsamos Ctrl + F9 y en la ventana correspondiente tecleamos la direccin 0x0008 seguido del botn Ejecutar. Podemos comprobar que el programa TUTOR no funciona correctamente dado que algunas de sus instrucciones no se han ejecutado. Probablemente el sistema est bloqueado. Pulsamos F2 para volver a sincronizar con el PC. 6.- Repetimos el proceso Ctrl + F9 pero indicamos la direccin de inicio correcta (0x0005). Vemos que ahora el programa s funciona. 7.- Probamos ahora a desconectar la alimentacin del entrenador. Tambin finalizamos la ejecucin del Real_PIC del PC y desconectamos la conexin serie. Volvemos a conectar la alimentacin del entrenador. Observamos que el programa TUTOR sigue funcionando. Esto demuestra que el programa sigue residiendo en la memoria Flash del PIC y ste funciona de forma autnoma respecto al PC. 8.- En esta situacin conectamos nuevamente el canal serie del PC con el entrenador y ejecutamos el programa Real_PIC. Se aprecia que el monitor del entrenador se hace cargo del control del sistema y se produce el sincronismo con el ordenador. 4.3.5 Modificando

4-6

PIC Laboratory
Tema 4: Tutorial
Con el fin de que el usuario vaya cogiendo experiencia, proponemos hacer una modificacin del programa TUTOR muy sencilla. Esta consiste en leer el valor de las entradas RA5-RA0, sumarle 0x05 y visualizar el resultado binario en las salidas RB7-RB0. Se recomienda seguir con cuidado todos los pasos relativos a edicin, ensamblado, grabacin y ejecucin expuestos anteriormente. 4.4 EDICION DE REGISTROS Una de las posibilidades mas interesantes que ofrece el entrenador "PIC Laboratory" y todo su entorno de trabajo, es el poder editar en tiempo real el contenido de los registros internos del microcontrolador PIC. Cuando hablamos de registros nos estamos refiriendo tanto a las posiciones de la memoria RAM de datos (incluidos los registros SFR) como a las posiciones de la memoria EEPROM de datos. En ningn caso hablamos de modificar la memoria de programa. Esta se modifica siguiendo las pautas explicadas anteriormente: Editar un programa fuente, ensamblarlo y grabarlo. 4.4.1 Editando la memoria RAM Es posible editar/modificar cualquiera de las posiciones de la memoria RAM del microcontrolador, incluidos los registros especiales o SFR. La figura 4-7 muestra el rea de memoria RAM del microcontrolador. Algunas de las posiciones se corresponden con los registros SFR (Special Function Register). Estos se representan tambin a la derecha de la ventana de forma individual. Pulsando el botn LEER RAM aparece el contenido actual de la memoria RAM del PIC.

Figura 4-7. Editando la memoria RAM de datos Modificar el contenido de los registros SFR supone la depuracin en tiempo real a nivel de registros. Esto tiene una gran utilidad a la hora de comprobar el hardware de nuestra aplicacin. Efectivamente, supongamos que en la puerta B tenemos conectado una serie de perifricos de salida (p.e. leds). Podemos modificar el contenido de la posicin de memoria correspondiente a la puerta B y con ello actuar directamente y en tiempo real sobre los perifricos conectados a ella. De la misma manera podemos actuar con cualquier otro puerto de E/S o cualquier registro de control. Para modificar el valor de cualquier posicin basta con situar el cursor en la celda correspondiente y, tras hacer clic, introducir el valor deseado. Automticamente se selecciona la siguiente celda o posicin para introducir un nuevo valor y as sucesivamente.

4-7

PIC Laboratory
Tema 4: Tutorial

Escribiendo sobre la Puerta B El entrenador "PIC Laboratory" dispone de un conjunto de 8 leds conectados a la puerta B del microcontrolador. Vamos a modificar el contenido de sta para ver el efecto que produce sobre dichos leds de salida. 1.- Conectamos el entrenador y ejecutamos Real_PIC. Pulsamos el botn Nuevo, sincronizamos la placa (si no lo estuviera) y activamos el rea de Mem RAM mediante la pestaa correspondiente. 2.- Buscamos la posicin 0x86, la seleccionamos haciendo clic sobre la celda correspondiente y escribimos el valor 0x00. Esta posicin corresponde al registro TRISB y con el valor que introducimos lo configuramos como salida. 3.- Escribimos el valor 0xFF sobre la posicin 0x06. Esta posicin corresponde con la puerta B. El valor escrito implica escribir niveles 1 sobre las 8 lneas, con lo que los 8 leds conectados a ellas deben iluminarse. 4.- Seleccionamos de nuevo la celda de la posicin 0x06 y escribimos el valor 0x00. Todos los leds deben apagarse. 5.- Seleccionamos la celda de la posicin 0x06 y escribimos el valor 0xAA. Los leds se encienden de forma alternada. 6.- Repetimos el proceso y escribimos el valor 0x55. Los leds se encienden de forma alternada. 7.- Activar, mediante el jumper JP2 del entrenador, el display de 7 segmentos. Este tambin est conectado a la puerta B. El segmento a se conecta con RB0 y el g con RB6. El punto decimal se controla desde RB7. 8.- Probar a sacar diferentes valores por dicha puerta con objeto de que el display vaya visualizando los valores del 1 al 9. Vemos cmo efectivamente estamos comprobando el hardware. En este caso estamos probando las salidas conectadas a la puerta B. Lectura de la puerta A De la misma manera se pueden comprobar y leer las seales que introducen por un puerto, determinados perifricos de entrada. En el entrenador, la puerta A est conectada a los interruptores de entrada RA0-RA5. Vamos a proceder a la lectura del estado de dichos interruptores. 1.- Conectamos el entrenador y ejecutamos Real_PIC. Pulsamos el botn Nuevo, sincronizamos la placa (si no lo estuviera) y activamos el rea de Mem RAM mediante la pestaa correspondiente. 2.- Localizar la celda correspondiente a la posicin 0x9F. Haciendo clic sobre ella introducir el valor 0x06. Hemos accedido al registro ADCON1 y, con el valor escrito, hemos configurado la puerta A como puerta digital.

4-8

PIC Laboratory
Tema 4: Tutorial
3.- Localizar la celda correspondiente a la posicin 0x85 y escribir el valor 0x3F. Accedemos al registro TRISA y lo configuramos como entrada. 4.- Localizar la celda de la posicin 0x05 y la seleccionamos haciendo clic. Con el botn derecho del ratn procedemos a leer el contenido de dicha posicin. Hemos ledo la puerta A y el valor obtenido se debe corresponder con el estado lgico de los interruptores RA0-RA5. 5.- Cambiamos de estado los interruptores para que introduzcan un valor distinto. 6.- La posicin 0x05 se mantiene seleccionada. Cada vez que hagamos clic con el botn derecho del ratn, procedemos a hacer una nueva lectura. 7.- Los pasos 5 y 6 se puede repetir tantas veces se quiera con objeto de realizar diferentes lecturas. Tenemos la posibilidad de conocer las seales de entrada que un determinado perifrico introduce en el puerto correspondiente. Podemos por tanto verificar el hardware relacionado con ese perifrico. Escritura de bloques Si bien anteriormente escribimos valores en posiciones individuales de memoria RAM, tambin es posible rellenar un rea de memoria con un determinado valor. 1.- Se activa el rea de Mem RAM mediante la pestaa correspondiente. 2.- En el men Herramientas se selecciona la opcin Escribir Rango Memo. 3.- Aparece una caja de dilogos en la que se deben indicar la direccin inicial, la direccin final y el valor a introducir en ese rango de direcciones. 4.- En la figura 4-8 se muestra, a modo de ejemplo, la escritura de las posiciones comprendidas entre 0x030 y 0x03F con el valor 0xAA

Figura 4-8. Escribiendo un bloque de memoria RAM

4-9

PIC Laboratory
Tema 4: Tutorial

4.4.2 Editando la EEPROM de datos La memoria EEPROM de datos del PIC tambin puede ser leda y modificada de una forma similar a como se hizo con la memoria RAM. Esto ofrece la posibilidad de introducir sobre este tipo especial de memoria, datos de tipo constante y no voltiles (nmeros de serie, cdigos ASCII, tablas de datos, etc.) pero modificables bien por el usuario o por el propio programa de aplicacin. Leyendo la memoria EEPROM La lectura del contenido actual de esta memoria es muy sencilla. Basta seguir los siguientes pasos: 1.- Conectamos el entrenador y ejecutamos Real_PIC. Pulsamos el botn Nuevo, sincronizamos la placa (si no lo estuviera) y activamos el rea de Mem EEPROM mediante la pestaa correspondiente. Es posible que inicialmente todas las celdas o posiciones aparezcan con el valor 0xFF. Es el valor por defecto si se supone que la EEPROM est borrada. 2.- Se pulsa el botn LEER EEPROM. Se realiza la lectura de toda la memoria y las celdas se rellenan con el valor actual de las posiciones EEPROM del PIC. La figura 49 sirve como ejemplo de una lectura.

Figura 4-9. Lectura de la EEPROM de datos 3.- Tambin es posible la lectura individual de una posicin. Basta con seleccionar una determinada celda y hacer clic con el botn derecho del ratn. Escribiendo sobre la EEPROM Es posible la modificacin de bytes individuales de la EEPROM de datos del PIC. 1.- Seleccionar la posicin deseada y hacer clic sobre la celda correspondiente. 2.- Introducir el valor deseado.

4-10

PIC Laboratory
Tema 4: Tutorial
3.- El cursor se desplaza a la siguiente celda o posicin. Se introduce un nuevo valor. El proceso se repite tantas veces como se desee. 4.- Al igual que con la RAM, tambin es posible la escritura de un rea o rango de direcciones EEPROM con un determinado valor. En el men Herramientas se selecciona la opcin Escribir Rango Memo. 3.- Aparece una caja de dilogos en la que se deben indicar la direccin inicial, la direccin final y el valor a introducir en ese rango de direcciones. 4.- En la figura 4-10 se muestra, a modo de ejemplo, la escritura de las posiciones comprendidas entre 0x028 y 0x037 con el valor 0x33.

Figura 4-10. Escritura de un rango de memoria EEPROM 4.5 LAS TARJETAS DE MEMORIA El entrenador "PIC Laboratory" viene provisto de un conector tipo Smart Card que permite manejar diferentes tipo de tarjetas chip. De entre todos los modelos que existen, el sistema est preparado para controlar directamente las tarjetas de memoria Memory Card de Ingeniera de Microsistemas Programados S.L. como la que se muestra en la figura 4-11.

Figura 4-11. La tarjeta Memory Card

4-11

PIC Laboratory
Tema 4: Tutorial
En el mercado existen multitud de tarjetas con diversas configuraciones, prestaciones y utilidades. El usuario podr estudiarlas por su cuenta y realizar las aplicaciones que estime oportuno. Nosotros nos vamos a centrar en las tarjetas Memory Card diseadas por Ingeniera de Microsistemas Programados S.L. con objeto de poder salvar las aplicaciones y programas del usuario para luego poderlos recuperar y ejecutar de forma autnoma y sin intervencin de un PC. Es decir, se emplean como sistema auxiliar de almacenamiento de programas. Su empleo es muy simple. En el entorno de trabajo tenemos tres botones como los mostrados en la figura 4-12.

Figura 4-12. Botones para el control de las tarjetas Memory Card El botn de la izquierda sirve para interrogar al sistema si la tarjeta Memory Card est o no insertada. En pantalla aparecer el mensaje correspondiente. El botn central transfiere la totalidad de la memoria de programa del PIC sobre la tarjeta. Finalmente, el botn de la derecha, transfiere la totalidad del contenido de la tarjeta sobre la memoria de programa del PIC. Los pasos a seguir son muy sencillos. 1.- Se supone que el PIC contiene un programa de aplicacin del usuario. Se puede tomar como modelo el ejemplo TUTOR que ya ha sido anteriormente editado, ensamblado, grabado sobre el PIC y probado. Tenemos pues una aplicacin concreta y funcional. 2.- Pulsamos el botn central P->T y el contenido del PIC es decir, el programa TUTOR, se copia sobre la tarjeta. 3.- Podemos cargar en el PIC y ejecutar otro programa o aplicacin distinta para demostrar la validez de la presente prueba. Siempre que el programa monitor pierde el control porque el PIC est ejecutando un programa de usuario, no olvidar de sincronizar el sistema (F2). 4.- Pulsamos el botn de la derecha T->P. El contenido de la tarjeta se transfiere al PIC. Este contiene por tanto el programa TUTOR inicial. Lo podemos comprobar mediante su ejecucin (F9). 5.- Vamos a repetir el paso 3. Es decir, tenemos en la tarjeta el programa TUTOR y en el PIC otro programa distinto. 6.- Desconectamos la alimentacin as como el canal serie que une el entrenador con el PC. 7.- Conectamos la alimentacin del entrenador y vemos que el PIC ejecuta el 2 de los programas, el que se grab en el paso 3. 8.- Insertamos la tarjeta en su zcalo y pulsamos RESET. Esto es equivalente a conectar la alimentacin. 9.- El programa monitor procede a leer, automticamente, el programa contenido de la tarjeta, grabarlo sobre el PIC y ejecutarlo. 10. Los pasos 6-9 nos demuestran la autonoma del entrenador respecto al PC. Efectivamente, en el PIC haba un programa y en la tarjeta otro (TUTOR). Al iniciar

4-12

PIC Laboratory
Tema 4: Tutorial
el sistema con la tarjeta insertada, se procede a leer su contenido, a grabarlo en el PIC y a ejecutarlo como nuevo programa actual. 4.6 EJEMPLOS Por fin ha llegado el momento de ir probando los diferentes ejemplos que se suministran en el disco que acompaa al equipo. Adems de aprender ciertas tcnicas y trucos de programacin con los ejercicios propuestos, tambin nos familiarizaremos con el manejo del entrenador "PIC Laboratory" y sus perifricos, as como con los recursos internos del microcontrolador. Todos los programas los encontrar en el disquete que acompaa a nuestros productos. 4.6.1 Ejemplo 1: Simple manejo de las E/S Enunciado El programa lee el estado de los interruptores RA0-RA5 y lo visualiza sobre los leds RB0-RB5. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios El programa est contenido en el fichero Ejem_1. Es un programa muy sencillo en el que no se realiza ningn tratamiento con las entradas. Merece especial atencin la configuracin del puerto A como puerto Digital. 4.6.2 Ejemplo 2: Funcin lgica NOT Enunciado Leer el estado de la entrada RA0 y visualizarlo sobre RB0. En RB1 se visualiza el complemento de RA0 Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios El programa est contenido en Ejem_2. Se realiza un simple tratamiento con el valor de la seal de entrada. Merece especial atencin la configuracin del puerto A como puerto Digital. 4.6.3 Ejemplo 3: Decodificador combinacional Enunciado El ejemplo propone generar unas seales de salida sobre RB0-RB7 en funcin del estado de dos seales de entrada, RA0 y RA1. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

4-13

PIC Laboratory
Tema 4: Tutorial
Comentarios El programa contenido en el fichero Ejem_3 muestra la tcnica de las mscaras que permiten filtrar una informacin de entrada de varios bits y procesar slo los que interese. 4.6.4 Ejemplo 4: Automatismo secuencial, simulando una maniobra de torneado Enunciado Se trata de simular el funcionamiento de una sencilla mquina para el torneado de una pieza. La activacin/desactivacin de un cilindro simula el arrastre de la pieza a tornear. Esta pasa por distintos sensores a lo largo del recorrido provocando que el motor del torno se active o no. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios Programa contenido en el fichero Ejem_4. Consiste en un conjunto de instrucciones que siguen fielmente la secuencia de funcionamiento de la mquina simulada. 4.6.5 Ejemplo 5: Automatismo secuencial, simulando una maniobra de taladrado Enunciado Se trata de controlar el cabezal de un taladro para la perforacin de una pieza. Dicho cabezal es sometido a distintos movimientos de aproximacin a la pieza a taladrar. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios Programa contenido en el fichero Ejem_5. Consiste en un conjunto de instrucciones que siguen fielmente la secuencia de funcionamiento de la mquina simulada. 4.6.6 Ejemplo 6: Automatismo, mquina de envasar. Enunciado Dos cintas transportadoras transportan piezas y envases respectivamente. Cuando se detecta un envase debidamente posicionado, comienzan a entrar piezas. Cuando el envase se llena con 10 piezas, es retirado y colocado otro vaco en su lugar. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios

4-14

PIC Laboratory
Tema 4: Tutorial
El programa introduce el concepto de un contador realizado sobre una variable RAM y tambin la forma de detectar pulsos en ciertas seales de entrada. 4.6.7 Ejemplo 7: Mquina de envasar, versin mejorada Enunciado Dos cintas transportadoras transportan piezas y envases respectivamente. Cuando se detecta un envase debidamente posicionado, comienzan a entrar piezas. Cuando el envase se llena con 10 piezas, es retirado y colocado otro vaco en su lugar. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios En el ejemplo anterior se pudo comprobar claramente que el n de piezas a envasar era incorrecto. No es que el programa estuviera mal, si no que el interruptor que simula el paso de piezas provoca un desagradable efecto rebote. Un accionamiento del interruptor suponer generar varias seales que, por supuesto, son ledas por el PIC. Para evitar el efecto rebote se intercala una temporizacin en cada accionamiento. De esta forma se espera a que las lminas de contacto del interruptor se estabilicen. El ejemplo hace uso de un rutina de temporizacin de propsito general. Esta genera un tiempo de espera de 10mS. Emplea el TMR0 en el modo temporizador asociado a un preesacler de 256. Si el PIC trabaja a 20MHz, el ciclo mquina es de 0.2 S. Con un preesacler de 256 el TMR0 evoluciona cada evento de 51,2S (256 * 0,2). La temporizacin finaliza cuando el TMR0 cuenta 195 de esos eventos (195 * 51,2 = 10000 S). 4.6.8 Ejemplo 8: Juego de luces Enunciado Se va a realizar un juego de luces en el que los leds conectados en la Puerta B se iluminarn secuencialmente de izda. a dcha. y viceversa en funcin de la entrada RA0. Cada led permanece iluminado 0.25 seg (250mS) Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios Se emplea una rutina de temporizacin basada en los mismos principios que en el ejemplo anterior. Sin embargo, con un PIC trabajando a 20MHz y un preescaler de 256, la mxima temporizacin que el TMR0 puede realizar es de unos 13mS. Se ha optado por que el TMR0 temporice 10 mS y esta temporizacin se repita 25 veces para conseguir un total de 250 mS. 4.6.9 Ejemplo 9: La interrupcin del TMR0 Enunciado

4-15

PIC Laboratory
Tema 4: Tutorial
Se pretende demostar el funcionamiento de la interrupcin del TMR0. El programa lee constantemente el estado de RA0 y RA1 y lo visualiza sobre RB0 y RB1. Al mismo tiempo y, sin dejar de explorar las entradas, la salida RB7 genera un intermitencia constante de 0.5. Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente

Comentarios El ejemplo nos introduce en el mundo de las interrupciones, en este caso la que produce el TMR0 cada 10mS. En este momento el PIC acude al vector de interrupcin en la posicin 0x0004 y de aqu le mandamos al inicio de nuestro programa de tratamiento. Este consiste en determinar si han transcurrido 50 interrupciones (tiempo total 0.5) para hacer que RB0 cambie de estado. No obstante, las entradas RA0 y RA1 no dejan de ser reflejadas sobre las salidas RB0 y RB1.

4.6.10 Ejemplo 10: La interrupcin externa RB0/INT Enunciado El programa ilumina los leds conectados a RB7-RB1 durante 1 cada vez que se accione el pulsador RB0/INT (SW7) del entrenador "PIC Laboratory". Requisitos Habilitar los leds del entrenador cerrando el jumper JP1. El Jumper JP4 debe estar en la posicin INT.

Comentarios Cada vez que se acciona el pulsador SW7, se provoca una interrupcin por flanco descendente en la patilla RB0/INT. El programa de tratamiento ilumina los leds de salida durante 1 y los vuelve a apagar, retornando al programa principal. Este simplemente consiste en mantener al PIC en el modo SLEEP de bajo consumo de forma constante hasta que se produce la interrupcin externa mencionada. 4.6.11 Ejemplo 11:El display 7 segmentos Enunciado El programa representa sobre el display de 7 segmentos del entrenador el estado del interruptor de entrada RB0, visualizando un 0 o 1, segn corresponda. Mediante la entrada RB1 se activa o no el punto decimal. Requisitos Desconectar los leds del entrenador abriendo el jumper JP1. Habilitar el display de 7 segmentos cerrando el Jumper JP2. El Jumper JP4 debe estar en la posicin RB0.

Comentarios

4-16

PIC Laboratory
Tema 4: Tutorial
El ejemplo es una simple muestra de cmo visualizar dos nmeros (0 y 1) sobre el display de 7 segmentos del entrenador "PIC Laboratory". Para ello, sobre la puerta de salida se sacan los correspondientes cdigos de 7 segmentos. 4.6.12 Ejemplo12: Decodificador BCD a 7 segmentos Enunciado Por las entradas RB0-RB3 se introduce el cdigo BCD del dgito a visualizar (entre 0 y F) sobre el display de 7 segmentos del entrenador Requisitos Desconectar los leds del entrenador abriendo el jumper JP1. Habilitar el display de 7 segmentos cerrando el Jumper JP2. Los Jumpers JP4 y JP5 deben estar en la posicin RB0 y RA0 respectivamente.

Comentarios Este ejemplo nos introduce al manejo de tablas de datos constantes. Efectivamente, la tabla consiste en los 16 cdigos 7 segmentos de los dgitos a visualizar. Mediante la suma del PC con un desplazamiento, se selecciona uno de los 16 cdigos, el del dgito que se desea visualizar. 4.6.13 Ejemplo13: Contador decimal UP/DOWN Enunciado Se trata de realizar un contador ascendente/descendente (UP/DOWN). Los pulsos a contar se aplican desde RA0 y debe eliminarse el efecto rebote. Mediante la entrada RA1 se selecciona si la cuenta es ascendente o descendente Requisitos Desconectar los leds del entrenador abriendo el jumper JP1. Habilitar el display de 7 segmentos cerrando el Jumper JP2. Los Jumpers JP4 y JP5 deben estar en la posicin RB0 y RA0 respectivamente.

Comentarios El ejemplo es una aplicacin prctica consiste en realizar una dcada contadora. la cuenta es decimal de 0 a 9 y puede ser ascendente o descendente. 4.6.14 Ejemplo 14: El TMR0 como contador de pulsos externos Enunciado Procedente del generador lgico del entrenador se aplican pulsos por RA4/T0CK1 para que el TMR0 los vaya contando y visualizando sobre el display. Cuando lleguen 6 pulsos el display activa todos sus segmentos durante 1 luego se apagan y el sistema queda detenido hasta provocar un RESET. Comienza de nuevo el ciclo. Requisitos Desconectar los leds del entrenador abriendo el jumper JP1. Habilitar el display de 7 segmentos cerrando el Jumper JP2. Los Jumpers JP4 y JP6 deben estar en la posicin RB0 y T0CKI respectivamente.

4-17

PIC Laboratory
Tema 4: Tutorial
Comentarios El programa demuestra que el TMR0 puede actuar como contador de pulsos externos que se introducen por RA4/T0CKI y, si procede, provocar interrupcin. Tambin muestra cmo se puede modificar dinmicamente el registro OPTION para hacer que el TMR0 acte como contador o como temporizador segn se necesite y con el preescaler apropiado. Podemos variar la frecuencia del generador mediante el potencimetro P2 del entrenador, para conseguir una cuenta ms o menos rpida. 4.6.15 Ejemplo 15: La memoria EEPROM de datos, la mquina Su Turno Enunciado Se trata de emular el funcionamiento de la tpica mquina Su Turno habitual en muchos comercios de venta al pblico. Sobre el display se visualiza el turno actual. Este se incrementa con cada pulso en RA0. En la memoria EEPROM de datos del PIC se almacena el turno actual de forma que, ante un fallo de alimentacin, se reanude la cuenta desde el ltimo nmero. Requisitos Desconectar los leds del entrenador abriendo el jumper JP1. Habilitar el display de 7 segmentos cerrando el Jumper JP2. Los Jumpers JP4, JP5 y JP6 deben estar en la posicin RB0 , RA0 y RA4 respectivamente.

Comentarios El programa pretende ilustrar la forma de grabar y recuperar datos no voltiles sobre la memoria EEPROM del PIC. las aplicaciones de este tipo de memoria son numerosas (cdigos de accesos, agenda no voltil, etc.). 4.6.16 Ejemplo 16: Introduccin al manejo de la pantalla LCD Enunciado Se trata de hacer una introduccin al manejo de la pantalla LCD, donde debe aparecer el mensaje Hola. Requisitos Habilitar la pantalla LCD cerrando el jumper JP3. El Jumper JP4 debe estar en la posicin RB0.

Comentarios El programa hace uso de las rutinas de manejo de la pantalla LCD que estn contenidas en el fichero LCD_CXX.INC del disco de prcticas. Dichas rutinas son de propsito general y se incluyen en el programa fuente del usuario mediante la directiva INCLUDE del ensamblador. Es un buen mtodo para incluir rutinas desde otros ficheros sin tenerlas que escribir en cada uno de los programas fuentes de aplicacin en que sean necesarias. 4.6.17 Ejemplo 17: Seguimos con la pantalla LCD Enunciado Se trata de visualizar diferentes mensajes contenidos en tablas previamente definidas por el usuario. En el ejemplo se visualizan los mensajes Hola y Adios. Requisitos

4-18

PIC Laboratory
Tema 4: Tutorial
Habilitar la pantalla LCD cerrando el jumper JP3. El Jumper JP4 debe estar en la posicin RB0.

Comentarios Se trata de mostrar una forma cmoda y verstil para visualizar cualquier tipo de mensajes de cualquier tamao. Los mensajes se definen en tablas de datos constantes mediante la conocida instruccin RETLW. Todo mensaje finaliza con un cdigo de fin de mensaje (0x00). Se ha diseado una rutina llamada Mensaje que lee y visualiza todos los caracteres de un texto hasta llegar al cdigo de fin de mensaje. Antes de llamar a esta rutina, en el programa principal, se debe indicar el inicio de cada uno de los mensajes o textos que se desean visualizar. 4.6.18 Ejemplo 18: Visualizando mas mensajes Enunciado Al igual que en el ejemplo anterior, se trata de visualizar diferentes mensajes contenidos en tablas previamente definidas por el usuario. Requisitos Habilitar la pantalla LCD cerrando el jumper JP3. El Jumper JP4 debe estar en la posicin RB0.

Comentarios El ejemplo es similar al anterior en cuanto a que se trata de visualizar diferentes textos previamente definidos en tablas. La diferencia est precisamente en la definicin de esas tablas. Efectivamente, mediante la directiva DT del ensamblador es posible definir tablas de datos expresados, en ASCII, cadena de caracteres, hexadecimal, etc. Durante el proceso de ensamblado se generan tantas instrucciones RETLW como datos haya. Es una forma de incluir tablas de datos en nuestros programas fuente mucho ms cmoda y fcil de interpretar. 4.6.19 Ejemplo 19: El teclado Enunciado Se trata de una primera toma de contacto con el manejo del teclado hexadecimal del entrenador "PIC Laboratory" . Se trata de explorar el teclado y visualizar, sobre los leds conectados a RB0-RB7, el cdigo BCD de la tecla pulsada durante 2. Requisitos Habilitar los leds cerrando el jumper JP1 El Jumper JP4 debe estar en la posicin RB0.

Comentarios Las rutinas para manejo del teclado se encuentran en el fichero TECLADO.INC del disco de prcticas. Mediante la directiva INCLUDE del ensamblador se deben incluir en los programas fuente de aplicacin del usuario. Se puede apreciar que la puerta B se re configura dinmicamente. El programa principal la programa como salida, pero la rutina Key_Scan de exploracin programa RB0-RB3 como salida y RB4-RB7 como entrada. Cuando la exploracin ha finalizado, la puerta B queda como estaba en un principio. 4.6.20 Ejemplo 20: El teclado y el LCD Enunciado

4-19

PIC Laboratory
Tema 4: Tutorial
Se trata de combinar el funcionamiento de estos dos perifricos. Sobre la pantalla LCD se visualiza la tecla pulsada. Requisitos Habilitar el LCD cerrando el jumper JP3 El Jumper JP4 debe estar en la posicin RB0.

Comentarios El ejemplo trata de mostrar como configurando las puertas en cada momento, el PIC puede gobernar en una misma aplicacin perifricos tan dispares como son un teclado y una pantalla LCD, que fundamentalmente comparten el mismo puerto B. 4.6.21 Ejemplo 21: Interrupcin por cambio de estado Enunciado Se trata de un ejemplo similar al anterior en cuanto a que sobre la pantalla LCD se visualiza la tecla pulsada. La diferencia consiste en que la exploracin del teclado slo se realiza cuando se detecte una interrupcin por cambio de estado en las lneas RB4-RB7 como consecuencia de pulsar cualquier tecla. Requisitos Habilitar el LCD cerrando el jumper JP3 El Jumper JP4 debe estar en la posicin RB0.

Comentarios El programa principal se mantiene en el modo SLEEP de bajo consumo. Cuando se pulsa cualquier tecla se produce una interrupcin que despierta al PIC. El programa de tratamiento se encarga de determinar qu tecla se puls para, posteriormente, visualizarla sobre el LCD. Se trata de una muy interesante aplicacin. En el ejemplo anterior el PIC estaba constantemente en ejecucin esperando que se pulse una tecla y por tanto consumiendo. En el presente ejemplo el PIC est en standby y slo reacciona cuando tiene lugar cualquier pulsacin. 4.6.22 Ejemplo 22: El TMR1, interrupcin cada cierto tiempo Enunciado Se trata de que el TMR1 provoque una interrupcin cada 0.1. Un contador binario reflejado sobre los leds conectados a la puerta B, representa el nmero de interrupciones producidas. Requisitos Habilitar los leds cerrando el jumper JP1 El Jumper JP4 debe estar en la posicin RB0.

Comentarios El ejemplo pretende introducirnos al manejo del TMR1. Se trata de un contador ascendente de 16 bits con un preescler de hasta 8. Este se programa para que acte en el modo temporizador y provoque una interrupcin cada 0.1. El nmero de interrupciones producidas se ver reflejado sobre los leds de salida.

4-20

PIC Laboratory
Tema 4: Tutorial
4.6.23 Ejemplo 23: El TMR1 como contador de eventos externos Enunciado Mediante el generador de onda cuadrada del entrenador, se aplican pulsos por la lnea RC0/T1CKI. La pantalla LCD visualiza en binario el nmero de pulsos que entran al TMR1. Requisitos Habilitar el LCD cerrando el jumper JP3 El Jumper JP8 debe estar cerrado para conectar la salida del generador con RC0/T1CKI.

Comentarios Al igual que el TMR0, el TMR1 tambin puede contar pulsos de entrada aplicados por la patilla RC0/T1CKI. Es sensible a los flancos ascendentes de la seal de entrada. El generador "PIC Laboratory" se encarga de suministrar los pulsos externos a contar. Se recomienda selecciona una baja frecuencia para apreciar que los incrementos se producen en el flanco ascendente de las seal. 4.6.24 Ejemplo 24: El TMR1 como divisor de frecuencia Enunciado El TMR1 cuenta el nmero de pulsos externos que se establecen en la variable Valor_N. Cuando finaliza se provoca una interrupcin que hace bascular a la lnea de salida RB0. La frecuencia en esta lnea de salida ser la del generador dividida entre 2* Valor_N. Requisitos JP4 debe estar en la posicin RB0 Habilitar los leds cerrando el jumper JP1 El Jumper JP8 debe estar cerrado para conectar la salida del generador con RC0/T1CKI.

Comentarios Este sencillo ejemplo nos muestra la capacidad que tiene el TMR1 de provocar interrupcin cuando trabaja en el modo contador de eventos externos. Un detalle importante es que el PIC puede estar en el modo Sleep de bajo consumo. Efectivamente, como el TMR1 est trabajando como contador externo, no necesita de la frecuencia de reloj general del sistema y, puede provocar interrupcin, al llegar a 0. Se sugiere modificar el programa variando la variable Valor_N con objeto de obtener otras divisiones de frecuencia as como variar la frecuencia del generador. 4.6.25 Ejemplo 25: Frecuencmetro Enunciado El ejemplo propone realizar un frecuencmetro en base al nmero de pulsos que entran al TMR1 en el modo contador de eventos externos. La frecuencia obtenida se visualiza sobre la pantalla LCD. Requisitos JP4 debe estar en la posicin RB0 Habilitar el LCD cerrando el jumper JP3

4-21

PIC Laboratory
Tema 4: Tutorial
El Jumper JP8 debe estar cerrado para conectar la salida del generador con RC0/T1CKI.

Comentarios Este es un buen ejemplo en el que tanto el TMR0 como el TMR1 trabajan conjuntamente. El TMR1 se programa para contar pulsos externos. Por su parte el TMR0 provoca una interrupcin cada 10mS. Cuando se han producido 100 interrupciones habr pasado 1 segundo. En este momento el TMR1 deja de contar. En otras palabras, el TMR1 cuenta los pulsos que le entran durante un intervalo de 1 segundo. El resultado de la cuenta representa por tanto los ciclos/segundo de la seal de entrada y se visualiza en la pantalla LCD. Posteriormente se inicia una nueva medida. Como se hace una muestra cada segundo, la frecuencia obtenida puede variar en 1 Hz. 4.6.26 Ejemplo 26: El TMR2, interrupcin peridica Enunciado Mediante el empleo del TMR2 se trata de hacer un segundero visualizado sobre el display del entrenador "PIC Laboratory". Requisitos JP4 debe estar en la posicin RB0 Habilitar el display cerrando el jumper JP2

Comentarios El ejemplo pretende mostrar el empleo del TMR2. Para ello provoca una interrupcin fija cada 10 mS que se repite 100 veces para obtener el tiempo total deseado de 1. Una diferencia importante de este timer frente a los anteriores, es que posee un registro de periodos que permite la recarga automtica del TMR2 cada vez que finaliza la cuenta. Este registro determina por tanto la temporizacin a realizar. 4.6.27 Ejemplo 27: El TMR2, temporizaciones ajustables Enunciado Se trata de obtener por la salida RB0 una frecuencia variable en funcin de los interruptores de entrada RA0-RA5. Para ello emplearemos el TMR2 modificando dinmicamente su registro de periodos. Requisitos JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente Habilitar los leds cerrando el jumper JP1

Comentarios El programa lee el valor introducido mediante los interruptores de entrada RA0-RA5 y tras multiplicarlo por 4, lo deposita en el registro de periodos. De esta forma se vara la temporizacin. El TMR2 evoluciona hasta alcanzar el valor de dicho registro de periodos, momento en que se pone a 0 y reanuda una nueva cuenta. Si ese valor vara, tambin lo har la cuenta. La salida RB0 cambia de estado cuando se hayan producido 10 interrupciones: (0,2nS * (RA0-RA5*4) * preescaler * postcaler * 10) 4.6.28 Ejemplo 28: Capturas con el mdulo CCP1, midiendo periodos Enunciado

4-22

PIC Laboratory
Tema 4: Tutorial
Se trata de experimentar con el mdulo CCP1. Para ello se propone un programa que mide el tiempo que transcurre entre dos flancos ascendentes de la seal aplicada por RC2/CCP1. Se obtiene as el periodo de esa seal que ser visualizado en la pantalla LCD. Requisitos Cerrar JP9 para que la salida del generador se conecta con la entrada RC2/CCP1 JP4 debe estar en la posicin RB0 Habilitar el LCD cerrando el jumper JP3

Comentarios Este ejemplo pretende mostrar el funcionamiento del mdulo CCP1 en el modo de captura. El TMR1 evoluciona a una frecuencia conocida. Se captura el valor que adquiere entre dos flancos ascendentes de la seal de entrada que suministra el generador. Dicho valor representa el periodo de esa seal. Trabajando a 20MHz y con un preescaler de 1:8, el TMR1 evoluciona cada 1.6S. El valor mnimo del periodo que se puede medir ser aproximadamente 1.6S (F=62KHz) y el mximo 104,8 mS (F=9.5 Hz). La lectura que aparece en el LCD representa el contaje realizado por el TMR1 entre un flanco y el siguiente. Esta lectura habr que multiplicarla por 1.6S (cada evolucin del TMR1) para obtener el periodo final. Este puede ser contrastado si empleamos un osciloscopio conectado la salida del generador. Se recomienda emplear frecuencias altas dado que las bajas suponen un periodo mayor que el que el TMR1 es capaz de medir en este ejemplo. 4.6.29 Ejemplo 29: Capturas con el mdulo CCP1, midiendo la anchura de un pulso Enunciado Se pretende medir el tiempo transcurrido entre el flanco ascendente y otro descendente de la seal de entrada que suministra el generador. Con ello se obtiene la duracin del pulso de esa seal de entrada. Requisitos Cerrar JP9 para que la salida del generador se conecte con la entrada RC2/CCP1 JP4 debe estar en la posicin RB0 Habilitar el LCD cerrando el jumper JP3

Comentarios El ejemplo es similar al anterior. Se trata de conocer la evolucin que sufre el TMR1 entre un flanco ascendente y otro descendente. Si sabemos que el TMR1 evoluciona cada 1.6S, multiplicamos este valor por la lectura que aparece en el LCD y obtendremos la duracin del ancho del pulso. 4.6.30 Ejemplo 30: Capturas con el mdulo CCP1, midiendo el tiempo entre un pulso y el siguiente Enunciado El ejemplo trata de medir el tiempo que transcurre entre un pulso y el siguiente en la seal de entrada aplicada por RC2/CCP1 Requisitos Cerrar JP9 para que la salida del generador se conecte con la entrada RC2/CCP1 JP4 debe estar en la posicin RB0 Habilitar el LCD cerrando el jumper JP3

4-23

PIC Laboratory
Tema 4: Tutorial
Comentarios Es un ltimo ejemplo dedicado al mdulo CCP1 en su modo de captura. En esta ocasin se mide el tiempo que transcurre entre el flanco descendente de un pulso y el ascendente del siguiente. Con ello conocemos el lapsus entre dos pulsos. Se recuerda que, dado que el TMR1 evoluciona cada 1.6S, la lectura que presenta el LCD hay que multiplicarla por este valor. Con ayuda de un osciloscopio podemos contrastar las medidas. Estos ejercicios han sido orientados al empleo del mdulo CCP1. El empleo del 2 modulo, CCP2 es idntico a lo aqu expuesto. 4.6.31 Ejemplo 31: Comparacin con el mdulo CCP1, contador de eventos ajustable Enunciado El TMR1 cuanta tantos pulsos externos como indique el valor que se introduce desde los interruptores RA5-RA0 de la puerta A. Cuando se alcanza el valor fijado, la salida RB0 cambia de estado. Requisitos Abrir JP9 para que la salida del generador se desconecte con la entrada RC2/CCP1 Cerrar JP8 para que la salida del generador se asocie con la entrada de eventos externos RC0/T1CKI JP4, JP5 y JP6 deben estar en la posicin RB0, RA0 y RA4 respectivamente Habilitar los leds cerrando el jumper JP1

Comentarios La comparacin consiste en dejar que el TMR1 evolucione hasta llegar al valor prefijado en los registros CCPR1H y CCPR1L. En el ejemplo estos registros se cargan con el valor que introducen RA5-RA0. Cuando el TMR1 alcanza ese valor se provoca una interrupcin cuyo tratamiento re inicia de nuevo el TMR1 y hace cambiar de estado a la lnea RB0. El TMR1 acta como contador de eventos externos sensibles al flanco ascendente de la seal que suministra el generador del entrenador. Conviene ajustar una frecuencia baja en el generador, que nos permita ver claramente el nmero de pulsos aplicados y el cambio de estado que se produce en RB0. 4.6.32 Ejemplo 32: Modulacin de anchura de pulsos (PWM) mediante el mdulo CCP1 Enunciado Se trata de obtener por la salida RC2/CCP1 una seal. El periodo de esa seal se determina mediante la constante Periodo y la anchura del pulso o Duty Cycle mediante la constante Duty. Requisitos Abrir JP9 para que la salida del generador se desconecte con la entrada RC2/CCP1

Comentarios La modulacin de anchura de pulsos consiste en obtener una seal de salida ajustable tanto en periodo como en la anchura del pulso. Para ello se emplea el TMR2 y su registro de periodo PR2 as como el registro CCPR1L en caso de utilizar el mdulo CCP1. Cuando el TMR2 alcanza el valor en PR2 (el periodo de la seal, la salida RC2/CCP1 cambia de estado y pasa a 1. El TMR2 inicia una nueva cuenta. Cuando alcanza el valor fijado en CCPR1L (anchura del pulso) la salida pasa a nivel 0. El TMR2 se inicia nuevamente y el ciclo se repite. Variando los valores en PR2 y CCPR1L se puede modificar la seal de salida tanto en periodo como en anchura. En el ejemplo se emplea el TMR2 con un preescaler 1:1, por lo que trabajando a 20MHz evoluciona cada 0.2S. Conocido esto es fcil determinar el valor que hay que cargar en PR2 y CCPR1L para obtener el periodo y anchura deseado.

4-24

PIC Laboratory
Tema 4: Tutorial
Para comprobar el presente ejemplo se recomienda el empleo de un osciloscopio que visualice la seal presente en RC2/CCP1 y permita contrastar los resultados. Tambin hay que destacar que el funcionamiento del PWM es totalmente independiente del programa en ejecucin. Efectivamente, una vez programado adecuadamente el modulo CCP1 y el TMR2, la seal de salida se obtiene de forma automtica, sin que el programa de aplicacin tenga que intervenir a no ser que sea para modificar los valores de PR2 y CCPR1L. 4.6.33 Ejemplo 33: PWM mediante el mdulo CCP1, variando la anchura Enunciado Se trata de un ejemplo similar al anterior. La diferencia estriba en que la anchura del pulso se modifica dinmicamente en funcin del valor binario que se introduce por RA5-RA0. Requisitos Abrir JP9 para que la salida del generador se desconecte con la entrada RC2/CCP1 JP5 y JP6 deben estar en la posicin RA0 y RA4 respectivamente

Comentarios El programa nos muestra la posibilidad de variar la anchura del pulso de salida de acuerdo a parmetros como pueden ser el valor de una puerta de entrada (RA5-RA4). A una frecuencia de 20MHz y con un preescaler de 1:16, el TMR2 evoluciona cada 3.2S. El registro PR2 se carga con 200 por lo que el periodo es de 640S (200 * 3.2). El registro CCPR1L se carga con el valor de RA5-RA0 que puede oscilar entre 0 y 64. De esta manera la anchura del pulso oscilara entre 0 y 204,8S (64 * 3.2). Se recomienda emplear un osciloscopio conectado a la salida RC2/CCP1 para comprobar el correcto funcionamiento de la aplicacin. 4.6.34 Ejemplo 34: El convertidor ADC Enunciado Se trata de leer el valor analgico que se introduce por la entrada RA0. El resultado de la conversin se visualiza, en binario, sobre la pantalla LCD. Requisitos Activar el LCD cerrando JP3 JP4 y JP5 deben estar en la posicin RB0 y AN0 respectivamente JP7 en la posicin VA2 (entrada analgica desde el potencimetro)

Comentarios El ejemplo pretende ser una introduccin al manejo del mdulo convertidor ADC que integran los PIC de la familia 16F87X. Estos convertidor de 10 bits, trabajando con una tensin de referencia de +5Vcc, presentan una resolucin de 4.8 mV/bit. El resultado binario de la conversin se visualiza en la pantalla LCD. Moviendo el potencimetro P1 se aprecia claramente variaciones en la medida visualizada en el LCD. Cambiar JP7 a la posicin VA1. La tensin analgica de entrada se toma ahora desde el foto transistor del entrenador. Haciendo incidir mas o menos luz sobre el mismo, se apreciarn variaciones en las medidas. 4.6.35 Ejemplo 35: Modulacin PWM mediante el convertidor ADC Enunciado Se trata de modular la anchura del pulso de la seal de salida que proporciona el mdulo CCP1 en la lnea RC2/CCP1, en funcin de la seal analgica introducida por RA0/AN0 previa conversin.

4-25

PIC Laboratory
Tema 4: Tutorial
Requisitos JP5 debe estar en la posicin AN0 JP9 abierto para la seal de salida en RC2/CCP1 JP7 en la posicin VA2 (entrada analgica desde el potencimetro)

Comentarios Este ejemplo ilustra el empleo combinado del convertidor ADC con el mdulo CCP1 en el modo PWM. El convertidor ADC obtiene un valor binario en funcin de una seal analgica de entrada. Ese valor se emplea para ajustar el CCPR1L y regular as la anchura del pulso de la seal de salida. Con un osciloscopio conectado en RC2/CCP1 se puede apreciar claramente la variacin de la anchura del pulso segn se vara, con el potencimetro P1 del entrenador, la tensin analgica. 4.6.36 Ejemplo 36: El USART, transmitiendo caracteres Enunciado Transmitir va serie el carcter A a intervalos regulares de 1 . Requisitos Cable de comunicaciones Programa de comunicaciones

Comentarios Este sencillo ejemplo muestra los simple que resulta realizar la transmisin serie de cualquier carcter o byte. Emplea el USART que integran los PIC de la serie 16F87X. El cable de comunicaciones que se entrega con el entrenador "PIC Laboratory" no sirve ya que este emplea la lnea RTS para re iniciar a dicho entrenador cuando se trabaja junto con el software Real_PIC. Algunos programas de comunicaciones puede activar esta lnea con lo que el PIC estar constantemente en el estado de RESET. Es necesario preparar un cable de comunicaciones para comprobar el funcionamiento del ejemplo y dos conectores DB9, uno macho (DB9M) y otro hembra (DB9H). Se realizan las siguientes conexiones: La patilla 2 del DB9M con la 2 del DB9H, la patilla 3 del DB9M con la 3 del DB9H y la patilla 5 del DB9M con la 5 del DB9H. Tambin necesitamos estndar un software de comunicaciones. Puede servir el conocido programa Hyper Terminal de Windows. Hay que configurarlo para que la comunicacin se realice a 9600 baudios, 8 bits de datos, sin paridad y un bit de stop. 4.6.37 Ejemplo 37: El USART, recepcin/transmisin de caracteres Enunciado El ejemplo emplea el USART que integran los PIC16F87X. Consiste en esperar que se reciba un carcter o byte. Este se visualiza sobre los leds de la puerta B y acto seguido se retransmite a modo de eco. Requisitos Habilitar los leds cerrando el jumper JP1 Cable de comunicaciones Programa de comunicaciones

4-26

PIC Laboratory
Tema 4: Tutorial
Comentarios El ejemplo propone el empleo de una interrupcin que se provoca cuando se recibe un byte. El programa de tratamiento lo visualiza sobre los leds de salida y lo retransmite. El cable de comunicaciones que se entrega con el entrenador "PIC Laboratory" no sirve ya que este emplea la lnea RTS para re iniciar a dicho entrenador cuando se trabaja junto con el software Real_PIC. Algunos programas de comunicaciones puede activar esta lnea con lo que el PIC estar constantemente en el estado de RESET. Es necesario preparar un cable de comunicaciones para comprobar el funcionamiento del ejemplo y dos conectores DB9, uno macho (DB9M) y otro hembra (DB9H). Se realizan las siguientes conexiones: La patilla 2 del DB9M con la 2 del DB9H, la patilla 3 del DB9M con la 3 del DB9H y la patilla 5 del DB9M con la 5 del DB9H. Tambin necesitamos de un software de comunicaciones. Este puede ser el conocido programa Hyper Terminal de Windows. Hay que configurarlo para que la comunicacin se realice a 9600 baudios, 8 bits de datos, sin paridad y un bit de stop. 4.6.38 Ejemplo 38: Saludo Enunciado Se trata de visualizar sobre la pantalla LCD una serie de mensajes publicitarios acerca de las caractersticas del entrenador "PIC Laboratory". Requisitos Habilitar el LCD cerrando el jumper JP3 El jumper JP4 debe estar en la posicin RB0

Comentarios Es un simple programa de demostracin que viene grabado de serie sobre el PIC del entrenador "PIC Laboratory" . 4.6.39 Ejemplo 39: Adivina el Nmero Enunciado Se trata del popular juego consistente en adivinar un nmero comprendido entre 00 y 99, con un nmero limitado de oportunidades. Requisitos Habilitar el LCD cerrando el jumper JP3 El jumper JP4 debe estar en la posicin RB0

Comentarios Es una aplicacin de tipo ldica en el que se gestiona el teclado y la pantalla LCD. Mediante una serie de mensajes el jugador conoce en todo momento el desarrollo del juego.

4-27

PIC Laboratory
Tema 4: Tutorial

4-28

PIC Laboratory
Anexo 1: El mdulo LCD

ANEXO 1: El mdulo LCD


AN1.1 INTRODUCCIN El presente anexo est destinado a una realizar breve descripcin del funcionamiento del mdulo LCD incluido en el entrenador "PIC Laboratory". Se trata de un mdulo microcontrolado capaz de representar 2 lneas de 16 caracteres cada una. A travs de 8 lneas de datos se le enva el carcter ASCII que se desea visualizar as como ciertos cdigos de control que permiten realizar diferentes efectos de visualizacin. Igualmente mediante estas lneas de datos el mdulo puede devolver informacin de su estado interno. Con otras tres seales adicionales se controla el flujo de informacin entre el mdulo LCD y microcontrolador que lo gobierna. A continuacin se presenta la descripcin de seales empleadas por el mdulo LCD as como el nmero de patilla a la que corresponden.

PIN N 1 2 3

SMBOLO Vss Vdd Vee

DESCRIPCIN Patilla de tierra de alimentacin Patilla de alimentacin de +5V Patilla de contraste del cristal lquido. Normalmente se conecta a un potencimetro a travs del cual se aplica una tensin variable entre 0 y +5V que permite regular el contraste de la pantalla. Selecciona entre el registro de control y el registro de datos: RS=0 Seleccin del registro de control RS=1 Seleccin del registro de datos

RS

R/W

Seal de lectura/escritura: R/W=0 El Mdulo LCD es escrito R/W=0 El Mdulo LCD es ledo

Seal de activacin del mdulo LCD: E=0 Mdulo desconectado E=1 Modulo habilitado

7-14

D0-D7

Bus de datos bi-direccional. A travs de estas lneas se realiza la transferencia de informacin entre el mdulo LCD y el microcontrolador que lo gestiona.

AN1-2 CONEXIN CON "PIC Laboratory" El interface entre este mdulo LCD y el entrenador "PIC Laboratory" se realiza, tal y como se explic en el apartado 1.3.10 del Tema 1. Las seales empleadas son las siguientes:

AN1-1

PIC Laboratory
Anexo 1: El mdulo LCD
RB0-RB7 Estn conectadas a las lneas de datos D0-D7 del mdulo. A travs por tanto, de la puerta B, se envan cdigos ASCII o de control al mdulo o, se recibe por parte de este, el estado interno del mismo. La puerta B habr que programarla como salida cuando se vayan a enviar cdigos ASCII o de control y, como entrada, cuando se desee conocer el estado interno del mdulo. RA1 Se conecta con la seal de control R/S. Sacando un nivel lgico "0" por esta lnea se selecciona el registro de control del mdulo. Sacando un nivel lgico "1" se selecciona el registro de datos. Esta lnea debe programarse como salida. Se conecta con la seal R/W. Sacando un nivel lgico "0" por ella, el mdulo es escrito con la informacin presente en ese momento en la puerta B que deber actuar como salida. Sacando un "1" se lee el estado interno del mdulo LCD. Dicho estado se recibe a travs de la puerta B que deber estar programada como entrada. La lnea RA2 debe programarse como salida. Se conecta con la seal E. Cuando se aplica un nivel "1" el mdulo queda habilitado y es posible por tanto la transferencia de informacin entre la puerta B y las lneas de datos D0-D7. Aplicando un "0" el mdulo queda desconectado y sus lneas de datos D0-D7 en alta impedancia. RA3 debe programarse tambin como salida.

RA2

RA3

AN1.3 JUEGO DE INSTRUCCIONES A continuacin se presentan los diferentes cdigos de control o instrucciones que admite el mdulo LCD. Gracias a ellos es posible configurar diferentes opciones de trabajo del mdulo LCD y conseguir diferentes efectos de visualizacin. Consisten en diferentes cdigos que se introducen a travs del bus de datos del mdulo LCD conectado a la puerta B del entrenador "PIC Laboratory". Se indica tambin el nivel lgico que deben tener las lneas de control RS y R/W, suponiendo que la seal de habilitacin E est permanentemente activada. AN1.3.1 CLEAR DISPLAY Borra el mdulo LCD y la RAM de datos (DD RAM), colocando el cursor en la primera posicin (direccin 0). Pone el bit I/D a "1" por defecto. Cdigo: RS 0 Tiempo de ejecucin: 1.64 mS AN1.3.2 HOME Coloca el cursor en la posicin de inicio de la pantalla (direccin 0) y hace que el display comience a desplazarse desde la posicin original. El contenido de la memoria RAM de datos de visualizacin (DD RAM) permanecen invariables. La direccin de la memoria RAM de datos para la visualizacin (DD RAM) es puesta a 0. Cdigo: RS 0 Tiempo de ejecucin: 1.64 mS R/W 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 0 DB2 0 DB1 1 DB0 X R/W 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 0 DB2 0 DB1 0 DB0 1

AN1-2

PIC Laboratory
Anexo 1: El mdulo LCD
AN1.3.3 ENTRY MODE SET Establece la direccin de movimiento del cursor y establece si la visualizacin se va desplazando a la siguiente posicin de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la DD RAM o CG RAM. Para visualizar normalmente poner el bit S a "0". Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.4 DISPLAY ON/OFF CONTROL Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este ltimo debe o no parpadear (B). Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.5 CURSOR OR DISPLAY SHIFT Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualizacin DD RAM. Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.6 FUNCTION SET Establece el tamao del interface con el bus de datos en 4 u 8 bits (DL). Tambin determina el nmero de lneas del display (N) y tipo de carcter (F). Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.7 SET THE CG RAM ADDRESS El mdulo LCD adems de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir hasta 8 caracteres grficos. La composicin de estos caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carcter grfico definido por el usuario se compone de 8 bytes que se almacenan en sucesivas posiciones de la CG RAM. R/W 0 DB7 0 DB6 0 DB5 1 DB4 DL DB3 N DB2 F DB1 X DB0 X R/W 0 DB7 0 DB6 0 DB5 0 DB4 1 DB3 S/C DB2 R/L DB1 X DB0 X R/W 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 1 DB2 D DB1 C DB0 B R/W 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 0 DB2 1 DB1 I/D DB0 S

AN1-3

PIC Laboratory
Anexo 1: El mdulo LCD
Mediante esta instruccin se establece la direccin de la memoria CG RAM a partir de la cual se irn almacenando los bytes que definen un carcter grfico. Ejecutado este comando todos los datos que se escriban o se lean posteriormente, lo hacen desde esta memoria CG RAM. Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.8 SET THE DD RAM ADDRESS Los caracteres o datos que se van visualizando, se van almacenando previamente en una memoria llamada DD RAM para de aqu pasar a la pantalla. Mediante esta instruccin se establece la direccin de memoria DD RAM a partir de la cual se irn almacenado los datos a visualizar. Ejecutado este comando, todos los datos que se escriban o lean posteriormente los hacen desde esta memoria DD RAM. Las direcciones de la 0x80h a la 0x8Fh corresponden con los 16 caracteres del primer rengln y de la 0xC0h a la 0xCFh con los 16 caracteres del segundo rengln, en elmodelo de pantalla empleada por el "PIC Laboratory".. Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.9 READ BUSY FLAG & ADDRESS Cuando el mdulo LCD est realizando cualquiera de las anteriores instrucciones, lconsume un cierto tiempo de ejecucin en el que no se le debe mandar ninguna otra. Para ello dispone de un flag llamado BUSY (BF) que indica que el mdulo est ocupado. Este instruccin de lectura informa del estado de dicho flag adems de proporcionar el valor del contador de direcciones de la CG RAM o de la DD RAM segn la ltima que se haya empleado. Cdigo: RS 0 Tiempo de ejecucin: 40 S AN1.3.10 WRITE DATA TO GG OR DD RAM Mediante este comando se escribe en la memoria DD RAM los datos que se quieren presentar en pantalla y que corresponden a los diferentes cdigos ASCII de los caracteres a visualizar. Igualmente tambin es posible escribir en la memoria CG RAM los diferentes bytes que permiten confeccionar caracteres grficos a gusto del usuario. El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento DD RAM o la de direccionamiento CG RAM. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 BF Direccin de la CG RAM o de la DD RAM R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 0 1 Direccin de la DD RAM DB0 R/W DB7 DB6 DB5 0 0 1 DB4 DB3 DB2 DB1 Direccin de la CG RAM DB0

AN1-4

PIC Laboratory
Anexo 1: El mdulo LCD
Cdigo: RS 1 Tiempo de ejecucin: 40 S AN1.3.11 READ DATA FROM CG OR DD RAM Mediante este comando se lee, desde la memoria DD RAM, los datos que haya almacenados y que sern los cdigos ASCII de los caracteres visualizados. Igualmente se lee, de la memoria CG RAM, los diferentes bytes con los que se ha confeccionado un determinado carcter grfico. El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento de la DD RAM o la de direccionamiento CG RAM. Cdigo: RS 1 Tiempo de ejecucin: 40 S AN1.3.12 ABREVIATURAS Se listan a continuacin las abreviaturas empleadas en los cdigos anteriores y su significado: S S I/D I/D S/C S/C R/L R/L BF BF DL DL N N F F B C D X =1 =0 =1 =0 =1 =0 =1 =0 =1 =0 =1 =0 =1 =0 =1 =0 =1 =1 =1 = Desplaza la visualizacin cada vez que se escribe un dato. Modo normal. Incremento del cursor Decremento del cursor Desplaza el display Mueve el cursor Desplazamiento a la derecha Desplazamiento a la izquierda Mdulo ocupado Mdulo disponible Bus de datos de 8 bits Bus de datos de 4 bits LCD de dos lneas LCD de una lnea Carcter de 5 x 10 puntos Carcter de 5 x 7 puntos Parpadeo de cursor ON Cursor ON Display ON Indeterminado R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 1 Cdigo ASCII o byte del carcter grfico DB0 R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 0 Cdigo ASCII o byte del carcter grfico DB0

AN1.4 JUEGO DE CARACTERES La figura AN1-1 muestra el juego de caracteres que admite el presente mdulo LCD y que estn establecidos por el fabricante. Una memoria ROM interna contiene la definicin de cada uno de ellos.

AN1-5

PIC Laboratory
Anexo 1: El mdulo LCD

Figura AN1-1. Juego de caracteres AN1.5 CARACTERES GRFICOS El usuario puede definir hasta 8 caracteres de 5 x 7 puntos o 4 de 5 x 10. Se seleccionan y visualizan enviando a la DD RAM cualquier valor entre 00 y 07 08 y 0Fh como si de un cdigo ASCII se tratara. Los caracteres grficos se definen introduciendo en sucesivas direcciones de la CG RAM unos bytes cuyos patrones binarios definen el carcter tal y como se muestra en la figura 4-2.

AN1-6

PIC Laboratory
Anexo 1: El mdulo LCD
Un carcter de 5 x 7 necesita de 8 octetos en la CG RAM para ser definido, uno de 5 x 10 necesita de 16. La CG RAM es una memoria de 64 posiciones en total. En el ejemplo de la figura AN1-2, para definir la R en 5 x 7 se introducen 8 octetos en las 8 primeras posiciones ( 0 a la 7) de la CG RAM. Cada bit de cada uno de esos octetos que valga nivel "1" implica que su correspondiente pixel en el LCD se active. Como es el primer conjunto de 8 bytes es decir, el primer carcter de la CG RAM, este se visualizar enviando el cdigo 00 a la DD RAM, como si fuera cualquier otro cdigo ASCII.

Figura AN1-2. Generando caracteres grficos AN1.6 SECUENCIA DE INICIALIZACIN El mdulo LCD ejecuta automticamente una secuencia de inicio interna en el instante de aplicarle la tensin de alimentacin si se cumplen los requisitos de alimentacin que indica el fabricante. Estos consisten bsicamente en que dicha tensin pase de 0.2 a 4.5V en un tiempo comprendido entre 0.1 y 10mS. Igualmente el tiempo de desconexin debe ser al menos de 1mS antes de una nueva conexin. La secuencia de inicio que realiza la electrnica interna del mdulo LCD se puede resumir en los pasos siguientes: 1.CLEAR DESPLAY El flag BUSY se mantiene a 1 (ocupado) durante 15mS hasta que finaliza todo el proceso de inicializacin. 2.FUNCTION SET Se elige por defecto el tamao del bus de datos a 8 bits (DL=1) y el nmero de renglones del display en 1 (N=0).

AN1-7

PIC Laboratory
Anexo 1: El mdulo LCD
3.DISPLAY ON/OFF CONTROL Se selecciona por defecto el dysplay en OFF (D=0), el cursor en OFF (C=0) y el parapadeo del mismo en OFF (B=0). 4.ENTRY MODE SET Se elige por defecto el incremento del cursor (I/D=1) y el modo normal del display (S=0). Se selecciona la primera posicin de la DDRAM. Si no se satisfacen las condiciones de alimentacin, la secuencia de inicializacin habra que realizarla por software, donde las instrucciones que aplica el usuario podran ser las expuestas anteriormente o cualquier otra segn sus propias necesidades. Es importante realizar una temporizacin de unos 15 mS tras enviar la primera instruccin al mdulo LCD para la completa reinicializacin interna del mismo. AN1.7 DIAGRAMA DE TIEMPOS La figura AN1-3 muestra el diagrama y tabla de tiempos para distintos dispositivos controladores LCD que van integrados en el propio mdulo. Es posible que estos tiempos se vean modificados por las distintas versiones que van apareciendo en el mercado.

Figura AN1-3. Diagramas de tiempos

AN1-8

PIC Laboratory
Anexo 1: El mdulo LCD

AN1-8 RUTINAS DE CONTROL En este apartado se presentan una serie de rutinas escritas en el ensamblador MPASM de MICROCHIP con objeto de proporcionar al usuario una idea de cmo gestionar las diferentes actividades a realizar con el mdulo LCD. Estn diseadas para los PIC 16F876/877 a 20 MHz de velocidad como los que se pueden incorporar en el entrenador "PIC Laboratory". Las rutinas emplean dos posiciones de memoria RAM para manejar sus propios datos variables. El inicio de esas posiciones ha de ser declarado por el usuario en su programa fuente mediante el empleo de la directiva: Lcd_var equ 0xdd ;Inicio de variables de las rutinas LCD a partir de la posicin 0xdd

Esas rutinas estn incluidas en el fichero LCD_CXX.INC. Dicho fichero ha de ser incluido en el programa fuente de aplicacin del usuario mediante el empleo de la directiva: include LCD_CXX.INC

Al principio de las rutinas se realizan una serie de definiciones previas de las lneas de E/S como las que se muestran a continuacin. Estas definiciones sirven para el hardware empleado en "PIC Laboratory" aunque puden ser modificadas para otros casos. #define ENABLE #define DISABLE #define LEER #define ESCRIBIR #define OFF_COMANDO #define ON_COMANDO CBLOCK bsf PORTA,3 bcf PORTA,3 bsf PORTA,2 bcf PORTA,2 bcf PORTA,1 bsf PORTA,1 Lcd_var Lcd_Temp_1 Lcd_Temp_2 ENDC Una vez definidas las posiciones que emplean las variables de las rutinas, as como incluido el fichero que las contiene, el usuario podr hacer uso de ellas tantas veces como sea necesario. Se facilita de forma notable el escribir programas destinados a la visualizacin mediante pantalla LCD. AN1.8.1 LCD_E Genera un pulso por la patilla RA2 (seal E) para activar al mdulo LCD. Entre un pulso y el siguiente se genera una temporizacin de unos 40 S a una frecuencia de trabajo de 20MHz. Esta rutina quiz deba modificarse en futuras versiones de los mdulos LCD, segn caractersticas del fabricante. ;Activa seal E ;Desactiva seal E ;Pone LCD en Modo RD ;Pone LCD en Modo WR ;Desactiva RS (modo comando) ;Activa RS (modo dato ;Inicio de las variables. Ser la primera ;direccn libre disponible

AN1-9

PIC Laboratory
Anexo 1: El mdulo LCD

;************************************************************************** ;LCD_E: Pulso de Enable. En los nuevos LCD's esta seal debe estar a "0" unos 40uS ;antes de volver a ponerse a "1". ; LCD_E ENABLE ;Activa E nop DISABLE ;Desactiva E movlw .75 movwf Lcd_Temp_1 LCD_E_1 decfsz Lcd_Temp_1,F ;Pierde unos 40 uS para la constante de tiempo Tc goto LCD_E_1 ;de los nuevos mdulos LCD de winteck return AN1.8.2 LCD_BUSY Chequea el estado del flag Busy del LCD y espera a que finalice cualquier instruccin previa antes de retornar. ;************************************************************************** ;LCD_BUSY: Lectura del Flag Busy y la direccin. ; LCD_BUSY LEER ;Pone el LCD en Modo RD bsf STATUS,RP0 movlw H'FF' movwf PORTB ;Puerta B como entrada bcf STATUS,RP0 ;Selecciona el banco 0 ENABLE ;Activa el LCD nop LCD_BUSY_1 btfsc PORTB,7 ;Chequea bit de Busy goto LCD_BUSY_1 DISABLE ;Desactiva LCD bsf STATUS,RP0 clrf PORTB ;Puerta B salida bcf STATUS,RP0 ESCRIBIR ;Pone LCD en modo WR return AN1.8.3 LCD_REG Deposita el cdigo de instruccin contenido en el registro W sobre la puerta B. Espera que el LCD ejecute la ltima operacin y genera el pulso de activacin en la seal E, enviando dicho cdigo a la pantalla. ;************************************************************************** ;LCD_REG: Escritura de comandos en el LCD. Enva el comando presente en el W LCD_REG OFF_COMANDO movwf PORTB call LCD_BUSY goto LCD_E ;Desactiva RS (modo comando) ;Cdigo de comando. ;LCD libre?. ;SI.Genera pulso de E.

AN1-10

PIC Laboratory
Anexo 1: El mdulo LCD
AN1.8.4 LCD_DATO Deposita el cdigo ASCII del carcter a visualizar presente en el registro W, sobre la puerta B. Espera a que el LCD ejecute la ltima operacin y genera el pulso de activacin en la seal E. El carcter enviado se visualiza sobre la posicin actual del cursor. ;************************************************************************** ;LCD_DATO: Escritura de datos en DDRAM o CGRAM. Enva el dato presente en el W ; LCD_DATO OFF_COMANDO ;Desactiva RS (modo comando) movwf PORTB ;Valor ASCII a sacar por portb call LCD_BUSY ;Espera a que se libere el LCD ON_COMANDO ;Activa RS (modo dato). goto LCD_E ;Genera pulso de E AN1.8.5 LCD_INI Realiza la inicializacin del mdulo LCD segn los tiempos marcados por el fabricante (15 mS). En este ejemplo la pantalla queda inicializada con un interface de 8 bits de bus de datos, 2 lneas de visualizacin y caracteres de 5 x 7 puntos. ;*************************************************************************** ;LCD_INI: inicializacin del LCD enviando el comando "Function Set" 3 veces consecutivas ;con un intervalo de unos 5 mS. El LCD queda borrado y el cursor en la primera posicin LCD_INI movlw call call movlw call call movlw call call movlw call return b'00111000' LCD_REG ;Cdigo de instruccin LCD_DELAY ;Temporiza b'00111000' LCD_REG ;Cdigo de instruccin LCD_DELAY ;Temporiza b'00111000' LCD_REG ;Cdigo de instruccin LCD_DELAY ;Temporiza b'00000001' ;Borra LCD y Home. LCD_REG

AN1-11

PIC Laboratory
Anexo 1: El mdulo LCD
AN1.8.6 LCD_DELAY Genera una temporizacin de 5 mS de propsito general. Se emplean para ellos las variables LCD_Temp_1 y LCD_Temp_2. ;***************************************************************************** ;LCD_DELAY: Rutina de temporizacin de unos 5 mS a 20MHz. Se emplean las variables Lcd_Temp_1 ;y LCD_Temp_2 en lugar del TMR0. Este queda libre para las aplicaciones del usuario LCD_DELAY: clrwdt movlw movwf clrf decfsz goto decfsz goto return .35 Lcd_Temp_1 Lcd_Temp_2 Lcd_Temp_2,F LCD_DELAY_1 Lcd_Temp_1, LCD_DELAY_1

LCD_DELAY_1:

AN1.9 DIMENSIONES DEL MDULO LCD En la figura AN1-4 se muestra las dimensiones mecnicas del mdulo LCD as como el esquema por bloques del mismo. Hay que destacar que la patilla N 1 es la primera empezando por la izquierda.

Figura AN1-4. Dimensiones mecnicas y diagrama por bloques de la pantalla LCD de 2 x 16

AN1-12

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877

ANEXO 2: Caractersticas generales del PIC16F876/877


AN2.1 INTRODUCCION El presente anexo est destinado a hacer un breve resumen de las caractersticas generales de los PIC 16F876 y F877 soportados por el entrenador "PIC Laboratory". Para mas informacin se recomienda acudir a la pgina www.microchip.com donde podemos encontrar los data sheets completos con todos los detalles tcnicos de todos los modelos de PIC, notas de aplicacin, actualizaciones de las diferentes herramientas software, etc. AN2.2 CARACTERISTICAS GENERALES A continuacin se detallan las caractersticas ms relevantes que definen la CPU y perifricos que incluyen los microcontroladores PIC 16F876 y F877 de la gama media. CPU con arquitectura RISC (juego de instrucciones reducido) Juego de 35 instrucciones de un nico word de 14 bits cada una de ellas. Todas las instrucciones se ejecutan en un nico ciclo de instruccin excepto los saltos que necesitan dos. Un ciclo de instruccin necesita a su vez de cuatro ciclos de reloj. Trabajando a 20MHz una instruccin se ejecuta en 200nS. Memoria FLASH de programa de 8K word de 14 bits, 368 bytes de memoria RAM para datos variables y 256 bytes de memoria EEPROM para datos no voltiles. Patillaje compatible pin a pin con los populares modelos predecesores 16C73/74/76/77. Capacidad de interrupcin que puede ser provocada por 14 fuentes o eventos distintos. Stack autnomo y transparente de 8 niveles Modos de direccionamiento directo, indirecto y relativo. Circuito Power-On Reset (POR) integrado. Automticamente genera la seal de arranque cuando la tensin de alimentacin alcanza un determinado valor. Temporizadores Power-up Timer (PWRT) y Oscillator Start-up Timer (OST) que retrasan el arranque, en espera de la total estabilizacin tanto de la tensin de alimentacin como de la frecuencia de trabajo del oscilador. Temporizador WDT o Perro guardin capaz de provocar un arranque automtico en determinadas ocasiones. Modo de trabajo en standby que reduce el consumo as como velocidades del oscilador seleccionables. Tensin de alimentacin de 2 a 5.5V con un bajo consumo: < 2 mA a 5V y 4MHz; 20A a 3V y 32KHz;< 1A en el modo de espera o stanby. Corriente de salida de hasta 25 mA por pin Temporizador/contador de 8 bits con preescaler (TMR0) Temporizador/contador de 16 bits con preescaler (TMR1) Temporizador/contador de 8 bits con registro de periodos, prescaler y postcaler (TMR2) Dos mdulos CCP independientes para la captura, comparacin y modulacin de anchura de pulsos (PWM). Convertidor analgico/digital con resolucin de 10 bits y hasta 8 canales de entrada. Puerta serie sncrona (SSP) con modalidad de bus SPI (modo master) y bus I2C (Master/Slave). Receptor/Transmisor universal sncrono/asncrono (USART). Puero paralelo esclavo (PSP) de 8 bits para transferencias en paralelo con seales de control del tipo read (RD), write (WR) y sleccin (CS). Slo est disponible en el modelo PIC16F877.

AN2-1

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877
AN2.3 DESCRIPCION DE PINES La figura AN2-1 presenta la distribucin de patillas para el modelo PIC16F876 de 28 pines y el PIC16F877 de 40. A continuacin se presenta una tabla que resume brevemente la finalidad de cada una de ellas.

Figura AN2-1. Diagrama de conexiones del PIC16F876/877 NOMBRE OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV TIPO DESCRIPCION I Entrada para el cristal del oscilador/entrada de oscilador externo. O Salida del cristal del oscilador. En el modo RC por este pin sale de la frecuencia de OSC1 y denota la ejecucin de un ciclo de instruccin I/P Entrada de reset activa por nivel bajo. Por esta patilla tambin se introduce la tensin Vpp de grabacin y la tensin de test THV PUERTA A: 6 lneas RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/SS/AN4 I/O I/O I/O I/O I/O I/O Entrada/salida digital RA0 o entrada analgica del canal 0 AN0 Entrada/salida digital RA1 o entrada analgica del canal 1 AN1 Entrada/salida digital RA2, entrada analgica AN2 o entrada de tensin de referencia VREFEntrada/salida digital RA3, entrada analgica AN3 o entrada + de tensin de referencia VREF+ Entrada/salida digital en colector abierto RA4. Entrada de reloj para el TMR0 en modo contador Entrada/salida digital RA5 o entrada analgica AN4. Tambin acta como seal SS de seleccin de esclavo para el mdulo SSP.

AN2-2

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877
NOMBRE TIPO PUERTA B: 8 lneas RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6 RB7 I/O I/O I/O I/O I/O I/O I/O I/O Entrada/salida digital RB0 o entrada de interrupcin externa INT Entrada/salida digital Entrada/salida digital RB2 Entrada/salida digital RB3. Entrada en baja tensin de programacin PGM Entrada/salida digital RB4. Produce interrupcin por cambio de estado Entrada/salida digital RB5. Produce interrupcin por cambio de estado Entrada/salida digital RB6. Produce interrupcin por cambio de estado Entrada/salida digital RB7. Produce interrupcin por cambio de estado PUERTA C: 8 lneas RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT I/O I/O I/O I/O I/O I/O I/O I/O Entrada/salida digital RC0, salida T1OSO de oscilador del TMR1 o entrada T1CKI de reloj para el TMR1 Entrada/salida digital RC1, entrada de oscilador del TMR1 o E/S del mdulo CCP2 Entrada/salida digital RC2 o E/S del mdulo CCP1 Entrada/salida digital RC3 o E/S de reloj para los modos SPI (SCK) e I2C (SCL) de la puerta serie sncrona (SSP) Entrada/salida digital RC4, entrada SDI de datos para el bus SPI o E/S SDA de datos para el bus I2C. Entrada/salida digital RC5 o salida SDO de datos para el bus SPI Entrada/salida digital RC6, transmisor Tx del USART en modo asncrono o reloj del USART en modo sncrono Entrada/salida digital RC7, recepcinRx del USART en modo asncrono o lnea de datos del USAR en modo sncrono DESCRIPCION

AN2-3

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877
NOMBRE TIPO DESCRIPCION PUERTA D: 8 lneas, slo en el PIC16F877 RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 I/O I/O I/O I/O I/O I/O I/O I/O Entrada/salida digital RD0 o lnea PSP0 del puerto esclavo paralelo Entrada/salida digital RD1 o lnea PSP1 del puerto esclavo paralelo Entrada/salida digital RD2 o lnea PSP2 del puerto esclavo paralelo Entrada/salida digital RD3 o lnea PSP3 del puerto esclavo paralelo Entrada/salida digital RD4 o lnea PSP4 del puerto esclavo paralelo Entrada/salida digital RD5 o lnea PSP5 del puerto esclavo paralelo Entrada/salida digital RD6 o lnea PSP6 del puerto esclavo paralelo Entrada/salida digital RD7 o lnea PSP7 del puerto esclavo paralelo PUERTA E: 3 lneas, slo en el PIC16F877 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN6 Vss Vdd I/O I/O I/O P P Entrada/salida digital RE0, lnea RD de control de lectura del puerto paralelo o entrada analgica AN5 Entrada/salida digital RE1, lnea WR de control de escritura sobre el puerto paralelo o entrada analgica AN6 Entrada/salida digital RE2, lnea CS de seleccin del puerto paralelo o entrada analgica AN7 Entrada de alimentacin de tierra o GND Entrada de alimentacin de tensin positiva de +2 a +5.5Vcc

AN2.4 ORGANIZACIN DE LA MEMORIA FLASH DE PROGRAMA Los dispositivos PIC16F876/877 disponen de un total de 8K word de memoria de programa organizada en cuatro bancos de 2K cada uno, tal y como se muestra en la figura AN2-2. Cabe destacar que en la arquitectura de los PIC las instrucciones son de tamao fijo y ocupan un nico word de 14 bits. Cuando se dice que la memoria de programa es de 8K word es que admite realmente 8K de instrucciones. El contador de programa (PC) es de 13 bits por lo que puede direccionar toda la memoria. En el caso de ejecutar instrucciones de tipo CALL o, bien cuando se produce una interrupcin, el PC se guarda en la pila o memoria de stack. Cuando se ejecutan instrucciones de retorno como RETURN, RETFIE o RETLW le valor del PC se restaura desde dicho stack. El stack es una memoria tipo LIFO de 8 niveles y 13 bits por nivel. Esto permite anidar hasta un mximo de 8 subrutinas y/o interrupciones. La posicin 0x0000 es la posicin conocida como vector de RESET. Cada vez que se produce esta situacin el PC se carga con el valor 0x0000 con lo que empieza la ejecucin del programa a partir de esa direccin. Lo normal es que en esta direccin el usuario coloque una instruccin del tipo GOTO xxxx que enve al PC al inicio del programa de aplicacin. Otra posicin destacable es la 0x0004, conocida como vector de interrupcin. Sea cual fuere la fuente de interrupcin que se haya producido, el PC se carga con 0x0004. En esta direccin el usuario coloca otra instruccin del tipo GOTO xxxx que enva al PC al inicio del programa de tratamiento de la interrupcin. Desde el vector de RESET (0x0000) al vector de interrupcin (0x0004) hay un rango de 4 posiciones que el usuario puede emplear para introducir instrucciones fundamentales que permitan habilitar o no interrupciones, iniciar el PCLATH, el STATUS, etc..

AN2-4

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877

Figura AN2-2. Mapa de memoria de programa para PIC16F876/877 El entrenador "PIC Laboratory" incorpora de serie un PIC16F876 aunque tambin acepta un PIC16F877. Ambos dispositivos vienen grabados de fbrica con un programa monitor llamado PICMOS76 o PICMOS77. Mediante este programa monitor y el software Real-PIC instalado en un PC, se dispone de las clsicas herramientas para el diseo de aplicaciones. Herramientas con las cuales el usuario podr descargar sus propios programas de aplicacin, ejecutarlos, editar/modificar registros, etc. El programa monitor PICMOSxx est instalado en la parte alta de la memoria, ocupando los bancos 2 y 3. Es decir, el rango de direcciones que va desde la 0x1000 hasta la 0x1FFF (4K) est ocupado y no se debe emplear. Los programas de aplicacin del usuario se deben grabar en los bancos 0 y 1 cuyo rango de direcciones es 0x0004 hasta 0x0FFF (4K). El vector de RESET y las tres siguientes posiciones 0x0000-0x0003 tambin son empleadas por el programa monitor. AN2.5 LA MEMORIA RAM DE DATOS La memoria de RAM de datos est organizada en 4 bancos de 128 registros de 8 bits cada uno. Algunos de esos registros los emplea el propio microcontrolador como registros de estado y control de perifricos. Reciben el nombre de SFR (Special Function Registers). Otros registros no estn implementados y, finalmente, hay algunos que estn duplicados en los distintos bancos. En definitiva al usuario le quedan libres a su disposicin un total de 368 registros donde poder almacenar otros tantos bytes de datos. Se tratan de registros tipo RAM que se pueden leer o escribir tantas veces sea necesario. La informacin contenida en ellos es voltil y desaparece cada vez que falte la tensin de alimentacin. En la figura AN2-3 se muestra la distribucin de los distintos registros sobre los diferentes bancos. Tambin se indica la direccin y el nombre que tienen asignados. Posteriormente se har una breve descripcin de la misin de los registros especiales SFR. Para conocer ms acerca de los mismos, se recomienda acudir a www.microchip.com donde se proporciona una explicacin detallada de cada uno de ellos.

AN2-5

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877

Figura AN2-3. Detalle de la memoria RAM de datos Se puede apreciar que ciertamente algunos registros SFR estn repetidos en los 4 bancos. Dichos registros son considerados esenciales y pueden ser empleados en cualquier momento sin necesidad de tener que andar cambiando de banco.

AN2-6

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877
REGISTRO INDF PCL TMR0 OPTION_REG STATUS FSR PORTA TRISA PORTB TRISB PORTC TRISC PORTD TRISD PORTE TRISE PCLATH INTCON PIR1 PIE1 PIR2 PIE2 PCON TMR1L TMR1H T1CON TMR2 PR2 T2CON SSPBUF SSPCON SSPCON2 SSPADD SSPSTAT CCPR1L CCPR1H CCP1CON RCSTA TXSTA TXREG RCREG SPBRG CCPR2L CCPR2H CCP2CON ADRESH ADRESL DESCRIPCION Registro ficticio empleado en los direccionamientos indirectos Representa la parte baja del contador de programa o PC Registro contador/temporizador TMR0 Registro de opciones del TMR0, WDT, RB Pull_Up,etc Contiene informacin del estado interno de la CPU Contiene el ndice que apunta a la direccin que se va a emplear en los direccionamientos indirectos Sus 6 bits de menos peso permiten acceder directamente a las 6 lneas de la puerta A Con sus 6 bits de menos peso se establece qu lneas de la puerta A actan como entradas o salidas Accede directamente a las 8 lneas de la puerta B Determina qu lneas de la puerta B actan como entradas o como salidas Accede directamente a las 8 lneas de la puerta C Determina qu lneas de la puerta C actan como entradas o como salidas Accede directamente a las 8 lneas de la puerta D. Slo est disponible en el PIC16F877 Determina qu lneas de la puerta D actan como entradas o como salidas. Slo est disponible en el PIC16F877 Accede directamente a las tres lneas de la puerta D. Slo est disponible en el PIC16F877 Determina qu lneas de la puerta D actan como entradas o como salidas. Slo est disponible en el PIC16F877 Representa los bits de ms peso del PC. Se emplea para seleccionar los distintos bancos de la memoria de programa cuando va a realizarse algn tipo de salto Registro para el control de las interrupciones bsicas habilitndolas o no Registro de estado de las interrupciones de los perifricos. Indica si se ha producido o no alguna Registro para la habilitacin o no de las interrupciones de los perifricos Registro de estado de las interrupciones de perifricos (cont.) Registro para la habilitacin o no de las interrupciones de los perifricos (cont.) Registro de control de POR y BOR Parte baja de los 16 bits del TMR1 Parte alta de los 16 bits del TMR1 Registro de control para el TMR1 Registro del contador /temporizador TMR2 Registro de periodos del TMR2 Registro de control del TMR2 Buffer de transmisin/recepcin del mdulo SSP Registro de control del mdulo SSP Registro auxiliar de control del mdulo SSP Registro de direcciones del mdulo SSP Registro de estado del mdulo SSP Registro parte baja de los 16 bits del mdulo CCP1 Registro parte alta de los 16 bits del mdulo CCP1 Registro de con control del mdulo CCP1 Registro de estado del receptor de la USART Registro de estado del transmisor de la USART Registro transmisor del USART Registro receptor del USART Registro generador de baudios Registro parte baja de los 16 bits del mdulo CCP2 Registro parte alta de los 16 bits del mdulo CCP2 Registro de con control del mdulo CCP2 Parte alta del resultado de la conversin A/D Parte baja del resultado de la conversin A/D

AN2-7

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877
ADCON0 ADCON1 EEDATA EEADR EEDATH EEADRH EECON1 EECON2 Registro de control del convertidor A/D Registro auxiliar de control del convertidor A/D Parte baja del registro de datos para la memoria FLASH o EEPROM de programa o datos Parte baja del registro de direcciones de la memoria FLASH o EEPROM de programa o datos Parte alta del registro de datos para la memoria FLASH de programa Parta alta del registro de direcciones para la memoria FLASH de programa Registro de control para el acceso a memoria FLASH o EEPROM Registro auxiliar de control para el acceso a la memoria FLASH o EEPROM

AN2.6 CONDICIONES INICIALES EN EL RESET A modo de resumen se presentan a continuacin una serie de tablas que resumen el estado interno que adquieren los registros internos, en determinadas ocasiones. As, en la tabla de la figura AN2-4, se muestran ciertos bits del registro de estado y su significado.

Figura AN2-4. Bits del registro de estado En la tabla de la figura AN2-5 se muestra el valor adquirido por ciertos registros tras la condicin de RESET.

Figura AN2-5. Valores adquiridos por ciertos registros tras el RESET Finalmente, en la tablas de las figuras AN2-6 y AN2-7 se muestra el valor que adquieren todos los registros internos del PIC segn se produzcan diferentes situaciones.

AN2-8

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877

Leyenda: u = no vara; x = desconocido; - = bit no implementado, se lee como 0; q = depende de la condicin Figura AN2-6. Los registros internos tras el RESET

AN2-9

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877

Leyenda: u = no vara; x = desconocido; - = bit no implementado, se lee como 0; q = depende de la condicin Figura AN2-7.Los registros internos tras el RESET. Continuacin AN2-7 JUEGO DE INSTRUCCIONES La tabla de la figura AN2-8 proporciona un resumen del juego de instrucciones de los PIC16F876 y PIC16F877 soportados por el entrenador "PIC Laboratory". La columna de la izquierda representa las abreviaturas o nemnicos de las distintas instrucciones as como los operandos de las mismas. Los operandos representados con f representan la direccin del registro fuente sobre el que se desea actuar. Cualquiera de las direcciones de la memoria RAM de datos se considera un registro. El operando d se emplea para establecer el destino del resultado obtenido al ejecutar la instruccin. Si d vale 0 el destino es el registro W o acumulador. En caso de que d=1 se emplea como destino el mismo registro que el que se emple como fuente. El operando b lo emplean las instrucciones orientadas a la manipulacin de bits. Este operando representa a cualquier bit de cualquier registro sobre el cual se desea actuar. Finalmente, el operando K representa el valor constante de 8 bits con el que se va a realizar una determinada operacin. Lo emplea las instrucciones de direccionamiento inmediato. La 2 columna de la tabla hace una breve descripcin de la funcin que realiza cada una de las instrucciones disponibles. La siguiente columna expresa el nmero de ciclos mquina que consume cada una de las instrucciones. Se puede apreciar que todas consumen 1 ciclo excepto aquellas instrucciones que implique algn tipo de salto, Estas consumen 2 ciclos. Recordamos que un ciclo mquina equivalen a cuatro ciclos del reloj principal del sistema. As, si el PIC trabaja a 20 MHz, el ciclo de reloj es de 50nS y el ciclo mquina o ciclo de instruccin es de 200nS. La 4 columna expresa los 14 bits del cdigo de operacin de cada una de las instrucciones. Todas las instrucciones se definen siempre con una nica palabra de 14 bits. En los mismos 14 bits estn incluidos los operandos f, d, b y K de las instrucciones que lo precisen.

AN2-10

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877
La penltima columna indica qu bits del registro STATUS se puede ver modificados como consecuencia de ejecutar las distintas instrucciones. Es una informacin que se debe tener muy en cuenta. La ltima columna aade una serie de notas que se indican a continuacin: 1.2.3.Cuando se modifica cualquiera de los registros asociados a las puertas de E/S, la modificacin afecta directamente a las patillas de E/S de dichas puertas. Cuando la ejecucin de estas instrucciones afecten al TMR0, el preescaler se borra si es que est asignado al propio TMR0. Cualquier instruccin que implique modificar el contenido actual del PC, se considera una instruccin de salto. Consume dos ciclos de instruccin.

Figura AN2-8. Resumen del juego de instrucciones

AN2-11

PIC Laboratory
ANEXO 2: Caractersticas generales del PIC16F876/877

AN2-12

También podría gustarte