Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE...

101
INGENIERIA DE MICROSISTEMAS PROGRAMADOS S.L. C/ Alda. Mazarredo Nº 47 - 1º Dpto. 2 48009 BILBAO - BIZKAIA Tel/Fax: 94 4230651 Email: [email protected] www.microcontroladores.com Entrenador para F87X PIC Laboratory MANUAL DE USUARIO

Transcript of Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE...

Page 1: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

INGENIERIA DE MICROSISTEMASPROGRAMADOS S.L.

C/ Alda. Mazarredo Nº 47 - 1º Dpto. 248009 BILBAO - BIZKAIA

Tel/Fax: 94 4230651

Email: [email protected]

Entrenador para F87XPIC Laboratory

MANUAL DE USUARIO

Page 2: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Indice de materias

Indice de materias TEMA 1: El Hardware de PIC Laboratory 1.1 INTRODUCCION 1-1 1.2 CARACTERISTICAS 1-2 1.3 ARQUITECTURA DE PIC LABORATORY 1-3 1.3.1 La Fuente de Alimentación 1-3 1.3.2 Los microcontroladores 1-4 1.3.3 El Oscilador 1-6 1.3.4 Las entradas digitales 1-7 1.3.5 El generador analógico 1-8 1.3.6 El generador lógico 1-9 1.3.7 El teclado 1-10 1.3.8 Las salidas digitales 1-12 1.3.9 Salida a display de 7 segmentos 1-13 1.3.10 La pantalla LCD 1-14 1.3.11 El canal serie RS232 1-15 1.3.12 El conector de interface Smart Card 1-17 1.3.13 La tarjeta de memoria Memory Card 1-19 TEMA 2: El monitor PICMOS’7X y el software Real_PIC 2.1 INTRODUCCION 2-1 2.2 EL PICMOS’7X 2-1 2.3 RECURSOS EMPLEADOS POR EL PICMOS’7X 2-1 2.3.1 Restricciones en la memoria FLASH de programa 2-2 2.3.2 Restricciones en la memoria RAM de datos 2-3 2.3.3 Restricciones en la memoria EEPROM de datos 2-3 2.3.4 Restricciones de periféricos 2-4 2.4 SECUENCIA DE INICIO 2-4 2.5 EL SOFTWARE Real_PIC 2-6 2.5.1 El menú principal 2-7 2.5.1.1 Archivo 2-7 2.5.1.2 Edición 2-9 2.5.1.3 Herramientas 2-9 2.5.1.4 Ejecución 2-10 2.5.1.5 Ayuda 2-11 2.5.2 El área de EDITOR 2-11 2.5.3 El área Mem Programa 2-12 2.5.4 El área de la EEPROM de datos 2-13

i -1

Page 3: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Indice de materias 2.5.5 El área RAM de datos 2-14 2.5.6 Operaciones con la tarjeta de memoria “Memory Card” 2-15 2.5.7 Ejecución 2-15 TEMA 3: Módulos OEM y aplicaciones 3.1 INTRODUCCION 3-1 3.2 EL MODULO OEMPICMOS’76 3-1 3.2.1 Esquema eléctrico 3-3 3.2.2 Aplicaciones 3-4 3.3 EL CIP PICMOS’76 3-6 3.4 RESUMEN 3-8 TEMA 4: Tutorial 4.1 INTRODUCCION 4-1 4.2 INSTALACION 4-1 4.3 MANOS A LA OBRA 4-3 4.3.1 Editando el programa fuente 4-3 4.3.2 Ensamblando 4-4 4.3.3 Grabando el programa 4-5 4.3.4 Ejecutando 4-6 4.3.5 Modificando 4-6 4.4 EDICION DE REGISTROS 4-7 4.4.1 Editando la memoria RAM 4-7 4.4.2 Editando la EEPROM de datos 4-10 4.5 LAS TARJETAS DE MEMORIA 4-11 4.6 EJEMPLOS 4-13 4.6.1 Simple manejo de las E/S 4-13 4.6.2 Función lógica NOT 4-13 4.6.3 Decodificador combinacional 4-13 4.6.4 Automatismo secuencial, simulando una maniobra de torneado 4-14 4.6.5 Automatismo secuencial, simulando una maniobra de taladrado 4-14 4.6.6 Automatismo secuencial, máquina de envasar 4-14 4.6.7 Máquina de envasar, versión mejorada 4-15 4.6.8 Juego de luces 4-15 4.6.9 La interrupción del TMR0 4-15 4.6.10 La interrupción externa RB0/INT 4-16 4.6.11 El display de 7 segmentos 4-16 4.6.12 Decodificador BCD a 7 segmentos 4-17 4.6.13 Contador decimal UP/DOWN 4-17 4.6.14 El TMR0 como contador de eventos externos 4-17

i -2

Page 4: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Indice de materias 4.6.15 La memoria EEPROM de datos, la máquina “Su Turno” 4-18 4.6.16 Introducción al manejo de la pantalla LCD 4-18 4.6.17 Seguimos con la pantalla LCD 4-18 4.6.18 Visualizando mas mensajes 4-19 4.6.19 El teclado 4-19 4.6.20 El teclado y el LCD 4-19 4.6.21 Interrupción por cambio de estado 4-20 4.6.22 El TMR1, interrupción periódica 4-20 4.6.23 El TMR1 como contador de eventos externos 4-21 4.6.24 El TMR1 como divisor de frecuencias 4-21 4.6.25 Frecuencímetro 4-21 4.6.26 El TMR2, interrupción periódica 4-22 4.6.27 El TMR2, temporizaciones ajustables 4-22 4.6.28 Capturas con el módulo CCP1, midiendo periodos 4-22 4.6.29 Capturas con el módulo CCP1, midiendo la anchura de un pulso 4-23 4.6.30 Capturas con el módulo CCP1, midiendo el tiempo entre un pulso y el siguiente 4-23 4.6.31 Comparación con el módulo CCP1, contador de eventos ajustable 4-24 4.6.32 Modulación de anchura de pulsos (PWM) mediante el módulo CCP1 4-24 4.6.33 PWM mediante el módulo CCP1, variando la anchura 4-25 4.6.34 El convertidor ADC 4-25 4.6.35 Modulación PWM mediante el convertidor ADC 4-25 4.6.36 El USART, Transmitiendo caracteres 4-26 4.6.37 El USART, recepción/transmisión de caracteres 4-26 4.6.38 Saludos 4-27 4.6.39 Juego, Adivina el número 4-27 ANEXO 1: El módulo LCD AN1.1 INTRODUCION AN1-1 AN1.2 CONEXIÓN CON “PIC Laboratory” AN1-1 AN1.3 JUEGO DE INSTRUCCIONES AN1-2 AN1.4 JUEGO DE CARACTERES AN1-5 AN1.5 CARACTERES GRAFICOS AN1-6 AN1.6 SECUENCIA DE INICIALIZACION AN1-7 AN1.7 DIAGRAMA DE TIEMPOS AN1-8 AN1.8 RUTINAS DE CONTROL AN1-9 AN1.9 DIMENSIONES DEL MODULO LCD AN1-12 ANEXO 2: CARACTERISTICAS GENERALES DEL PIC16F876/877 AN2.1 INTRODUCCION AN2-1 AN2.2 CARACTERISTICAS GENERALES AN2-1 AN2.3 DESCRPCION DE PINES AN2-2

i -3

Page 5: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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

i -4

Page 6: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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. Ingeniería de Microsistemas Programados S.L. pone en tus manos el nuevo entrenador “PIC Laboratory”. Se trata de un entrenador diseñado para el aprendizaje y diseño 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 también de 368 bytes de RAM para datos de tipo variable.

• Disponen de hasta un máximo de 33 líneas de entrada/salida (en el caso de emplear el

PIC16F877). Permiten el control de gran cantidad de periféricos. • Incluyen circuito conversor A/D con hasta 8 canales de entrada y 10 bits de resolución que

permiten procesar variables o señales de tipo analógico. • Tres circuitos temporizadores o “Timers” totalmente independientes entre sí y con diversos

modos de funcionamiento para cada uno de ellos. • Puerta Serie Síncrona Master (MSSP) que permite el control y conexión con dispositivos

SPI e I2C diseñados al efecto. • Receptor/transmisor universal (USART) que permite comunicaciones serie tanto síncronas

como asíncronas. • Dos circuitos CCP para la captura, comparación y modulación de anchura de pulsos que

permiten el diseño de aplicaciones donde se requiera muestreo de señales, medidas y regulación.

• Puerto paralelo esclavo (PSP) de 8 bits que permite rápidas transferencias de información

(sólo el PIC16F877). • Además y, como otros miembros de la numerosa familia PIC, estos dispositivos disponen

de temporizador Watchdog, Power On Reset, Power Up Timer, etc. • Toda la información técnica, “Data Sheets” y notas de aplicación están a disposición de los

usuarios en el sitio web que Microchip dispone al efecto: www.microchip.com El objetivo de Ingeniería 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 versátil que dispone de gran cantidad de periféricos para el diseño, control y comprobación de aplicaciones así como el soporte necesario para la grabación final del microcontrolador. Posteriormente el usuario podrá incorporar dicho microcontrolador en el hardware propio que haya diseñado al efecto.

1-1

Page 7: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory 1.2 CARACTERISTICAS

Las características más relevantes del entrenador "PIC Laboratory" se muestran a continuación.

• Alimentación única desde un transformador AC/DC de 12V. El entrenador dispone de su propio sistema de rectificación, filtrado y estabilización 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 PICMOS’76 o PICMOS’77 que facilita el interface del usuario con el PC.

• Canal serie RS232 a 38.400 baudios para conexión con el PC. El PC dotado del software “Real PIC” incluido en "PIC Laboratory" , permite un cómodo interface con el usuario quien podrá grabar el PIC, ejecutar programas de aplicación, 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 volátiles. • Alta velocidad de trabajo controlada por cristal de cuarzo a 20 MHz. El tiempo de ejecución

es de 200nS por instrucción (excepto las instrucciones de salto que es de 400nS). • Seis entradas digitales mediante conmutadores deslizantes que están asociadas a las

líneas RA0-RA5. • Dos pulsadores permiten generar la señal RESET de inicio y la de interrupción externa

INT. • Tensión de entrada analógica variable asociada al canal AN0. Esta tensión es

seleccionable mediante Jumper y puede proceder de un potenciómetro o bien de un foto transistor sensible a la luz ambiente.

• Generador lógico de frecuencia variable mediante potenciómetro que permite aplicar

pulsos de entrada a los diferentes temporizadores/contadores del PIC. • Teclado matricial de 4 x 4 gobernado desde las líneas RB0-RB7 de la puerta B • Ocho salidas digitales asociadas a RB0-RB7 y que están representadas mediante diodos

leds y display de 7 segmentos. • Salida a pantalla LCD de 2 x 16 caracteres alfa numéricos. • Conector de la serie Smart Card de 8 contactos que permite la inserción de tarjetas de

memoria externa para salvar aplicaciones y/o tarjetas de expansión vía SPI, I2C, etc.. • Conector de expansión PIC-BUS 2 de 40 pines que transporta todas las señales del PIC y

que permite conectar periféricos externos al "PIC Laboratory" , según las necesidades y aplicaciones del usuario.

• Todos los periféricos que incorpora "PIC Laboratory" pueden ser inhabilitados mediante

sus correspondientes jumpers con objeto de que no interfieran con los periféricos externos que pudiera conectar el usuario a través del PIC-BUS 2.

1-2

Page 8: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 PICMOS’76, disco con ejemplos y el programa de interface Real-PIC. También 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 fotografía de la figura 1-1. Mediante los correspondientes esquemas eléctricos el usuario podrá comprender la conexión de los diferentes periféricos 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 Alimentación Se encarga de obtener la tensión general de +5Vcc con la que se alimenta el entrenador "PIC Laboratory" en su totalidad. Su ubicación se muestra en la figura 1-2.

Figura 1-2. La fuente de alimentación

1-3

Page 9: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory El esquema eléctrico de dicha fuente se presenta en la figura 1-3.

+5Vcc

J1

12 VAC INPUT

D131A

- +

C13100uF

+ C11100n

R3330

C14100uF

+

D10VCC ON

U5UA7805

IN1

GN

D2

OUT 3

Figura 1-3. Esquema de la fuente de alimentación

El entrenador "PIC Laboratory" trabaja con una única tensión de alimentación de +5Vcc. Esta se obtiene en el propio entrenador a partir de una tensión 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 tensión alterna de entrada. Esta se filtra mediante C13 y se estabiliza a +5Vcc mediante el regulador UA7805 (U5). El diodo led D10 monitoriza la tensión 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 fotografía de la figura 1-4, se puede apreciar que existen sendos zócalos para insertar uno de los dos microcontroladores. El entrenador "PIC Laboratory" incorpora de serie el PIC16F876 que viene grabado con el programa monitor PICMOS’76. En la imagen también se puede apreciar el conector de expansión PIC-BUS 2, gracias al cual el usuario puede conectar los periféricos que le interese en cada aplicación. Ingeniería de Microsistemas Programados S.L. vende estos dos modelos de PIC grabados con el software que luego se describe y para identificarlos les denomina PICMOS’76 y PICMOS’77, respectivamente.

Figura 1-4. Zócalos para los PIC y conector de expansión

1-4

Page 10: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 distribución de señales que transporta el conector de expansión PIC-BUS 2 (J4).

+5Vcc

+5Vcc

J4

PIC-BUS 2

1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 40

U2

PICMOS'77

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47RC0/TCKI 15RC1/TCKO 16RC2/CCP1 17RC3/SCK/SCL 18RC4/SDI/SDA 23RC5/SDO 24RC6/TX 25RC7/RX 26

RB0/INT33 RB134 RB235 RB336 RB437 RB538 RB639 RB740

MCLR1

OSC113

OSC214

Vss12

Vss31

Vdd11

Vdd32

RD7/PSP7 30

RD0/PSP0 19RD1/PSP1 20RD2/PSP2 21RD3/PSP3 22RD4/PSP4 27RD5/PSP5 28RD6/PSP6 29

RE0/AN5/RD 8RE1/AN6/WR 9RE2/AN7/SS 10

U1

PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

RD0

RB4RB5

RD5

RA2

RC1

RD6RD7

RB3

RD1

RC6

RD4NC

RB6

RC7

RB7

RC2

RA5

RA1

RE1

RB1

RD2

RB2

RC3

RE2

RE0

RA4

MCLR

RD3

RC5

RB0

NC

RC0

RC4

RA0

RA3

Figura 1-5. Conexiones de los PIC y del conector PIC-BUS 2

Las patillas de los microcontroladores PICMOS’76 y PICMOS’77 se corresponden exactamente con el patillaje de los PIC16F876 y 16F877 respectivamente. Están 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 vías. Pone a disposición del usuario de todas las señales del microcontrolador (excepto OSC1 y OSC2). De esta manera es posible desarrollar hardware a medida de la aplicación y hacerlo funcionar desde el entrenador "PIC Laboratory" .

1-5

Page 11: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory 1.3.3 El oscilador La sección del oscilador se muestra en la fotografía de la figura 1-6. Consta de un cristal de cuarzo y de dos condensadores.

Figura 1-6. El oscilador

Su esquema eléctrico 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

PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

Y120MHz

C127p

C227p

Figura 1-7. Esquema eléctrico del circuito oscilador En el diseño se ha elegido una velocidad de trabajo de 20MHz. El PIC viene programado por defecto con la versión HS de su oscilador. Trabajando a esta velocidad el ciclo de reloj es de 50nS. Teniendo en cuenta que una instrucción se ejecuta siempre en cuatro ciclos de reloj, el tiempo de ejecución o ciclo de instrucción es de 200nS por instrucción. Todas las instrucciones se ejecutan en el mismo lapsus de tiempo excepto todas aquellas que impliquen algún tipo de salto o desplazamiento del PC. En este caso se emplean 2 ciclos de instrucción 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 ejecución.

1-6

Page 12: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory Aunque es relativamente fácil modificar la velocidad por parte del usuario, no se aconseja hacerlo ya que también se modificaría la velocidad de comunicación entre el canal serie de "PIC Laboratory" y el PC con su software de interface Real-PIC. 1.3.4 Las entradas digitales Básicamente están 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 están asociados respectivamente a las líneas RA0-RA5. Por su parte el pulsador SW7 puede emplearse para provocar la interrupción externa INT asociada a la línea RB0/INT del PIC. Finalmente el pulsador SW8 provoca, al accionarlo, un RESET general del sistema. En este caso el PIC inicia la ejecución del programa monitor PICMOS’XX con el que viene grabado de serie.

+5Vcc

+5Vcc

+5Vcc

T0CKIRA0 RA4AN0INTRB0

Desde laentradaanalógica

Desde elgeneradorlógico

Línea deE/Sgeneral

SW4RA3

SW5RA4

SW1RA0

R34

4K7

R38

4K7

SW3RA2

R37

4K7

SW2RA1

R33

4K7

R36

4K7R35

4K7

JP5 JP6

R21 220

R20 220

R19 220

R18 220

R17 220

SW6RA5 R22 220 U1

PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

SW7

RB0/INT

RESET

SW8

JP4

R23

470

R0

100

R25

470

R42

47K

RA5

RA4

RA3

RA2

RA1

RA0

Figura 1-9. Conexión eléctrica de las entradas digitales

1-7

Page 13: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory Por su parte la línea RA0 puede actuar como entrada analógica AN0. El usuario puede seleccionar, mediante el jumper JP5 si esta señal procede del interruptor SW1 (entrada digital) o bien del generador de tensión analógica (entrada analógica 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 señal procede del interruptor SW5 (entrada digital) o bien desde el generador lógico (entrada de pulsos T0CKI). La línea RB0 puede actuar como entrada/salida digital o bien como entrada de interrupción externa INT. En este caso la interrupción 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 señales RA0-RA5 procedan de otros periféricos externos sin que el estado lógico de dichos interruptores prevalezca sobre las señales generadas por esos periféricos. 1.3.5 El generado analógico Con objeto de poder experimentar con el convertidor AD que integran los PIC16F87X, el entrenador "PIC Laboratory" dispone de dos generadores de tensión variable que permiten el estudio, diseño y comprobación de aplicaciones relacionadas con medidas y procesos de variables analógicas. Se pueden apreciar en la figura 1-10.

Figura 1-10. Los generadores de tensión analógica variable Tal y como se muestra en el esquema eléctrico de la figura 1-11 se puede comprobar que es un circuito muy simple. La señal RA0/AN0 del PIC puede, al igual que otras señales, programarse como entrada digital (RA0) o entrada analógica (AN0). Además el usuario puede y debe seleccionar el origen de esa señal mediante el jumper JP5. Cuando se coloca en la posición RA0 la señal aplicada al PIC procede del interruptor SW1 como ya se explicó anteriormente. Se supone que dicho PIC ha sido programado para que RA0 actúe como entrada digital. Si el jumper se coloca en la posición AN0 la señal que entra a la patilla 2 del PIC procede de uno de los dos generadores analógicos disponibles en "PIC Laboratory". Uno de los generadores analógicos está formado por el foto transistor BPW40 (Q1). Este mide la luz ambiente que incide sobre él y genera una tensión analógica proporcional (VA1). El otro generador es un simple potenciómetro (P1) que proporciona la tensión VA2 en función del recorrido de su cursor. Mediante el jumper JP7 se selecciona entre VA1 y VA2 como señal de entrada al canal 0 del PIC (AN0).

1-8

Page 14: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory

+5Vcc

RA0 RA4

AN0

VA1 VA2

Desde elinterruptorSW1

JP5

JP7

R4010K

R1100

Q1

BPW40

1K

P1

U1

PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

RA0

Figura 1-11. Esquema eléctrico de los generadores analógicos 1.3.6 El generador lógico Algunas de las funciones implementadas en los PIC requieren de una señal externa que pueda ser empleada como entrada para los distintos circuitos contadores, de captura y de comparación. El entrenador "PIC Laboratory" dispone de un sencillo pero eficaz generador lógico que proporciona una señal de onda cuadrada asimétrica 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 lógico

La figura 1-13 muestra el esquema eléctrico del generador lógico del entrenador "PIC Laboratory". Está construido en torno al popular Timer 555 trabajando como multivibrador inestable. Mediante el potenciómetro P2 se ajusta la frecuencia de la señal 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

Page 15: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory Dicha frecuencia se aplica a los jumpers JP6, JP8 y JP9 que el usuario manipulará según le convenga. Cerrando JP6 con la posición T0CKI la señal 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.

+5VccT0CKIRA4

T1CKI

CCP1

Desde elinterruptorSW5

JP6

JP8

JP9

U4NE555

TR 2

CV 5

Q3

DIS7

THR6

R4

C310n

R2100

P2

1M

R4110K

C121000n

D8GEN.ON

R12330

C4

100n U1

PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

Figura 1-13. Esquema eléctrico del generador lógico

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 actúe como contador de eventos externos o bien con base de tiempos externa para las temporizaciones. Mediante el jumper JP9 se aplica, si se cierra, señal a la patilla RC2/CCP1. De esta forma es posible emplear el módulo CCP1 del PIC para realizar aplicaciones de captura y comparación 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 fotografía de la figura 1-14, el entrenador "PIC Laboratory" va provisto de un teclado matricial de 16 teclas. Se trata del periférico 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 técnicas y conceptos que se emplean en las más diversas aplicaciones de tipo industrial y comercial. Manejar conceptos tales como “barrido del teclado”, “tecla pulsada”, “interrupción al pulsar”, “rebotes”, etc., darán la posibilidad al usuario de acometer ambiciosos proyectos de carácter profesional.

1-10

Page 16: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 sólo son necesarias 8 líneas del microcontrolador para su total control. Ello es debido a su distribución matricial. En el caso que nos ocupa el teclado está conectado a las 8 líneas de la puerta B (RB0-RB7) tal y como se muestra en el esquema eléctrico de la figura 1-15.

R27-R30 4x2K2

U1

PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

SW9

SECME ECO 16250 06_2

1 2 3 A

4 5 6 B

7 8 9 C

* 0 # DC0 C1 C3

F1

F2

F3

C2

F0

C01 C12 C23 C34 F05 F16 F27 F38

RB3

RB1RB2

RB0

RB7RB6

RB4RB5

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 intersección fila-columna da lugar a una tecla en concreto. Es decir, si se pulsa por ejemplo la tecla 4, supone unir eléctricamente la fila F1 con la columna C0, que es tanto como decir que las líneas 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 líneas 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 relación fila-columna que define a cada tecla. Esta tarea conocida como “barrido del teclado” ha de repetirse de forma constante y periódica. De esta manera y, a la velocidad de trabajo del PIC, será posible detectar una pulsación en cualquier momento.

1-11

Page 17: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory Haciendo uso de algunas de las prestaciones que ofrece un PIC, es posible desarrollar rutinas más 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 líneas, en estado de reposo, estén a nivel “1”. Por otra parte también podemos habilitar la interrupción por cambio de estado en cualquiera de esas líneas de entrada. Al mismo tiempo, las salidas RB0-RB3 (las columnas) las ponemos a nivel “0”. Esta situación 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 pulsación de cualquier tecla. Efectivamente, puesto que RB0-RB3 (columnas) están a “0” y RB4-RB7 (filas) están a nivel “1” gracias a las resistencias pull-up internas, cuando se pulse cualquier tecla se produce una interrupción por cambio de estado en cualquiera de las líneas RB4-RB7 (filas). Esa interrupción provoca el fin del standby (wake-up) y la inmediata atención al programa de tratamiento que se encargará de averiguar qué tecla se pulsó. 1.3.8 Las salidas digitales Están formadas por un conjunto de 8 diodos tipo led que sirven para representar el estado lógico de las líneas a las que estén conectados. Ver la figura 1-16.

Figura 1-16. Las salidas digitales

En el entrenador "PIC Laboratory" esos leds están conectados a las 8 líneas de la puerta B (RB0-RB7) que son líneas de propósito general. El esquema de la figura 1-17 muestra las conexiones eléctricas.

R4-R11 8x330

RB0RB1RB2RB3RB4RB5RB6RB7

INT RB0

D1D2D3D4D5D6D7

Desde elpulsadorSW7

JP1

LED ON

JP4

U1

PICMOS'76

RA0/AN02

RA1/AN13

RA2/AN24

RA3/AN35

RA4/T0CKI6

RA5/AN47

RC0/TCKI 11

RC1/TCKO 12

RC2/CCP1 13

RC3/SCK/SCL 14

RC4/SDI/SDA 15

RC5/SDO 16

RC6/TX 17

RC7/RX 18

RB0/INT 21

RB1 22

RB2 23

RB3 24

RB4 25

RB5 26

RB6 27

RB7 28

MCLR1OSC19OSC210Vss8 Vss19Vdd20

RB1RB2RB3RB4RB5RB6RB7

RB0

Figura 1-17. Conexiones de las salidas digitales

1-12

Page 18: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory Las líneas de salida de un PIC pueden activar directamente cargas de hasta 25mA. Sin necesidad de una circuitería adicional las líneas de la puerta B activan directamente a los leds asociados a través de sendas resistencias de absorción. Un nivel lógico “1” por cualquiera de esas líneas provoca el encendido del led correspondiente. Un nivel “0” lo apaga. Es una forma muy simple y económica de reflejar el estado binario de las líneas de salida, donde cada led simula la carga que se desea controlar. Abriendo el jumper JP1 todos los cátodos de los leds quedan desconectados. De esta manera las líneas de la puerta B quedan libres y se evita un consumo extra, pudiendo ser empleadas por los periféricos que el usuario de "PIC Laboratory" desee conectar a través del PI-BUS 2. Según la posición en que se cierre el jumper JP4 la línea RB0/INT puede ser empleada como línea de E/S de propósito general o bien como entrada de interrupción externa INT activada desde el pulsador SW7. 1.3.9 Salida a display de 7 segmentos Como periférico destacado, el entrenador "PIC Laboratory" incluye el clásico display de 7 segmentos como el que se muestra en la fotografía de la figura 1-18.

Figura 1-18. El display de 7 segmentos

Se trata de un periférico de salida que permite la visualización de valores numéricos. Tal y como se muestra en el esquema de la figura 1-19, los segmentos del display están también conectados a las 8 líneas de la puerta B (RB0-RB7). Se trata de un display de cátodo común. Cada uno de los segmentos, que a efectos prácticos consisten en diodos led, necesita un nivel lógico “1” en la salida correspondiente, para su correcta iluminación. El usuario tiene control sobre cada segmento individual y pude visualizar cualquier tipo de símbolo que el display sea capaz de representar. También puede diseñar las clásicas rutinas de conversión BCD a 7 segmentos para poder hacer representaciones numéricas. Tanto las salidas digitales como los segmentos del display están conectados en paralelo a las mismas líneas de la puerta B y a las mismas resistencias de absorción. Mediante el jumper JP2 se puede desconectar el display cuando no vaya a emplearse evitando así un consumo extra sobre las líneas RB0-RB7.

1-13

Page 19: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory

R4-R11 8x330INT RB0

Desde elpulsadorSW7

JP4

U7

SC43-11HWA

abcdefgdp

cc

11310

872

119

14

JP2

DISPLAY ON

U1

PICMOS'76

RA0/AN02

RA1/AN13

RA2/AN24

RA3/AN35

RA4/T0CKI6

RA5/AN47

RC0/TCKI 11

RC1/TCKO 12

RC2/CCP1 13

RC3/SCK/SCL 14

RC4/SDI/SDA 15

RC5/SDO 16

RC6/TX 17

RC7/RX 18

RB0/INT 21

RB1 22

RB2 23

RB3 24

RB4 25

RB5 26

RB6 27

RB7 28

MCLR1OSC19OSC210Vss8 Vss19Vdd20

RB2RB3RB4RB5RB6RB7

RB1RB0

Figura 1-19. Conexión eléctrica del display a 7 segmentos

1.3.10 La pantalla LCD Se trata de uno de los periféricos más versátiles e interesantes que dispone el entrenador "PIC Laboratory". Se presenta en la figura 1-20 y es capaz de visualizar dos líneas de 16 caracteres alfanuméricos cada una.

Figura 1-20. La pantalla LCD

Este potente periférico de salida va a permitir representar cualquier tipo de mensaje compuesto de letras, números y símbolos produciendo además diferentes efectos de visualización como desplazamientos a izquierda y derecha, parpadeos, scrolls, etc. La transferencia de información 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 líneas de datos del módulo LCD se conectan con las 8 líneas RB0-RB7 de la puerta B, tal y como se muestra en el esquema de conexiones de la figura 1-21.

1-14

Page 20: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory

+5Vcc

R39

10K

JP3

LCD ON

R26

1K

U1

PICMOS'76

RA0/AN02

RA1/AN13

RA2/AN24

RA3/AN35

RA4/T0CKI6

RA5/AN47

RC0/TCKI 11

RC1/TCKO 12

RC2/CCP1 13

RC3/SCK/SCL 14

RC4/SDI/SDA 15

RC5/SDO 16

RC6/TX 17

RC7/RX 18

RB0/INT 21

RB1 22

RB2 23

RB3 24

RB4 25

RB5 26

RB6 27

RB7 28

MCLR1OSC19OSC210Vss8 Vss19Vdd20

U6

LCD-WM-C1602

D0D1D2D3D4D5D6D7

VSSVCCVEE

RSR/W

E

MODULOLCD

2 x 16

789

1011121314

123

456

RB6

RB3RB4

RB1

RA1

RB0

RB5

RB2

RB7RA2

Figura 1-21. Conexiones eléctricas entre el módulo LCD y el PIC

A través de la puerta B el PIC transfiere tanto los códigos ASCII de los caracteres a visualizar como los códigos de instrucción gracias a los cuales se establecen diferentes modos de visualización sobre la pantalla. El estado interno de ésta también puede ser leído a través de la misma puerta del PIC. De este modo el microcontrolador puede conocer si la pantalla está o no ocupada, la posición actual del cursor, el carácter que hay en dicha posición, etc. Además de la puerta B de datos, se emplean otras 3 señales de control. Mediante la señal RS conectada a RA1 el PIC indica si está enviando un código ASCII de datos o un código de instrucción. Con la señal 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 señal E conectada a RA3 mediante el jumper JP3 el PIC habilita o no el funcionamiento general del módulo. Cuando esta señal se pone a nivel “0”, el módulo LCD queda desconectado en estado de alta impedancia. En esta situación todas las líneas pueden ser empleadas por otros periféricos. Si el usuario deja abierto el jumper JP3 la señal E de habilitación 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 lógico presente en RA3. Por las patillas 1 y 2 del módulo se aplica la tensión de alimentación de +5Vcc que alimenta a toda la electrónica interna del mismo. Por la patilla 3 (VEE) se puede aplicar una tensión 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 través 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 más detalles técnicos de la pantalla LCD así como una serie de rutinas genéricas 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 lógicos a niveles RS232, con lo que se dispone así de un canal serie. Es posible por tanto, que el usuario pueda diseñar aplicaciones relacionadas con la comunicación serie y, conectar "PIC Laboratory", con un PC, un terminal, modem, impresora, etc. Se muestra en la figura 1-22.

1-15

Page 21: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 fábrica con el sistema operativo denominado PICMOS’xx 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 también 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 más. En la figura 1-23 se muestra el esquema eléctrico de conexiones entre el PIC y el canal serie. El circuito de adaptación de niveles está basado en el popular MAX232 (U3). Este circuito de alimentación única y con muy pocos componentes externos es capaz de obtener niveles RS232 de ± 12V a partir de niveles lógicos TTL y viceversa. El conector J2 de comunicaciones consiste en un conector DB9 hembra estándar 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 señal de la patilla 7 de J2 (RTS). Una vez convertida a nivel TTL, esa señal 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 transmisión como durante la recepción de datos.

1-16

Page 22: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory

+5Vcc

+5Vcc

+5Vcc

Red Green

TxD

RxD

RxD

TxD

RTSCTS

U3

MAX232

V+2

T1IN11

T1OUT12

T2IN10

T2OUT9

C1+1

C1-3 C2- 5C2+ 4

R2IN 8R2OUT 7R1IN 13R1OUT 14

V- 6

VCC16 GND 15

C8

100n

C5

100n

C9

100n

R24470

R25

470

R4247K

D141N4148

SW8

RESET

R16

330

D12TxD

R14 330

C6100n

R15330

J2

RS-232

594837261

D11RxD

U1 PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

C7

100n

MCLR

RC7RC6

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 éstándar de 8 pines que permite otra forma de expansión además del conector PIC-BUS 2 ya estudiado. Este conector está situado debajo del teclado tal y como se muestra en la fotografía de la figura 1-24.

Figura 1-24. El conector Smart Card

Se trata de un conector estándar que admite tarjetas chip de tamaño normalizado. Efectivamente, se trata de otra forma de expansión del entrenador que abre numerosas posibilidades y aplicaciones. Tal y como se muestra en la figura 1-25 podremos conectar tarjetas de expansión de memoria donde poder almacenar datos y

1-17

Page 23: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory programas, tarjetas de expansión de periféricos que permita trabajar con diferentes dispositivos, tarjetas chip o tarjetas monedero con las cuales desarrollar distintas aplicaciones, tarjetas de diseño propio que incorporen aquellos elementos específicos que deseemos gobernar, etc.

Figura 1-25. Expansión de "PIC Laboratory" mediante diferentes tipos de tarjetas

La figura 1-26 muestra el esquema de conexiones eléctricas entre el PIC y el conector smart card J3. Un simple análisis de las señales que transporta nos permite apreciar que corresponden con las 6 líneas de menos peso de la puerta C (RC0-RC5). Estas líneas en principio son líneas de E/S de propósito general y a disposición del usuario.

+5Vcc+5VccR32

2K2R31

2K2

D9

BUS BUSY

R13

330

SW10

CARD ON

J3

INTERFACE CARD

12345678

U1 PICMOS'76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

RC1

RC3RC5

RC2

RC4RC0

Figura 1-26. Conexiones eléctricas del conector smart card

Si entramos en detalle podemos apreciar que las líneas RC3, RC4 y RC5 corresponden con las señales SCK, SDI y SDO empleadas por el estándar del bus SPI, y/o también se corresponden con las señales SCL y SDA correspondientes al estándar 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 añadimos el echo de que la mayoría de las tarjetas chip existentes así como gran cantidad de dispositivos, se gobiernan mediante el protocolo SPI o I2C, es fácil intuir las grandes posibilidades de expansión y de aplicación del entrenador.

1-18

Page 24: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory La distribución de las señales sobre el conector smart card J3 se ha hecho de acuerdo con la distribución de los pines de las tarjetas más empleadas. Así, por la patilla 1 se introduce la tensión +5Vcc de alimentación. Esta tensión se aplica a través del interruptor SW10 que está situado físicamente 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 señal de reloj necesaria en la mayor parte de tarjetas existentes. Esta señal de reloj la puede generar el PIC trabajando en el modo SPI o I2C.

La señal presente en la patilla 7 está conectada con RC4/SDI/SDA. Corresponde con la entrada de datos (SDI) para tarjetas SPI o similares. También puede ser una señal bi-direccional de entrada/salida de datos (SDA) empleada por los dispositivos con protocolo I2C. En la patilla 2 disponemos de la señal 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 señales RC0, RC1 y RC2 del PIC. En principio no tienen ninguna asignación concreta por lo que el usuario las puede emplear o no según su propio criterio. No obstante algunas tarjetas chip pueden necesitar señales auxiliares como RESET, habilitación, bussy, etc. que pueden ser generadas fácilmente, 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 aplicación del usuario, Ingeniería de Microsistemas Programados S.L. pone a su disposición 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 PICMOS’7X y soportados por el entrenador "PIC Laboratory". La figura 1-28 muestra el esquema eléctrico de la tarjeta. El conector J1 corresponde con el conector Smart Card del entrenador y contiene las señales RC0-RC6 del PIC así como las de alimantación de +5Vcc. Algunas de estas señales se emplean en el bus I2C para el control de la memoria 24LC64 (U1).

1-19

Page 25: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 1: El Hardware de PIC Laboratory

+5Vcc

J2

INTERFACE

+1

+3

+5

+7

+9

+ 2

+ 4

+ 6

+ 8

+ 10

C1

100n

U1

24LC64

A01

A12

A23

GND4 SDA 5SCL 6TEST 7VCC 8

J1

SMART-CARD

12345678RC0

RC1

RC5

RC3RC2

RC0RC3

RC5

RC4RC2

GND

RC4RC1

Vcc

Figura 1-28. Esquema de la tarjeta de memoria Smart Card

Sobre la propia tarjeta se puede incluir un conector macho de 2x5 vías (J2) con objeto de que todas las líneas disponibles en el Smart Card (RC0-RC6 y alimentación de +5Vcc) queden a disposición del usuario para sus propios usos.

1-20

Page 26: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC

Tema 2: El monitor PICMOS’7X y el software Real_PIC 2.1 INTRODUCCION Los microcontroladores PIC con que van dotados tanto el entrenador "PIC Laboratory" como el módulo OEMPICMOS’76, 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 PICMOS’76 y PICMOS’77 por el sistema operativo que contienen. El programa monitor está diseñado para trabajar conjuntamente con un software para PC denominado “Real_PIC”. Entre ambos se crea una plataforma que proporciona al usuario las clásicas herramientas que facilitan la edición, ensamblado y grabación de sus programas de aplicación para este tipo de microcontroladores. El presente tema está destinado a explicar las posibilidades que ofrece el sistema operativo PICMOS’7X así como el manejo del software “Real_PIC” para PC con objeto de que el usuario disponga de un cómodo entorno de trabajo en el desarrollo de sus programas. 2.2 EL PICMOS’7X Sistema operativo o monitor integrado en los PIC 16F87X. Aunque son prácticamente iguales, existen dos versiones. La versión PICMOS’76 se integra en los modelos PIC16F876 de 28 patillas, mientras que PICMOS’77 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 comunicación se realiza a través de un canal serie estándar y entre ambos se crea una plataforma o entorno de trabajo que ofrece las siguientes prestaciones:

• Velocidad de comunicación a 38400 baudios. Permite una rápida carga y descarga de programas desde el PC al PIC y viceversa.

• Sincronización automática entre el monitor PICMOS’7X y el software “Real_PIC” del

PC. • Edición de programas fuente *.ASM. • Acceso directo al ensamblador MPASMWIN de Microchip. • Lectura/escritura (grabación) de la memoria de programa del usuario del PIC. • Lectura y edición de la memoria RAM de datos del PIC a nivel de bytes o de bloques. • Lectura y edición de la memoria EEPROM de datos del PIC a nivel de bytes o de

bloques. • Ejecución de los programas de aplicación del usuario. • Gestión de las tarjetas Memory Card para el almacenamiento y recuperación de

programas. 2.3 RECURSOS EMPLEADOS POR EL PICMOS’7X

2-1

Page 27: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC El programa monitor PICMOS’7X hace uso de algunos de los recursos internos del PIC para su correcto funcionamiento. Es por ello que el usuario tiene restringidas ciertas características 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 PICMOS’7X.

Figura 2-1. La memoria de programa

Los PIC de la familia 16F87X disponen de un total de 8K de memoria FLASH de programa 0x0000-0x1FFF. Las direcciones 0x0000-0x0003 (4) están reservadas para el vector de arranque del sistema. Los últimos 4 K comprendidos desde las direcciones 0x1000-0x1FFF contiene el programa monitor PICMOS’7X. Se trata del núcleo del sistema operativo que realiza todas las funciones relacionadas con la depuración y puesta a punto de las aplicaciones. Comunica con el PC y el software Real_PIC diseñado al efecto. Este programa monitor está grabado de serie y en ningún caso debe ser modificado ni borrado por el usuario, de lo contrario todas las funciones operativas del PICMOS’7X pueden quedar inutilizadas de forma permanente. El área libre a disposición 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 aplicación. En esta área está incluida la posición 0x0004 que contiene el vector de interrupción 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 aplicación. Microchip cifra en unos 1000, los ciclos de borrado y grabación que esta memoria es capaz de soportar.

2-2

Page 28: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC 2.3.2 Restricciones de la memoria RAM de datos El programa monitor PICMOS’7X emplea también 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 están ocupadas por estos últimos. Algunas posiciones están, actualmente, sin implementar. Para más información acerca de los SFR se recomienda acudir a los “Data Sheet” del fabricante donde se explica detalladamente la dirección que tienen asignada, su cometido, sus bits, etc. El sistema operativo o programa monitor PICMOS’7X 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 también empleados por el PICMOS’7X, en total 32 bytes.

Se recomienda que las aplicaciones del usuario no hagan uso de las posiciones RAM usadas por el PICMOS’7X. Se puede producir un bloqueo del sistema con la consiguiente posible pérdida 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 0x1A0-0x1EF, 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 información no volátil pero si modificable por el usuario.

2-3

Page 29: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X 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 disposición del usuario. Se trata del área 0x00-0xF7. El usuario puede acceder a ella mediante la ejecución de sus propios programas y aplicaciones para leer/escribir datos constantes. Los 8 últimos bytes comprendidos entre 0xF8 y 0xFF están reservados para el programa monitor PICMOS’7X. Sobre ellos el sistema registra una firma o “cheksum” del programa de aplicación de usuario actualmente grabado en la memoria de programa. Esta firma también 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 PICMOS’7X 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 leída 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 periféricos De todos los recursos y periféricos que disponen los PIC16F87X, el programa monitor sólo hace uso de uno de ellos, el USART. Efectivamente, gracias al USART se realiza la comunicación entre dicho programa monitor PICMOS’7X y el software Real_PIC del PC. Esto implica que tanto las líneas RC6/Tx y RC7/Rx así como los registros especiales (SFR) RCSTA,TXSTA, TXREG, RXREG y SPBRG del PIC, están siendo utilizados. A pesar de todo, los programas de aplicación del usuario pueden hacer uso de estos recursos sabiendo de ante mano que, la comunicación 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 señal RTS del canal serie de comunicaciones para provocar un RESET en el entrenador "PIC Laboratory" y establecer la comunicación entre dicho software y el programa monitor PICMOS’7X. Sin embargo el usuario puede desarrollar sus propias aplicaciones con otros programas de comunicación en las que la señal RTS se gestione de forma diferente. Esto puede provocar que el entrenador sufra señales de RESET no deseadas. Para evitar estas posibles situaciones se recomienda el empleo de otro cable de comunicaciones muy fácil de fabricar. Se necesita un cable con 3 conductores, 1 conector Cannon de 9 vías 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

Page 30: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC A continuación se explica la secuencia de inicio que se produce cada vez que el entrenador "PIC Laboratory" es conectado a la alimentación 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 tensión de alimentación, se activa la señal de RESET o se ejecuta el software Real_PIC desde el PC. El programa monitor trata de establecer comunicación con este último. Si dicha comunicación es satisfactoria, el entrenador "PIC Laboratory" se sincroniza y queda bajo el control del programa monitor. El usuario a través 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 zócalo Smart Card hay insertada una tarjeta de memoria Memory Card de Ingeniería 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 análisis 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 recién grabado.

2-5

Page 31: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC 2.5 EL SOFTWARE Real_PIC Este es el software de comunicaciones entre el PC y el programa monitor PICMOS’7X 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 comunicación con el entrenador a una velocidad de 38400 baudios. Si dicha comunicación 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 sesión de trabajo.

Figura 2-5. Comunicación correcta Si la comunicación con el entrenador no es posible aparecerá el mensaje de la figura 2-6. Las causas más probables son: • Fallo de alimentación en el entrenador • Fallo en la conexión del cable de comunicaciones • Error en la configuración del canal serie

Figura 2-6. Error de comunicación

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

2-6

Page 32: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC

Figura 2-7. Pantalla general de trabajo

2.5.1 El menú principal El menú principal consta de 5 menús cada uno de las cuales tienen a su vez diferentes opciones que van apareciendo en ventanas desplegables. Algunas de esas opciones se puede ejecutar seleccionándolas mediante el cursor, mediante una combinación 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 gestión de ficheros:

Nuevo Inicia una nueva sesión 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 más empleadas de los distintos menús. Cabe mencionar al botón “Sincronizar PC-Placa”. Permite llamar la atención del entrenador "PIC Laboratory" cuando el PIC esté ejecutando un programa de usuario, estableciendo así la comunicación y sincronismo. Se produce el mismo efecto pulsando la tecla F2. También aparecen 4 pestañas que permiten seleccionar las cuatro áreas de trabajo en un PIC: EDITOR (área de edición 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 explicarán posteriormente.

2-7

Page 33: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC

Figura 2-8. El entorno de trabajo

Abrir ASM Mediante una caja de diálogos similar a la mostrada en la figura 2-9,

se abre un fichero con extensión *.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 diálogos similar a la anterior se

abre un fichero con extensión *.HEX y que corresponde con un determinado programa ejecutable previamente ensamblado. Dicho programa se deposita sobre y visualiza sobre el área Mem Programa

Cerrar Cierra el proyecto o aplicación en curso, salvando y cerrando los

ficheros que estuvieran abiertos. Guardar Salva el fichero que en ese momento esté abierto, ya sea un

programa fuente *.ASM o un ejecutable *.HEX. Esta acción también se puede realizar pulsando Ctrl+G.

Salir (Ctrl+S) Finaliza la ejecución del software Real_PIC.

2-8

Page 34: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC 2.5.1.2 Edición Presenta seis opciones relacionadas con la edición de un programa fuente. Estas opciones sólo están activadas si se está trabajando sobre el área EDITOR.

Copiar (Ctrl+C) Copia en un buffer interno el bloque del programa fuente que esté seleccionado.

Cortar (Ctrl+X) Borra de la pantalla y copia en un buffer interno el bloque de

programa fuente que esté seleccionado. Pegar (Ctrl+V) Pega el bloque de programa fuente almacenado en el buffer

interno sobre la posición actual del cursor. Seleccionar Todo Selecciona todo el texto o programa fuente. Buscar (Ctrl+B) Busca dentro del programa fuente una determinada cadena

de caracteres. Reemplazar (Ctrl+R) Busca dentro del programa fuente una determinada cadena

de caracteres y la reemplaza por otra. 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 aplicación del usuario, la comunicación con el PC queda rota. Este sincronismo permite recuperar esa comunicación y devolver el control al programa monitor.

Leer Memoria 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. Según el tipo de memoria seleccionada se abre el área correspondiente y se visualiza el contenido actual de la misma.

Escribir rango Esta opción sólo está activada si seleccionamos, mediante las

correspondientes pestañas, 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 diálogo en la que se indica dirección inicial, dirección final y valor a escribir.

2-9

Page 35: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC

Figura 2-10. Escribiendo sobre un rango de memoria

Ensamblar (F8) Esta opción 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 válido para ser grabado sobre el PIC y ejecutado.

Test_Tarj (F3) Comprueba que la tarjeta de memoria Memory Card de

Ingeniería de Microsistemas Programados S.L. esté debidamente insertada en el zócalo del entrenador.

Copiar PIC->Tarj (F4) Copia el contenido íntegro de la memoria de programa del

usuario sobre la tarjeta de memoria Memory Card de Ingeniería de Microsistemas Programados S.L. De esta forma es posible salvar la aplicación sobre la tarjeta.

Leer tarj->PIC (F5) Lee el contenido íntegro de la tarjeta Memory Card de Ingeniería

de Microsistemas Programados S.L. y lo graba sobre la memoria de programa del usuario. de esta forma se recupera la aplicación salvada sobre la tarjeta.

Opciones Permite seleccionar el puerto de comunicaciones del PC entre COM1

(Ctrl+1) y COM2 (Ctrl+2). También 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 opción de ensamblar.

2.5.1.4 Ejecución Presenta dos opciones para ejecutar el programa de aplicación del usuario que se supone grabado en la memoria de programa del PIC.

Ejecución (F9) Ejecuta la aplicación del usuario desde la dirección 0x0005. Como ya se ha explicado anteriormente esta es la primera dirección libre que tiene el usuario para almacenar sus programas.

Ejecución Desde (Ctrl+F9) Ejecuta la aplicación del usuario desde la dirección 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 diálogo similar al mostrado en la figura 2-11

2-10

Page 36: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC

Figura 2-11. Ejecución desde una determinada dirección

2.5.1.5 Ayuda Consta de dos sencillas opciones

Manual (F1) Proporciona una pequeña explicación sobre el manejo del software Real_PIC.

Acerca (F12) Informa de la versión del software Real_PIC

2.5.2 El área de EDITOR Se activa al accionar la pestaña EDITOR y/o la opción/Botón Nuevo. Se muestra en la figura 2-12.

Figura 2-12. El área de edición

Sobre esta área se edita el programa fuente que, bien puede teclearse directamente, o bien cargarse desde un fichero con extensión *.ASM. Dispone de todas las funciones básicas que permiten una cómoda edición 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 también se realiza el proceso de ensamblado pulsado el botón 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 opción correspondiente.

2-11

Page 37: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X 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 pestaña 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 botón 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 botón ESCR PROG transfiere el contenido de esta área a la memoria de programa del PIC (0x0004-0xFFF). Realmente es el proceso de grabación. 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 botón 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 visualización de esta área se realiza de dos formas diferentes que se seleccionan mediante las correspondientes pestañas: NEMONICO o HEXADECIMAL. La representación en nemónico es la más habitual y la que aparece por defecto (figura 2-13). En sendas columnas a la izquierda aparece un número de línea y la dirección hex. donde se encuentra la instrucción. Seguidamente aparece el código de operación, a continuación el nemónico y, finalmente, los operandos. En la figura 2-14 se muestra la memoria de programa representada en hexadecimal.

2-12

Page 38: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X 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 instrucción 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. Sólo 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 pestaña Mem EEPROM. Su aspecto es el mostrado en la figura 2-15.

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

2-13

Page 39: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X 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 botón 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 posición individual se realiza situando el cursor en la celda deseada y pulsando el botón derecho del ratón. Podemos modificar el contenido de la EEPROM. Para ello situamos el cursor en la celda o posición deseada y tecleamos un byte en hexademial. Automáticamente se selecciona la siguiente celda para introducir el siguiente valor. También podemos llenar un rango de posiciones con un determinado valor. En el menú Herramientas se selecciona la opción Escribir Rango y se completa la caja de diálogo con la dirección inicial, la final y el dato a escribir. Se recuerda que las posiciones 0xF8-0xFF están reservadas por el programa monitor PICMOS’7X. No es aconsejable modificar el contenido de las mismas. 2.5.5 El área RAM de datos Se activa mediante la pestaña 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 botón LEER RAM realiza la

lectura de la memoria RAM y la actualiza sobre esta área. A la derecha se representan los registros SFR que también coinciden con ciertas posiciones de las representadas a la izquierda. Por ejemplo, el registro STATUS coincide con la posición 0x03 por lo que ambas tienen el mismo valor.

Se puede leer una posición individual situando el cursor sobre la celda deseada y pulsando el botón derecho del ratón. Dicha celda se modificará inmediatamente con el valor actual.

Es posible modificar el contenido de cualquier posición. Esta se selecciona y se introduce el nuevo valor. Inmediata y automáticamente se selecciona la siguiente para su modificación. También es posible la modificación de un rango de direcciones RAM escribiendo sobre ellas un determinado valor. En el menú Herramientas se selecciona la opción Escribir Rango. En la caja de diálogo que aparece se indica la dirección inicial, la final y el valor a escribir. La posibilidad de poder acceder y modificar cualquier posición RAM, incluidos los SFR, es muy interesante. Permite hacer depuración hardware en tiempo real a nivel de registros. Efectivamente se puede

2-14

Page 40: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X 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 periféricos a ellas conectados. No se recomienda acceder a las posiciones RAM empleadas por el propio programa monitor PICMOS’7X. 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 Ingeniería de Microsistemas Programados S.L.

Figura 2-17. Botones para la gestión de la tarjeta de memoria

En primer lugar hay que decir que tanto el programa monitor PICMOS’7X como el software Real_PIC únicamente gestionan la tarjeta de memoria “Memory Card” desarrollada y comercializada por Ingeniería de Microsistemas Programados S.L. El hardware del entrenador "PIC Laboratory" admite la inserción 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 disposición. A esta tarjeta se la puede considerar como una memoria externa auxiliar para salvar y recuperar distintos programas de aplicación. El botón de la izquierda verifica si la tarjeta está o no insertada en el zócalo Smart Card, visualizando el mensaje oportuno en uno o en otro sentido. Pulsando la tecla F3 se obtiene el mismo resultado. El botón central y/o la tecla F4 permite transferir la memoria de programa del usuario sobre la tarjeta y de esta forma salvar la aplicación para posteriores usos. Esta operación puede tardar unos segundos en realizarse. Finalmente, el botón 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 aplicación salvada anteriormente. Esta operación puede tardar unos segundos en realizarse. Se recomienda que los contactos de la tarjeta estén perfectamente limpios, de lo contrario se pueden producir errores en la transferencia de información. 2.5.7 Ejecución Las opciones de ejecución son dos y se pueden elegir mediante la opción Ejecución del Menú principal o bien mediante los dos botones mostrados en la figura 2-18

Figura 2-18. Los botones de ejecución

2-15

Page 41: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 2: El monitor PICMOS’7X y el software Real_PIC Con el botón de la izquierda se comienza la ejecución desde la posición 0x0005 que se considera la dirección inicial de la memoria de programa del usuario. Los programa empezarán normalmente mediante la directiva:

org 0x0005 De todas formas un programa puede empezar en cualquier dirección siempre que esté comprendida entra 0x0004 y 0x0FF. Este es el área de programa del usuario. Esto se consigue pulsando el botón de la derecha. Aparece una ventana en la que se pide indicar la dirección de inicio.

2-16

Page 42: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones

Tema 3: Módulos OEM y aplicaciones 3.1 INTRODUCCION ¿Qué significa la abreviatura OEM?. Procede del inglés “Original Equipment Manufacturer”, es decir, hace referencia a fabricantes de equipos o productos finales. Los módulos OEM consisten en pequeñas tarjetas o circuitos electrónicos 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 módulo OEMPICMOS’76 diseñado por Ingeniería de Microsistemas Programados S.L.

Figura 3-1. El módulo OEM de Ingeniería de Microsistemas Programados S.L. Contiene la electrónica de control basada en un microcontrolador PIC16F876 dotado del programa monitor PICMOS’76, así como los circuitos de interface necesarios. El módulo se inserta en el producto o aplicación final donde, a través de las patillas apropiadas, se conectan los periféricos a controlar. El programa desarrollado por el usuario y alojado en el propio microcontrolador determinará el funcionamiento general del sistema. 3.2 EL MODULO OEMPICMOS’76 Se trata de una tarjeta de pequeña dimensiones (75mm x 45mm) y bajo coste con una hilera de 26 pines con paso 2.54 y en formato SIP que permite insertarla fácilmente en la aplicación o producto final. Es la versión económica del entrenador "PIC Laboratory". El mencionado entrenador cumple una misión de carácter didáctico y se emplea en las fases de desarrollo de una aplicación. Para ello contamos con el mismo programa monitor PICMOS’76 y los periféricos que el propio entrenador aporta, lo que nos permite evaluar el funcionamiento en tiempo real de un programa. Sin embargo una aplicación final requiere gobernar sus propios periféricos a medida de la propia aplicación. En este caso podemos emplear el módulo OEMPICMOS’76 que simplemente contiene la electrónica esencial que necesita el microcontrolador, siendo labor del usuario desarrollar el software adecuado y conectar los periféricos según las necesidades. La fotografía de la figura 3-2 muestra las partes más relevantes de que consta el módulo. El programa que controla la aplicación se graba sobre el microcontrolador PIC16F876. Este viene grabado de serie con el programa monitor PICMOS’76 desarrollado por Ingeniería de Microsistemas Programados S.L.

3-1

Page 43: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos 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 depuración a nivel de registros.

Figura 3-2. El módulo OEMPICMOS’76

El microcontrolador trabaja a una velocidad de 20MHz gracias al oscilador formado por el cristal de cuarzo incluido en el propio módulo. Esto supone que las instrucciones del programa de aplicación se ejecutan a razón de 200nS/instrucción. El pulsador incluido en el módulo permite, en caso de bloqueo, resetar o iniciar el sistema de forma manual. El módulo OEMPICMOS’76 está dotado del circuito de adaptación necesario para un interface RS-232 que, a través de un conector estándar tipo DB-9 permite la conexión con el canal serie de un PC. De está forma es posible la comunicación entre el módulo y el software Real-PIC del PC con objeto de grabar los programas de aplicación, en el microcontrolador. La velocidad de comunicación se realiza a 38400 baudios. A través de una hilera de 26 pines se realiza la alimentación del módulo así como la conexión con los periféricos a gobernar. Tal y como se muestra en la fotografía de la figura 3-3, el módulo de la izquierda tiene la hilera de pines en paralelo a la propia placa. Esto permite la inserción vertical de dicho módulo sobre la aplicación o producto final, ocupando menos superficie pero más altura. Es así como se suministra de serie. Sin embargo en el módulo de la derecha la hilera de pines se coloca de forma perpendicular a la placa, lo que permite la inserción de la misma de forma horizontal. Ocupa más superficie pero menos altura. Se suministra bajo pedido.

Figura 3-3. Disposición de la hilera de pines

3-2

Page 44: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones

La patilla nº 1 es la primera empezando por la izquierda y la distribución de señales es la que se muestra en la siguiente tabla: Pin Nº NOMBRE DESCRIPCION

1 GND Tierra de alimentación 2 VCC Alimentación positiva de +5Vcc 3 GND Tierra de alimentación 4 RST Señal de inicio o RESET. Se activa a nivel bajo 5 RA0/AN0 E/S digital o entrada analógica 6 RA1/AN1 E/S digital o entrada analógica 7 RA2/AN2/VREF- E/S digital o entrada analógica o entrada negativa de tensión de referencia 8 RA3/AN3/VREF- E/S digital o entrada analógica o entrada positiva de tensión de referencia 9 RA4/T0CKI E/S digital o entrada de reloj externo para el TMR0 10 RA5/AN4 E/S digital o entrada analógica 11 RB0/INT E/S digital o entrada de interrupción externa 12 RB1 E/S digital 13 RB2 E/S digital 14 RB3 E/S digital 15 RB4 E/S digital o entrada de interrupción por cambio de estado 16 RB5 E/S digital o entrada de interrupción por cambio de estado 17 RB6 E/S digital o entrada de interrupción por cambio de estado 16 RB7 E/S digital o entrada de interrupción por cambio de estado 19 RC0/T1OSO/T1CKI E/S digital o salida de oscilador del TMR1 o entrada de reloj externo para el TMR1 20 RC1/T1OSI/CCP2 E/S digital o entrada de oscilador del TMR1 o E/S del módulo CCP2 21 RC2/CCP2 E/S digital o E/S del módulo CCP1 22 RC3/SCK/SCL E/S digital o E/S de reloj para los modos SPI e I2C 23 RC4/SDI/SDA E/S digital o entrada de datos SPI o E/S de datos I2C 24 RC5/SDO E/S digital o salida de datos SPI 25 RC6/TX/CK E/S digital o transmisión asíncrona o reloj síncrono del USART 26 RC7/RX/DT E/S digital o recepción asíncrona o E/S de datos síncrono del USART

3.2.1 Esquema eléctrico La figura 3-4 muestra el esquema eléctrico del módulo OEMPICMOS’76. Se emplea el microcontrolador PIC16F876 dotado del programa monitor PICMOS’76. Las 22 líneas de E/S que dispone están organizadas en 3 grupos o puertas: Puerta A (RA0-RA5), puerta B (RB0-RB7) y puerta C (RC0-RC7). Cada una de esas líneas puede tener asignadas una o mas utilidades y todas ellas son accesibles a través de la hilera de pines del conector de aplicación 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 ejecución es por tanto de 200nS/instrucción. Esta velocidad se puede modificar cambiando el valor de Y1, C1 y C2 según especificaciones de Microchip. Ahora bien el programa monitor PICMOS’76 controla el USART para la comunicación serie con el PC en base a los 20MHz para obtener una velocidad de transferencia de 38400 baudios. Si se varía la velocidad de trabajo no será posible establecer la comunicación entre dicho programa monitor residente en el PIC y el software de desarrollo Real_PIC del PC. Las líneas RC6 y RC7 del PIC se corresponden con las señales de transmisión y recepción del USART respectivamente. Se emplean para la comunicación serie. Mediante el circuito de adaptación MAX232 (U2) estas señales adquieren los niveles lógicos propios de la norma RS-232 y van a parar al conector estándar DB-9 (J2). Mediante el típico cable de comunicaciones DB-9 macho-hembra (no incluido) podemos conectar el módulo OEMPICMOS’76 con el canal serie de un PC. Los diodos led D2 y D3 pilotan y reflejan si hay o no transmisión/recepción de datos.

3-3

Page 45: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones A través de la señal RTS (pata 7 de J2) el software Real_PIC del PC genera la señal CTS que va a parar a MCLR del PIC. De esta forma el PC puede solicitar la atención del módulo cuando sea conveniente, estableciendo la comunicación entre ambos.

+5Vcc

+5Vcc

+5Vcc

+5Vcc

+5Vcc

TxDRxD

RxDTxD

RTSCTS

C7

100n

C4

100n

C8

100n

C6100n

C5100n

C3

100n

R2330

R4

470R5470

R1

330

R3

330

R647K

D11N4148

D3

TxD

D2

RxD

SW1

RESET

U2

MAX232

V+2

T1IN11

T1OUT12

T2IN10

T2OUT9

C1+1

C1-3 C2- 5C2+ 4

R2IN 8R2OUT 7R1IN 13R1OUT 14

V- 6

VCC16 GND 15

C127p

C227p

U1

PICMOS76

RA0/AN02 RA1/AN13 RA2/AN24 RA3/AN35 RA4/T0CKI6 RA5/AN47

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

MCLR1

OSC19

OSC210

Vss8

Vss19

Vdd20

Y1

20MHz

J2

RS-232

594837261

J1APLICACION

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

RB4

RB1

RC

2

RB5RB6

RB5

RC6RC7

RB4

RB7

RC5

RB3

RC1

RST

RB0

RB1

RB0

RC2

RA5

RA3

RC0

RC3

RC7

RC

7

RC

4

RB2

RA4

RB3RB2

RC

0R

B7

RC4

RC

5

RC

3

RB6

RA2

RC

1

RA0

RA1

RC6

RC

6

Figura 3-4. Esquema eléctrico del módulo OEMPICMOS’76 A pesar de que RC6 y RC7 son empleadas para la comunicación serie con el PC bajo el control del monitor PICMOS’76, también están disponibles. Estas líneas pueden ser empleadas por el programa de aplicación del usuario bien, gestionando su propia comunicación serie a través de ellas, o bien como líneas de E/S de propósito general. En este último caso se recomienda retirar el circuito de adaptación MAX232 (U2). 3.2.2 Aplicaciones Dado su bajo coste, las aplicaciones de los módulos OEM son numerosas. El módulo contiene lo esencial para que el microcontrolador pueda ejecutar el software de control. Se inserta en el hardware diseñado por el fabricante de la aplicación 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 OEMPICMOS’76 que propone Ingeniería de Microsistemas Programados S.L. como solución de coste medio/bajo. En la figura 3-5 se muestra el empleo del módulo en aplicaciones de carácter didáctico. Efectivamente, como soporte se emplea el entrenador “UNIVERSAL TRAINER” de Ingeniería de Microsistemas Programados S.L.. Este contiene fuentes de alimentación; periféricos que simulan entradas (interruptores, pulsadores, generadores lógicos, etc.); periféricos que simulan salidas (diodos leds, displays, zumbador, etc.).

3-4

Page 46: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones

También dispone de una amplia placa “proto-board” que permite el montaje y cableado sin soldadura de cualquier circuito eléctrico a base de componentes discretos y/o integrados.

Figura 3-5. Aplicaciones didácticas con el OEMPICMOS’76

El módulo OEM se inserta en la placa “proto-board” como si de un componente mas se tratara. El estudiante cablea y conecta, a través de la hilera de pines, las líneas de E/S del PIC con los periféricos que desee gobernar. Gracias al programa monitor PICMOS’76 residente en el propio PIC y, con ayuda del software Real_PIC, los programas de aplicación se editan, ensamblan y descargan desde el PC para su ejecución, análisis y comprobación. De una forma rápida y fácil el usuario puede hacer infinidad de experimentos y proyectos. La fotografía de la figura 3-6 muestra una aplicación de carácter mas comercial. Esta consiste en realizar una serie de medidas analógicas y visualizarlas sobre una pantalla LCD. Con un teclado se establecen una serie de parámetros y límites 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 alimentación, así como los periféricos empleados en la aplicación: pantalla LCD, teclado hexadecimal, switches de configuración y leds piloto. El módulo OEMPICMOS’76 se inserta en el equipo final (aparece arriba a la derecha de la imagen). El PIC contiene el programa que controla la aplicación. Este programa a su vez ha sido descargado, vía serie, desde el PC, gracias al monitor PICMOS’76 residente en el mismo PIC y el software de desarrollo Real_PIC. Conviene también 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 OEMPICMOS’76 incorporan un PIC16F876 con las características anteriormente mencionadas. Esto supone que los programas de aplicación del usuario pueden ser modificados y/o actualizados de una forma rápida y eficaz.

3-5

Page 47: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones

Figura 3-6. Aplicación comercial del OEMPICMOS’76

3.3 EL CHIP PICMOS’76 Tanto el entrenador "PIC Laboratory" como el módulo OEMPICMOS’76 incorporan un microcontrolador PIC16F876 que viene grabado con el programa monitor PICMOS’76. 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 PICMOS’76 se comercializa de forma individual y es la solución de más bajo coste disponible. Efectivamente, con ayuda del entrenador "PIC Laboratory" o del módulo OEMPICMOS’76, 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: alimentación, 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 PICMOS’76 que se supone grabado con el programa de control. Se deben realizar las conexiones necesarias tanto con los periféricos que se emplean como con el circuito oscilador y la alimentación 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 Ingeniería de Microsistemas Programados S.L. en la que se ha cableado una serie de periféricos (unos leds y un potenciómetro) y se ha insertado el PICMOS’76 en el lugar reservado para el mismo. La placa MPIC-28/40 se suministra con la fuente de alimentación y el circuito oscilador montados.

3-6

Page 48: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones

Figura 3-7. El PICMOS’76 en aplicaciones didácticas

Figura 3-8. El PICMOS’76 controlando un determinado proceso

3-7

Page 49: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 3: Módulos OEM y aplicaciones 3.4 RESUMEN La imagen de la figura 3-9 muestra las tres alternativas o herramientas que Ingeniería 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 más alto nivel. Admite microcontroladores PIC16F876 y 16F877 de 28 y 40 patillas respectivamente. Estos microcontroladores están dotados del sistema operativo PICMOS’7X gracias al cual y, con ayuda del software Real_PIC, es posible editar, ensamblar y grabar la aplicación del usuario desde el canal serie de un ordenador PC. El entrenador incluye numerosos periféricos típicos con los cuales poder probar, depurar y poner a punto infinidad de aplicaciones.

• El módulo OEMPICMOS’76 es la solución de coste medio. Consiste en una pequeña

placa que se enchufa en el hardware del producto final del usuario. El módulo incorpora circuito de reset, circuito oscilador e interface para canal serie, además del microcontrolador PICMOS’76 con su programa monitor.

• El microcontrolador PICMOS’76 es la solución más económica. Contiene el sistema

monitor que permite la grabación del programa de aplicación del usuario. El chip se inserta en el hardware final del usuario que debe estar compuesto de los periféricos a gobernar, el sistema de reset, el circuito del oscilador, interface serie, etc.

3-8

Page 50: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

Tema 4: Tutorial 4.1 INTRODUCCION

En este tema no tratamos de hacer un tutorial dedicado a explicar la teoría, arquitectura y programación de los microcontroladores de la familia PIC16F87X. En Ingeniería de Microsistemas Programados S.L. pensamos que existe excelente y abundante literatura tanto en castellano como en inglés dedicada a ellos. Los libros de texto “Microcontroladores PIC, la solución en un chip”, de la editorial ITES Paraninfo, así como la 1ª y 2ª parte de “Microcontroladores PIC, Diseño práctico de aplicaciones”, de la editorial Mc Graw-Hill, son un buen ejemplo. Así mismo recomendamos la visita periódica a las páginas www.microchip.com donde podemos encontrar abundante información técnica de productos Microchip así como actualizaciones de herramientas software y www.microcontroladores.com de Ingeniería de Microsistemas Programados S.L. En esta última se ofrece información de nuevos productos y actualizaciones de las distintas herramientas software empleadas.

Se trata de un tema de carácter netamente práctico. 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 enseña como instalar los diferentes programas y ejemplos que se suministran en el disco que acompaña al equipo. También se explica paso a paso el proceso para editar, ensamblar y grabar nuestros propios programas de aplicación así como el empleo de diferentes utilidades. Para ello contamos con el programa monitor PICMOS’7X 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 periféricos de que consta el entrenador. De esta forma el usuario adquiere unos conocimientos generales de programación, del empleo de ciertas rutinas de control, del manejo de periféricos 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 acompaña 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 continuación se detallan los pasos a realizar.

1.- Aquellos usuarios que no dispongan del programa WinZip instalado en su ordenador, pueden acceder a la página www.winzip.com. En ella existen diferentes versiones del programa. El usuario puede adquirir una versión share-whare o de evaluación o la versión definitiva con el correspondiente registro.

2.- Copiar, desde el disquete, el fichero comprimido Usuario sobre la raíz del disco duro

C:\. Para ello utilizar las clásicas 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 ejecución de WinZip es automática. 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

Page 51: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

Figura 4-1. Lista de archivos a descomprimir

4.- Pulsar el botón “Extract”. Aparece una caja de diálogos como la mostrada en la figura 4-2. En ella se pide la ruta donde debe depositarse la extracción de los ficheros comprimidos. Se recomienda que dicha ruta sea la raíz del disco duro C:\. Se pulsa nuevamente el botón “Extract”.

Figura 4-2. Estableciendo la ruta de extracción de ficheros.

5.- Transcurrido un cierto tiempo se produce la extracción de los ficheros comprimidos. En el directorio raíz 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 versión Windows. Se puede actualizar con las versiones mas recientes accediendo a la página www.microchip.com de Microchip.

4-2

Page 52: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

El fichero Real_PIC es el programa de comunicaciones entre el PC y el programa monitor PICMOS’7X residente en el microcontrolador del entrenador. Se puede actualizar con las versiones mas recientes accediendo a la página www.microcontroladores.com de Ingeniería 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 periféricos.

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. También debemos seleccionar la ruta donde se encuentra el programa ensamblador MPASMWIN. Cada vez que queramos ensamblar, Real_PIC irá a la ruta establecida. Según la instalación realizada anteriormente, el MPASMWIN se encuentra en la carpeta PIC_Laboratory. Podemos por tanto seleccionar la ruta mediante la caja de diálogos 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 botón “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 diseñados para PIC’s. 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 definición de etiquetas de todos los registros SFR así como de sus bits. El programa fuente se hace más simbólico permitiendo el empleo de esas etiquetas ya definidas.

4-3

Page 53: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

Figura 4-5. El programa fuente de TUTOR

La directiva org 0x05 determina la dirección 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 posición 0x004 está destinada al vector de interrupción. En el presente ejemplo no se usa. Cualquier dirección fuera de este rango está ocupada por el programa monitor PICMOS’7X por lo que se consideran direcciones no válidas. A partir de la etiqueta Inicio se comienza a definir los puertos de E/S indicando qué líneas 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 línea de la Puerta A se refleje inmediatamente sobre la Puerta B. 4.3.2 Ensamblando Ensamblar consiste en leer el programa fuente simbólico y convertirlo en instrucciones máquina 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 botón ENSAMBLAR que tenemos en el entorno de trabajo que ofrece Real_PIC. Este botón 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 rápido. 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

Page 54: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

• *.HEX Para el caso que nos ocupa, es el fichero más importante de todos los obtenidos. Contiene el código máquina ejecutable del programa. Es el que se empleará posteriormente para la grabación del microcontrolador.

• *.LST Se trata de un fichero tipo texto imprimible que contiene el programa fuente

original así como la traducción a código máquina de cada una de las instrucciones. • *.ERR Es también un fichero texto imprimible que contiene todos los mensaje, avisos

o errores que se produjeron durante el proceso de ensamblado. • *.COD Este fichero contiene información ú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 grabación sobre la memoria de programa del usuario del PIC.

1.- Activamos el área “Mem Programa” haciendo clic en la pestaña correspondiente. Es posible que el contenido de esta memoria de programa se visualice con el valor 0x3FF que corresponde con la instrucción ADDLW 0xFF. Esto es porque se supone que la memoria de programa del PIC está inicialmente borrada.

2.- Con la opción de abrir fichero abrimos el ejecutable del programa TUTOR. La figura

4-6 muestra el listado del programa representado en nemónicos. En la columna de la izquierda aparece un número de línea y en la siguiente se representa en hexadecimal la dirección de memoria donde se depositará la instrucción. La primera libre siempre será la 0x0004. Finalmente se muestra el programa. A la izquierda el código OP de cada instrucción, en el centro el nemónico de la misma y a la derecha los operandos.

Figura 4-6. El área de la memoria de programa

El listado del programa máquina también se puede visualizar en formato

hexadecimal si hacemos clic en la pestaña correspondeinte.

4-5

Page 55: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

3.- Haciendo clic sobre el botón 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 sólo queda ejecutarlo y verificar su funcionamiento. Existen dos formas de ejecución. La más habitual consiste en ejecutar un programa siempre desde la dirección 0x0005. Esta es la primera dirección libre disponible para el usuario en la memoria de programa del PIC. Se asume que el usuario comenzará sus programas en esta dirección (org 0x0005). Basta seleccionar la opción de Ejecución 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 dirección libre. Seleccionando la opción Ejecución desde del menú Ejecución o bien la combinación de teclas Ctrl + F9 se abre una ventana que nos permite establecer la dirección de inicio. Para comprobar lo expuesto, vamos a realizar los siguientes pasos:

1.- Pulsar F9 (ejecución 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 lógico de entrada.

3.- Se debe tener en cuenta que cuando el PIC ejecuta una aplicación del usuario, el

programa monitor pierde el control. Es por ello que cualquier operación posterior que queramos realizar (p.ej. LEER PROG) será rechazada por falta de comunicación con el PC.

4.- Pulsar el botón 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 dirección de inicio distinta a la real. Pulsamos Ctrl + F9

y en la ventana correspondiente tecleamos la dirección 0x0008 seguido del botón 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 dirección de inicio correcta

(0x0005). Vemos que ahora el programa sí funciona. 7.- Probamos ahora a desconectar la alimentación del entrenador. También finalizamos

la ejecución del Real_PIC del PC y desconectamos la conexión serie. Volvemos a conectar la alimentación 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 autónoma respecto al PC.

8.- En esta situación 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

Page 56: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Con el fin de que el usuario vaya cogiendo experiencia, proponemos hacer una modificación 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 edición, ensamblado, grabación y ejecución 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 ningún 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 también a la derecha de la ventana de forma individual. Pulsando el botón 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 “depuración en tiempo real a nivel de registros”. Esto tiene una gran utilidad a la hora de comprobar el hardware de nuestra aplicación. Efectivamente, supongamos que en la puerta B tenemos conectado una serie de periféricos de salida (p.e. leds). Podemos modificar el contenido de la posición de memoria correspondiente a la puerta B y con ello actuar directamente y en tiempo real sobre los periféricos 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 posición basta con situar el cursor en la celda correspondiente y, tras hacer clic, introducir el valor deseado. Automáticamente se selecciona la siguiente celda o posición para introducir un nuevo valor y así sucesivamente.

4-7

Page 57: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 botón Nuevo, sincronizamos la placa (si no lo estuviera) y activamos el área de Mem RAM mediante la pestaña correspondiente.

2.- Buscamos la posición 0x86, la seleccionamos haciendo clic sobre la celda

correspondiente y escribimos el valor 0x00. Esta posición corresponde al registro TRISB y con el valor que introducimos lo configuramos como salida.

3.- Escribimos el valor 0xFF sobre la posición 0x06. Esta posición corresponde con la

puerta B. El valor escrito implica escribir niveles “1” sobre las 8 líneas, con lo que los 8 leds conectados a ellas deben iluminarse.

4.- Seleccionamos de nuevo la celda de la posición 0x06 y escribimos el valor 0x00.

Todos los leds deben apagarse. 5.- Seleccionamos la celda de la posición 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

también 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 cómo 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 señales que introducen por un puerto, determinados periféricos 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 botón Nuevo, sincronizamos la placa (si no lo estuviera) y activamos el área de Mem RAM mediante la pestaña correspondiente.

2.- Localizar la celda correspondiente a la posición 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

Page 58: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

3.- Localizar la celda correspondiente a la posición 0x85 y escribir el valor 0x3F. Accedemos al registro TRISA y lo configuramos como entrada.

4.- Localizar la celda de la posición 0x05 y la seleccionamos haciendo clic. Con el

botón derecho del ratón procedemos a leer el contenido de dicha posición. Hemos leído la puerta A y el valor obtenido se debe corresponder con el estado lógico de los interruptores RA0-RA5.

5.- Cambiamos de estado los interruptores para que introduzcan un valor distinto. 6.- La posición 0x05 se mantiene seleccionada. Cada vez que hagamos clic con el

botón derecho del ratón, 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 señales de entrada que un determinado periférico introduce en el puerto correspondiente. Podemos por tanto verificar el hardware relacionado con ese periférico. Escritura de bloques Si bien anteriormente escribimos valores en posiciones individuales de memoria RAM, también es posible rellenar un área de memoria con un determinado valor.

1.- Se activa el área de Mem RAM mediante la pestaña correspondiente. 2.- En el menú Herramientas se selecciona la opción “Escribir Rango Memo”. 3.- Aparece una caja de diálogos en la que se deben indicar la dirección inicial, la

dirección 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

Page 59: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial 4.4.2 Editando la EEPROM de datos La memoria EEPROM de datos del PIC también puede ser leída 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 volátiles (números de serie, códigos ASCII, tablas de datos, etc.) pero modificables bien por el usuario o por el propio programa de aplicación. 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 botón Nuevo, sincronizamos la placa (si no lo estuviera) y activamos el área de Mem EEPROM mediante la pestaña 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 botón 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 4-9 sirve como ejemplo de una lectura.

Figura 4-9. Lectura de la EEPROM de datos

3.- También es posible la lectura individual de una posición. Basta con seleccionar una

determinada celda y hacer clic con el botón derecho del ratón. Escribiendo sobre la EEPROM Es posible la modificación de bytes individuales de la EEPROM de datos del PIC.

1.- Seleccionar la posición deseada y hacer clic sobre la celda correspondiente. 2.- Introducir el valor deseado.

4-10

Page 60: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

3.- El cursor se desplaza a la siguiente celda o posición. Se introduce un nuevo valor.

El proceso se repite tantas veces como se desee. 4.- Al igual que con la RAM, también es posible la escritura de un área o rango de

direcciones EEPROM con un determinado valor. En el menú Herramientas se selecciona la opción “Escribir Rango Memo”.

3.- Aparece una caja de diálogos en la que se deben indicar la dirección inicial, la

dirección 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 Ingeniería de Microsistemas Programados S.L. como la que se muestra en la figura 4-11.

Figura 4-11. La tarjeta Memory Card

4-11

Page 61: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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” diseñadas por Ingeniería de Microsistemas Programados S.L. con objeto de poder salvar las aplicaciones y programas del usuario para luego poderlos recuperar y ejecutar de forma autónoma y sin intervención 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 botón de la izquierda sirve para interrogar al sistema si la tarjeta “Memory Card” está o no insertada. En pantalla aparecerá el mensaje correspondiente. El botón central transfiere la totalidad de la memoria de programa del PIC sobre la tarjeta. Finalmente, el botón 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 aplicación 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 aplicación concreta y funcional.

2.- Pulsamos el botón 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 aplicación 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 botón 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 ejecución (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 alimentación así como el canal serie que une el entrenador con

el PC. 7.- Conectamos la alimentación 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 zócalo y pulsamos RESET. Esto es equivalente a

conectar la alimentación. 9.- El programa monitor procede a leer, automáticamente, el programa contenido de la

tarjeta, grabarlo sobre el PIC y ejecutarlo. 10. Los pasos 6-9 nos demuestran la autonomía del entrenador respecto al PC.

Efectivamente, en el PIC había un programa y en la tarjeta otro (TUTOR). Al iniciar

4-12

Page 62: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 acompaña al equipo. Además de aprender ciertas técnicas y “trucos” de programación con los ejercicios propuestos, también nos familiarizaremos con el manejo del entrenador "PIC Laboratory" y sus periféricos, así como con los recursos internos del microcontrolador. Todos los programas los encontrará en el disquete que acompaña 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 posición 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 ningún tratamiento con las entradas. Merece especial atención la configuración del puerto A como puerto Digital. 4.6.2 Ejemplo 2: Función lógica 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 posición RB0, RA0 y RA4 respectivamente Comentarios El programa está contenido en Ejem_2. Se realiza un simple tratamiento con el valor de la señal de entrada. Merece especial atención la configuración del puerto A como puerto Digital. 4.6.3 Ejemplo 3: Decodificador combinacional Enunciado El ejemplo propone generar unas señales de salida sobre RB0-RB7 en función del estado de dos señales 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 posición RB0, RA0 y RA4 respectivamente

4-13

Page 63: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Comentarios El programa contenido en el fichero Ejem_3 muestra la técnica de las máscaras que permiten filtrar una información de entrada de varios bits y procesar sólo 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 máquina para el torneado de una pieza. La activación/desactivación 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 posición 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 máquina 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 perforación de una pieza. Dicho cabezal es sometido a distintos movimientos de aproximación 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 posición 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 máquina simulada. 4.6.6 Ejemplo 6: Automatismo, máquina 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 vacío en su lugar. Requisitos • Habilitar los leds del entrenador cerrando el jumper JP1. • Los Jumpers JP4, JP5 y JP6 deben estar en la posición RB0, RA0 y RA4 respectivamente Comentarios

4-14

Page 64: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial El programa introduce el concepto de un contador realizado sobre una variable RAM y también la forma de detectar pulsos en ciertas señales de entrada. 4.6.7 Ejemplo 7: Máquina de envasar, versión 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 vacío en su lugar. Requisitos • Habilitar los leds del entrenador cerrando el jumper JP1. • Los Jumpers JP4, JP5 y JP6 deben estar en la posición 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 señales que, por supuesto, son leídas por el PIC. Para evitar el efecto rebote se intercala una temporización en cada accionamiento. De esta forma se espera a que las láminas de contacto del interruptor se estabilicen. El ejemplo hace uso de un rutina de temporización de propósito 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 máquina es de 0.2 µS. Con un preesacler de 256 el TMR0 evoluciona cada evento de 51,2µS (256 * 0,2). La temporización 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 iluminarán secuencialmente de izda. a dcha. y viceversa en función 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 posición RB0, RA0 y RA4 respectivamente Comentarios Se emplea una rutina de temporización basada en los mismos principios que en el ejemplo anterior. Sin embargo, con un PIC trabajando a 20MHz y un preescaler de 256, la máxima temporización que el TMR0 puede realizar es de unos 13mS. Se ha optado por que el TMR0 temporice 10 mS y esta temporización se repita 25 veces para conseguir un total de 250 mS. 4.6.9 Ejemplo 9: La interrupción del TMR0 Enunciado

4-15

Page 65: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Se pretende demostar el funcionamiento de la interrupción 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 posición 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 interrupción en la posición 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 interrupción 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 posición INT. Comentarios Cada vez que se acciona el pulsador SW7, se provoca una interrupción 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 interrupción 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”, según 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 posición RB0. Comentarios

4-16

Page 66: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial El ejemplo es una simple muestra de cómo visualizar dos números (“0” y “1”) sobre el display de 7 segmentos del entrenador "PIC Laboratory". Para ello, sobre la puerta de salida se sacan los correspondientes códigos de 7 segmentos. 4.6.12 Ejemplo12: Decodificador BCD a 7 segmentos Enunciado Por las entradas RB0-RB3 se introduce el código BCD del dígito 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 posición RB0 y RA0 respectivamente. Comentarios Este ejemplo nos introduce al manejo de tablas de datos constantes. Efectivamente, la tabla consiste en los 16 códigos 7 segmentos de los dígitos a visualizar. Mediante la suma del PC con un desplazamiento, se selecciona uno de los 16 códigos, el del dígito 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 posición RB0 y RA0 respectivamente. Comentarios El ejemplo es una aplicación práctica consiste en realizar una década 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 lógico 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 posición RB0 y T0CKI respectivamente.

4-17

Page 67: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 interrupción. También muestra cómo se puede modificar dinámicamente el registro OPTION para hacer que el TMR0 actúe como contador o como temporizador según se necesite y con el preescaler apropiado. Podemos variar la frecuencia del generador mediante el potenciómetro P2 del entrenador, para conseguir una cuenta más o menos rápida. 4.6.15 Ejemplo 15: La memoria EEPROM de datos, la máquina “Su Turno” Enunciado Se trata de emular el funcionamiento de la típica máquina “Su Turno” habitual en muchos comercios de venta al público. 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 alimentación, se reanude la cuenta desde el último número. 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 posición RB0 , RA0 y RA4 respectivamente. Comentarios El programa pretende ilustrar la forma de grabar y recuperar datos no volátiles sobre la memoria EEPROM del PIC. las aplicaciones de este tipo de memoria son numerosas (códigos de accesos, agenda no volátil, etc.). 4.6.16 Ejemplo 16: Introducción al manejo de la pantalla LCD Enunciado Se trata de hacer una introducción 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 posición RB0. Comentarios El programa hace uso de las rutinas de manejo de la pantalla LCD que están contenidas en el fichero LCD_CXX.INC del disco de prácticas. Dichas rutinas son de propósito general y se incluyen en el programa fuente del usuario mediante la directiva INCLUDE del ensamblador. Es un buen método para incluir rutinas desde otros ficheros sin tenerlas que escribir en cada uno de los programas fuentes de aplicación 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

Page 68: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial • Habilitar la pantalla LCD cerrando el jumper JP3. • El Jumper JP4 debe estar en la posición RB0. Comentarios Se trata de mostrar una forma cómoda y versátil para visualizar cualquier tipo de mensajes de cualquier tamaño. Los mensajes se definen en tablas de datos constantes mediante la conocida instrucción RETLW. Todo mensaje finaliza con un código de fin de mensaje (0x00). Se ha diseñado una rutina llamada “Mensaje” que lee y visualiza todos los caracteres de un texto hasta llegar al código 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 posición 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 definición 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 más cómoda y fácil 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 código BCD de la tecla pulsada durante 2”. Requisitos • Habilitar los leds cerrando el jumper JP1 • El Jumper JP4 debe estar en la posición RB0. Comentarios Las rutinas para manejo del teclado se encuentran en el fichero “TECLADO.INC” del disco de prácticas. Mediante la directiva INCLUDE del ensamblador se deben incluir en los programas fuente de aplicación del usuario. Se puede apreciar que la puerta B se re configura dinámicamente. El programa principal la programa como salida, pero la rutina Key_Scan de exploración programa RB0-RB3 como salida y RB4-RB7 como entrada. Cuando la exploración ha finalizado, la puerta B queda como estaba en un principio. 4.6.20 Ejemplo 20: El teclado y el LCD Enunciado

4-19

Page 69: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Se trata de combinar el funcionamiento de estos dos periféricos. Sobre la pantalla LCD se visualiza la tecla pulsada. Requisitos • Habilitar el LCD cerrando el jumper JP3 • El Jumper JP4 debe estar en la posición RB0. Comentarios El ejemplo trata de mostrar como configurando las puertas en cada momento, el PIC puede gobernar en una misma aplicación periféricos tan dispares como son un teclado y una pantalla LCD, que fundamentalmente comparten el mismo puerto B. 4.6.21 Ejemplo 21: Interrupción 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 exploración del teclado sólo se realiza cuando se detecte una interrupción por cambio de estado en las líneas RB4-RB7 como consecuencia de pulsar cualquier tecla. Requisitos • Habilitar el LCD cerrando el jumper JP3 • El Jumper JP4 debe estar en la posición RB0. Comentarios El programa principal se mantiene en el modo SLEEP de bajo consumo. Cuando se pulsa cualquier tecla se produce una interrupción 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 aplicación. En el ejemplo anterior el PIC estaba constantemente en ejecución esperando que se pulse una tecla y por tanto consumiendo. En el presente ejemplo el PIC está en standby y sólo reacciona cuando tiene lugar cualquier pulsación. 4.6.22 Ejemplo 22: El TMR1, interrupción cada cierto tiempo Enunciado Se trata de que el TMR1 provoque una interrupción cada 0.1”. Un contador binario reflejado sobre los leds conectados a la puerta B, representa el número de interrupciones producidas. Requisitos • Habilitar los leds cerrando el jumper JP1 • El Jumper JP4 debe estar en la posición 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 actúe en el modo temporizador y provoque una interrupción cada 0.1”. El número de interrupciones producidas se verá reflejado sobre los leds de salida.

4-20

Page 70: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 línea RC0/T1CKI. La pantalla LCD visualiza en binario el número 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 también puede contar pulsos de entrada aplicados por la patilla RC0/T1CKI. Es sensible a los flancos ascendentes de la señal 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 señal. 4.6.24 Ejemplo 24: El TMR1 como divisor de frecuencia Enunciado El TMR1 cuenta el número de pulsos externos que se establecen en la variable Valor_N. Cuando finaliza se provoca una interrupción que hace bascular a la línea de salida RB0. La frecuencia en esta línea de salida será la del generador dividida entre 2* Valor_N. Requisitos • JP4 debe estar en la posición 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 interrupción 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 interrupción, 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: Frecuencímetro Enunciado El ejemplo propone realizar un frecuencímetro en base al número 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 posición RB0 • Habilitar el LCD cerrando el jumper JP3

4-21

Page 71: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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 interrupción 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 señal 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, interrupción periódica 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 posición RB0 • Habilitar el display cerrando el jumper JP2 Comentarios El ejemplo pretende mostrar el empleo del TMR2. Para ello provoca una interrupción 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 automática del TMR2 cada vez que finaliza la cuenta. Este registro determina por tanto la temporización a realizar. 4.6.27 Ejemplo 27: El TMR2, temporizaciones ajustables Enunciado Se trata de obtener por la salida RB0 una frecuencia variable en función de los interruptores de entrada RA0-RA5. Para ello emplearemos el TMR2 modificando dinámicamente su registro de periodos. Requisitos • JP4, JP5 y JP6 deben estar en la posición 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 varía la temporización. 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 varía, también 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 módulo CCP1, midiendo periodos Enunciado

4-22

Page 72: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Se trata de experimentar con el módulo CCP1. Para ello se propone un programa que mide el tiempo que transcurre entre dos flancos ascendentes de la señal aplicada por RC2/CCP1. Se obtiene así el periodo de esa señal 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 posición RB0 • Habilitar el LCD cerrando el jumper JP3 Comentarios Este ejemplo pretende mostrar el funcionamiento del módulo 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 señal de entrada que suministra el generador. Dicho valor representa el periodo de esa señal. Trabajando a 20MHz y con un preescaler de 1:8, el TMR1 evoluciona cada 1.6µS. El valor mínimo del periodo que se puede medir será aproximadamente 1.6µS (F=62KHz) y el máximo 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.6µS (cada evolución 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 módulo CCP1, midiendo la anchura de un pulso Enunciado Se pretende medir el tiempo transcurrido entre el flanco ascendente y otro descendente de la señal de entrada que suministra el generador. Con ello se obtiene la duración del pulso de esa señal de entrada. Requisitos • Cerrar JP9 para que la salida del generador se conecte con la entrada RC2/CCP1 • JP4 debe estar en la posición RB0 • Habilitar el LCD cerrando el jumper JP3 Comentarios El ejemplo es similar al anterior. Se trata de conocer la evolución que sufre el TMR1 entre un flanco ascendente y otro descendente. Si sabemos que el TMR1 evoluciona cada 1.6µS, multiplicamos este valor por la lectura que aparece en el LCD y obtendremos la duración del ancho del pulso. 4.6.30 Ejemplo 30: Capturas con el módulo 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 señal 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 posición RB0 • Habilitar el LCD cerrando el jumper JP3

4-23

Page 73: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Comentarios Es un último ejemplo dedicado al módulo CCP1 en su modo de captura. En esta ocasión 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.6µS, 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 módulo CCP1. El empleo del 2º modulo, CCP2 es idéntico a lo aquí expuesto. 4.6.31 Ejemplo 31: Comparación con el módulo 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 posición RB0, RA0 y RA4 respectivamente • Habilitar los leds cerrando el jumper JP1 Comentarios La comparación 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 interrupción cuyo tratamiento re inicia de nuevo el TMR1 y hace cambiar de estado a la línea RB0. El TMR1 actúa como contador de eventos externos sensibles al flanco ascendente de la señal que suministra el generador del entrenador. Conviene ajustar una frecuencia baja en el generador, que nos permita ver claramente el número de pulsos aplicados y el cambio de estado que se produce en RB0. 4.6.32 Ejemplo 32: Modulación de anchura de pulsos (PWM) mediante el módulo CCP1 Enunciado Se trata de obtener por la salida RC2/CCP1 una señal. El periodo de esa señal 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 modulación de anchura de pulsos consiste en obtener una señal 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 módulo CCP1. Cuando el TMR2 alcanza el valor en PR2 (el periodo de la señal”, 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 señal 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.2µS. Conocido esto es fácil determinar el valor que hay que cargar en PR2 y CCPR1L para obtener el periodo y anchura deseado.

4-24

Page 74: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Para comprobar el presente ejemplo se recomienda el empleo de un osciloscopio que visualice la señal presente en RC2/CCP1 y permita contrastar los resultados. También hay que destacar que el funcionamiento del PWM es totalmente independiente del programa en ejecución. Efectivamente, una vez programado adecuadamente el modulo CCP1 y el TMR2, la señal de salida se obtiene de forma automática, sin que el programa de aplicación tenga que intervenir a no ser que sea para modificar los valores de PR2 y CCPR1L. 4.6.33 Ejemplo 33: PWM mediante el módulo CCP1, variando la anchura Enunciado Se trata de un ejemplo similar al anterior. La diferencia estriba en que la anchura del pulso se modifica dinámicamente en función 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 posición RA0 y RA4 respectivamente Comentarios El programa nos muestra la posibilidad de variar la anchura del pulso de salida de acuerdo a parámetros 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.2µS. El registro PR2 se carga con 200 por lo que el periodo es de 640µS (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,8µS (64 * 3.2). Se recomienda emplear un osciloscopio conectado a la salida RC2/CCP1 para comprobar el correcto funcionamiento de la aplicación. 4.6.34 Ejemplo 34: El convertidor ADC Enunciado Se trata de leer el valor analógico que se introduce por la entrada RA0. El resultado de la conversión se visualiza, en binario, sobre la pantalla LCD. Requisitos • Activar el LCD cerrando JP3 • JP4 y JP5 deben estar en la posición RB0 y AN0 respectivamente • JP7 en la posición VA2 (entrada analógica desde el potenciómetro) Comentarios El ejemplo pretende ser una introducción al manejo del módulo convertidor ADC que integran los PIC de la familia 16F87X. Estos convertidor de 10 bits, trabajando con una tensión de referencia de +5Vcc, presentan una resolución de 4.8 mV/bit. El resultado binario de la conversión se visualiza en la pantalla LCD. Moviendo el potenciómetro P1 se aprecia claramente variaciones en la medida visualizada en el LCD. Cambiar JP7 a la posición VA1. La tensión analógica de entrada se toma ahora desde el foto transistor del entrenador. Haciendo incidir mas o menos luz sobre el mismo, se apreciarán variaciones en las medidas. 4.6.35 Ejemplo 35: Modulación PWM mediante el convertidor ADC Enunciado Se trata de modular la anchura del pulso de la señal de salida que proporciona el módulo CCP1 en la línea RC2/CCP1, en función de la señal analógica introducida por RA0/AN0 previa conversión.

4-25

Page 75: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Requisitos • JP5 debe estar en la posición AN0 • JP9 abierto para la señal de salida en RC2/CCP1 • JP7 en la posición VA2 (entrada analógica desde el potenciómetro) Comentarios Este ejemplo ilustra el empleo combinado del convertidor ADC con el módulo CCP1 en el modo PWM. El convertidor ADC obtiene un valor binario en función de una señal analógica de entrada. Ese valor se emplea para ajustar el CCPR1L y regular así la anchura del pulso de la señal de salida. Con un osciloscopio conectado en RC2/CCP1 se puede apreciar claramente la variación de la anchura del pulso según se varía, con el potenciómetro P1 del entrenador, la tensión analógica. 4.6.36 Ejemplo 36: El USART, transmitiendo caracteres Enunciado Transmitir vía serie el carácter A a intervalos regulares de 1 “. Requisitos • Cable de comunicaciones • Programa de comunicaciones Comentarios Este sencillo ejemplo muestra los simple que resulta realizar la transmisión serie de cualquier carácter 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 línea RTS para re iniciar a dicho entrenador cuando se trabaja junto con el software Real_PIC. Algunos programas de comunicaciones puede activar esta línea 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.

También necesitamos estándar un software de comunicaciones. Puede servir el conocido programa “Hyper Terminal” de Windows. Hay que configurarlo para que la comunicación se realice a 9600 baudios, 8 bits de datos, sin paridad y un bit de stop. 4.6.37 Ejemplo 37: El USART, recepción/transmisión de caracteres Enunciado El ejemplo emplea el USART que integran los PIC16F87X. Consiste en esperar que se reciba un carácter 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

Page 76: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial Comentarios El ejemplo propone el empleo de una interrupción 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 línea RTS para re iniciar a dicho entrenador cuando se trabaja junto con el software Real_PIC. Algunos programas de comunicaciones puede activar esta línea 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.

También necesitamos de un software de comunicaciones. Este puede ser el conocido programa “Hyper Terminal” de Windows. Hay que configurarlo para que la comunicación 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 características del entrenador "PIC Laboratory". Requisitos • Habilitar el LCD cerrando el jumper JP3 • El jumper JP4 debe estar en la posición RB0 Comentarios Es un simple programa de demostración que viene grabado de serie sobre el PIC del entrenador "PIC Laboratory" . 4.6.39 Ejemplo 39: Adivina el Número Enunciado Se trata del popular juego consistente en adivinar un número comprendido entre 00 y 99, con un número limitado de oportunidades. Requisitos • Habilitar el LCD cerrando el jumper JP3 • El jumper JP4 debe estar en la posición RB0 Comentarios Es una aplicación de tipo lúdica 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

Page 77: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Tema 4: Tutorial

4-28

Page 78: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD ANEXO 1: El módulo LCD AN1.1 INTRODUCCIÓN El presente anexo está destinado a una realizar breve descripción del funcionamiento del módulo LCD incluido en el entrenador "PIC Laboratory". Se trata de un módulo microcontrolado capaz de representar 2 líneas de 16 caracteres cada una. A través de 8 líneas de datos se le envía el carácter ASCII que se desea visualizar así como ciertos códigos de control que permiten realizar diferentes efectos de visualización. Igualmente mediante estas líneas de datos el módulo puede devolver información de su estado interno. Con otras tres señales adicionales se controla el flujo de información entre el módulo LCD y microcontrolador que lo gobierna. A continuación se presenta la descripción de señales empleadas por el módulo LCD así como el número de patilla a la que corresponden. PIN Nº SÍMBOLO DESCRIPCIÓN 1 Vss Patilla de tierra de alimentación 2 Vdd Patilla de alimentación de +5V 3 Vee Patilla de contraste del cristal líquido. Normalmente se conecta a un potenciómetro a

través del cual se aplica una tensión variable entre 0 y +5V que permite regular el contraste de la pantalla.

4 RS Selecciona entre el registro de control y el registro de datos: RS=0 Selección del registro de control RS=1 Selección del registro de datos 5 R/W Señal de lectura/escritura: R/W=0 El Módulo LCD es escrito R/W=0 El Módulo LCD es leído 6 E Señal de activación del módulo LCD: E=0 Módulo desconectado E=1 Modulo habilitado 7-14 D0-D7 Bus de datos bi-direccional. A través de estas líneas se realiza la transferencia de

información entre el módulo LCD y el microcontrolador que lo gestiona. AN1-2 CONEXIÓN CON "PIC Laboratory" El interface entre este módulo LCD y el entrenador "PIC Laboratory" se realiza, tal y como se explicó en el apartado 1.3.10 del Tema 1. Las señales empleadas son las siguientes:

AN1-1

Page 79: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD

RB0-RB7 Están conectadas a las líneas de datos D0-D7 del módulo. A través por tanto, de la puerta B, se envían códigos ASCII o de control al módulo 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 códigos

ASCII o de control y, como entrada, cuando se desee conocer el estado interno del módulo.

RA1 Se conecta con la señal de control R/S. Sacando un nivel lógico "0" por esta línea se

selecciona el registro de control del módulo. Sacando un nivel lógico "1" se selecciona el registro de datos. Esta línea debe programarse como salida.

RA2 Se conecta con la señal R/W. Sacando un nivel lógico "0" por ella, el módulo es

escrito con la información presente en ese momento en la puerta B que deberá actuar como salida. Sacando un "1" se lee el estado interno del módulo LCD. Dicho estado se recibe a través de la puerta B que deberá estar programada como entrada. La línea RA2 debe programarse como salida.

RA3 Se conecta con la señal E. Cuando se aplica un nivel "1" el módulo queda habilitado y

es posible por tanto la transferencia de información entre la puerta B y las líneas de datos D0-D7. Aplicando un "0" el módulo queda desconectado y sus líneas de datos D0-D7 en alta impedancia. RA3 debe programarse también como salida.

AN1.3 JUEGO DE INSTRUCCIONES A continuación se presentan los diferentes códigos de control o instrucciones que admite el módulo LCD. Gracias a ellos es posible configurar diferentes opciones de trabajo del módulo LCD y conseguir diferentes efectos de visualización. Consisten en diferentes códigos que se introducen a través del bus de datos del módulo LCD conectado a la puerta B del entrenador "PIC Laboratory". Se indica también el nivel lógico que deben tener las líneas de control RS y R/W, suponiendo que la señal de habilitación E está permanentemente activada. AN1.3.1 CLEAR DISPLAY Borra el módulo LCD y la RAM de datos (DD RAM), colocando el cursor en la primera posición (dirección 0). Pone el bit I/D a "1" por defecto. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1

Tiempo de ejecución: 1.64 mS AN1.3.2 HOME Coloca el cursor en la posición de inicio de la pantalla (dirección 0) y hace que el display comience a desplazarse desde la posición original. El contenido de la memoria RAM de datos de visualización (DD RAM) permanecen invariables. La dirección de la memoria RAM de datos para la visualización (DD RAM) es puesta a 0. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 1 X

Tiempo de ejecución: 1.64 mS

AN1-2

Page 80: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD AN1.3.3 ENTRY MODE SET Establece la dirección de movimiento del cursor y establece si la visualización se va desplazando a la siguiente posición 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". Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 I/D S

Tiempo de ejecución: 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). Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B

Tiempo de ejecución: 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 visualización DD RAM. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L X X

Tiempo de ejecución: 40 µS AN1.3.6 FUNCTION SET Establece el tamaño del interface con el bus de datos en 4 u 8 bits (DL). También determina el número de líneas del display (N) y tipo de carácter (F). Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F X X

Tiempo de ejecución: 40 µS AN1.3.7 SET THE CG RAM ADDRESS El módulo LCD además de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir hasta 8 caracteres gráficos. La composición de estos caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carácter gráfico definido por el usuario se compone de 8 bytes que se almacenan en sucesivas posiciones de la CG RAM.

AN1-3

Page 81: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD Mediante esta instrucción se establece la dirección de la memoria CG RAM a partir de la cual se irán almacenando los bytes que definen un carácter gráfico. Ejecutado este comando todos los datos que se escriban o se lean posteriormente, lo hacen desde esta memoria CG RAM. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 Dirección de la CG RAM

Tiempo de ejecución: 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 instrucción se establece la dirección de memoria DD RAM a partir de la cual se irán 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 renglón y de la 0xC0h a la 0xCFh con los 16 caracteres del segundo renglón, en elmodelo de pantalla empleada por el "PIC Laboratory".. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 Dirección de la DD RAM

Tiempo de ejecución: 40 µS AN1.3.9 READ BUSY FLAG & ADDRESS Cuando el módulo LCD está realizando cualquiera de las anteriores instrucciones, lconsume un cierto tiempo de ejecución en el que no se le debe mandar ninguna otra. Para ello dispone de un flag llamado BUSY (BF) que indica que el módulo está ocupado. Este instrucción de lectura informa del estado de dicho flag además de proporcionar el valor del contador de direcciones de la CG RAM o de la DD RAM según la última que se haya empleado. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 BF Dirección de la CG RAM o de la DD RAM

Tiempo de ejecución: 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 códigos ASCII de los caracteres a visualizar. Igualmente también es posible escribir en la memoria CG RAM los diferentes bytes que permiten confeccionar caracteres gráficos a gusto del usuario. El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento DD RAM o la de direccionamiento CG RAM.

AN1-4

Page 82: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 0 Código ASCII o byte del carácter gráfico

Tiempo de ejecución: 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 serán los códigos ASCII de los caracteres visualizados. Igualmente se lee, de la memoria CG RAM, los diferentes bytes con los que se ha confeccionado un determinado carácter gráfico. El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento de la DD RAM o la de direccionamiento CG RAM. Código:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 1 Código ASCII o byte del carácter gráfico

Tiempo de ejecución: 40 µS AN1.3.12 ABREVIATURAS Se listan a continuación las abreviaturas empleadas en los códigos anteriores y su significado: S = 1 Desplaza la visualización cada vez que se escribe un dato. S = 0 Modo normal. I/D = 1 Incremento del cursor I/D = 0 Decremento del cursor S/C = 1 Desplaza el display S/C = 0 Mueve el cursor R/L = 1 Desplazamiento a la derecha R/L = 0 Desplazamiento a la izquierda BF = 1 Módulo ocupado BF = 0 Módulo disponible DL = 1 Bus de datos de 8 bits DL = 0 Bus de datos de 4 bits N = 1 LCD de dos líneas N = 0 LCD de una línea F = 1 Carácter de 5 x 10 puntos F = 0 Carácter de 5 x 7 puntos B = 1 Parpadeo de cursor ON C = 1 Cursor ON D = 1 Display ON X = Indeterminado AN1.4 JUEGO DE CARACTERES La figura AN1-1 muestra el juego de caracteres que admite el presente módulo LCD y que están establecidos por el fabricante. Una memoria ROM interna contiene la definición de cada uno de ellos.

AN1-5

Page 83: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD

Figura AN1-1. Juego de caracteres AN1.5 CARACTERES GRÁFICOS 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 código ASCII se tratara. Los caracteres gráficos se definen introduciendo en sucesivas direcciones de la CG RAM unos bytes cuyos patrones binarios definen el carácter tal y como se muestra en la figura 4-2.

AN1-6

Page 84: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD Un carácter 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 carácter de la CG RAM, este se visualizará enviando el código 00 a la DD RAM, como si fuera cualquier otro código ASCII.

Figura AN1-2. Generando caracteres gráficos

AN1.6 SECUENCIA DE INICIALIZACIÓN El módulo LCD ejecuta automáticamente una secuencia de inicio interna en el instante de aplicarle la tensión de alimentación si se cumplen los requisitos de alimentación que indica el fabricante. Estos consisten básicamente en que dicha tensión pase de 0.2 a 4.5V en un tiempo comprendido entre 0.1 y 10mS. Igualmente el tiempo de desconexión debe ser al menos de 1mS antes de una nueva conexión. La secuencia de inicio que realiza la electrónica interna del módulo 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 inicialización. 2.- FUNCTION SET Se elige por defecto el tamaño del bus de datos a 8 bits (DL=1) y el número de renglones

del display en 1 (N=0).

AN1-7

Page 85: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo 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 posición de la DDRAM. Si no se satisfacen las condiciones de alimentación, la secuencia de inicialización habría que realizarla por software, donde las instrucciones que aplica el usuario podrían ser las expuestas anteriormente o cualquier otra según sus propias necesidades. Es importante realizar una temporización de unos 15 mS tras enviar la primera instrucción al módulo LCD para la completa reinicialización 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 módulo. 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

Page 86: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo 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 cómo gestionar las diferentes actividades a realizar con el módulo LCD. Están diseñadas 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 posición 0xdd Esas rutinas están incluidas en el fichero LCD_CXX.INC. Dicho fichero ha de ser incluido en el programa fuente de aplicación 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 líneas de E/S como las que se muestran a continuación. Estas definiciones sirven para el hardware empleado en "PIC Laboratory" aunque puden ser modificadas para otros casos. #define ENABLE bsf PORTA,3 ;Activa señal E #define DISABLE bcf PORTA,3 ;Desactiva señal E #define LEER bsf PORTA,2 ;Pone LCD en Modo RD #define ESCRIBIR bcf PORTA,2 ;Pone LCD en Modo WR #define OFF_COMANDO bcf PORTA,1 ;Desactiva RS (modo comando) #define ON_COMANDO bsf PORTA,1 ;Activa RS (modo dato CBLOCK Lcd_var ;Inicio de las variables. Será la primera ;direccón libre disponible 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 visualización mediante pantalla LCD. AN1.8.1 LCD_E Genera un pulso por la patilla RA2 (señal E) para activar al módulo LCD. Entre un pulso y el siguiente se genera una temporización de unos 40 µS a una frecuencia de trabajo de 20MHz. Esta rutina quizá deba modificarse en futuras versiones de los módulos LCD, según características del fabricante.

AN1-9

Page 87: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD ;************************************************************************** ;LCD_E: Pulso de Enable. En los nuevos LCD's esta señal 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 módulos LCD de winteck return AN1.8.2 LCD_BUSY Chequea el estado del flag Busy del LCD y espera a que finalice cualquier instrucción previa antes de retornar. ;************************************************************************** ;LCD_BUSY: Lectura del Flag Busy y la dirección. ; 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 código de instrucción contenido en el registro W sobre la puerta B. Espera que el LCD ejecute la última operación y genera el pulso de activación en la señal E, enviando dicho código a la pantalla. ;************************************************************************** ;LCD_REG: Escritura de comandos en el LCD. Envía el comando presente en el W LCD_REG OFF_COMANDO ;Desactiva RS (modo comando) movwf PORTB ;Código de comando. call LCD_BUSY ;LCD libre?. goto LCD_E ;SI.Genera pulso de E.

AN1-10

Page 88: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD AN1.8.4 LCD_DATO Deposita el código ASCII del carácter a visualizar presente en el registro W, sobre la puerta B. Espera a que el LCD ejecute la última operación y genera el pulso de activación en la señal E. El carácter enviado se visualiza sobre la posición actual del cursor. ;************************************************************************** ;LCD_DATO: Escritura de datos en DDRAM o CGRAM. Envía 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 inicialización del módulo LCD según 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 líneas de visualización y caracteres de 5 x 7 puntos. ;*************************************************************************** ;LCD_INI: inicialización 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 posición LCD_INI movlw b'00111000' call LCD_REG ;Código de instrucción call LCD_DELAY ;Temporiza movlw b'00111000' call LCD_REG ;Código de instrucción call LCD_DELAY ;Temporiza movlw b'00111000' call LCD_REG ;Código de instrucción call LCD_DELAY ;Temporiza movlw b'00000001' ;Borra LCD y Home. call LCD_REG return

AN1-11

Page 89: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory Anexo 1: El módulo LCD AN1.8.6 LCD_DELAY Genera una temporización de 5 mS de propósito general. Se emplean para ellos las variables LCD_Temp_1 y LCD_Temp_2. ;***************************************************************************** ;LCD_DELAY: Rutina de temporización 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 .35 movwf Lcd_Temp_1 clrf Lcd_Temp_2 LCD_DELAY_1: decfsz Lcd_Temp_2,F goto LCD_DELAY_1 decfsz Lcd_Temp_1, goto LCD_DELAY_1 return AN1.9 DIMENSIONES DEL MÓDULO LCD En la figura AN1-4 se muestra las dimensiones mecánicas del módulo 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 mecánicas y diagrama por bloques de la pantalla LCD de 2 x 16

AN1-12

Page 90: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

ANEXO 2: Características generales del PIC16F876/877 AN2.1 INTRODUCCION El presente anexo está destinado a hacer un breve resumen de las características generales de los PIC 16F876 y F877 soportados por el entrenador "PIC Laboratory". Para mas información se recomienda acudir a la página www.microchip.com donde podemos encontrar los data sheets completos con todos los detalles técnicos de todos los modelos de PIC, notas de aplicación, actualizaciones de las diferentes herramientas software, etc. AN2.2 CARACTERISTICAS GENERALES A continuación se detallan las características más relevantes que definen la CPU y periféricos 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 instrucción excepto los saltos

que necesitan dos. Un ciclo de instrucción necesita a su vez de cuatro ciclos de reloj. Trabajando a 20MHz una instrucción 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 volátiles.

• Patillaje compatible pin a pin con los populares modelos predecesores 16C73/74/76/77. • Capacidad de interrupción que puede ser provocada por 14 fuentes o eventos distintos. • Stack autónomo y transparente de 8 niveles • Modos de direccionamiento directo, indirecto y relativo. • Circuito Power-On Reset (POR) integrado. Automáticamente genera la señal de

arranque cuando la tensión de alimentación alcanza un determinado valor. • Temporizadores Power-up Timer (PWRT) y Oscillator Start-up Timer (OST) que retrasan

el arranque, en espera de la total estabilización tanto de la tensión de alimentación como de la frecuencia de trabajo del oscilador.

• Temporizador WDT o “Perro guardián” capaz de provocar un arranque automático en determinadas ocasiones.

• Modo de trabajo en standby que reduce el consumo así como velocidades del oscilador seleccionables.

• Tensión de alimentación de 2 a 5.5V con un bajo consumo: < 2 mA a 5V y 4MHz; 20µA a 3V y 32KHz;< 1µA 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 módulos CCP independientes para la captura, comparación y modulación de

anchura de pulsos (PWM). • Convertidor analógico/digital con resolución de 10 bits y hasta 8 canales de entrada. • Puerta serie síncrona (SSP) con modalidad de bus SPI (modo master) y bus I2C

(Master/Slave). • Receptor/Transmisor universal síncrono/asíncrono (USART). • Puero paralelo esclavo (PSP) de 8 bits para transferencias en paralelo con señales de

control del tipo read (RD), write (WR) y slección (CS). Sólo está disponible en el modelo PIC16F877.

AN2-1

Page 91: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

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

Figura AN2-1. Diagrama de conexiones del PIC16F876/877

NOMBRE TIPO DESCRIPCION

OSC1/CLKIN I Entrada para el cristal del oscilador/entrada de oscilador externo. OSC2/CLKOUT O Salida del cristal del oscilador. En el modo RC por este pin sale ¼ de la

frecuencia de OSC1 y denota la ejecución de un ciclo de instrucción MCLR/Vpp/THV I/P Entrada de reset activa por nivel bajo. Por esta patilla también se

introduce la tensión Vpp de grabación y la tensión de test THV RA0/AN0 RA1/AN1 RA2/AN2/VREF- RA3/AN3/VREF+ RA4/T0CKI RA5/SS/AN4

I/O

I/O

I/O

I/O

I/O

I/O

PUERTA A: 6 líneas Entrada/salida digital RA0 o entrada analógica del canal 0 AN0 Entrada/salida digital RA1 o entrada analógica del canal 1 AN1 Entrada/salida digital RA2, entrada analógica AN2 o entrada – de tensión de referencia VREF- Entrada/salida digital RA3, entrada analógica AN3 o entrada + de tensión 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 analógica AN4. También actúa como señal SS de selección de esclavo para el módulo SSP.

AN2-2

Page 92: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

NOMBRE TIPO DESCRIPCION 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

PUERTA B: 8 líneas Entrada/salida digital RB0 o entrada de interrupción externa INT Entrada/salida digital Entrada/salida digital RB2 Entrada/salida digital RB3. Entrada en baja tensión de programación PGM Entrada/salida digital RB4. Produce interrupción por cambio de estado Entrada/salida digital RB5. Produce interrupción por cambio de estado Entrada/salida digital RB6. Produce interrupción por cambio de estado Entrada/salida digital RB7. Produce interrupción por cambio de estado

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

PUERTA C: 8 líneas 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 módulo CCP2 Entrada/salida digital RC2 o E/S del módulo CCP1 Entrada/salida digital RC3 o E/S de reloj para los modos SPI (SCK) e I2C (SCL) de la puerta serie síncrona (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 asíncrono o reloj del USART en modo síncrono Entrada/salida digital RC7, recepciónRx del USART en modo asíncrono o línea de datos del USAR en modo síncrono

AN2-3

Page 93: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

NOMBRE TIPO DESCRIPCION 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

PUERTA D: 8 líneas, sólo en el PIC16F877 Entrada/salida digital RD0 o línea PSP0 del puerto esclavo paralelo Entrada/salida digital RD1 o línea PSP1 del puerto esclavo paralelo Entrada/salida digital RD2 o línea PSP2 del puerto esclavo paralelo Entrada/salida digital RD3 o línea PSP3 del puerto esclavo paralelo Entrada/salida digital RD4 o línea PSP4 del puerto esclavo paralelo Entrada/salida digital RD5 o línea PSP5 del puerto esclavo paralelo Entrada/salida digital RD6 o línea PSP6 del puerto esclavo paralelo Entrada/salida digital RD7 o línea PSP7 del puerto esclavo paralelo

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN6

I/O

I/O

I/O

PUERTA E: 3 líneas, sólo en el PIC16F877 Entrada/salida digital RE0, línea RD de control de lectura del puerto paralelo o entrada analógica AN5 Entrada/salida digital RE1, línea WR de control de escritura sobre el puerto paralelo o entrada analógica AN6 Entrada/salida digital RE2, línea CS de selección del puerto paralelo o entrada analógica AN7

Vss P Entrada de alimentación de tierra o GND Vdd P Entrada de alimentación de tensión positiva de +2 a +5.5Vcc AN2.4 ORGANIZACIÓN 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 tamaño 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 interrupción, 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 máximo de 8 subrutinas y/o interrupciones. La posición 0x0000 es la posición conocida como vector de RESET. Cada vez que se produce esta situación el PC se carga con el valor 0x0000 con lo que empieza la ejecución del programa a partir de esa dirección. Lo normal es que en esta dirección el usuario coloque una instrucción del tipo GOTO xxxx que envíe al PC al inicio del programa de aplicación. Otra posición destacable es la 0x0004, conocida como vector de interrupción. Sea cual fuere la fuente de interrupción que se haya producido, el PC se carga con 0x0004. En esta dirección el usuario coloca otra instrucción del tipo GOTO xxxx que envía al PC al inicio del programa de tratamiento de la interrupción. Desde el vector de RESET (0x0000) al vector de interrupción (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

Page 94: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características 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 también acepta un PIC16F877. Ambos dispositivos vienen grabados de fábrica con un programa monitor llamado PICMOS’76 o PICMOS’77. Mediante este programa monitor y el software Real-PIC instalado en un PC, se dispone de las clásicas herramientas para el diseño de aplicaciones. Herramientas con las cuales el usuario podrá descargar sus propios programas de aplicación, ejecutarlos, editar/modificar registros, etc. El programa monitor PICMOS’xx 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 aplicación 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 también 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 periféricos. Reciben el nombre de SFR (Special Function Registers). Otros registros no están implementados y, finalmente, hay algunos que están duplicados en los distintos bancos. En definitiva al usuario le quedan libres a su disposición 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 información contenida en ellos es volátil y desaparece cada vez que falte la tensión de alimentación. En la figura AN2-3 se muestra la distribución de los distintos registros sobre los diferentes bancos. También se indica la dirección y el nombre que tienen asignados. Posteriormente se hará una breve descripción de la misión de los registros especiales SFR. Para conocer más acerca de los mismos, se recomienda acudir a www.microchip.com donde se proporciona una explicación detallada de cada uno de ellos.

AN2-5

Page 95: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

Figura AN2-3. Detalle de la memoria RAM de datos

Se puede apreciar que ciertamente algunos registros SFR están 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

Page 96: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

REGISTRO DESCRIPCION INDF Registro ficticio empleado en los direccionamientos indirectos PCL Representa la parte baja del contador de programa o PC

TMR0 Registro contador/temporizador TMR0 OPTION_REG Registro de opciones del TMR0, WDT, RB Pull_Up,etc

STATUS Contiene información del estado interno de la CPU FSR Contiene el índice que apunta a la dirección que se va a emplear en los direccionamientos

indirectos PORTA Sus 6 bits de menos peso permiten acceder directamente a las 6 líneas de la puerta A TRISA Con sus 6 bits de menos peso se establece qué líneas de la puerta A actúan como entradas o

salidas PORTB Accede directamente a las 8 líneas de la puerta B TRISB Determina qué líneas de la puerta B actúan como entradas o como salidas PORTC Accede directamente a las 8 líneas de la puerta C TRISC Determina qué líneas de la puerta C actúan como entradas o como salidas PORTD Accede directamente a las 8 líneas de la puerta D. Sólo está disponible en el PIC16F877 TRISD Determina qué líneas de la puerta D actúan como entradas o como salidas. Sólo está disponible

en el PIC16F877 PORTE Accede directamente a las tres líneas de la puerta D. Sólo está disponible en el PIC16F877 TRISE Determina qué líneas de la puerta D actúan como entradas o como salidas. Sólo está disponible

en el PIC16F877 PCLATH Representa los bits de más peso del PC. Se emplea para seleccionar los distintos bancos de la

memoria de programa cuando va a realizarse algún tipo de salto INTCON Registro para el control de las interrupciones básicas habilitándolas o no

PIR1 Registro de estado de las interrupciones de los periféricos. Indica si se ha producido o no alguna PIE1 Registro para la habilitación o no de las interrupciones de los periféricos PIR2 Registro de estado de las interrupciones de periféricos (cont.) PIE2 Registro para la habilitación o no de las interrupciones de los periféricos (cont.)

PCON Registro de control de POR y BOR TMR1L Parte baja de los 16 bits del TMR1 TMR1H Parte alta de los 16 bits del TMR1 T1CON Registro de control para el TMR1 TMR2 Registro del contador /temporizador TMR2 PR2 Registro de periodos del TMR2

T2CON Registro de control del TMR2 SSPBUF Buffer de transmisión/recepción del módulo SSP SSPCON Registro de control del módulo SSP SSPCON2 Registro auxiliar de control del módulo SSP SSPADD Registro de direcciones del módulo SSP SSPSTAT Registro de estado del módulo SSP CCPR1L Registro parte baja de los 16 bits del módulo CCP1 CCPR1H Registro parte alta de los 16 bits del módulo CCP1

CCP1CON Registro de con control del módulo CCP1 RCSTA Registro de estado del receptor de la USART TXSTA Registro de estado del transmisor de la USART TXREG Registro transmisor del USART RCREG Registro receptor del USART SPBRG Registro generador de baudios CCPR2L Registro parte baja de los 16 bits del módulo CCP2 CCPR2H Registro parte alta de los 16 bits del módulo CCP2

CCP2CON Registro de con control del módulo CCP2 ADRESH Parte alta del resultado de la conversión A/D ADRESL Parte baja del resultado de la conversión A/D

AN2-7

Page 97: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

ADCON0 Registro de control del convertidor A/D ADCON1 Registro auxiliar de control del convertidor A/D EEDATA Parte baja del registro de datos para la memoria FLASH o EEPROM de programa o datos EEADR Parte baja del registro de direcciones de la memoria FLASH o EEPROM de programa o datos

EEDATH Parte alta del registro de datos para la memoria FLASH de programa EEADRH Parta alta del registro de direcciones para la memoria FLASH de programa EECON1 Registro de control para el acceso a memoria FLASH o EEPROM EECON2 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 continuación 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 condición 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 según se produzcan diferentes situaciones.

AN2-8

Page 98: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

Leyenda: u = no varía; x = desconocido; - = bit no implementado, se lee como “0”; q = depende de la condición

Figura AN2-6. Los registros internos tras el RESET

AN2-9

Page 99: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

Leyenda: u = no varía; x = desconocido; - = bit no implementado, se lee como “0”; q = depende de la condición

Figura AN2-7.Los registros internos tras el RESET. Continuación

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 nemónicos de las distintas instrucciones así como los operandos de las mismas. Los operandos representados con f representan la dirección 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 instrucción. 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 manipulación 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 operación. Lo emplea las instrucciones de direccionamiento inmediato. La 2ª columna de la tabla hace una breve descripción de la función que realiza cada una de las instrucciones disponibles. La siguiente columna expresa el número de ciclos máquina que consume cada una de las instrucciones. Se puede apreciar que todas consumen 1 ciclo excepto aquellas instrucciones que implique algún tipo de salto, Estas consumen 2 ciclos. Recordamos que un ciclo máquina 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 máquina o ciclo de instrucción es de 200nS. La 4ª columna expresa los 14 bits del código de operación de cada una de las instrucciones. Todas las instrucciones se definen siempre con una única palabra de 14 bits. En los mismos 14 bits están incluidos los operandos f, d, b y K de las instrucciones que lo precisen.

AN2-10

Page 100: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877 La penúltima columna indica qué bits del registro STATUS se puede ver modificados como consecuencia de ejecutar las distintas instrucciones. Es una información que se debe tener muy en cuenta. La última columna añade una serie de notas que se indican a continuación:

1.- Cuando se modifica cualquiera de los registros asociados a las puertas de E/S, la modificación afecta directamente a las patillas de E/S de dichas puertas.

2.- Cuando la ejecución de estas instrucciones afecten al TMR0, el preescaler se borra si es

que está asignado al propio TMR0. 3.- Cualquier instrucción que implique modificar el contenido actual del PC, se considera una

instrucción de salto. Consume dos ciclos de instrucción.

Figura AN2-8. Resumen del juego de instrucciones

AN2-11

Page 101: Entrenador para F87X PIC Laboratorysdmi/pdfs/ManualPicLab.pdf ·  · 2005-10-17AN1.6 SECUENCIA DE INICIALIZACION AN1-7 ... permite un cómodo interface con el usuario quien podrá

PIC Laboratory ANEXO 2: Características generales del PIC16F876/877

AN2-12