You are on page 1of 104

Laboratorio PIC’School

Manual de usuario con tutorial y


ejemplos para PIC16F876 / 18F4520

V 1.00 Enero 2006

INGENIERIA DE MICROSISTEMAS
PROGRAMADOS S.L.
C/ Alda. Mazarredo Nº 47 - 1º Dpto. 2
48009 BILBAO - BIZKAIA
Tel/Fax: 94 4230651

email: info@microcontroladores.com
www.microcontroladores.com
Laboratorio PIC’School; Manual de Usuario
Indice general

INDICE GENERAL
TEMA 1: EL HARDWARE
1.1 INTRODUCCION 1-1
1.2 CARACTERISTICAS 1-2
1.3 ARQUITECTURA DE PIC’SCHOOL 1-4

1.3.1 La fuente de alimentación 1-5


1.3.2 El oscilador 1-6
1.3.3 Los microcontroladores 1-6
1.3.4 Entradas analógicas 1-8
1.3.5 Entradas digitales 1-9
1.3.6 El generador lógico 1-10
1.3.7 El teclado 1-11
1.3.8 Salidas digitales 1-12
1.3.9 Salidas digitales de alta corriente 1-13
1.3.10 Interfase serie RS-232 1-14
1.3.11 Interfase bus CAN 1-15
1.3.12 Pantalla LCD 1-16
1.3.13 Conectores para interfase RJ11 y USB 1-17
1.3.14 Sección de grabación 1-18

TEMA 2: SOFTWARE DE GRABACION


2.1 INTRODUCCION 2-1
2.2 EL SOFTWARE DE GRABACION WINPIC800 2-1

2.2.1 Instalación 2-1


2.2.2 Configuración del hardware 2-3
2.2.3 Configuración del software 2-5
2.2.4 Tareas mas comunes 2-5

2.3 EL SOFTWARE DE GRABACION ICPROG 2-6

2.3.1 Instalación 2-6


2.3.2 Configuración del hardware 2-9
2.3.3 Configuración del software 2-9
2.3.4 Tareas mas comunes 2-11

2.4 EL DEPURADPR EN CIRCUITO ICD2 2-12

2.4.1 Instalación 2-13


2.4.2 Configuración 2-13
2.4.3 Tareas mas comunes 2-16

TEMA 3: TUTORIAL
3.1 INTRODUCCION 3-1
3.2 TUTORIAL 3-3

3.2.1 Creación de un proyecto 3-4


3.2.2 El programa fuente 3-8
3.2.3 Construyendo el proyecto 3-9
3.2.4 Preparando el hardware de la aplicación 3-10
3.2.5 Grabación del dispositivo 3-11
3.2.6 Comprobando el funcionamiento de la aplicación 3-12

i-1
Laboratorio PIC’School; Manual de Usuario
Indice general
3.3 EJEMPLOS 3-13

3.3.1 Ejemplo 1: Simple manejo de las entradas y salidas 3-13


3.3.2 Ejemplo 2: Función lógica NOT 3-13
3.3.3 Ejemplo 3: Decodificador combinacional 3-13
3.3.4 Ejemplo 4: Automatismo secuencial 3-14
3.3.5 Ejemplo 5: Automatismo secuencial 3-15
3.3.6 Ejemplo 6: Automatismo secuencial 3-15
3.3.7 Ejemplo 7: Automatismo secuencial 3-16
3.3.8 Ejemplo 8: Juego de luces 3-17
3.3.9 Ejemplo 9: La interrupción del TMR0 3-17
3.3.10 Ejemplo 10: La interrupción externa RB0/INT y el modo SLEEP 3-18
3.3.11 Ejemplo 11: El display de 7 segmentos 3-18
3.3.12 Ejemplo 12: Decodificador BCD a 7 segmentos 3-19
3.3.13 Ejemplo 13: Contador decimal UP/DOWN 3-20
3.3.14 Ejemplo 14: El TMR0 como contador de pulsos externos 3-20
3.3.15 Ejemplo 15: La memoria EEPROM de datos, la máquina su turno 3-21
3.3.16 Ejemplo 16: Introducción al manejo de la pantalla LCD 3-22
3.3.17 Ejemplo 17: Seguimos con la pantalla LCD 3-22
3.3.18 Ejemplo 18: Visualizando mas mensajes 3-23
3.3.19 Ejemplo 19: El teclado 3-23
3.3.20 Ejemplo 20: El teclado y la pantalla LCD 3-24
3.3.21 Ejemplo 21: Interrupción por cambio de estado 3-24
3.3.22 Ejemplo 22: El TMR1 en modo temporizador, interrupción cada cierto tiempo 3-25
3.3.23 Ejemplo 23: El TMR1 como contador de eventos externos 3-25
3.3.24 Ejemplo 24: El TMR1 como divisor de frecuencia 3-26
3.3.25 Ejemplo 25: Frecuencímetro 3-26
3.3.26 Ejemplo 26: El TMR2, interrupción periódica 3-27
3.3.27 Ejemplo 27: El TMR2, temporizaciones ajustables 3-27
3.3.28 Ejemplo 28: Capturas con el módulo CCP1, midiendo pulsos 3-27
3.3.29 Ejemplo 29: Capturas con el módulo CCP1, midiendo la anchura de un pulso 3-28
3.3.30 Ejemplo 30: Capturas con el módulo CCP1, midiendo el tiempo entre pulsos 3-28
3.3.31 Ejemplo 31: Comparación con el módulo CCP1, contador de eventos ajustable 3-29
3.3.32 Ejemplo 32: Modulación de anchura de pulsos (PWM) mediante el módulo CCP1 3-29
3.3.33 Ejemplo 33: PWM mediante el módulo CCP1, variando la anchura 3-30
3.3.34 Ejemplo 34: El convertidor ADC 3-30
3.3.35 Ejemplo 35: Modulación PWM mediante el convertidor ADC 3-31
3.3.36 Ejemplo 36: El USART, transmitiendo caracteres 3-31
3.3.37 Ejemplo 37: El USART, recepción/transmisión de caracteres 3-32
3.3.38 Ejemplo 38: Transmitiendo mensajes con el USART 3-32
3.3.39 Ejemplo 39: Entretenimiento, adivina el número 3-33

ANEXO 1: EL MODULO LCD


AN1.1 INTRODUCCION AN1-1
AN1.2 CONEXIÓN CON PIC’SCHOOL AN1-1
AN1.3 JUEGO DE INSTRUCCIONES AN1-1

AN1.3.1 Clear Display AN1-2


AN1.3.2 Home AN1-2
AN1.3.3 Entry mode set AN1-2
AN1.3.4 Display ON/OFF Control AN1-2
AN1.3.5 Cursor or Display Shift AN1-3
AN1.3.6 Function Set AN1-3
AN1.3.7 Set the CG RAM address AN1-3
AN1.3.8 Set the DD RAM address AN1-3
AN1.3.9 Read Busy flag & address AN1-4
AN1.3.10 Write Data to CG or DD RAM AN1-4

i-2
Laboratorio PIC’School; Manual de Usuario
Indice general
AN1.3.11 Read data from CG o DD RAM AN1-4
AN1.3.12 Abreviaturas AN1-5

AN1.4 JUEGO DE CARACTERES AN1-6


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-8

AN1.8.1 UP_LCD AN1-9


AN1.8.2 LCD_E AN1-10
AN1.8.3 LCD_BUSY AN1-10
AN1.8.4 LCD_REG AN1-11
AN1.8.5 LCD_DATO AN1-11
AN1.8.6 LCD_INI AN1-11
AN1.8.7 LCD_DELAY AN1-12

AN1.9 DIMENSIONES DEL MODULO LCD AN1-12

ANEXO 2: RESUMEN DEL PIC16F876/877


AN2.1 INTRODUCCION AN2-1
AN2.2 CARACTERISTICAS GENERALES AN2-1
AN2.3 DESCRIPCION DE PINES AN2-2
AN2.4 ORGANIZACIÓN DE LA MEMORIA FLASH DE MEMORIA AN2-4
AN2.5 LA MEMORIA RAM DE DATOS AN2-5
AN2.6 CONDICIONES INICIALES EN EL RESET AN2-7
AN2.7 JUEGO DE ISTRUCCIONES AN2-9

ANEXO 3: EXPERIMENTANDO CON LA GAMA ALTA PIC18FXXX

AN3.1 INTRODUCCION AN3-1


AN3.2 EXPERIMENTO 1: El multiplicador de 8 x 8 AN3-1
AN3.3 EXPERIMENTO 2: Modulación de ancho de banda AN3-3
AN3.4 EXPERIMENTO 3: Visualización de dos canales analógicos mediante UART AN3-4
AN3.5 EL COMPILADOR C AN3-5

BIBLIOGRAFIA
1.- Microcontroladores PIC, La clave del diseño. Ed. Paraninfo
2.- Microcontroladores PIC, diseño práctico de aplicaciones. Primera parte. Ed. Mac Graw-Hill
3.- Microcontroladores PIC, diseño práctico de aplicaciones. Segunda parte. Ed. Mc Graw-Hill
4.- Diseño práctico con microcontroladores. Ed. Thomoson
5.- Curso práctico de Diseño con PIC, 1ª parte. Ingeniería de Microsistemas Programados.
6.- Curso práctico de Diseño con PIC, 2ª parte. Ingeniería de Microsistemas Programados.
5.- MPASM User’s guide. Microchip
6.- MPLAB User’s guide. Microchip
7.- PIC16F87X Data Sheet. Microchip

DIRECCIONES DE INTERES

Ingeniería de Microsistemas Programados S.L. www.microcontroladores.com


Microchip. www.microchip.com
Custom Computer Services inc. (compiladores C) www.ccsinfo.com
Software de grabación WinPIC800. http://perso.wanadoo.es/siscobf/winpic800.htm
Software de grabación IcProg. www.ic-prog.com

i-3
Laboratorio PIC’School; Manual de Usuario
Indice general

i-4
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

TEMA 1: EL HARDWARE
1.1 INTRODUCCION

Bienvenido al fascinante mundo de los microcontroladores. Ingeniería de Microsistemas Programados


S.L. se complace en poner en tus manos el laboratorio PIC’School, la herramienta definitiva para el aprendizaje
y diseño de aplicaciones basadas en los populares microcontroladores PIC de Arizona Microchip. Figura 1-1.

PIC’School es un laboratorio
de carácter didáctico y una evolución
lógica de los populares y conocidos
entrenadores Micro’PIC Trainer y
PIC’Laboratory. Permite trabajar con
los dispositivos PIC mas
representativos de las familias 12F,
16F y 18F, pudiéndose desarrollar
aplicaciones tanto a nivel de software
como de hardware. Dispone de un
amplio y representativo número de
periféricos muy utilizados en las
aplicaciones reales y un módulo board
para el montaje sin soldadura que
permite implementar el hardware
necesario en un determinado proyecto.

Figura 1-1. El laboratorio PIC’School

A diferencia de otros equipos similares, ninguno de los periféricos contenidos en el laboratorio


PIC’School están conectados de forma predeterminada a las líneas de E/S del microcontrolador. Es el propio
usuario quien, mediante un sencillo cableado sin soldadura, conecta y asocia los distintos periféricos a esas
líneas de E/S según lo requiera la aplicación. Esto permite tener un contacto mas directo con el hardware y un
mayor control del mismo.

En Ingeniería de Microsistemas Programados S.L. somos conscientes de la necesidad de disponer de


herramientas sencillas, flexibles, potentes y de bajo coste, que permitan desarrollar y evaluar de forma cómoda y
rápida las aplicaciones desarrolladas por el usuario, y donde se puedan emplear y aprovechar al máximo los
distintos recursos internos que poseen los microcontroladores PIC, desde la gama baja a la gama alta. Esta ha
sido nuestra meta y objetivo final a la hora de presentar el laboratorio PIC’School.

1.2 CARACTERISTICAS

A continuación se muestran las características mas relevantes del laboratorio PIC’School:

● El laboratorio PIC’School se presenta totalmente montado y comprobado con un manual en


castellano donde se incluye un tutorial, abundantes ejemplos de demostración y en un maletín de
plástico para su fácil transporte y almacenamiento.

● También se incluye un CD-ROM con las diferentes herramientas de diseño así como los programas
fuentes de todos los ejemplos propuestos en el manual.

● Es totalmente modular y con firme voluntad de expansión. A corto/medio plazo se irá ampliando con
una serie de módulos de prácticas opcionales en donde se irán tratando diferentes temas
relacionados con los microcontroladores: comunicaciones, Bluetooth, USB, CAN, R.F. control de
motores, periféricos avanzados y un largo etcétera. En esos módulos también se irán proponiendo
aplicaciones que permitan conocer las características de los PIC’s desde la sencilla familia 12FXXX
hasta los potentes 18FXXXX. Cada módulo constará de un conjunto de prácticas y todos los
componentes necesarios para implementarlas.

1-1
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

● Alimentación única mediante F.Alimentación externa (no incluida) de 9 a 15VDC con positivo al
centro. El laboratorio incorpora los circuitos de filtrado, estabilización, piloto ON/OFF y bomba de
carga para la grabación.

● Admite dispositivos PIC de 8, 18, 28 y 40 patillas de las familias 12FXXX, 16FXXX y 18FXXX. De
serie se suministra con el PIC16F876A de 28 pines o similar.

● Oscilador integrado a cristal de cuarzo encapsulado en DIP8 para generar la frecuencia general de
trabajo del sistema. El oscilador suministrado de serie es de 4MHz, se inserta sobre un zócalo de 8
pines y es fácilmente intercambiable por otros osciladores con otras frecuencias.

● Configuración mediante jumpers de las señales CLK/GP5, CLK/RA7, MCL/GP3, MCL/RA5 y


MCL/RE3. Igualmente se puede configurar el tipo de reloj a emplear: Oscilador a cristal de cuarzo o
red R-C (XT/RC). Es posible por tanto adaptarse a múltiples configuraciones según modelo de PIC.

● Tres modos de operación diferentes que se seleccionan fácilmente mediante un conmutador. El modo
RUN se emplea cuando el dispositivo está grabado con el programa de aplicación a ejecutar. Todas
las líneas de E/S están disponibles para el control de periféricos. El modo PC se emplea durante los
ciclos de grabación del dispositivo. Esta grabación se realiza mediante el canal serie de un PC dotado
del software de grabación correspondiente (WinPic 800, IcProg, etc..). Se suministra el cable de
conexión con el PC. Finalmente el modo ICSP permite conectar el laboratorio PIC’School con otros
grabadores externos dotados de las señales ICSP o bien con depuradores en circuito como el ICD2
de Microchip. De esta forma es posible la emulación/depuración/grabación del dispositivo contenido
en el laboratorio.

● Todos los puertos con las líneas de E/S del PIC son accesibles mediante bloques de conectores que
permiten una rápida y sencilla conexión con los periféricos a controlar.

● No hay conexiones predeterminadas. Cualquier periférico se puede conectar a cualquier línea de E/S.

● Acceso a los periféricos mediante bloques de conectores que permiten realizar un rápida y fiable
conexión con las líneas de E/S del PIC. Basta emplear cable rígido de conexiones de 0.6 mm de
grosor.

● Interfase serie estándar RS232 con conector DB9 hembra y acceso para la gestión y control de las
señales TxD, RxD, CTS y RTS.

● Interfase para redes CAN con conector DB9 macho y acceso para la gestión y control de las señales
Vr, RxCAN, TxCAN y GND.

● 8 salidas digitales pilotadas mediante leds rojos de 3 mm.

● 4 salidas digitales de alta corriente mediante drivers de 4 canales a 0.6A cada uno. La tensión de
salida de estos canales se selecciona mediante jumper y puede ser fija de +5Vcc o bien una tensión
externa de referencia de hasta 36V. Tanto las salidas como la entrada de tensión externa son
accesibles mediante bornas o clemas de paso 5.08 para la conexión de cargas elevadas (relés,
motores DC, motores PAP, etc.)

● Pantalla LCD de 2 x 16 caracteres con conectores que permiten hacer interfase a 4 u 8 bits.

● Teclado matricial de 4 x 4 teclas de propósito general.

● 8 entradas digitales formadas por 4 interruptores y 4 pulsadores activos por transición 1-0-1.

● 2 entradas mediante potenciómetros que permiten evaluar y simular variables analógicas.

● Generador lógico de onda cuadrada con frecuencia de salida ajustable de 1Hz, 10Hz, 100Hz y 1KHz
y pilotada mediante leds.

1-2
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

● Conector de interfase RJ-11 de 6 hilos de propósito general para todo tipo de interfases externos
(I2C, R2485, iButton, etc..)

● Conector de interfase USB tipo B de propósito general para aplicaciones de comunicación USB.

● Módulo board de 550 contactos para el montaje sin soldadura de todo tipo de circuitos de adaptación,
periféricos, etc..

● Conector de expansión PIC-BUS 2 de 40 vías que transporta todas las señales del PIC y que permite
la conexión de todo tipo de tarjetas y circuitos externos.

● Se incluye cable serie, cable de conexiones de 0.6 – 0.8mm y microcontrolador PIC16F876.

1-3
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware
1.3 ARQUITECTURA DE PIC’School

En este apartado se hace un explicación exhaustiva del laboratorio PIC’School cuyas secciones se
muestran en la figura 1-2. Mediante los correspondientes esquemas el usuario podrá comprender la conexión de
los diferentes periféricos disponibles así como las consideraciones que se deben tener sobre los mismos. Estas
explicaciones pueden servir de ayuda al usuario para realizar sus propias aplicaciones a medida.

Figura 1-2. Secciones del PIC’School

1-4
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware
1.3.1 La fuente de alimentación

Se encarga de obtener la tensión general de +5Vcc con la que se alimenta el laboratorio PIC’School. En
la figura 1-3 se muestra su ubicación.

Figura 1-3. La fuente de alimentación

El esquema eléctrico se muestra en la figura 1-4. A través del conector CN1 se aplica la tensión de 9 a
15VDC procedente de un alimentador estándar con el positivo al centro. El interruptor SW3 conecta el sistema.
El diodo D1 evita la polarización inversa y con ello los daños que se pudieran ocasionar al equipo. El regulador
U1 estabiliza la tensión a +5Vcc 1A máximo con la que trabaja el equipo. Dicha tensión, junto con GND están
disponibles en el conector AP1 y AP2 respectivamente para alimentar a los circuitos y prototipos del usuario. En
el conector AP3 está disponible también la tensión de entrada sin estabilizar +Vin para aquellos circuitos que la
requieran. El diodo led D3 indica la presencia de tensión +5Vcc.

AP1
1

+5Vcc
2
3
U1 4
CN1 SW3 D1 UA7805/TO
3 1 2 1 3
IN OUT +5Vcc
2
GND

1 ON/OFF 1N4007 AP2


R3
9-15VDC 330 1
2
GND
2

3
4
+ C2
C28 100n D3
100uF Vcc ON AP3
F. DE 1
ALIM ENTACION 2
+Vin

3
4

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

1-5
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware
1.3.2 El oscilador
OSCILADOR +5Vcc +5Vcc

Se encarga de generar la frecuencia PRINCIPAL


principal de trabajo del microcontrolador. Su R20
esquema se muestra en la figura 1-5. Está X1 4K7
1 4
formado por el dispositivo integrado X1 y la red RC NC VCC JP2
formada por R20 y C1. Mediante el jumper JP2 se 2
GND OUT
3
obtiene la señal de reloj CLKIN. Cerrando 1-2 dicha 1 3 C1
OSCILADOR
señal la proporciona el oscilador X1. Cerrando 2-3 la 2
22p
señal se obtiene de la red RC. El valor de estos
componentes determina la frecuencia de la misma
(consultar parámetros proporcionados por
Microchip) CLKIN

Figura 1-5. Circuito oscilador

El dispositivo X1 contiene en su interior un


oscilador preciso controlado por cuarzo y todo ello en una
cápsula metálica en formato DIP8. Ver la figura 1-6. Este
oscilador, también llamado “Canned Oscillator” , se puede
adquirir en diferentes frecuencias según nuestras
necesidades. Basta simplemente cambiar uno por otro
para que nuestra aplicación se ejecute a mas o menos
velocidad.

Figura 1-6. “Canned Oscillator”

1.3.3 Los microcontroladores

Es el sección mas importante del entrenador


PIC’School y donde se inserta el dispositivo PIC
con el que se va a trabajar. Básicamente consta
de cuatro zócalos donde se pueden insertar los
dispositivos de 8, 18, 28 y 40 patillas tal y como se
muestra en la fotografía de la figura 1-7.

Figura 1-7. Los microcontroladores

En la figura 1-8 se muestran los diferentes tipos de encapsulados que se admiten. Se debe tener en
cuenta que Microchip diseña y comercializa de forma constante nuevos modelos y por ello, la figura muestra la
distribución de patillas y señales que deben tener las cápsulas de 8, 18, 28 y 40 patillas, para ser compatibles a
nivel de hardware con el laboratorio PIC’School. También se debe considerar que el software de grabación
soporte un dispositivo determinado. Nosotros sugerimos el empleo de los programas de libre distribución como
WinPIC800, IcProg y/o el MPLAB de Microchip. Este último debe ir acompañado del depurador en circuito ICD2.
Estos programas se pueden actualizar periódicamente con nuevas versiones en las que se soportan nuevos
dispositivos PIC.

La figura 1-8 también muestra cómo algunas patillas pueden tener una doble función según el modelo de
PIC que se trate. Normalmente dichas señales se pueden configurar en el propio PIC, durante el proceso de
grabación y, mediante jumpers, se conectan al hardware según interese. Por ejemplo, en algunos dispositivos
PIC de 18 pines, la patilla 16 se puede emplear como entrada de reloj (CLKIN) o como línea de E/S (RA7).

1-6
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

1 18
2 RA2 RA1 17
3 RA3 RA0 16 CLKIN/RA7
MCLR/RA5 4 RA4 RA7 15
1 8 5 RA5 RA6 14 CLKOUT/RA6
CLKIN/GP5 2 VDD GND 7 RB7/PGD 6 GND VDD 13 RB7/PGD
3 GP5 GP0 6 7 RB0 RB7 12
4 GP4 GP1 5 RB6/PGC 8 RB1 RB6 11 RB6/PGC
MCLR/GP3 GP3 GP2 9 RB2 RB5 10
RB3 RB4
PIC8PINS
PIC18PINES

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

Figura 1-8. Distribución de señales según el tipo de encapsulado

El esquema eléctrico de la figura 1-9 muestra las distintas conexiones así como los diferentes jumpers de
configuración disponibles en el laboratorio PIC’School y que se resumen en la siguiente tabla:

CAPSULA JUMPER POSICION DESCRIPCION


8 Pines JP3 1-2 Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
2-3 GP5. Línea de E/S de propósito general si está disponible en el
dispositivo.
JP4 1-2 Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabación del dispositivo.
2-3 GP3. Línea de E/S de propósito general si está disponible en el
dispositivo.
18 Pines JP5 1-2 Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabación
2-3 RA5. Línea de E/S de propósito general si está disponible en el
dispositivo.
JP6 1-2 Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
2-3 RA7. Línea de E/S de propósito general si está disponible en el
dispositivo.
28/40 JP6 1-2 Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
Pines oscilador principal.
2-3 RA7. Línea de E/S de propósito general si está disponible en el
dispositivo.
JP7 1-2 Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabación del dispositivo.
2-3 RE3. Línea de E/S de propósito general si está disponible en el
dispositivo.

1-7
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

CLKIN

+5Vcc
+5Vcc
C3
100n C4
100n
JP3
1 PIC1
1 8 PIC2 JP6
2 2 VDD GND 7 1 18 1
GP5 GP0 PICDATA RA2 RA2 RA1 RA1
3 6 1 2 17
GP4 GP4 GP1 PICCLK RA3 RA3 RA0 RA0
4 5 3 16 2
GP3 GP2 GP2 RA4 RA4 RA7
3 2 4 15
RA5 RA6 RA6
PIC8PINES 5 14
GP5 GND VDD
6 13 3
RB0 RB0 RB7 PICDATA
2 3 7 12
RB1 RB1 RB6 PICCLK
3 1 JP5 8 11
GP3 RB2 RB2 RB5 RB5
9 10
RB3 RB3 RB4 RB4
RA7
JP4 PIC18PINES
RA5

PICMCLR +5Vcc

C6
100n

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

PIC40PINES
+5Vcc

Figura 1-9. Conexiones y jumpers de configuración

1.3.4 Entradas analógicas

Están formadas por dos potenciómetros tal y como se muestra en la fotografía de la figura 1-10.

Figura 1-10. Las entradas


analógicas

El esquema eléctrico se muestra en la figura 1-11. Las líneas de los potenciómetros son directamente
accesibles desde el bloque de conexión AP16 correspondiente y se les puede conectar cualquier tipo de circuito
eléctrico analógico.

1-8
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

P1 P2
10K 10K
3 1 3 1

2
R7 R8
470 470

Figura 1-11. Conexiones de las


entradas analógicas
1
2
3
4
5
6
7
8

AP16
ENTRADAS ANALOGICAS

ENTRADAS ANALOGICAS

1.3.5 Entradas digitales

Se muestran en la fotografía de la figura 1-12 y


están formadas por 4 interruptores deslizantes y otros
tantos pulsadores.

Figura 1-12. Entradas digitales

La figura 1-13 muestra el esquema eléctrico de estas ocho entradas cuyas señales están disponibles en
el bloque de conexiones AP18. Las señales E0-E3 proceden de los cuatro interruptores deslizantes. Cuando
estos están abiertos (hacia arriba) proporcionan nivel lógico “1” gracias a las resistencias Pull-Up de RP2.
Cuando cualquiera de ellos se cierra (hacia abajo) se conecta directamente con la señal GND por lo que
proporcionan nivel “0”.

Por otra parte los cuatro pulsadores en situación de reposo permanecen abiertos generando nivel lógico
“1” gracias a las resistencias Pull-Up contenidas en RP3. Cuando se accionan se cierra circuito con GND y se
genera nivel “0”.

1-9
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

RP3 RP2

10K 10K

1
2
3
4
5

5
4
3
2
1
+5VCC +5VCC
E7

E6

E5

E4

E3

E2

E1

E0
1

1
2

2
R16 R15 R14 R13 R12 R11 R10 R9
470 470 470 470 470 470 470 470
E7
E6
E5
E4
E3
E2
E1
E0

AP18
ENTRADAS
1
2
3
4
5
6
7
8

DIGITALES
ENTRADAS DIGITALES

Figura 1-13. Esquema de las entradas digitales.

1.3.6 El generador lógico

Se muestra en la figura 1-14 y está basado en el dispositivo SYM10AA. Es capaz de generar ondas
cuadradas simétricas a frecuencias de 1Hz, 10Hz, 100Hz y 1KHz. Está especialmente indicado para aplicaciones
de control de tiempos y también para evaluar y ensayar con los módulos de captura y comparación (CCP)
contenidos en ciertos modelos de dispositivos PIC.

Figura 1-14. El generador lógico

El esquema eléctrico de dicho generador es el que proporciona su propio fabricante y se muestra en la


figura 1-15. Puede servir como base para múltiples aplicaciones.

1-10
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

FREQ.SELEC. SW2

R17
+5VCC
R23 U6 470
4 2 D5
+5VCC SEL 1Hz
10K 7 D6
10Hz
1 6 D7
VDD 100Hz
C22 5 D8
100n 1KHz
8 3
GND OUT

SY M-10
Figura 1-15. Esquema AP8

4
3
2
1
del generador lógico
GENERADOR LÓGICO FREQ. OUT

La señal de salida se obtiene mediante el bloque de conexiones AP8. Por defecto la frecuencia de salida
es siempre de 1Hz. Mediante el pulsador SW2 se va seleccionando secuencialmente la frecuencia a 10Hz,
100Hz, 1KHz y vuelta a empezar con 1Hz. Los leds D5-D8 monitorizan la frecuencia de salida en todo momento.

1.3.7 El teclado

Tal y como se muestra en la figura 1-16, el laboratorio PIC’School va provisto de una teclado matricial de
4 x 4 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 a suponer el tener que aprender y


utilizar una serie de técnicas y conceptos que se emplean en las mas
diversas aplicaciones. Manejar conceptos tales como “barrido del
teclado”, “tecla pulsada”, “rebotes”, “interrupción con cada pulsación”,
“wake up con cada pulsación”, etc.. darán al usuario la posibilidad de
acometer ambiciosos proyectos de carácter profesional.

Figura 1-16. El Teclado

Un dato relevante a tener en cuenta es que a pesar de disponer de 16 teclas, tan solo son necesarias 8
líneas de E/S del microcontrolador para su total control. Ello es debido a su distribución matricial. La figura 1-17
muestra el teclado asociado al bloque de conexiones AP21. En dicha figura también se puede apreciar la
relación entre fila-columna y la tecla asociada. Así pues la tecla 1 está asociada con la fila 0 (F0) y la columna 0
(C0).

En la laboratorio PIC’School las 8 líneas del teclado se puede conectar a cualquier puerta del PIC, pero
se sugiere conectarlo a las líneas de la puerta B (como se muestra en la figura anterior). Esto es porque la
mencionada puerta tiene, en la mayoría de los dispositivos PIC, un par de características muy interesantes para
el control de un teclado: resistencias pull-up internas para las líneas de entrada y posibilidad de interrupción
cuando cualquiera de esas líneas de entrada cambie de estado.

1-11
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

Figura 1-17. Esquema de TECLADO 4 X 4


conexiones del teclado
SW5

Vamos a analizar las F3


8
RB7 F2 F0
conexiones mostradas en la figura 1- RB6 F1 7 1 2 3 A
6
17. Las cuatro filas F0-F3 se conectan RB5
RB4
F0
C3 5
4 5 6 B F1
a RB4-RB7 y las cuatro columnas C0- RB3 C2 4
RB2 C1 3
C3 se conectan con las líneas RB0- RB1 C0 2
7 8 9 C F2
RB3. La intersección fila-columna da RB0 1

lugar a una tecla en concreto. Es


* 0 # D F3
decir, si se pulsa por ejemplo la tecla
AP21
4, supone unir eléctricamente la fila F1

8
7
6
5
4
3
2
1
C0 C1 C2 C3
con la columna C0, que es tanto como
TECLADO
decir que las líneas RB0 y RB5 del TECLADO 4 X 4
PIC se han unido.

La rutina software encargada de explorar el teclado tiene que determinar qué tecla se ha pulsado. Para
ello, por ejemplo, se configura las líneas RB0-RB3 (las columnas) como salidas y RB4-RN7 (las filas) como
entradas. Secuencialmente se van activando cada una de las columnas al tiempo que se lee el estado de las
filas. Cuando se detecta que una fila está activa 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 de 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.

Haciendo uso de algunas de las prestaciones que ofrecen los dispositivos PIC en la puerta B, es posible
desarrollar rutinas mas sofisticadas y eficaces. Efectivamente, programando los registros oportunos de un PIC
podemos hacer que las entradas RB4-RB7 (las filas) se conecten a las 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 de cualquiera de las entradas de la puerta B.

En este momento las salidas RB0-RB3 (columnas) se ponen a nivel “0” y esta situación de reposo se
mantiene mientras no se pulse ninguna tecla. El microcontrolador puede dedicarse a otras tareas o quedarse en
standby reduciendo el consumo hasta que ocurra un suceso como 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 “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 la inmediata atención del microcontrolador que pasa a ejecutar la rutina que se
encargará de averiguar qué tecla se pulso.

1.3.8 Salidas digitales

Están formadas por 8 diodos led (S0-S7) que sirven para monitorizar el nivel lógico de las líneas a las
que están conectados. Ver la figura 1-18.

Figura 1-18. Salidas digitales

1-12
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

En el laboratorio PIC’School los leds son


accesibles mediante el conector AP17 tal y como se RP1 SIL
330
muestra en el esquema de la figura 1-19, y se
pueden conectar individualmente a cualquiera de las
líneas del microcontrolador. Estas líneas son
capaces de suministrar del orden de 25mA por lo

1
2
3
4
5
6
7
8
9
que no es necesario ningún circuito adicional de
amplificación excepto las resistencias de absorción
contenidas en el pack RP1.

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 S7 S6 S5 S4 S3 S2 S1 S0
económica de reflejar el estado binario de las líneas
de salida, donde cada led simula la carga que se
desea controlar.

S7
S6
S5
S4
S3
S2

S0
S1
Figura 1-19. Esquema de las salidas digitales
SALIDAS

1
2
3
4
5
6
7
8
DIGITALES
AP17
SALIDAS DIGITALES

1.3.9 Salidas digitales de alta corriente

El laboratorio PIC’School dispone de un driver de 4 canales formado por el dispositivo L293D y capaz de
proporcionar salidas de alta corriente. Ver la fotografía de la figura 1-20.

Figura 1-20. Las salidas de alta


corriente

En la figura 1-21 se puede apreciar el esquema


eléctrico. El dispositivo integrado L293D dispone de 4 canales
amplificadores o drivers capaces de proporcionar salidas de
hasta 0.6 A a 36V cada uno, a partir de señales TTL de baja
corriente.

Mediante el conector AP6 se conectan las señales E1-E4 a amplificar y que proceden de sendas salidas
del microcontrolador. El conector CN7 está formado por un conjunto de bornas o clemas donde se obtienen las
salidas S1-S4 debidamente amplificadas y se realizan las conexiones con las cargas a controlar.

1-13
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

SALIDAS DEL DRIVER


Mediante el jumper JP8 se selecciona
la tensión de salida para las cargas. En la
CN7
posición 1-2 (por defecto) dicha tensión es de
+5Vcc. En la posición 2-3 la tensión que

GND

+VM

S4

S3

S2

S1
alimenta a las cargas se aplica externamente
a través de la borna +VM. 3 JP8

Mediante estas salidas de alta 2

14

11

3
corriente el laboratorio PIC’School puede

OUT4

OUT3

OUT2

OUT1
controlar cargas de consumo elevado como 13 1
pueden ser lámparas incandescentes, relés, GND
VDD
8
12
motores DC, motores paso a paso, etc.. GND U5
5
GND L293D 16
Cabe indicar que el dispositivo L293D 4 VCC +5VCC
GND
integra en su interior sendos diodos para la

EN2

EN1
C21

IN4

IN3

IN2

IN1
absorción de corrientes inversas provocadas
100n
por cargas inductivas.

15

10
9

2
+5VCC

E4
E3
E2
E1
Figura 1-21. Esquema de las salidas de

1
2
3
4
alta corriente. AM PLIFICADOR DE AP6
4 CANALES ENTRADAS AL DRIVER

1.3.10 Interfase serie RS-232

Su ubicación dentro del laboratorio se muestra en la figura 1-22. Consiste en el clásico interfase serie
que permite adaptar los niveles lógicos del microcontrolador a niveles RS-232.

Figura 1-22. Canal serie RS-232

Según el esquema eléctrico mostrado en la figura 1-23 el


interfase está formado por el popular adaptador de niveles MAX-
232. Mediante el conector AP5 disponemos de las señales de
transmisión y recepción (TxD y RxD) así como las de control de
flujo CTS y RTS. Estas señales proceden del microcontrolador.
El conector CN5 es un conector DB9 hembra estándar, que
permite realizar la conexión con el periférico serie. Mediante un
led bicolor (D17/D18) se monitoriza todo tipo de transmisión y/o
recepción.

Este interfase permite realizar todo tipo de comunicaciones serie entre el laboratorio PIC’School y
cualquier otro equipo mediante el protocolo estándar RS-232. La velocidad de transferencia irá en función del
tipo de microcontrolador empleado y su velocidad de trabajo.

Se recuerda que algunos dispositivos PIC incorporan en su interior una UART completa que se encarga
de realizar la mayor parte de los procedimientos propios de la comunicación según los protocolos tanto RS-232
como RS-485. En este último caso basta con montar el sencillo circuito de adaptación correspondiente, sobre el
módulo board de montaje sin soldadura con que cuenta PIC’School.

1-14
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

CN5
5
MAX232 9
U4 4
RTS 12 13 RTS 8
RxD 9 T1OUT R1IN 8 TxD 3
CTS 11 T2OUT R2IN 14 CTS 7
TxD 10 T1IN R1OUT 7 RxD 2
T2IN R2OUT 6
1 4 1
3 C1+ C2+ 5
C17 C1- C2- C18
100n 2 6 100n INTERFACE RS-232
V+ V-

GND
C15 Vcc C16 D17 D18
100n 100n ROJO (Tx) VERDE (Rx)
16

15
C19
+5VCC
TxD
RxD
CTS
RTS

CANAL
R5 SERIE
100n 330 RS-232
4
3
2
1

AP5
+5VCC
CANAL SERIE

Figura 1-23. Esquema eléctrico del interfase RS-232

1.3.11 Interfase bus CAN

Se muestra en la figura 1-24 y está compuesto del dispositivo adaptador MCP2551 que convierte las
señales lógicas según las especificaciones del bus CAN.

Figura 1-24. Interfase CAN

El bus CAN permite crear una red con


una transferencia de datos muy robusta y fiable
entre el microcontrolador principal (host) y todo
tipo de dispositivos o nodos CAN conectados
entre sí mediante 2 hilos. Este protocolo es muy empleado por la industria del automóvil y algunos dispositivos
PIC incorporan mediante hardware interno todos los mecanismos necesarios para su implementación.

En la figura 1-25 se muestra el esquema eléctrico de este interfase incorporado en el laboratorio


PIC’School. Por el conector AP10 se proporcionan, procedentes del microcontrolador, las señales RxCAN,
TxCAN que van a parar al circuito de adaptación MCP2551. Las señales de salida CANH y CANL se obtienen
por el conector CN6 (DB9 macho) y de aquí van a parar a los diferentes nodos de la red. El circuito de
adaptación es capaz de conectar con hasta 112 nodos. Mediante el jumper JP1 se habilita o no la resistencia
Terminal R2 según qué lugar ocupe nuestro laboratorio en la red (por defecto habilitada).

1-15
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

CN6

CAN
INTERFACE CAN

5
9
4
8
3
7
2
6
1
R2 120

1 JP1 2

6
R1

RS

CANL
CANH
10 3
VCC +5VCC
C24
U7 100n
MCP2551 2

VREF
RxD GND
TxD
1

5
TxCAN
RxCAN
VREF

AP10
4
3
2
1

INTERFACE CAN

Figura 1-25. Esquema del interfase CAN

1.3.12 Pantalla LCD

Se trata de uno de los periféricos mas versátiles e interesantes que dispone el laboratorio PIC’School. Se
muestra en la figura 1-26 y es capaz de visualizar dos líneas de 16 caracteres alfanuméricos cada una.

Figura 1-26. 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


grupos de 4 u 8 bits de datos y se conecta con las líneas de E/S mediante el conector AP20. El esquema
eléctrico se muestra en la figura 1-27.

Existe además otro conector, el AP9, donde se conectan las señales que controlan el flujo y tipo de
información que se transfiere. Con la señal RS se determina si la pantalla recibe el código ASCII del carácter a
visualizar (nivel “1”) o bien un código de instrucción (nivel “0”). Mediante la señal RW el microcontrolador informa
a la pantalla LCD si se va a leer o escribir sobre la misma. Finalmente, con la señal E, se habilita o no a esa
pantalla. Cuando esta señal vale “0” la pantalla queda desconectada, las líneas de datos quedan en alta
impedancia. Cuando vale “1” , la pantalla queda habilitada para recibir o mandar datos.

1-16
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware
La resistencia R19 permite ajustar el contraste del LCD. Con el valor de 4K7 se consigue un contraste
medio aceptable. Su valor se puede modificar.

U8 INTERFACE LCD
LCD LCD HD44780 compatible

GND
VCC
VLC
RW
RS
D7
D6
D5
D4
D3
D2
D1
D0
L+
L-

E
C23

16
15

14
13
12
11
10
9
8
7

6
5
4

3
2
1
100n

Figura 1-27. Conexiones de R19


4K7

L7
L6
L5
L4
L3
L2
L1
L0
la pantalla LCD GND

E
RW
RS
AP20 AP9 +5VCC
8
7
6
5
4
3
2
1

4
3
2
1
DATOS CONTROL

1.3.13 Conectores para interfase RJ11 y USB

Son simples conectores de propósito general y que se muestran en la fotografía de la figura 1-28.

Figura 1-28. Conectores RJ11 y USB

Las conexiones se muestran en la figura 1-29. Permiten conectar


dispositivos externos con el microcontrolador y/o el hardware contenidos
en el laboratorio PIC’School.

Las señales del conector RJ11 están disponibles en el bloque de conexiones AP19. Este conector se
puede emplear para conectar el laboratorio PIC’School con dispositivos I2C, RS-485, iButton, y un largo etc..

Por su parte el conector USB es del tipo B y sus señales están disponibles en el bloque de conexiones
AP7. Mediante este conector es posible realizar un interfase estándar con los múltiples dispositivos USB
existentes en el mercado. El jumper JP9 permite que la alimentación del bus USB se obtenga desde los +5Vcc
del propio Laboratorio (posición 1-2), la suministre el usuario (posición 2-3) o bien el bus USB no se alimenta
desde el laboratorio PIC’School (JP9 abierto).

Se recuerda que algunos dispositivos PIC integran en su interior el hardware necesario para
implementar el protocolo USB, y disponen de las señales D+ y D- que se conectarán directamente con el bloque
de conexiones AP7.

1-17
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

2 1

3 4

1 3 5 3 4

CONECTOR USB 2 1
2 4 6 TIPO B

CONECTOR RJ11-6 +5VCC CN9


USB TIPO B

CN3

1
2
3
4
RJ11-6 C20
100n
6
5
4
3
2
1
+5VCC
1 2
JP9 3
6 5 4 3 2 1

VUSB
D-
D+
GND
INTERFACE AP19
8
7
6
5
4
3
2
1

RJ11 INTERFACE USB AP7

1
2
3
4
INTERFACE RJ11 INTERFACE USB

Figura 1-29. Conexiones de los conectores RJ11 y USB

1.3.14 Sección de grabación

Se muestra en la fotografía de la figura 1-30 y se encarga, mediante el software oportuno, de realizar los
ciclos de lectura/grabación del dispositivo PIC contenido en el laboratorio.

Figura 1-30. La sección de grabación

El esquema por bloques de la figura 1-31 trata de sintetizar el funcionamiento del circuito de grabación que
dispone el laboratorio PIC’School.

1-18
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

Todos los dispositivos PIC disponen de 3 señales para la


lectura/grabación de la memoria de programa, la memoria
EEPROM para datos y la memoria de configuración. La señal
PICDATA permite transferir los datos de forma serie y síncrona
entre el PIC y el hardware de grabación, la señal PICCLK
transporta la señal de reloj para el sincronismo de los datos y la
señal PICMCLR, que inicia los ciclos de lectura/grabación y
aplica la tensión Vpp necesaria. Estas tres señales son además
compartidas y empleadas como líneas de E/S de propósito
general una vez que el PIC ha sido grabado.

Estas tres señales se conectan con tres fuentes


diferentes según el modo de operación seleccionado mediante el
conmutador SW4.

Figura 1-31. Esquema por bloques del


circuito de grabación

El modo RUN se emplea cuando el dispositivo está grabado. Las tres señales del PIC anteriormente
mencionadas se consideran líneas de E/S de propósito general y están disponibles a través de los bloques de
conexión correspondientes, para ser utilizadas por los periféricos de la aplicación.

En el modo ICSP el laboratorio queda configurado para que el PIC actual en él insertado se pueda
leer/grabar a través de las señales que se aplican mediante el conector RJ11 (ICSP- In Circuit Serial
Programing). Estas señales a su vez las debe proporcionar un grabador externo dotado de su correspondiente
software de grabación. Se puede emplear el módulo ICD2 de Microchip junto con el entorno integrado de
desarrollo MPLAB, que se puede obtener de forma gratuita desde www.microchip.com. El módulo ICD2 además
de grabar dispositivos es capaz de realizar depuración en circuito en tiempo real, con ciertos modelos de
dispositivos PIC.

En el modo PC la lectura/grabación del PIC se realiza a través de las señales del canal serie de un PC
dotado del correspondiente software de grabación. Un diodo led, el Vpp ON, indica transferencia de datos entre
el PC y el laboratorio. Entre los múltiples tipos de software existentes, nosotros hemos elegido el WinPIC800 y el
IcProg, con los que hemos obtenido excelentes resultados. Ambos programas se pueden descargar y actualizar
de forma gratuita en las direcciones http://perso.wanadoo.es/siscobf/winpic800.htm y en www.ic-prog.com.

Se reitera una vez mas que, aunque un software de grabación determinado grabe múltiples dispositivos y
de diferentes familias, es necesario que también haya compatibilidad a nivel de hardware. Esta compatibilidad
viene dada fundamentalmente por la distribución de patillas del dispositivo en cuestión, tal y como se explicó en
el apartado 1.3.3. En el laboratorio PIC’School se admiten todos los dispositivos PIC’s de 8, 18, 28 y 40 patillas
distribuidas como se menciona en dicho apartado y que también sean soportados por el software de grabación
empleado.

1-19
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware

1-20
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

TEMA 2: Software de grabación

2.1 INTRODUCCION

Este tema está dedicado a comentar las características mas relevantes de diferente software de
grabación de distribución gratuita y que puede emplearse desde el PC para la lectura/grabación de dispositivos
PIC en el laboratorio PIC’School. Por los buenos resultados obtenidos, vamos a referirnos al WinPIC800, el
IcProg y el MPLAB.

No tratamos de reemplazar el manual de usuario de dichos programas, simplemente queremos


proporcionar un resumen de las operaciones básicas de los mismos. Se recomienda que sea el usuario quien se
descargue y obtenga los correspondientes manuales, si los hubiera, de cada software así como las
actualizaciones mas recientes.

2.2 EL SOFTWARE DE GRABACION WINPIC800

Se trata de un software de libre distribución desarrollado por Sisco Benach que se puede descargar
desde el sitio http://perso.wanadoo.es/siscobf/winpic800.htm Es conveniente hacerlo de forma periódica con
objeto de obtener la última versión disponible. Se descarga un fichero ZIP que contiene el archivo ejecutable,
archivos de configuración, lenguajes, etc.. Se aconseja descomprimirlo todo sobre una misma carpeta (p.e.
WinPic800) y crear un acceso directo al ejecutable.

El programa WINPIC800 es un proyecto abierto sujeto a constantes ampliaciones y mejoras, que se


adapta a diferentes tipos de grabadores. En la opción “Acerca de..” del menú de Ayuda hay un enlace directo al
foro Todo PIC donde gran cantidad de usuarios y entusiastas exponen sus dudas tanto de hardware como de
software, comentarios, posibles mejoras, bugs, soluciones, etc.. De esta forma el programa se encuentra en
permanente evolución.

En Ingeniería de Microsistemas Programados S.L., aunque no proporcionamos su soporte técnico,


hemos analizado el software WinPic800 con el laboratorio PIC’School. Tras chequear y comprobar su
funcionamiento con un buen número de dispositivos PIC de las familias 12FXXX, 16FXXX y 18FXXXX, podemos
afirmar que hemos obtenido unos muy buenos resultados.

Aunque poco a poco se le van añadiendo nuevos idiomas, el programa se presenta totalmente en
castellano, es muy intuitivo, rápido en la grabación y eficaz en sus posibilidades.

2.2.1 Instalación

WinPic800 se presenta en un único fichero ZIP. Para la instalación debe descomprimirse sobre una
carpeta (p.e. WinPic800) donde se ubicarán todos los archivos y carpetas. Basta con hacer un acceso directo al
fichero ejecutable para acceder con rapidez a las diferentes funciones del software.

La figura 2-1 muestra la pantalla de trabajo del software de grabación WinPic800, en versión 3.56.c,
donde se encuentran las diferentes áreas de trabajo, opciones y menús.

1.- Opciones del menú principal

Archivo: Se seleccionan las distintas opciones que permiten abrir, guardar, cerrar, etc. los archivos de
trabajo que contienen el contenido HEX a grabar en el dispositivo PIC.

Edición: Se puede editar y llenar las áreas de memoria del PIC o buffers, con diferentes contenidos.

Dispositivo: Se seleccionan los distintos comandos a ejecutar sobre el PIC: leer, borrar, grabar,
verificar, etc. La mayor parte de estos comandos se pueden ejecutar mediante los botones de la barra de
comandos.

Configuración: Se selecciona el tipo de hardware grabador que el software debe controlar. También se
seleccionan diferentes opciones de control.

2-1
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Idiomas: Se selecciona el lenguaje empleado por el software WinPic800.

Ayuda: Se obtiene información adicional del software.

Figura 2-1. Pantalla de trabajo del software WinPic800

2.- Selección de dispositivo

Mediante estas dos persianas se puede seleccionar el tipo de dispositivo a grabar así como el modelo.

3.- Barra de comandos

Mediante el empleo de estos botones se puede ejecutar de una forma rápida y fácil la mayor parte de los
comandos contenidos en los menús Archivo y Dispositivo: Abrir fichero, Actualizar, Guardar fichero, Leer
PIC, Grabar PIC, Verificar PIC, Borrar PIC, configurar hardware y software.

4.- Selección del Buffer o área de memoria

Mediante estas tres pestañas, el usuario puede conmutar entre cualquiera de las tres áreas de memoria
o buffers de que constan los dispositivos PIC.

Código: Representa a la memoria OTP/EEPROM/FLASH de programa. Sobre este buffer se visualiza el


contenido de la memoria de programa del PIC recién leído o bien el contenido que se desea grabar
sobre ese PIC y que procede de un archivo *.HEX recién abierto. El contenido se representa en código
hexadecimal y ASCII y puede ser de 12, 14 o 16 bits por cada posición. El tamaño de este buffer varía en
función del modelo de PIC seleccionado.

2-2
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
Datos: Representa a la memoria EEPROM de datos. Sobre este buffer se visualiza el contenido de la
memoria EEPROM de datos del PIC recién leído o bien el contenido que se desea grabar sobre ese PIC
y que procede de un archivo *.HEX recién abierto. El contenido se representa en código hexadecimal y
ASCII con 8 bits. El tamaño de este buffer varía en función del modelo de PIC seleccionado y puede
quedar deshabilitado si dicho modelo no dispone internamente de memoria EEPROM para datos.

Config.: Representa a la memoria de configuración. Sobre este buffer se almacena y visualiza el


contenido de la memoria de configuración del PIC recién leído o bien la configuración que se desea
grabar sobre ese PIC y que procede de un archivo *.HEX recién abierto. La representación de este buffer
se realiza en modo binario de forma que se puedan activar/desactivar individualmente los distintos bits
de las distintas palabras de configuración. El número de bits representados varía en función del modelo
de PIC.

5.- Botones de edición

Este conjunto de botones permiten de una forma fácil y rápida realizar tareas propias de edición del área
o buffer de memoria seleccionado: Copiar, Pegar, Cortar, Llenar buffer, Marcar, Buscar y Buscar
siguiente.

6.- Areas de memoria o buffers

Esta es la zona de la pantalla de trabajo donde se visualizan y/o modifican los contenidos del área de
memoria seleccionada. En el área de programa o código la visualización se representa en formato
hexadecimal y ASCII con 12, 14 o 16 bits, según el modelo de PIC seleccionado. El área de datos se
representa siempre en formato de 8 bits en hexadecimal y ASCII y sólo es visible si el modelo de PIC
dispone realmente de memoria EEPROM para los datos.

El contenido de cualquier posición de cualquiera de estas dos áreas se puede modificar a nivel
individual. Basta con hacer click en la posición deseada y teclear el nuevo valor en hex. o en ASCII.
También se pueden modificar a nivel de bloque mediante las opciones de llenado de Buffer, donde se
pide una dirección inicial, otra final y el valor a almacenar.

Por su parte el área de configuración representa los contenidos a nivel binario, donde es posible activar o
desactivar individualmente cada uno de los bits de acuerdo a la configuración deseada.

7.- Botones de verificación

Permite leer el valor ID del dispositivo, visualizar una imagen de cómo se debe insertar el PIC en el
zócalo según el tipo de grabador empleado (si la imagen está disponible), verificar el hardware del
grabador, e identificar el modelo de PIC.

2.2.2 Configuración del hardware

Una de las características mas notables del software WinPic800 es su flexibilidad a la hora de poder
controlar el hardware de casi cualquier tipo de grabador, p.e. el laboratorio PIC’School. Ello es posible gracias a
su flexible sistema de configuración.

Para grabar la mayor parte de dispositivos PIC se emplean básicamente 5 señales:

VDD Alimentación de +5V

GND Tierra o 0V

MCLR/Vpp Señal de Reset por donde además se aplica la tensión VPP de grabación.

PGD Señal de E/S por donde, de forma síncrona, se transfieren al PIC los distintos comandos y datos
para su lectura (DataOut) y/o grabación (DataIn).

2-3
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
PGC Señal de reloj para sincronizar los comandos y datos que se aplican al PIC durante la lectura o
grabación.

Estas señales las debe generar el propio software de grabación y aplicarlas al circuito grabador que
contiene el PIC a grabar. El WinPic800 puede generar esas señales a través del canal paralelo del PC, del canal
serie o, mediante el interface apropiado, a través de un puerto USB. Todo ello se puede configurar mediante la
opción “Configuración/Hardware” del menú principal. Incluso, es posible configurar y determinar la asociación y
polarización entre las señales anteriores de grabación y las señales que ofrecen los canales serie/paralelo del
PC, de forma que se pueda adaptar a la mayoría de grabadores disponibles.

La figura 2-2 muestra la configuración necesaria para controlar el circuito de grabación del laboratorio
PIC’School con el software WinPic800.

Figura 2-2. Configuración de WinPic800 para adaptarlo PIC’School

A la vista de la figura se puede deducir la configuración necesaria. En primer lugar se empleará el canal
serie COMx como interfase con el PC. La señal de salida de datos a grabar (PGD = Data) está asociada con el
bit DTR del canal serie. La señal de entrada de datos leídos (PGD = DataIn) se asocia al bit CTS. La señal
síncrona de reloj (PGC = Clock) queda asociada con el bit RTS. Estas tres señales son empleadas de forma
invertida por el hardware de grabación de PIC’School, por lo que el software WinPic800 también las debe invertir.
Para ello están activadas las casillas correspondientes. Por último, la señal de grabación (MCLR/Vpp) queda
asociada con el bit TXD del canal serie del PC.

Habilitando o no las casillas apropiadas en la columna Test, se pueden activar o desactivar


individualmente las señales asociadas a modo de comprobación. Los indicadores luminosos de la columna
Estado nos indican el estado actual de dichas señales.

Deshabilitando el Bloqueo de configuración se puede hacer cualquier cambio sobre las señales
mencionadas y ajustarlas a las necesidades del hardware según el grabador disponible. Una vez configurado el
sistema, puede generarse un fichero de configuración para usos posteriores. Para ello se dispone de tres
botones: “Guardar”, “Guardar Como”, y “Eliminar”. Se pide el nombre del fichero, que suele coincidir con el
nombre del grabador (p.e. PIC’School) y queda registrado en una lista de ficheros con la configuración de otros
tantos grabadores.

2-4
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
2.2.3 Configuración del Software

Existen unas opciones de


configuración a nivel de software que
el usuario puede habilitar o no según
preferencias. Estas se muestran en la
figura 2-3.

Figura 2-3. Opciones de


configuración software

● Programar. Permite activar o no las opciones de “Verificar tras la programación” y “Avisar antes de
borrar y programar”. En el primer caso, al activarse, se fuerza a que el software verifique de forma
automática el contenido del PIC recién grabado, comparándolo con el contenido actual de los
distintos buffer o áreas de memoria.

● Dispositivo. Permite activar o no las opciones de “Usar autoselección del dispositivo” y “ Detectar y
autoseleccionar el dispositivo al entrar”. En el primer caso WinPic800 trata de averiguar el modelo de
PIC sobre el que se va a actuar. Esta detección se basa en que los modelos de PIC mas recientes
integran un código de identificación. El modelo detectado pasa automáticamente a ser el
seleccionado. Activando la segunda opción se trata de detectar el PIC nada mas ejecutar WinPic800.

Hay que indicar que no todos los modelos de PIC integran el código de identificación. En estos casos
se indicara que se trata de un modelo desconocido y habrá que seleccionarlo manualmente.

● .HEX. Permite, si se activa, actualizar los archivos *.HEX antes de la grabación por si se hubiera
realizado alguna modificación de los buffers de memoria y ajustar los ficheros *.HEX si se trata de
dispositivos de la familia 18FXXX.

2.2.4 Tareas mas comunes

Básicamente se ejecutan mediante los distintos botones disponibles sin necesidad de navegar entre los
distintos menús. Ver la figura 2-4.

Figura 2-4. Botones de las tareas mas comunes

1.- Abrir: Accede al clásico navegador de windows que permite seleccionar el archivo que se desea abrir.
Dicho archivo debe tener la extensión *.HEX y se obtiene como consecuencia de ensamblar/compilar el
programa del usuario. Su contenido se almacena en los distintos buffer de memoria de WinPic800 para la
posterior grabación del PIC. Este botón también permite acceder de forma rápida a los archivos *.HEX
recientemente abiertos.

2.- Actualizar Archivo: Este comando permite restaurar los distintos buffer de memoria de WinPic800 después
de haber sufrido cualquier tipo de modificación, con el contenido del archivo *.HEX actual.

2-5
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

3.- Guardar: Guarda el contenido de los buffer de memoria de WinPic800 sobre el archivo *.HEX actualmente
abierto.

4.- Leer Todo: Lee el contenido de las tres áreas de memoria que componen un PIC (código, datos y
configuración) y lo deposita sobre los correspondientes buffer de WinPic800.

5.- Programar Todo: Graba sobre las tres áreas de memoria que componen un PIC, el contenido de los
correspondientes buffer de WinPic800.

6.- Verificar Todo: Compara el contenido de las tres áreas de memoria del PIC con el contenido de los tres
buffer de memoria de WinPic800, comprobando si hay igualdad o, en su caso, indicando las diferencias
existentes

7.- Borrar todo: Borra el contenido de las tres áreas de memoria del PIC, dejándolas en los valores originales
de fábrica. Este comando sólo es operativo en los dispositivos con memoria EEPROM/FLASH. Los
dispositivos con memoria OTP no pueden ser borrados.

8.- Test Hardware: Realiza una comprobación del hardware del grabador en uso (PIC’School).

9.- Detectar PIC: Trata de averiguar el modelo de PIC que está instalado en el grabador y lo selecciona como
modelo actual si esta opción está activada en “Configuración / Software”. No todos los modelos de PIC
integran su propia identificación. En este caso la detección resulta imposible.

2.3 EL SOFTWARE DE GRABACION ICPROG

Se trata de otro programa de libre distribución, multi-lenguaje y apto para un gran número de grabadores
entre los que se encuentra el laboratorio PIC’School. Desarrollado por Bonny Gijzen se puede descargar desde
el sitio www.ic-prog.com. Se recomienda visitar periódicamente esa dirección con objeto de obtener las versiones
mas actualizadas.

En Ingeniería de Microsistemas Programados S.L., aunque no proporcionamos su soporte técnico,


hemos analizado el software IcProg con el PIC’School. Tras chequear y comprobar su funcionamiento con un
buen número de dispositivos PIC de las familias 16FXXX y 18FXXXX, podemos afirmar que hemos obtenido
unos buenos resultados.

2.3.1 Instalación

La instalación de IcProg requiere descargarse desde www.ic-prog.com tres ficheros ZIP comprimidos. El
fichero Icprogxxxx.ZIP contiene el ejecutable, donde xxxx representa la versión del mismo. El fichero
Icprog_driver.ZIP contiene los drivers necesarios para ejecutar IcProg desde windows NT/2000/XP. Finalmente
el fichero help_spanish.ZIP contiene la ayuda en castellano del programa.

Se deben descomprimir los tres ficheros sobre un mismo directorio o carpeta, obteniéndose así tres
archivos: el ejecutable icprogxxxx.EXE, el driver para NT/2000/XP icprog.SYS y el archivo de ayuda
icprog.CHM. Este último dispone de una traducción al castellano de la ayuda y está realizada por Carlos
Chueke. Por último se puede hacer un acceso directo al fichero ejecutable para una rápida ejecución.

La figura 2-5 muestra la pantalla de trabajo del IcProg con las diferentes áreas y opciones disponibles en
la versión 1.05D.

2-6
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Figura 2-5. Pantalla de trabajo del software IcProg

1.- Opciones del menú principal

Archivo: Presenta las clásicas opciones relacionadas con el control y manejo de archivos. Abrir archivo
permite leer el contenido de un archivo *.HEX y almacenarlo en los buffer de memoria. Guardar archivo
almacena el contenido actual del buffer seleccionado sobre un archivo *.HEX. Abrir archivo de datos.
Archivos recientes permite seleccionar entre los archivos recién utilizados. Imprimir realiza una copia
impresa del contenido actual del buffer de memoria seleccionado. Cerrar finaliza la sesión de trabajo con
IcProg.

Edición: Dispone de una serie de opciones que permiten editar tanto el buffer de memoria de programa
como el de datos. Llenar buffer llena todo el buffer de programa con el valor indicado. Llenar intervalo
buffer permite llenar un rango de posiciones o área del buffer de programa con el valor indicado. Copiar
del buffer copia en el porta papeles el contenido del área del buffer seleccionado. Pegar del buffer copia
sobre el buffer el contenido del porta papeles. Llenar buffer de datos, Llenar intervalo de datos, Copiar
del buffer y Pegar al buffer, son opciones idénticas a las anteriores, pero relativas al buffer de datos.

Buffer: Se entiende como buffer activo actual el que va a ser utilizado para la transferencia de
información con el PIC a leer/grabar. Mediante las opciones aquí disponibles es posible seleccionar uno
de entre los 5 posibles buffer como buffer actual. También es posible comparar el contenido del buffer
activo actual con el contenido de cualquiera de los otros cuatro buffer.

Ajustes: Con sus diferentes opciones se ajustan una serie de valores por defecto. Dispositivo permite
elegir el tipo de dispositivo con el que se va a trabajar (4-Wire, I2C, PIC, SX, etc..) y el modelo.
Dispositivos recientes permite seleccionar de forma rápida los modelos mas utilizados. Tipo de hardware
selecciona el modelo de grabador que se emplea. Prueba de hardware realiza un test del grabador
empleado, permitiendo activar/desactivar individualmente las señales de grabación. Opciones permite
seleccionar diferentes parámetros de trabajo: confirmaciones, avisos, lenguajes, programación, etc..).

2-7
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
Comando: Mediante sus diferentes opciones se ejecutan las tareas propias de cualquier grabador. Leer
todo lee el contenido del PIC y lo deposita en el buffer activo. Programar todo graba el contenido del
buffer activo sobre las distintas áreas de memoria del PIC (programa, datos y configuración). Programar
bits de configuración permite modificar únicamente la palabra de configuración. Borrar todo borra el área
de código, de datos y configuración del PIC. Verificar blanco comprueba de que el PIC esté borrado.
Verificar comprueba que el contenido de las distintas áreas de memoria de PIC coincida con el contenido
del buffer activo.

Ver: Selecciona diferentes formas de visualización. Ensamblador visualiza el área de programa en forma
de nemónicos, con las instrucciones y los operandos sitas en el buffer activo. Hexadecimal visualiza el
contenido del área de código y de datos del buffer activo en formato hexadecimal. Posición de dispositivo
presenta una imagen de cómo se debe insertar el dispositivo en el zócalo del grabador. Esta imagen es
orientativa y no tiene porqué coincidir con el modelo de grabador, por lo que se recomienda leer el
manual correspondiente. Información dispositivo presenta un breve resumen de las características mas
relevantes del dispositivo seleccionado. Refrescar actualiza el buffer activo.

Ayuda: Presenta las opciones de ayuda que explican el manejo del software IcProg.

2.- Selección de dispositivo

Mediante esta persiana despegable se selecciona el modelo del dispositivo a leer/grabar.

3.- Barra de comandos

Mediante el empleo de estos botones se puede ejecutar de una forma rápida y fácil la mayor parte de los
comandos mas utilizados: Abrir fichero, Guardar fichero, Leer PIC, Grabar PIC, Verificar PIC, Borrar PIC,
Test de Hardware , etc..

4.- Palabra de configuración

En esta área queda reflejado el estado de la palabra de configuración del PIC recién leído o bien el valor
de configuración que se desea grabar en ese dispositivo. El aspecto de la palabra de configuración
puede variar de un modelo otro en función de las características del PIC. En general se pueden activar o
desactivar de forma individual los distintos bits que permiten configurar el PIC de una determinada
manera.

5.- Area de código

Representa a la memoria OTP/EEPROM/FLASH de programa. Sobre este buffer se visualiza el


contenido de la memoria de programa del PIC recién leído o bien el contenido que se desea grabar
sobre ese PIC y que procede de un archivo *.HEX recién abierto. El contenido se puede visualizar en
código hexadecimal y ASCII y puede ser de 12, 14 o 16 bits por cada posición. El tamaño de este buffer
varía en función del modelo de PIC seleccionado. También puede ser visualizado en formato
nemotécnico representando las instrucciones y sus operadores. Para modificar el contenido de cualquier
posición, basta con situar el cursor en la misma y teclear el nuevo valor. Esto se puede hacer tanto en
hexadecimal como en ASCII.

6.- Area de datos

Representa a la memoria EEPROM de datos. Sobre este buffer se visualiza el contenido de la memoria
EEPROM de datos del PIC recién leído o bien el contenido que se desea grabar sobre ese PIC y que
procede de un archivo *.HEX recién abierto. El contenido se representa en código hexadecimal y ASCII
con 8 bits. El tamaño de este buffer varía en función del modelo de PIC seleccionado y puede quedar
deshabilitado si el modelo seleccionado no dispone internamente de memoria EEPROM para datos.
Para modificar el contenido de cualquier posición, basta con situar el cursor en la misma y teclear el
nuevo valor. Esto se puede hacer tanto en hexadecimal como en ASCII.

2-8
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
7.- Pestañas de selección

El IcProg dispone de 5 buffer diferentes que representan la memoria de programa y la de datos.


Mediante cualquiera de estas pestañas se selecciona el buffer deseado. Disponer de varios buffer
permite acceder rápidamente a información que proviene, p.e. de un PIC recién leído por un lado y de un
fichero *.HEX recién abierto por otro.

2.3.2 Configuración del Hardware

IcProg es un software que se adapta a numerosos grabadores comerciales o que tengan un hardware
compatible. Mediante la opción “Tipo de Hardware” del menú “Ajustes” es posible configurar IcProg al tipo de
grabador disponible. En la figura 2-6 se muestra la configuración necesaria para adaptarlo con el circuito de
grabación de PIC’School que nos ocupa.

Figura 2-6. Configuración de IcProg


para adaptarlo a PIC’School

Mediante el menú despegable se selecciona el modelo JDM. Se trata de un programador estándar que
se gobierna desde el canal serie, al igual que el nuestro laboratorio PIC’School. Para una correcta adaptación
con éste, es necesario activar la inversión de las señales Data Out, Data In y Clock, tal y como se muestra en la
imagen.

El botón deslizante permite ajustar entre 1 y 40 el retardo en las transiciones de las líneas de I/O. Un
valor de orientación suele estar comprendido entre 1 y 25. Todo ello depende de la velocidad del ordenador
donde se ejecuta IcProg. A mayor velocidad le corresponde un mayor retardo y viceversa, pero se aconseja
hacer las pruebas oportunas para conseguir un compromiso entre la grabación con éxito del dispositivo y el
menor retardo posible.

2.3.3 Configuración del software

Los usuarios de Windows NT, W2000 y WXP deben guardar en la misma carpeta que IcProg, el driver
icprog.sys. Sobre el icono que representa el archivo ejecutable icprogxxxx.exe se hace doble click con el botón
derecho y se selecciona la opción Propiedades. Debe aparecer una ventana como la mostrada en la figura 2-7.
Seleccionamos la pestaña Compatibilidad y se configuran las opciones mostradas en la figura.

Se pulsa Aplicar y seguido Aceptar. Ahora se puede ejecutar el programa icprogxxxx.exe. Puede que
aparezcan algunos mensajes de error que deben ser ignorados.

2-9
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Figura 2-7. Propiedades de


IcProg para ejecutarlo desde
WNT, W2000 y WXP

Finalmente, desde “Opciones” del menú “Ajuste” se activa la pestaña “Miscelánea” y se realizan los
ajustes mostrados en la figura 2-8, consistentes en habilitar el driver para NT/2000/XP.

Figura 2-8. Habilitando el


driver para NT/2000/XP

Mediante la opción Prueba de Hardware del menú Ajustes es posible comprobar el correcto
funcionamiento tanto de PIC’School como la comunicación con IcProg. La Figura 2-9 muestra una ventana en la
que es posible activar/desactivar individualmente cada una de las señales empleadas en la grabación de un
dispositivo PIC.

2-10
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Figura 2-9. Comprobando


el hardware

Con Opciones del menú Ajustes también se puede acceder a una serie de configuraciones que permiten
personalizar el entorno de trabajo con IcProg, tal y como se muestra en la figura 2-10.

Figura 2-10. Personalizando


el software IcProg

2.3.4 Tareas mas comunes

Básicamente se ejecutan mediante los distintos botones de la barra de comandos. Son las mostradas en
la figura 2-11.

Figura 2-11. Botones con las tareas mas comunes

2-11
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
1.- Abrir: Presenta el oportuno navegador que permite buscar y seleccionar el archivo *.HEX que se desea
leer y depositar en el buffer activo. Este archivo *.HEX es el que se obtiene como consecuencia de
ensamblar y/o compilar un programa fuente de aplicación.

2.- Guardar como: Permite almacenar el contenido del buffer actual, sobre un archivo *.HEX.

3.- Configurar el hardware: Activa la ventana de configuración, la mostrada en la figura 2-6, para realizar
cualquier tipo de ajuste relativo a la configuración y tipo de grabador.

4.- Opciones: Abre la pantalla de opciones que permiten el ajuste de diferentes parámetros de trabajo del
software IcProg. Es la misma que la mostrada en la figura 2-8.

5.- Leer Todo: Lee el contenido de las diferentes áreas de memoria del PIC (programa, datos y configuración)
y lo deposita sobre el buffer activo.

6.- Programar Todo: Graba sobre las diferentes áreas de memoria del PIC (programa, datos y configuración)
el contenido actual del buffer activo.

7.- Borrar Todo: Borra el contenido de las diferentes áreas de memoria del Pic (programa, datos y
configuración), dejándolo en blanco.

8.- Verificar: Compara el contenido de las diferentes áreas de memoria del PIC (programa, datos y
configuración) con el contenido del buffer activado. Genera un informe con la 1ª posición cuyo contenido
no coincida con el del buffer.

9.- Asistente Smartcard: Presenta una pantalla para la gestión de tarjetas de memoria tipo SmartCard. No
es útil con PIC’School.

10.- Vista ensamblador: Cambia la visualización del área de datos presentando las instrucciones mediante
nemónicos. Sólo es válido con los dispositivos PIC de 12 y 14 bits de la familia 12XXXX y 16XXXX.

11.- Vista hexadecimal. Visualiza el área de programa y de datos en formato hexadecimal.

2.4 EL DEPURADOR EN CIRCUITO ICD2

Se trata de una herramienta semi profesional que tiene dos finalidades. Por un lado es un depurador en
circuito que facilita la depuración y puesta a punto del programa de aplicación, haciendo que el dispositivo PIC
pueda ejecutar dicho programa paso a paso, con puntos de ruptura, tiempo real, etc. Por otro lado el ICD2
incluye el hardware y firmware necesario para realizar las tareas propias de grabación. Esto es lo que nos
interesa bajo el punto de vista del laboratorio PIC’School y a lo que nos vamos a referir en este tema.

El ICD2 es un producto original de Microchip y se controla desde el conocido software MPLAB IDE
(entorno integrado de desarrollo) que se puede descargar de forma gratuita desde www.microchip.com. Es
conveniente visitar esta página de forma periódica para descargar las versiones mas actuales de dicho software.
Las imágenes y comentarios del presente texto son relativos a la versión 7.30.

La figura 2-12 muestra la conexión entre el módulo ICD2 y el laboratorio PIC’School. Basta emplear el
cable RJ11 que se suministra con el ICD2 para conectar ambos equipos a través de los correspondientes
conectores. Una vez realizada la instalación, PIC’School será capaz de grabar todos los dispositivos PIC de la
familia 12Fxxx, 16Fxxx y 18Fxxx que soporta el propio ICD2 y será quién, bajo el control del software MPLAB IDE,
suministre las señales necesarias para la grabación: Vcc, GND, Vpp, PGC y PGD.

2-12
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Figura 2-12. Conexión de PIC’School con el módulo ICD2

2.4.1 Instalación

Desde www.microchip.com se debe bajar la versión mas actualizada del MPLAB IDE que consistirá en
un fichero *.ZIP. También se puede descargar el manual de usuario completo (en inglés). Una vez
descomprimido se ejecuta la instalación, debiéndose seguir los pasos que se van indicando a lo largo del
proceso.

En dicho proceso también se orienta cómo instalar los drivers necesarios para el control del módulo
ICD2. Este se puede conectar a un puerto serie o a un puerto USB.

Se recomienda leer atentamente tanto el manual de usuario como toda información referente a la
instalación y empleo que acompaña al software MPLAB IDE.

2.4.2 Configuración

Aparte de todas las posibilidades que ofrece MPLAB IDE una vez debidamente instalado, debemos
configurar el ICD2 como grabador por defecto. Esto se hace mediante la opción Programmer/Select
Programmer/MPLABICD2, tal y como se muestra en la figura 2-13.

2-13
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Figura 2-13. Selección


del ICD2 como grabador
por defecto

Mediante Programmer/Settings se activa una ventana similar a la de la figura 2-14 en la que se deben
ajustar diferentes parámetros de configuración del ICD2.

1.- Status: Visualizar el estado de la conexión entre el MPLAB IDE y el módulo ICD2.

2.- Comunication: Permite establecer el puerto de comunicaciones empleado por ICD2. Este puede ser el
USB o bien un canal serie, el COM1 o COM2, en cuyo caso se deben fijar los baudios de la comunicación.

3.- Limitations: Presenta un pequeño informe de las restricciones que tiene el ICD2 respecto al modelo de
PIC seleccionado.

4.- Power: Con esta opción se determina si el ICD2 se encargará de alimentar al circuito externo, en este
caso el PIC’School. Se recomienda tener desactivada esta opción.

5.- Program: Permite seleccionar qué rangos y áreas de memoria van a ser tratados en los distintos procesos
de lectura/grabación del PIC seleccionado.

6.- Versions: Genera un informe sobre la versión del MPLAB ICD2, tipo de firmware, versión del mismo, etc..

7.- Warnings: Permite habilitar o no la visualización de los diferentes tipos de avisos que se pueden generar
durante una sesión de trabajo con ICD2.

Figura 2-14. Ajustes de


configuración para el ICD2

2-14
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación

Mediante las opciones del menú Configure, que se muestran en la figura 2-15, se puede seleccionar el
tipo de dispositivo así como su palabra de configuración.

Figura 2-15 Selección de dispositivo

1.- Select Device: Permite seleccionar el tipo de dispositivo a emplear. Mediante una ventana como la
mostrada en la figura 2-16, se informa de qué herramientas y grabadores son soportados según el PIC
seleccionado.

Las herramientas iluminadas en verde indican que son totalmente operativas con el modelo seleccionado.
Las que están marcadas en amarillo indican que son soportadas pero en fase beta de pruebas.
Finalmente, aquellas herramientas iluminadas en rojo indican que no están disponibles para el modelo de
PIC seleccionado.

Figura 2-16. Selección de dispositivo

2.- Configuration bits: Abre una ventana en la que se debe seleccionar los diferentes parámetros de
configuración del PIC: tipo de oscilador, protección de código, activación del WDT, etc..

3.- ID Memory: Permite introducir el valor de identificación del dispositivo

2-15
Laboratorio PIC’School; Manual de Usuario
TEMA 2: Software de grabación
2.4.3 Tareas mas comunes

Se realizan con las distintas opciones disponibles en el menú Programmer, y son las mostradas en la
figura 2-17.

Figura 2-17. Desde el menú Programmer se


pueden seleccionar las tareas mas comunes
para la lectura/grabación del dispositivo PIC
seleccionado

1.- Program: Graba el contenido del buffer de MPLAB sobre las distintas áreas de memoria del PIC.

2.- Read: Lee las distintas áreas de memoria del PIC y lo deposita sobre el buffer de MPLAB.

3.- Verify: Compara el contenido de la memoria del PIC con el del buffer, generando un informe de aquellas
posiciones cuyos contenidos no coincidan.

4.- Erase Part: Borra todo el contenido del PIC.

5.- Blank Check: Comprueba que las distintas áreas de memoria del PIC estén borradas, generando un
informe de las posiciones que no estén.

6.- Connect: Establece la comunicación entre el software MPLAB y el módulo ICD2 al que a su vez está
conectado el laboratorio PIC’School, con el PIC a leer/grabar. Es posible que, según el modelo de PIC
elegido, sea necesario actualizar el firmware interno del ICD2 con una versión que acepte a dicho modelo.
Esto es un proceso automático y transparente. Cuando la actualización se haya llevado a cabo, el ICD2
será operativo con dicho modelo.

7.- Download ICD2 Operating System: Actualiza el firmware interno del ICD2 para adaptarlo al modelo de
PIC seleccionado. Normalmente dicho firmware lo proporciona directamente el propio MPLAB.

2-16
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

TEMA 3: Tutorial
3.1 INTRODUCCION

En este tema vamos a tratar de describir las tareas y herramientas necesarias para desarrollar el
software de una determinada aplicación. También vamos a proponer una serie de ejemplos básicos con
programas de carácter didáctico que se grabarán y ejecutarán sobre el dispositivo PIC 16F876 que incorpora de
serie el laboratorio PIC’School. El organigrama mostrado en la figura 3-1 trata de resumir los pasos necesarios.

Figura 3-1. Esquema básico de trabajo

1º El primer paso para el diseño del software de una aplicación es editar el programa fuente. Para
ello se puede emplear cualquier editor de textos típico y que sea capaz de guardar ficheros de
texto tipo ASCII como pueden ser el WordPad o el Bloc de notas incluidos en Windows, el
Microsoft Word, etc..

Se escribe el programa fuente siguiendo la sintaxis propia del lenguaje de programación que
estemos empleando: Ensamblador, C, BASIC, etc.. La extensión del archivo que contiene el
programa fuente suele indicar el tipo de lenguaje para el que está escrito (*.ASM, *.C, *.BAS,
etc..).

2º Ensamblar y/o compilar consiste en traducir el programa fuente escrito mediante el editor de
textos, en su equivalente en código máquina o hexadecimal. Para ello existen diferentes
herramientas según el tipo de lenguaje empleado. Las herramientas para traducir código
ensamblador suelen ser gratuitas y están disponibles en la web del fabricante. En el caso de
Microchip existen versiones para MS-DOS (MPASM) para Windows (MPASMWIN) o la versión
integrada en el conocido entorno de desarrollo MPLAB de este mismo fabricante.

Las herramientas compiladoras para C, BASIC o cualquier otro tipo de lenguaje, suelen tener un
determinado coste. De todas formas es posible encontrar en la red versiones “shareware” de las
mismas, versiones “demo” e incluso versiones para su evaluación.

3º En el proceso de traducción se pueden producir errores. Estos errores son de tipo sintáctico. Es
decir, la herramienta empleada para la traducción ha encontrado alguna incongruencia en el

3-1
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
programa fuente, instrucciones desconocidas, parámetros incorrectos, etc. Es algo así como si
se detectaran faltas de ortografía. En este caso el proceso se detiene y se debe volver al editor
del programa fuente (punto 1º) para corregir los errores encontrados.

Cuando un programa fuente está correctamente escrito, los ensambladores y/o compiladores
generan una serie de archivos. Uno de ellos, el más importante, contiene el resultado de la
traducción, es decir el código máquina o hexadecimal. La extensión de este archivo es *.HEX. El
resto de archivos suelen ser archivos auxiliares y contienen información de la traducción,
listados, información para simulación, etc.. Suelen ser necesarios y empleados por las
herramientas de depuración, emulación y/o simulación.

4º Obtenido el fichero ejecutable *.HEX debemos ahora verificar su funcionamiento. Para ello todos
los fabricantes disponen de una serie de herramientas hardware/software que permiten
comprobar el correcto funcionamiento del programa de aplicación recién obtenido y, en su
defecto, facilitar la localización del/los fallo/s.

La herramienta mas profesional y de mayor coste es la conocida como “Emulador”. Está formado
por un hardware y un software especial que permiten un análisis en tiempo real del resultado de
la ejecución. El emulador se conecta físicamente en el hardware de la aplicación sustituyendo a
todos los efectos, sin ningún tipo de restricción, al microcontrolador que en dicho hardware
debiera estar insertado. Mediante el software de emulación adecuado el emulador ejecuta el
programa de aplicación como si del propio microcontrolador se tratara, controlando en tiempo
real a todos los periféricos existentes. Es posible detener la ejecución en un momento
determinado (breakpoint), ejecutar paso a paso todas las instrucciones, visualizar/modificar los
registros internos, analizar tiempos de ejecución, registrar sucesos o eventos externos y un largo
etcétera.

En el caso de los PIC’s, Microchip dispone de sendos emuladores como el IC2000 y el IC4000
cuyo control se realiza mediante el conocido entorno integrado MPLAB. También existen varios
fabricantes o terceras partes que comercializan este tipo de herramientas para estos
microcontroladores.

En un término medio y a un coste bastante asequible nos encontramos con los “Depuradores en
Circuito” (ICD). Algunos microcontroladores, como es el caso de algunos dispositivos PIC,
incorporan en su interior mecanismos de depuración integrados. Basta un sencillo hardware
externo llamado ICD para comunicar dichos mecanismos con el software de depuración. Gracias
al ICD el programa de aplicación del usuario se graba físicamente sobre el propio
microcontrolador que se le supone insertado en el hardware final. Este programa se ejecuta por
tanto en tiempo real gestionando así todos los periféricos que hubiera en dicho hardware. El ICD
también permite el empleo de puntos de parada (breakpoints), ejecución paso a paso,
visualización/modificación de registros, etc..

Puesto que el ICD es una herramienta de bajo coste, también tiene una serie de limitaciones o
restricciones. Dado que se emplean algunos recursos del propio microcontrolador, estos no
están disponibles para el usuario. Consume parte del área de programa, algunas líneas de E/S y,
cada vez que se modifique el programa de aplicación, es necesario volver a regrabarlo sobre el
microcontrolador con el desgaste que esto supone. En ningún caso se puede por tanto comparar
un “Depurador” con un “Emulador”. Microchip dispone del depurador ICD2 que también se
controla mediante el software de depuración MPLAB.

Por último nos encontramos con las herramientas de simulación. Es la solución menos
profesional pero la mayor parte de fabricantes la distribuyen de forma gratuita a sus usuarios. Se
trata de un software que se ejecuta en el PC y trata de “simular” el comportamiento del
microcontrolador cuando éste ejecuta el programa de aplicación. Naturalmente esta ejecución
NO se realiza en tiempo real ni tampoco podemos “conectar” periféricos reales al PC.

El ya mencionado entorno de desarrollo MPLAB de microchip también tiene la posibilidad de


hacer simulación de los diferentes dispositivos PIC existentes. Es una solución bastante válida a
nivel didáctico en ciclos formativos y, sobre todo, es gratuita.

3-2
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

5º Sea cual sea la herramienta de “emulación/depuración/simulación” seleccionada, el objetivo final


es siempre localizar posibles fallos en el programa de aplicación y corregirlos. La corrección de
esos fallos implica volver al punto 1º para editar y corregir el programa fuente y ensamblarlo
nuevamente. El proceso finaliza cuando dicho programa cumpla todas las expectativas.

6º Grabar el dispositivo. Efectivamente, una vez que se ha obtenido un programa funcional y


ejecutable (*.HEX) se procede a grabarlo en la memoria interna del microcontrolador. Para ello
se recurre a un grabador dotado del software de grabación oportuno.

Por supuesto que el entorno de desarrollo MPLAB también tiene la posibilidad de grabar
dispositivos. Concretamente permite la conexión con varios equipos de grabación diseñados y
comercializados por Microchip: PICSTART Plus, MPLAB ICD2, MPLAB PM3, PROMATE II y
PICkit 1.

7º El último paso consiste en hacer las pruebas finales y definitivas. El microcontrolador recién
grabado se inserta en el hardware final de la aplicación donde se verifica el correcto
funcionamiento de todo el conjunto hardware/software.

El laboratorio PIC’School es una potente y autónoma herramienta hardware para el desarrollo de


aplicaciones basadas en microcontroladores PIC. Admite los dispositivos mas representativos, posee un buen
número de periféricos con un flexible sistema para su interconexión, dispone de un área para el montaje rápido
sin soldaduras y es capaz de grabar el dispositivo PIC insertado en su correspondiente zócalo.

Con PIC’School es posible hacer emulación si se dispone de la herramienta correspondiente, el


emulador. También admite la conexión con el depurador en circuito ICD2 (se vende por separado), lo que facilita
la depuración y puesta en marcha del programa así como su grabación. Finalmente, como PIC’School posee de
su propio sistema de grabación, basta con disponer de un software de simulación y otro de grabación para el
desarrollo de la aplicación. Es la opción mas económica y en la que se va a basar el presente tutorial.

3.2 TUTORIAL

En Ingeniería de Microsistemas Programados S.L hemos optado por el empleo del software MPLAB para
el desarrollo del presente tutorial, por ser un Entorno Integrado de Desarrollo (IDE) muy completo:

● Es totalmente gratuito y desde www.microchip.com se pueden obtener las diferentes


actualizaciones.
● Permite realizar todas las tareas necesarias en un proyecto: editar el programa fuente, ensamblar
y/o compilar (si se dispone del compilador) el programa fuente, simular el funcionamiento del
programa ejecutable, etc..
● Si se dispone de las herramientas hardware correspondientes también es posible emular, depurar
y grabar el dispositivo.

Como software de grabación vamos a emplear el WinPIC800 por los siguientes motivos:

● Es de libre distribución y desde http://perso.wanadoo.es/siscobf/winpic800.htm se pueden obtener


las distintas actualizaciones.
● Está en constante evolución y cuenta con un interesante foro.
● Se adapta perfectamente al hardware de grabación contenido en el laboratorio PIC’School.
● Admite los dispositivos PIC mas relevantes.

Se supone que ambos programas están debidamente instalados siguiendo las instrucciones de
instalación. También se sugiere crear una carpeta llamada “Ejemplos para PIC’School” y copiar en ella todos los
programas fuente *.ASM de ejemplo contenidos en el CD-ROM que viene con el equipo.

3-3
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.2.1. Creación de un proyecto

Cuando se está en fase de desarrollo de un programa de aplicación, se genera una abundante


información relacionada con el mismo que se aglutina en torno a lo que se llama un “Proyecto”. Un proyecto no
es mas que un fichero en el que queda reflejado una importante serie de datos relacionados con esa aplicación:

● Tipo de procesador empleado.


● Lenguaje de programación.
● Nombre del fichero que contiene el programa fuente.
● Ficheros que se obtienen tras el ensamblado y/o compilación: ejecutables (*.HEX), listados
(*.LST), errores (*.ERR), información de simulación, etc..
● Entorno de trabajo
● Parámetros de configuración, etc...

De esta forma, cuando se retoma el trabajo de un día para otro, basta con abrir simplemente el proyecto
en cuestión. Automáticamente y de forma rápida y cómoda aparece el entorno de trabajo tal y como se dejó.

El entorno de desarrollo MPLAB dispone de un cómodo gestor de proyectos que, tal y como se muestra
en la figura 3-2, se inicia mediante la opción “Project/Project Wizard” del menú principal.

Figura 3-2. Iniciando el gestor de proyectos

Este gestor nos va guiando a definir el proyecto que se puede resumir en los siguientes pasos:

1º Definir el tipo de microcontrolador que se va a emplear en la aplicación. Ver la figura 3-3.

3-4
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Aparece una lista despegable con todos


los dispositivos admitidos en la versión actual de
MPLAB. Estamos empleando la versión 7.30 y el
dispositivo seleccionado es el PIC16F876A que
es el que incorpora de serie el laboratorio
PIC’School .

Se pulsa el botón “Siguiente” para seguir


con el proceso.

Figura 3-3. Selección del dispositivo

2º Se selecciona la herramienta software que se va a emplear en el proceso de ensamblado y/o compilación


para obtener el programa ejecutable (*.HEX) a partir del programa fuente (*. ASM, *.C, etc.). Ver la figura
3-4.

Mediante la persiana denominada


“Active Toolsuite” se selecciona una de
esas herramientas.

En la actualidad, MPLAB se puede


integrar con herramientas propias de
Microchip o de terceras fuentes. Para ello
se deben seguir las instrucciones de
instalación propias de cada una de ellas.
En el caso que nos ocupa seleccionamos
“Microchip MPASM Toolsuite” que es el
ensamblador que se suministra
gratuitamente y se instala junto con el
propio MPLAB. Esta herramienta consta
del ensamblador (mpasmwin.exe)
propiamente dicho, el enlazador o lincador
(mplink.exe) y librerías (mplib.exe). Con el
botón “Browse...” se puede seleccionar el
lugar o ruta donde se encuentran cada
uno de estos ficheros, que por defecto es
la mostrada en la figura.
Figura 3-4. Seleccionando la herramienta de
ensamblado/compilación
3º Dar nombre al proyecto e indicar la carpeta donde ha de guardarse, tal y como se muestra en la figura 3-5.

3-5
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

En este caso el proyecto se denomina


“Ejem_1” y se guardará en la carpeta
“Ejemplos para PIC’School” de la unidad F:\ (o
cualquier otra unidad disponible).

Esta carpeta es la que se sugirió crear


anteriormente para guardar en ella todos los
programas fuentes de ejemplo (*.ASM) que se
suministran en el CD-ROM.

Figura 3-5. Asignando nombre al proyecto

4º Asignar el programa fuente asociado al proyecto. Ver la figura 3-6. En el caso que nos ocupa los
programas de ejemplo ya están editados y almacenados en la carpeta “F:\Ejemplos para PIC’School”
procedentes del CD-ROM. De esta manera evitamos tener que teclearlos. En otros casos habría que
editarlos mediante el editor de textos que dispone el propio MPLAB.

La carpeta “F:\Ejemplos para


PIC’School” es la que se eligió para
almacenar el proyecto “Ejem_1” y en ella
se encuentran todos los ficheros con los
programas fuente *.ASM propuestos como
ejemplos.

Seleccionamos el fichero
“Ejem_1.asm” y se pulsa el botón “Add”.
Al proyecto Ejem_1 le hemos asignado el
programa fuente Ejem_1.asm

Conviene indicar que un proyecto


puede tener asignado mas de un
programa fuente.

Figura 3-6. Asignación del programa


fuente

Por último el gestor de proyectos presenta una ventana resumen como la mostrada en la figura 3-7
donde se resume el proyecto.

3-6
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Se indica tipo de dispositivo empleado,


herramienta de ensamblado/compilación y
carpeta y nombre del fichero que contiene el
proyecto.

Cuando se pulsa Finalizar se visualiza


la ventana principal de MPLAB que muestra el
área de trabajo y una pequeña ventana que
resumen al proyecto Ejem_1.mcp y los
ficheros asociados.

Figura 3-7. Sumario del proyecto


Ejem_1.mcp

También podemos configurar el área de trabajo de MPLAB a nuestro gusto, visualizando las ventanas
que nos interesen, su tamaño, posición, etc.. Por ejemplo y, como referencia, podemos abrir el programa fuente
para tenerlo a la vista. Se emplea la opción “File/Open “del menú principal y se busca y selecciona el fichero
Ejem_1.asm. Mediante la opción “View” se pueden abrir ventanas que representan la memoria RAM del
dispositivo (File Registers), sus registros internos (Special Function Registers), la memoria EEPROM de datos (si
la hubiera), etc.. Mediante “Configure/Configuration Bits” se pueden visualiza y ajustar los bits de configuración
del dispositivo. La figura 3-8 puede servir como muestra del área de trabajo configurada a gusto del usuario.

Figura 3-8. Configurando el área de trabajo

3-7
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Se puede seleccionar el
tipo de herramienta para realizar la
puesta a punto del programa. En
la figura 3-9 se ha seleccionado el
simulador MPLAB SIM, pero se
hubiera podido seleccionar el
emulador MPLAB ICE 2000 o el
depurador en circuito MPLAB ICD
2 si estuvieran disponibles.

Figura 3-9. Selección del


simulador

Todos estos ajustes y configuraciones también forman parte del proyecto. Mediante las diferentes
opciones del menú “Project” se puede salvar un proyecto, recuperarlo, iniciar uno nuevo, etc.

En la dirección www.microchip.com está disponible el manual de usuario completo del entorno de


desarrollo MPLAB, en el que se explica todas las funciones y prestaciones del programa. En la red es posible
encontrar herramientas equivalentes a MPLAB, aunque nosotros recomendamos su empleo por ser un producto
original fabricado por el propio Microchip. Su aprendizaje puede resultar un poco costoso, pero es una
herramienta potente, actualizada y que permite cubrir diferentes etapas desde la simulación hasta la emulación
en tiempo real.

3.2.2 El programa fuente

Todos los programas fuente los suministramos en el CD-ROM para que el usuario no pierda tiempo en
su edición. Por supuesto que pueden ser modificados y adaptados a sus necesidades. Es mas, animamos a que
así sea ya que somos muy conscientes de que la única forma de aprender a programar es “enredando” y
experimentando con ellos. De todas formas en la red se pueden encontrar innumerables páginas y foros que
ofrecen programas de demostración. En nuestra página www.microcontroladores.com tenemos gran cantidad de
ejemplos que, aunque no estén expresamente pensados para el laboratorio PIC’School, se pueden adaptar
fácilmente. También existe abundante literatura en castellano destinada a conocer el mundo de los PIC’s y su
programación. En www.microchip.com se puede descargar el manual completo del ensamblador MPASM donde
se explica todas sus instrucciones y directivas.

En este tutorial hemos empezado con un proyecto llamado Ejem_1 al que se le ha asignado un
programa fuente llamado Ejem_1.ASM y cuyo listado se muestra a continuación. Puede servir como ejemplo de
referencia para analizar el aspecto de un programa fuente en ensamblador. No pretendemos desde aquí a
enseñar a programar PIC’s. Como ya se mencionó anteriormente existe abundante material escrito sobre el
tema.

En todo programa fuente se permite la inclusión de comentarios que facilitan la compresión del mismo
añadiendo todo tipo de explicaciones tanto en la cabecera del programa como en las instrucciones que lo
forman. En el caso del ensamblador todo comentario debe empezar con “;”.

La directiva “List” informa al ensamblador del tipo de dispositivo para el que debe realizar la traducción.
Por su parte la directiva “include” permite añadir ficheros previamente editados. Normalmente el contenido de
estos ficheros puede ser empleado por múltiples programas sin necesidad de tener que editarlos cada vez. En el
ejemplo se incluye el fichero P16F876A.INC que contiene la declaración de bits y etiquetas de ese dispositivo.
Estas declaraciones son siempre iguales por lo que no es necesario escribirlas cada vez que se necesiten. Se
hace un fichero con ellas y luego se “incrusta” en todos los programas fuente que las necesite.

La directiva “__config” permite establecer cómo han de quedar los bits de configuración del dispositivo a
la hora de grabarlo. Esta información queda registrada en el fichero *.HEX y es empleada por el software de
grabación. En el ejemplo que nos ocupa se ha seleccionado una configuración de Protección de código y
datos=OFF, LVP=OFF, WDT=OFF y OSC=XT.

3-8
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

;
; EJEMPLO 1
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;Leer el estado de 6 interruptores/pulsadores del entrenador conectados a RA5-RA0 y reflejar el nivel
;lógico de los mismos sobre los leds conectaqdos a RB5-RB0

List p=16F876A ;Tipo de procesador


include "P16F876A.INC" ;Definiciones de registros internos

;Ajusta los valores de la palabra de configuración durante el ensamblaje:


;Protección de código y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT

__config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC

;Estos y otros valores se pueden modificar según las necesidades

org 0x00
goto Inicio ;Vector de reset
org 0x05

Inicio clrf PORTB ;Borra los latch de salida


bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
movlw 0x06
movwf ADCON1 ;Puerta A digital
movlw b'00111111'
movwf TRISA ;Puerta A se configura como entrada
bcf STATUS,RP0 ;Selecciona banco 0

Loop movf PORTA,W ;Leer las entradas RA0-RA5


movwf PORTB ;Reflejar en las salidas
goto Loop ;Bucle sin fin

end ;Fin del programa fuente

El programa comienza en la dirección 0x0000 destinada al vector de Reset. Todos los programas deben
comenzar configurando las líneas de E/S del PIC determinado quiénes son entradas y quiénes salidas. En el
ejemplo la puerta A se configura como entradas digitales y la B se configura como salida.

El cuerpo principal del ejemplo comienza en la dirección indicada por la etiqueta Loop. De una forma
constante se procede a leer el estado de las entradas para reflejarlo sobre las salidas. Las entradas se supone
conectadas a unos interruptores y las salidas a unos indicadores tipo led, periféricos contenidos en el laboratorio
PIC’School.

Por último la directiva end se pone al final del programa fuente y su empleo es obligatorio. Le informa al
ensamblador el final del mismo.

3.2.3 Construyendo el proyecto

Básicamente consiste en ensamblar/compilar el programa fuente (*.ASM) para obtener el programa en


código máquina (*.HEX). Recordemos que nuestro proyecto “Ejem_1.mcp” está compuesto del programa fuente
“Ejem_1.asm”. Como ya se ha explicado anteriormente, tras el ensamblado se obtiene una serie de ficheros
como es el ejecutable “Ejem_1.hex”, de listado “Ejem_1.lst”, de errores “Ejem_1.err”, de simulación
“Ejem_1.cod”, etc..

La figura 3-10 muestra alguna de las opciones del menú “Project”, entre las que se encuentra la opción
“Buid All” (ctrl.+F10) que es la que emplearemos para proceder a ensamblar.

3-9
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Figura 3-10. Ensamblando el proyecto

3.2.4 Preparando el hardware de la aplicación

El programa de este ejemplo de aplicación consiste en leer el estado de 6 interruptores de entrada


conectados a las líneas RA0-RA5 de la puerta A y reflejarlo en otras tantas salidas conectadas a las líneas RB0-
RB5 de la puerta B.

La figura 3-11 muestra el esquema de conexiones de los interruptores de entrada y los leds de salida del
laboratorio PIC’School conectados a las líneas de las Puertas A y B respectivamente.

AP17 AP18

1 1
2 S5 E5 2
3 RB5 RA5 3
S4 E4
4 RB4 RA4 4
S3 E3
5 RB3 RA3 5
S2 E2
6 RB2 RA2 6
S1 E1
7 RB1 RA1 7
S0 E0
8 RB0 RA0 8

SALIDAS DIGITALES ENTRADAS DIGITALES

Figura 3-11. Conexiones eléctricas de los interruptores y leds en PIC’School

Las entradas están disponibles a través del bloque de conexiones AP17 y están representadas como E0-
E7. Las cuatro primeras se corresponden con los interruptores E0-E3 y las cuatro últimas con los pulsadores E4-
E7. En este ejemplo sólo se conectan las entradas E0-E5 con las líneas RA0-RA5 del microcontrolador.

Las conexiones con los leds de salida se realizan a través del bloque de conexiones AP18 y están
representados como S0-S7. En este ejemplo de aplicación únicamente se emplean los leds S0-S5 que se
conectan con las líneas de salida RB0-RB5 del PIC.

Todas las conexiones se pueden realizar mediante cable rígido de conexiones de 0.6 a 0.8 mm de grosor
tal y como se muestra en la fotografía de la figura 3-12.

3-10
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Figura 3-12. Conexiones realizadas sobre PIC’School

3.2.5 Grabación del dispositivo

Obtenido tras el ensamblado el fichero ejecutable Ejem_1.hex y habiendo preparado el hardware en


PIC’School con las conexiones necesarias, lo único que queda por hacer es grabar el dispositivo. Esto se puede
realizar desde el mismo entorno de desarrollo MPLAB, si dispusieramos de cualquiera de los grabadores
soportados, por ejemplo el ICD2.

Sin embargo el laboratorio PIC’School incorpora su propio grabador por lo que no es necesario de
ningún equipo adicional. Basta con ejecutar el software de grabación apropiado. Nosotros hemos optado por
emplear el WinPIC800 o el IcProg que se comentaron en el tema anterior.

Suponiendo que se disponga del WinPic800 debidamente instalado y configurado, basta con ejecutarlo y
seguir los siguientes pasos:

1º Conectar la alimentación del laboratorio PIC’School.

2º El conmutador del grabador debe estar en la posición “PC”

3º Conectar el cable de comunicaciones entre el laboratorio y el PC.

4º Pulsar el botón de detectar PIC. Se debe selecciona el 16F876A de forma automática.

5º Abrir el fichero Ejem_1.hex recién obtenido. La figura 3-13 muestra el área de trabajo con el contenido en
hexadecimal de la memoria de programa procedente del fichero abierto y que será grabado físicamente
sobre el PIC. Igualmente se puede mostrar la palabra de configuración con los ajustes que se realizaron
en el programa fuente Ejem_1.asm mediante la directiva “__config”, almacenados también en el fichero
Ejem_1.hex.

3-11
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Figura 3-13. El programa ejecutable

6º Se sugiere borrar el PIC mediante el botón correspondiente.

7º Grabar el contenido actual del buffer de WinPic800 sobre el PIC.

3.2.6 Comprobando el funcionamiento de la aplicación

El dispositivo PIC16F876 ya está grabado, vamos a verificar el correcto funcionamiento de la aplicación:

1º Colocar el conmutador del grabador del laboratorio PIC’School en la posición RUN

2º Comprobar que cualquier actuación sobre los interruptores/pulsadores de entrada queda inmediatamente
reflejado sobre los leds de salida. Recordar que los pulsadores están normalmente, en situación de
reposo, a nivel “1”. Cuando se accionan generan nivel lógico “0”.

Es el momento de experimentar con el programa Ejem_1.asm para modificarlo como queramos y repetir
todos los pasos expuestos en el presente tutorial. También es el momento de ir revisando los diferentes ejemplos
propuestos a continuación y cuyos programas fuentes se suministran en el CD-ROM.

3-12
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3 EJEMPLOS

Por fin ha llegado el momento de ir probando con el resto de ejemplos que se suministran en el CD-
ROM. Además de aprender ciertas técnicas y “trucos” de programación con los ejercicios propuestos, también
nos vamos a familiarizar con el manejo del laboratorio PIC’School, sus periféricos, las conexiones de los mismos
con las líneas de E/S del PIC así como con los recursos internos del microcontrolador.

3.3.1 Ejemplo 1: Simple manejo de las entradas y salidas

Es el ejemplo contenido en el archivo Ejem_1.asm y que se empleo en el tutorial del apartado anterior.

3.3.2 Ejemplo 2: Función lógica NOT

Enunciado

Leer el estado de un interruptor conectado a RA0 y visualizarlo sobre un led conectado a RB0. En RB1 se
conecta otro led que visualiza el complemento de RA0.

Requisitos

Realizar las conexiones mostradas en el esquema de la figura 3-14 en las que RA0 se conecta con el interruptor
E0, RB0 se conecta con el led S0 y RB1 se conecta con el led S1.
AP17 AP18

1 1
2 2
3 3
4 4
5 5
6 S1 6
7 RB1 7
S0 E0
8 RB0 RA0 8

SALIDAS DIGITALES ENTRADAS DIGITALES

Figura 3-14. Conexiones a realizar con el ejemplo 2

Comentarios

Este ejemplo contenido en el fichero Ejem_2.asm realiza un sencillo tratamiento con el valor de la señal de
entrada.

3.3.3 Ejemplo 3: Decodificador combinacional

Enunciado

El presente ejemplo propone generar unas señales de salida sobre RB0-RB7 en función de dos señales de
entrada que se aplican por RA0 y RA1, según la siguiente tabla de la verdad. Se trata de una clásica aplicación
combinacional.

ENTRADAS SALIDAS
RA1 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 0 0 0 0 1 1 1 1
1 1 1 1 1 1 0 0 0 0

3-13
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Requisitos

Las líneas de entrada RA0 y RA1 se conectan con los interruptores E0 y E1 respectivamente. Las líneas RB0-
RB7 se conectan con los leds S0-S7. Ver el esquema de la figura 3-15.
AP17 AP18
S7
1 RB7 1
S6
2 RB6 2
S5
3 RB5 3
S4
4 RB4 4
S3
5 RB3 5
S2
6 RB2 6
S1 E1
7 RB1 RA1 7
S0 E0
8 RB0 RA0 8

SALIDAS DIGITALES ENTRADAS DIGITALES

Figura 3-15. Conexiones del ejemplo 3

Comentarios

El programa contenido en el fichero Ejem_3.asm muestra el empleo de las máscaras que permiten filtrar una
información de entrada de varios bits y procesar sólo los que interese.

3.3.4 Ejemplo 4: Automatismo secuencial, simulando una maniobra de torneado

Enunciado

Se trata de simular una sencilla maniobra 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. El funcionamiento se resume a continuación:

1º La secuencia se inicia al pulsar "I" (RA0) que activa el cilindro "V" (RB0).
2º Este en su avance empuja la pieza a tornear y acciona el sensor "b" (RA2) activando el relé del motor "M"
(RB1). Comienza el torneado.
3º Durante el avance se alcanza el sensor "c" (RA3) que desactiva el cilindro "V" (RB0) iniciándose el
retroceso del mismo.
4º Al volver a pasar por "b" (RA2), se desconecta "M" (RB1).
5º Cuando se alcanza el final de carrera "a" (RA1) se activa una señal acústica "A" (RB2) para que el
operario retire la pieza, coloque otra nueva y, se inicie un nuevo ciclo, al pulsar "I" (RA0).

Requisitos

El pulsador “I” E4 se conecta con RA0 e inicia la secuencia. Los pulsadores E6 y E7 simulan los sensores “b” y
“c” respectivamente y se conectan con las entradas RA2 y RA3. El pulsador E5 representa al final de carrera “a”
y se conecta con RA1. Por su parte el led S0 se conecta con RB0 y representa al cilindro “V” mientras que el led
S1 se conecta con RB1 y representa al motor “M”. El esquema de conexiones se resume en la figura 3-16.
AP17
AP18
1 E7 (c)
2 RA3 1
E6 (b)
3 RA2 2
E5 (a)
4 RA1 3
E4 (I)
5 RA0 4
6 S1 (M) 5
7 RB1 6 Figura 3-16. Conexiones del ejemplo 4
S0 (V)
8 RB0 7
8
SALIDAS DIGITALES
ENTRADAS DIGITALES

Comentarios

Programa contenido en el fichero Ejem_4.asm y que consiste en un conjunto de instrucciones que siguen
fielmente la secuencia de funcionamiento de la máquina simulada. Se recuerda por otra parte que los pulsadores
empleados en la simulación son activos por nivel ”0” cada vez que se accionan.

3-14
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3.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 según la siguiente secuencia:

1º Al accionar el pulsador "I" (RA0) el cabezal realiza un descenso rápido de aproximación, activando el
motor de bajada rápida "BR"(RB3).
2º Al llegar al sensor "b" (RA2), se activa el relé "M" (RB1) que hace girar el motor de la broca y se realiza un
descenso lento para el taladrado de la pieza "BL" (RB4).
3º Cuando se activa el sensor "c" (RA3) se considera que la pieza está taladrada. Se inicia una subida rápida
del cabezal "SR" (RB0) al tiempo que el relé "M" (RB1) de giro sigue activado.
4º Cuando se alcanza el final de carrera "a" (RA1), se detiene la subida rápida "SR"(RB0), el relé de giro "M"
(RB1) y se activa una señal acústica "A" (RB2) de aviso. El ciclo comienza con una nueva pulsación de "I"
(RA0).

Requisitos

El pulsador de entrada E4 “I” se conecta con RA0 e inicia la secuencia. Los pulsadores E6 y E7 simulan los
sensores “b” y “c” y se conectan con las señales RA2 y RA3 respectivamente. El final de carrera “a” se simula
con el pulsador E5 y se conecta con la entrada RA1. Los leds de salida S0-S4 se conectan con las líneas RB0-
RB4. Respectivamente simulan las señales que controlan la subida rápida del cabezal (SR), el motor (M), la
señal de aviso (A), la bajada rápida del cabezal (BR) y la bajada lenta (BL). Seguir el esquema de conexiones de
la figura 3-17.
AP17 AP18
E7 (c)
1 RA3 1
E6 (b)
2 RA2 2
E5 (a)
3 RA1 3
S4 (BL) E4 (I)
4 RB4 RA0 4
S3 (BR)
5 RB3 5
S2 (A)
6 RB2 6
S1 (M)
7 RB1 7
S0 (SR)
8 RB0 8

Figura 3-17. Conexiones del ejemplo 5 SALIDAS DIGITALES ENTRADAS DIGITALES

Comentarios

Este ejemplo está contenido en el archivo Ejem_5.asm y, al igual que el anterior, consiste en un conjunto de
instrucciones que siguen fielmente la secuencia de funcionamiento de la máquina simulada. Se recuerda por otra
parte que los pulsadores empleados en la simulación son activos por nivel ”0” cada vez que se accionan.

3.3.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 un embase se llena con 10 piezas, se retira y se
reemplaza por otro en su lugar. La secuencia de funcionamiento es la siguiente:

1º Dos relés "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1"
(RB0) transporta piezas y "M2" (RB1) embalajes.
2º Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de
un envase.
3º Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una señal acústica "A" (RB2) y,
la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vacío.
4º En este momento se desactiva la señal acústica "A" (RB2) y nuevamente avanza la cinta de piezas
repitiéndose así el ciclo.
5º Un interruptor "I" (RA0) activa o no a todo el sistema.

3-15
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Requisitos

Mediante el interruptor E0 (I) conectado a RA0 se inicia el funcionamiento de la máquina. El interruptor E1 (DE)
se conecta a la línea RA1 y simula el detector de embalaje posicionado. El pulsador E4 (DP) simula el detector
de paso de piezas. Se conecta a RA2. Por su parte los leds S0-S2 se conectan con las líneas RB0-RB2 que
respectivamente simulan las salidas de avance de piezas (M1), avance de embalaje (M2) y señal acústica (A).
Todo ello queda reflejado en el esquema de conexiones mostrado en la figura 3-18.

AP17 AP18

1 1
2 2
3 3
Figura 3-18. Esquema del ejemplo 6
E4 (DP)
4 RA1 4
5 S2 (A) 5
6 RB2 6
S1 (M2) E1 (DE)
7 RB1 RA2 7
S0 (M1) E0 (I)
8 RB0 RA0 8

SALIDAS DIGITALES ENTRADAS DIGITALES

Comentarios

Este ejemplo trata de mostrar el empleo de variables sobre la memoria RAM del microcontrolador y también la
forma de contar pulsos en ciertas señales de entrada. El pulsador E4 es el encargado de simular el paso de
piezas y genera un pulso con transición 1-0-1 en cada una.

3.3.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 un embase se llena con 10 piezas, se retira y se
reemplaza por otro en su lugar. La secuencia de funcionamiento es la siguiente:

1º Dos relés "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1"
(RB0) transporta piezas y "M2" (RB1) embalajes.
2º Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de
un envase.
3º Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una señal acústica "A" (RB2) y,
la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vacío.
4º En este momento se desactiva la señal acústica "A" (RB2) y nuevamente avanza la cinta de piezas
repitiéndose así el ciclo.
5º Un interruptor "I" (RA0) activa o no a todo el sistema.

Requisitos

Mediante el interruptor E0 (I) conectado a RA0 se inicia el funcionamiento de la máquina. El interruptor E1 (DE)
se conecta a la línea RA1 y simula el detector de embalaje posicionado. El pulsador E4 (DP) simula el detector
de paso de piezas. Se conecta a RA2. Por su parte los leds S0-S2 se conectan con las líneas RB0-RB2 que
respectivamente simulan las salidas de avance de piezas (M1), avance de embalaje (M2) y señal acústica (A).
Todo ello queda reflejado en el esquema de conexiones mostrado en la figura 3-19.

AP17 AP18

1 1
2 2
3 E4 (DP) 3
4 RA1 4
5 S2 (A) 5
6 RB2 6
7
S1 (M2)
RB1 RA2
E1 (DE)
7
Figura 3-19. Esquema del ejemplo 6
S0 (M1) E0 (I)
8 RB0 RA0 8

SALIDAS DIGITALES ENTRADAS DIGITALES

3-16
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
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 diseñado, sino que el pulsador que simula el paso de piezas provoca un desagradable
efecto rebote. Un accionamiento del pulsador puede suponer generar varias señales que, por supuesto son
detectadas por el PIC. Estos rebotes se producen en todos los dispositivos electromecánicos. Es posible que
este efecto se haya notado también en el interruptor que detecta el posicionamiento de embalajes.

Para evitarlo se intercala una temporización al detectar un cambio de estado o accionamiento. De esta forma
esperamos que las láminas metálicas de los contactos se estabilicen.

En el ejemplo se hace uso de una rutina de temporización de propósito general. Esta produce un tiempo de
espera de 10mS. Se emplea por 1ª vez el TMR0 en el modo temporizador y asociado al preescaler de 256. Si el
microcontrolador trabaja a una velocidad de 4MHz, el ciclo máquina es de 1µS. Con un preesacler de 256 el
TMR0 evoluciona cada evento de 256 µS (256 * 1). La temporización termina cuando el TMR0 cuenta 39
eventos de 256µS (256 * 39 = 10000µS = 10mS).

3.3.8 Ejemplo 8: Juego de luces

Enunciado

Se va a realizar un juego de luces con unos leds conectados a las líneas de la Puerta B. Se iluminarán de forma
secuencial de izda. a dcha. y viceversa en función del valor de la entrada RA0. El intervalo en que cada led
permanece encendido es de 0.25s (250 mS)

Requisitos

Conectar los leds S0-S7 a las líneas RB0-RB7 de salida. El interruptor E0 se conecta con la entrada RA0. Todo
ello se muestra en la figura 3-20.

AP17 AP18
S7
1 RB7 1
S6
2 RB6 2
S5
3 RB5 3
S4
4 RB4 4
S3
5 RB3 5
S2
Figura 3-20. Conexiones del ejemplo 8 6 RB2 6
S1
7 RB1 7
S0 E0
8 RB0 RA0 8

SALIDAS DIGITALES ENTRADAS DIGITALES


Comentarios

Se emplea una rutina de temporización basada en los mismos principios que la empleada en el ejemplo anterior.
Sin embargo la máxima temporización que el TMR0 de un PIC trabajando a 4MHz y con un preescaler de 256 es
de unos 65mS (256 * 256 *1). Este valor es bastante inferior al que se desea (250mS). Por ello se opta por
mantener al TMR0 haciendo una temporización de 10mS que se repetirá 25 veces para conseguir el total
deseado (25 * 10mS = 250mS = 0.25s).

3.3.9 Ejemplo 9: La interrupción del TMR0

Enunciado

Se pretende demostrar el funcionamiento de la interrupción provocada por el rebasamiento del TMR0. El


programa lee constantemente el estado de dos entradas y lo visualiza sobre sendas salidas. Al mismo tiempo el
un led de salida genera una intermitencia constante de 0.5 seg.

3-17
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Requisitos
AP17 AP18
A la vista del esquema de la figura 3-21 S7
RB7
conectar los interruptores E0 y E1 con las 1
2
1
2
líneas de entrada RA0 y RA1. Los leds S0- 3 3
4 4
S1 se conectan con las señales RB0 y RB1 5 5
y visualizarán de forma constante el estado 6 S1 E1 6
7 RB1 RA1 7
de esas entradas. El led S7 se conecta a la 8
S0
RB0 RA0
E0
8
salida RB7 y estará constantemente
parpadeando cada 0.5 s. SALIDAS DIGITALES ENTRADAS DIGITALES

Figura 3-21. Esquema para el ejemplo 9

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 salta a la dirección del vector de interrupción (0x0004) y, desde aquí, se ejecuta el
programa de tratamiento correspondiente. En este caso dicho programa consiste en determinar si han
transcurrido 50 interrupciones (tiempo total 0.5s.) para hacer que RB7 cambie de estado. No obstante las
entradas RA0 y RA1 no dejan en ningún momento de ser reflejadas sobre las salidas RB0 y RB1.

3.3.10 Ejemplo 10: La interrupción externa RB0/INT y el modo sleep

Enunciado

El programa activa las salidas RB1-RB7 durante 1 segundo. Cada vez que se produzca la interrupción externa
RB0/INT.

Requisitos

AP17 AP18 Los leds de salida S1-S7 se conectan con las líneas
1
S7
RB7 1 RB1-RB7. La línea RB0 se conecta con el pulsador
S6
2 S5
RB6 2 entrada E4. Ver el esquema de la figura 3-22.
3 RB5 3
S4 E4
4 RB4 RB0 4
S3
5 RB3 5
S2
6 RB2 6
S1
7 RB1 7
8 8 Figura 3-22. Esquema del ejemplo 10
SALIDAS DIGITALES ENTRADAS DIGITALES

Comentarios

Cada vez que se acciona el pulsador E4 se provoca una interrupción externa por flanco descendente en la patilla
RB0/INT configurada como entrada. El programa de tratamiento ilumina los leds de salida durante 1 seg. 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 que sólo “despierta” cundo se produzca la mencionada
interrupción.

3.3.11 Ejemplo 11: El display de 7 segmentos

Enunciado

El programa presenta sobre un display de 7 nsegmentos el estado lógico presente en la entrada RA0,
visualizando “1” o “0” según corresponda. Con la entrada RA1 se activa o no el punto decimal del display.

Requisitos

3-18
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

Para realizar este ejemplo es necesario disponer de un display de 7 segmentos y un conjunto o pack de 8
resistencias absorción de 330Ω. El display empleado es del tipo cátodo común y modelo SC43-11HWA. Las
líneas RB0-RB7 actúan como salidas y se conectan a las resistencias de absorción. Estas a su vez se conectan
con los segmentos del display según el esquema de la figura 3-23.
AP18
1 1 16
a RB0 1
13 2 15
b RB1 2
10 3 14
c RB2 3
8 4 13
d RB3 4
7 5 12
e RB4 5
2 6 11
f RB5 6
g 11 7 10 E1
RB6 RA1 7
Figura 3-23. Esquema de dp 9 8 9
RB7 RA0
E0
8
montaje del ejemplo 11 14
cc
8 x 330 ENTRADAS DIGITALES
SC43-11HWA

Los interruptores E0 y E1 se conectan con las


señales RA0-RA1 respectivamente, que
serán configuradas como entradas. Todo el
montaje se realiza sobre el módulo board
para el montaje sin soldaduras que dispone el
laboratorio PIC’School, tal y como se aprecia
en la fotografía de la figura 3-24. En
Ingeniería de Microsistemas Programados
pensamos que tan importante como el
desarrollo del software es el desarrollo del
hardware. Este ejemplo y en otros nos brinda
esta oportunidad.

Figura 3-24. Montaje práctico del ejemplo 11

Comentarios

El ejemplo es una simple muestra de cómo visualiza dos números (0 y 1) sobre un display de 7 segmentos
montado en el área de montaje sin soldaduras que dispone el laboratorio PIC’School. Sobre la puerta B de salida
se saca el código de 7 segmentos del dígito a visualiza.

3.3.12 Ejemplo 12: Decodificador BC-7 segmentos

Enunciado

Mediante 4 señales de entrada se introduce el código BCD (desde 0 hasta F) del dígito a visualizar sobre el
display de 7 segmentos.

Requisitos

Mediante los interruptores de entrada E0-E3 conectados a las líneas RA0-RA3 se aplica el código BCD del dígito
a visualizar. Las líneas RB0-RB7 se conectan con las resistencias de absorción y estas a su vez se conectan con
los segmentos del display. Todo ello se muestra en el esquema de la figura 3-25 que es muy similar al del
ejemplo anterior.

3-19
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

AP18
1 1 16
a RB0 1
13 2 15
b RB1 2
10 3 14
c RB2 3
8 4 13
d RB3 4
7 5 12 E3
e RB4 RA3 5
2 6 11 E2
f RB5 RA2 6
g 11 7 10 E1
RB6 RA1 7
Figura 3-25. Esquema del dp 9 8 9
RB7 RA0
E0
8
ejemplo 12 14
cc
8 x 330 ENTRADAS DIGITALES
SC43-11HWA

Comentarios

Este ejemplo pretende introducirnos al manejo de tablas con datos constantes. Efectivamente, la tabla contiene
los 16 códigos de 7 segmentos de otros tantos dígitos a visualizar. Mediante la suma del PC con un
desplazamiento, se selecciona cualquiera de los elementos de esa tabla, en este ejemplo el del código 7
segmentos.

3.3.13 Contador decimal UP/DOWN

Enunciado

Se trata de realizar un contador ascendente/descendente (UP/DOWN). Los pulsos a contar se aplican por RA0 y
deben estar libres del efecto rebote. Medianta la entrada RA1 se selecciona si la cuenta es ascendente o
descendente.

Requisitos

AP18 El pulsador E4 se conecta con la


a 1 1 16
RB0 1 línea RA0 y el interruptor E0 con la
13 2 15
b
10 3 14
RB1 2 línea RA1. Las líneas RB0-RB7 se
c RB2 3
d 8 4 13
RB3 RA0
E4
4 conectan con las resistencias de
7 5 12
e
2 6 11
RB4 5 absorción y estas a su vez se
f RB5 6
g 11 7 10
RB6 7 conectan con los segmentos del
9 8 9 E0
dp RB7 RA1 8 display. Todo ello se muestra en el
cc 14
8 x 330 ENTRADAS DIGITALES
esquema de la figura 3-26 que es
SC43-11HWA bastante similar al de ejemplos
anteriores.
Figura 3-26. Esquema del ejemplo 13

Comentarios

Este ejemplo es una aplicación práctica que consiste en realizar una década contadora. La cuenta es en decimal
de 0 a 9 y puede ser ascendente o descendente.

3.3.14 Ejemplo 14: El TMR0 como contador de pulsos externos

Enunciado

Procedente del generador lógico del entrenador se aplican pulsos por RA4/T0CKI para que el TMR0 los vaya
contando y visualizando sobre el display. Cuando lleguen 6 pulsos el display activa todos sus segmentos durante
1 seg. luego se apagan y el sistema queda detenido hasta provocar un RESET manualmente mediante el
pulsador. Comienza un nuevo ciclo.

Requisitos

3-20
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

1 1 16 La salida del generador se conecta


a RB0
b 13 2 15
RB1
AP8 con la línea RA4/T0CKI. Las líneas
10 3 14
c
8 4 13
RB2 1 RB0-RB7 se conectan con las
d RB3 2
e 7 5 12
RB4
RA4/T0CKI
3 resistencias de absorción y estas a
2 6 11
f
g 11 7 10
RB5 4 su vez se conectan con los
RB6
dp 9 8 9
RB7 segmentos del display. Todo ello
FREQ. OUT
cc 14 se muestra en el esquema de la
8 x 330 figura 3-27 que es bastante similar
SC43-11HWA
al de ejemplos anteriores.

Figura 3-27. Conexiones del ejemplo 14

Comentarios

En este ejemplo se demuestra que el TMR0 puede actuar como contador de eventos o pulsos externos que se
introducen por la línea RA4/T0CKI y, si procede, provocar interrupción al finalizar la cuenta. También muestra
cómo se puede modificar dinámicamente el registro OPTION para hacer que el TMR0 actúe como contador o
temporizador según se necesite y con el preescaler apropiado. Por último resaltar que cada vez que finaliza la
secuencia el microcontrolador queda en standby de bajo consumo gracias a la instrucción SLEEP. En este
ejemplo “despierta” al provocar un RESET manual.

La velocidad del contaje se puede variar modificando la frecuencia que suministra el generador lógico y que se
selecciona mediante el pulsador “Frec.Sel.” entre 1Hz y 1KHz.

3.3.15 Ejemplo 15: La memoria EEPRON 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 aplicado por RA0. En la
memoria EEPROM de datos del PIC se almacena el turno en curso de forma que, ante un fallo de alimentación,
se reanude la cuenta desde donde se quedó.

Requisitos

El pulsador E4 se conecta con la AP18


entrada RA0 y hace evolucionar al a 1 1 16
RB0 1
13 2 15
turno siguiente. Las líneas RB0- b
c 10 3 14
RB1
RB2
2
3
RB7 se conectan con las d 8
7
4
5
13
12
RB3 RA0
E4
4
resistencias de absorción y estas e RB4 5
2 6 11
f RB5 6
a su vez se conectan con los g 11 7 10
RB6 7
9 8 9
dp RB7
segmentos del display. Todo ello 8
14
se muestra en el esquema de la cc
8 x 330 ENTRADAS DIGITALES
figura 3-28 que es bastante similar SC43-11HWA
al de ejemplos anteriores.

Figura 3-28. Esquema del ejemplo 15

Comentarios

El ejemplo pretende ilustrar la forma de grabar y recuperar datos no volátiles sobre la memoria EEPROM de
datos del PIC. Las aplicaciones de este tipo de memoria son numerosas (códigos de acceso, agenda no volátil,
etc..)

3-21
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3.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 del laboratorio PIC’School, donde quedará
visualizado el mensaje “Hola”.

Requisitos
AP9
CONTROL Las líneas de la RB0-RB7 se conectan con las líneas de datos L0-L7 de la
1 pantalla. Las señales RA1, RA2 y RA3 se conectan con las señales RS,
RS
RA1
R/W 2 R/W y E respectivamente. Estas conexiones se muestran en el esquema de
RA2 3
RA3
E
4 la figura 3-29.
L0
RB0 1
L1
RB1 2
L2
RB2 3
L3
RB3 4
L4
RB4 5
L5
RB5 6
RB6
L6
7
Figura 3-29. Conexiones con la pantalla LCD
L7
RB7 8
AP20
DATOS

Comentarios

El programa hace uso de las rutinas para el


manejo de la pantalla LCD y están
contenidas en el archivo LCD_CXX.INC.
Dichas rutinas son de propósito general y se
pueden emplear en cualquier aplicación que
requiera el empleo de una pantalla. Se
pueden incluir en cualquier programa fuente
mediante el simple empleo de la directiva
INCLUDE. Es un buen método para incluir
rutinas de propósito general desde otros
ficheros sin tenerlas que escribir en cada
uno de los programas fuentes en que sean
necesarias. La imagen de la figura 3-30
muestra una fotografía del montaje
propuesto y que servirá para sucesivos
ejemplos.

Figura 3-30. Montaje del ejemplo 16

3.3.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
presente ejemplo se visualizan los mensajes “Hola” y “Adios”.

Requisitos

Los mismos que en el ejemplo anterior

3-22
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Comentarios

Mostrar una forma cómoda y versátil para visualiza cualquier tipo de mensaje de cualquier tamaño. Los
mensajes se definen en tablas como si de datos constantes se tratara. La instrucción RETW devuelve en cada
momento el carácter a visualizar. Todo mensaje finaliza con un código especial de fin de mensaje (0x00). Se ha
diseñado una rutina llamada “Mensaje” que lee y visualiza todos los caracteres que forman el mensaje hasta
llegar al carácter final (0x00). Antes de llamar a esta rutina en el programa principal, se debe indicar el inicio de
cada mensaje individual que se desea visualizar.

3.3.18 Ejemplo 18: Visualizando mas mensajes

Enunciado

Al igual que el ejemplo anterior, se trata de visualizar diferentes mensajes contenidos en tablas previamente
definidas por el usuario en el programa fuente

Requisitos

Los mismos que en el ejemplo anterior

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 forma de definir estas tablas. Efectivamente, mediante la directiva
DT del ensamblador es posible definir tablas de datos expresados en ASCII, cadenas de caracteres,
hexadecimal, etc. Durante el proceso de ensamblado se generan tantas instrucciones RETLW como datos haya.
Es una forma mucho mas cómoda y fácil de incluir en nuestros programas tablas de datos constantes.

3.3.19 Ejemplo 19: El teclado

Enunciado

Se trata de una primera toma de contacto con el manejo del teclado del laboratorio PIC’School. En el ejemplo se
trata de explorar el teclado y visualiza sobre los leds conectados a RB0-RB3 el código BCD de la tecla pulsada
durante 2 segundos.

Requisitos

RB7
Realizar las conexiones de la figura 3-31. Las líneas RB0-
RB6 RB3 se conectan con los leds S0-S3 y con las líneas C0-C3
RB5
RB4
del teclado (las columnas). Las líneas RB4-RB7 se conectan
RB3 con las líneas F0-F3 (las filas).
RB2
RB1
RB0
F3
F2
F1
F0
C3
C2
C1
C0

S3
S2
S1
S0
8
7
6
5
4
3
2
1

8
7
6
5
4
3
2
1

Figura 3-31. Conexión del telado para el ejemplo 18


AP21 TECLADO AP17 SALIDAS DIGITALES

Comentarios

Las rutinas para el manejo del teclado se encuentran en el archivo TECLADO.INC. Mediante la directiva
INCLUDE del ensamblador se deben incluir en los programas fuente del usuario que necesiten hacer uso de
ellas. Analizando dicho fichero se puede la puerta B se configura dinámicamente y al final queda como estaba
antes de llamar a la rutina Key_Scan.

3-23
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3.20 Ejemplo 20: El teclado y la pantalla LCD

Enunciado

Se trata de combinar el funcionamiento de estos dos periféricos. Sobre la pantalla LCD se visualiza la tecla
pulsada.

Requisitos

Realizar las conexiones mostradas en


RB7
la figura 3-32. Se puede observar que RB6
RA3
las líneas RB0-RB7 se emplean tanto RB5
RB4
para gestionar el teclado (C0-C3 y F0- RB3
RA2
F7) como para la transferencia de RB2
RA1
RB1
datos con la pantalla LCD (L0-L7). Las RB0

R/W
señales RA1, RA2 y RA3 se emplean

F3
F2
F1
F0
C3
C2
C1
C0

L7
L6
L5
L4
L3
L2
L1
L0

RS
como señales de control RS, R/W y E
de la pantalla. 8
7
6
5
4
3
2
1

8
7
6
5
4
3
2
1

4
3
2
1
Figura 3-32. Ejemplo 20 AP21 TECLADO AP20 DATOS LCD AP9 CONTROL LCD

Comentarios

El ejemplo trata de mostrar cómo 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. En la fotografía de la figura 3-33 se
muestra el montaje práctico y la ejecución del programa.

Figura 3-33. Montaje práctico del ejemplo 20

3.3.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

Los mismos que en el ejemplo anterior

Comentarios

El programa principal se mantiene detenido 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 correspondiente 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 en ejecución constante esoperando que se pulse una
tecla. En este ejemplo el PIC se mantiene en standby y sólo reacciona cuando tiene lugar una pulsación.

3-24
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3.22 Ejemplo 22: El TMR1 en modo temporizador, interrupción cada cierto tiempo

Enunciado

Se trata de que el TMR1 provoque una interrupción cada 0.1”. Un contador binario reflejado mediante leds
conectados a la puerta B, representa el número de interrupciones producidas.

Requisitos
AP17
S7
1 RB7 Conectar los leds S0-S7 a las líneas RB0-RB7 de la puerta B, tal y como se
S6
2 RB6
S5
3 S4
RB5 muestra en el esquema de la figura 3-34.
4 RB4
S3
5 RB3
S2
6 RB2
S1
7 RB1
S0
8 RB0
Figura 3-34. Conexiones del ejemplo 22.
SALIDAS DIGITALES

Comentarios

El ejemplo pretende introducirnos al manejo del TMR1. Se trata de un contador ascendente de 16 bits con un
preescaler de hasta 8. 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 en formato binario sobre los leds de salida.

3.3.23 Ejemplo 23: El TMR1 como contador de eventos externos

Enunciado

Mediante el generador de onda cuadrada del laboratorio PIC’School 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 AP9 AP8


CONTROL FREQ. OUT
Las líneas RB0-RB7 se conectan con las líneas RS 1 1
de datos L0-L7 del LCD. Las señales RS, R/W y RA1 2 2
R/W RC0/T1CKI
RA2 3 3
E se conectan con RA1-RA3 respectivamente. RA3
E
4 4
La salida del generador se conecta con la señal L0
RB0 1 1
RC0/T1CKI de entrada de pulso para el TMR1 y RB1
L1
2 2
L2
también con el led S0 que pilota dicha salida. RB2
L3 3 3
RB3 4 4
Ver el esquema de la figura 3-35. RB4
L4
5 5
L5
RB5 6 6
L6
RB6 7 7
L7 S0
RB7 8 8
Figura 3-35. Conexiones para el ejemplo 23
AP20
DATOS AP17 SALIDAS DIGITALES

Comentarios

Al igual que le TMR0, el TMR1 también puede contar pulsos con flanco ascendente de entrada que se aplican
por la patilla RC0/T1CKI. El generador que dispone el laboratorio PIC’Scholl se encarga de suministrar los pulsos
a contar. Se recomienda variar la frecuencia de dicho generador (entre 1Hz y 1KHz) para apreciar la variación
que se produce en el contaje y apreciar cómo las evoluciones del contador se realizan en el flanco ascendente
de la señal.

3-25
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3.24 Ejemplo 24: El TMR1 como divisor de frecuencia

Enunciado

El TMR1 cuenta el número de pulsos externos que le entran por RC0/T1CKI y que se establece en la variable
“Valor_N” del programa. Cuando finaliza la cuenta 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 externo dividida entre 2 * Valor_N.

Requisitos

AP8 AP17 Realizar las conexiones mostradas en la figura 3-36.


FREQ. OUT
1
La salida del generador se conecta con RC0/T1CKI y
1 2 la línea RB0 con el led de salida S0
RC0/T1CKI 2 3
3 4
4 5
6
7 S0
8 RB0 Figura 3-36. Conexiones del ejemplo 24
SALIDAS DIGITALES

Comentarios

Este sencillo ejemplo nos muestra la capacidad que tiene 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 de eventos externos, no necesita de la
frecuencia generel del reloj del sistema y, puede provocar interrupción, al llegar a 0. Se sugiere modificar el
programa modificando el valor de la variable Valor_N con objeto de obtener otras divisiones de frecuencia así
como variar la frecuencia de entrada procedente del generador, entre 1Hz y 1 KHz.

3.3.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 contador de eventos externos. La frecuencia obtenida se visualiza sobre la pantalla LCD.

Requisitos
AP9
CONTROL
Conectar la pantalla LCD como se muestra en el 1
RS
esquema de la figura 3-37, como se venido RA1
R/W 2 AP8
RA2 3
realizando hasta ahora. La salida del generador RA3
E
4
FREQ. OUT
lógico se conecta con la señal RC0/T1CKI. L0 1
RB0 1 2
L1 RC0/T1CKI
RB1 2 3
L2
RB2 3 4
L3
RB3 4
L4
RB4 5
L5
Figura 3-37. Montaje del frecuencímetro RB5 6
L6
RB6 7
L7
RB7 8
AP20
DATOS

Comentarios

Este es un buen ejemplo de trabajo conjunto entre el TMR0 y el TMR1. El TMR1 se configura para trabajar como
contador de pulsos externos. Por su parte el TMR0 provoca una interrupción cada 10mS. Cuando se han
producido 100 interrupciones habrá transcurrido 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 (Hz) de la señal de entrada y se visualiza en el LCD. Posteriormente se
inicia una nueva medida.

3-26
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3.3.26 Ejemplo 26: El TMR2, interrupción periódica

Enunciado

Mediante el empleo del TMR2 se trata de hacer un segundero que se visualiza en binario sobre unos leds
conectados a la puerta B.

Requisitos

AP17 Realizar las conexiones mostradas en el esquema de la figura 3-38.


1
S7
RB7 Simplemente se conectan los leds S0-S7 con las líneas RB0-RB7.
S6
2 RB6
S5
3 RB5
S4
4 RB4
S3
5 RB3
S2
6 RB2
S1
7 RB1
S0
8 RB0 Figura 3-38. Conexiones del ejemplo 26
SALIDAS DIGITALES

Comentarios

Se pretende mostrar el empleo del TMR2. Para ello se provoca una interrupción fija cada 10mS que se repite
100 veces para obtener el tiempo total deseado (1 seg.) 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 la tanto la temporización a realizar en cada caso.

3.3.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
conectados a RA0-RA5. Para ello se emplea el TMR2 modificando dinámicamente su registro de periodos.

Requisitos
AP17 AP18
Tal y como se muestra en el esquema de la figura 3-
39 los cuatro interruptores E0-E3 y los dos 1 1
2 2
pulsadores E4 y E5 se conectan con las líneas de 3 RA5
E5
E4 3
entrada RA0-RA5. Pos su parte la señal RB0 actúa 4 RA4 4
E3
5 RA3 5
como salida y se conecta con el led E0. E2
6 RA2 6
E1
7 RA1 7
S0 E0
8 RB0 RA0 8
Figura 3-39. Conexiones del ejemplo 27
SALIDAS DIGITALES ENTRADAS DIGITALES

Comentarios

El programa lee el valor binario que introducen los interruptores E0-E3 y los pulsadores E4 y E5, lo multiplica por
4 y lo almacena en el registro de periodos. De esta forma se consigue variar la temporización. El TMR2
evoluciona hasta alcanzar el valor del registro de periodos, momento en que pasa a 0 y se 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 (1 µS * (valor RA0-RA5 *4) * Valor del Preescaler * Valor del Postcaler *10)

3.3.28 Ejemplo 28: Capturas con el módulo CCP, midiendo periodos

Enunciado

Se trata de experimentar con el modulo 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.

3-27
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Requisitos

AP9
La pantalla LCD se conecta como se ha venido
CONTROL haciendo hasta ahora. Las líneas de datos L0-L7 se
RS 1 conectan con RB0-RB7. Las líneas de control RS,
RA1 2
RA2
R/W
3 R/W y E se conectan con RA1, RA2 y RA3. Por otra
E AP8
RA3 4 FREQ. OUT parte la señal que proporciona el generador del
RB0
L0
1 1 laboratorio se conecta con la entrada RC2/CCP1.
L1
RB1
L2 2 RC0/T1CKI 2 Todo ello se muestra en el esquema de la figura 3-40.
RB2 3 3
L3
RB3 4 4
L4
RB4 5
L5
RB5 6
L6
RB6 7
L7
RB7 8 Figura 3-40. El ejemplo 28
AP20
DATOS

Comentarios

En este ejemplo se 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 el TMR1 entre dos flancos ascendentes
de la señal de entrada y que suministra el generador del laboratorio PIC’School. Ese valor capturado representa
el periodo de la señal. Trabajando a 4MHz y con un preescaler de 1:8, el TMR1 evoluciona cada 8µS. El valor
mínimo que puede adquirir el TMR1 es de 1 lo que supone un periodo de 8µS y una frecuencia de 125Kz. El
valor máximo que puede adquirir el TMR1 es de 65535, lo que supone un periodo de 0.524 seg. y una frecuencia
de 2Hz. La lectura que se visualiza sobre el LCD representa el contaje realizado por el TMR1 entre un flanco
ascendente y el siguiente. Esta lectura se debe multiplicar por 8 µS (cada evolución del TMR1) para obtener el
periodo final.

3.3.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 el descendente de la señal de entrada que
suministra el generador del laboratorio. Con ello se obtiene la duración del pulso de esa señal de entrada.

Requisitos

Los mismos que en el ejemplo anterior.

Comentarios

El ejemplo es similar al anterior. Se trata de conocer la evolución del TMR1 entre un flanco ascendente y otro
descendente. Si conocemos que el TMR1 evoluciona cada 8 µS trabajando a una velocidad de 4MHz con un
preescaler de 1:8, multiplicamos este valor por el valor actual del TMR1 y que aparece en el LCD. Se obtiene así
la duración de la anchura del pulso.

3.3.30 Ejemplo 30: Capturas con el módulo CCP1, midiendo el tiempo entre un pulso y el siguiente

Enunciado

Se trata de medir el tiempo que transcurre entre un pulso y el siguiente en la señal de entrada aplicada por
RC2/CCP1.

Requisitos

Los mismos que en los ejemplos anteriores

3-28
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Comentarios

Este es el ú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 de tiempo entre dos pulsos. Se recuerda que el TMR1 evoluciona cada 8 µS, por lo que la lectura
indicada por el LCD debe multiplicarse por dicho valor.

3.3.31 Ejemplo 31: Comparación con el módulo CCP1, contador de eventos ajustable

Enunciado

El TMR1 cuenta tantos pulsos externos como indique el valor que se introduce desde los interruptores
conectados en RA0-RA5, Cuando se alcanza el valor fijado la salida RB0 cambia de estado.

Requisitos
AP8
FREQ. OUT Conectar las entradas E0-E5 con las líneas
1 RA0-RA5, la salida del generador del laboratorio
RC0/T1CKI 2 con la entrada RC0/T1CKI y la línea RB0 con la
3
AP17 4 AP18
salida E0. Todo ello se muestra en el esquema
de la figura 3-41.
1 1
2 E5 2
3 RA5 3
E4
4 RA4 4
E3
5 RA3 5
E2
6 RA2 6
E1
7 RA1 7
S0 E0
8 RB0 RA0 8
Figura 3-41. Conexiones del ejemplo 31
SALIDAS DIGITALES ENTRADAS DIGITALES

Comentarios

El modo de comparación de un módulo CCP consiste en dejar que el TMR1 evolucione hasta llegar al valor
prefijado en los registros CCPR1H y CCPR1L. En el presente ejemplo estos registros se cargar con el valor
binario que se introducen mediante las entradas E0-E5. Cuando el TMR1 alcanza ese valor se provoca una
interrupción cuyo tratamiento reinicia del al TMR1 y hace cambiar el estado lógico de la salida S0 conectado a
RB0. El TMR1 actúa como contador de eventos externos sensibles al flanco ascendente de la señal que
suministra el generador lógico del laboratorio PIC’School. La salida del generador también se puede conectar a
uno de los leds de salida para poder apreciar las transiciones de la señal. Se recomienda seleccionar una baja
frecuencia.

3.3.32 Ejemplo 32: Modulación de anchura de pulsos (PWM) mediante el módulo CCP1

Enunciado

Obtener por la salida RC2/CCP1 una señal modulada en anchura. El periodo de esta señal se determina
mediante la constante periodo y la anchura del pulso o “Duty Cycle” mediante la constante “Duty”.

Requisitos

La salida del módulo CCP1 se realiza por la línea RC2/CCP1 y por ella se obtiene la señal modulada en anchura.
Se recomienda emplear un osciloscopio para poderla visualizar.

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. Se emplea el TMR2 y su registro de periodos PR2 así como el registro CCP1RL en caso de
emplear el módulo CCP1. Cuando el TMR2 alcanza el valor de PR2 (periodo de la señal), la salida RC2/CCP1
cambia de estado y pasa a nivel “1”. El TMR2 inicia una nueva cuenta. Cuando se alcanza el valor fijado en el

3-29
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
registro CCPR1L (anchura del pulso) la salida RC2/CCP1 vuelve a cambiar de estado pasando ahora a nivel “0”
El TMR2 se inicia nuevamente y el ciclo se repite. Variando los valores de 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 4MHz evoluciona cada 1µS.
Conocido este dato es fácil determinar el valor que hay que cargar en PR2 y CCPR1L para obtener el periodo y
la anchura.

Para comprobar el funcionamiento del presente ejemplo se recomienda el empleo de un osciloscopio que
visualice la señal presente en RC2/CCP1 y permita constatar los resultados. También hay que destacar que el
funcionamiento del módulo PWM es totalmente independientemente del programa en ejecución. Efectivamente,
una vez programado el módulo CCP1 y el TMR2, la señal de salida se obtiene de forma automática sin que el
programa de aplicación tenga que intevenir a no ser que sea para modificar los valores de PR2 y/o de CCPR1L.

3.3.33 Ejemplo 33: PWM mediante el módulo CCP1, variando la anchura

Enunciado

Se trata de un ejemplo similar al anterior. La diferencia consiste en que la anchura del pulso se modifica
dinámicamente en función del valor binario que se introduce por RA0-RA5.

Requisitos
AP18
Los interruptores E0-E5 se conectan con las señales RA0-RA5 de entrada,
1 tal y como se muestra en el esquema de la figura 3-42.
E5 2
RA5 3
E4
RA4 4
E3
RA3 5
E2
RA2 6
E1
RA1 7
E0
RA0 8
Figura 3-42. Esquema de montaje para el ejemplo 33
ENTRADAS DIGITALES

Comentarios

El ejemplo nos muestra la posibilidad de variar la anchura del pulso de salida de acuerdo a parámetros externos
como puede ser el valor binario que se introduce por las líneas RA0-RA5, conectadas a sendos
interruptores/pulsadores. A una frecuencia de 4MHz y con un preescaler de 1:16, el TMR2 evolucionada cada 16
µS. El registro de periodos PR2 se carga con el valor 200 por lo que el periodo de la señal de salida es de
3200µS (200 * 16). El registro CCPR1L se carga con el valor binario procedente de las entradas RA0-RA5 y
puede oscilar entre 0 y 63. De esta manera la anchura del pulso oscila entre 0 y 512µS (64 * 16). Se recomienda
emplear un osciloscopio conectado a la salida RC2/CCP1 para comprobar el correcto funcionamiento de la
aplicación. También se recuerda que los pulsadores E4 y E5 conectados en RA4 y RA5, cuando están en reposo
proporcionan nivel lógico “1”. Tenerlo en cuenta a la hora de introducir el valor binario de entrada.

3.3.34 Ejemplo 34: El convertidor ADC

Enunciado

Se trata de obtener 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.

3-30
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Requisitos

Se conecta la pantalla LCD como se P1 P2


ha venido haciendo en ejemplos AP9 10K 10K
CONTROL 3 1 3 1
anteriores, es decir, las señales
1
RB0-RB7 se conectan con las líneas RA1
RS
2
R/W
de datos L0-L7 y las señales RA1-

2
RA2 3
E
RA3 4
RA3 se conectan con las líneas de R7 R8
L0 470 470
control RS, R/W y E RB0
L1 1
RB1 2
respectivamente. Por su parte el RB2
L2
3
L3
cursor del potenciómetro P1 se RB3
L4 4
RB4 5
conecta con la línea RA0 y los RB5
L5
L6 6
extremos de dicho potenciómetro se RB6
RB7
L7 7 ENTRADAS ANALOGICAS
8
conectan con GND y +5Vcc. Todo AP20 AP16

1
2
3
4
5
6
7
8
ello se muestra en el esquema de DATOS
conexiones de la figura 3-43.
+5Vcc
RA0

Figura 3-43. Conexiones para el ejemplo 34

Comentarios

En este ejemplo se pretende introducir al manejo del módulo conversor ADC que integran algunos dispositivos
PIC. En el caso del PIC16F876A se trata de un conversor de 10 bits. Trabajando con una tensión de referencia
de +5Vcc, se dispone de una resolución de 4.8mV/Bit. El resultado binario de la conversión se visualiza sobre la
pantalla LCD. Moviendo el potenciómetro P1 se aprecian claramente las variaciones en la medida visualizada en
la pantalla.

3.3.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 sobre la línea
RC2/CCP1, en función de la señal analógica introducida por RA0/AN0 previa conversión.

Requisitos

Conectar el potenciómetro P1 del laboratorio PIC’School tal y como se hizo el ejemplo anterior.

Comentarios

En este ejemplo se muestra el empleo combinado del convertidor ACD con el módulo CCP1 en el modo PWM. El
convertidor ADC obtiene un valor binario en función de una tensión analógica de entrada (potenciómetro). Este
valor se emplea para ajustar el registro CCPR1L y regular así la anchura del pulso de la señal de salida. Con un
osciloscopio conectado en la línea RC2/CCP1 se puede apreciar claramente la variación de la anchura del pulso
según se varía la posición del eje del potenciómetro.

3.3.36 Ejemplo 36: El USART, Transmitiendo caracteres

Enunciado

Emplear el módulo USAR disponible en algunos dispositivos PIC, para transmitir el carácter “A” a intervalos
regulares de 1 segundo.

3-31
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Requisitos

Conectar la línea RC6/Tx con la señal TxD y la línea RC7/Rx con la señal RxD. 1
2
Ambas señales se encuentran en el conector AP5 de la sección de Interfase RS- RC7
RxD
3
TxD
232 del laboratorio PIC’School. Ver la figura 3-44. RC6 4

AP5 CANAL SERIE


Figura 3-44. Ejemplo 36

Comentarios

Este ejemplo muestra lo sencillo que resulta realizar la transmisión serie de cualquier carácter o byte. Emplea el
USART que integran los PIC de la serie 16F87X entre otros. La recepción se puede realizar sobre un PC dotado
de un software estándar de comunicaciones como puede ser el “Hyper Terminal” que viene incorporado en todas
las versiones de Windows. Hay que configurarlo para realizar una comunicación a 9600 baudios, 8 bits por
carácter y sin paridad. Se puede emplear un cable serie DB9 macho-hembra pin a pin que se conecta entre el
conector de interfase RS-232 del laboratorio y el canal libre del PC.

3.3.37 Ejemplo 37: EL USART, recepción/transmisión de caracteres

Enunciado

En este ejemplo se realiza transmisión y recepción mediante el USAR. El programa espera que se reciba un
carácter o byte. Este se visualiza en binario sobre unos leds conectados a las líneas RB0-RB7. Acto seguido el
mismo carácter recibido se retransmite a modo de eco.

Requisitos

AP17
Conectar las líneas RC6/Tx con la señal TxD y la
S7 línea RC7/Rx con la señal RxD del laboratorio.
1 RB7
2
S6
RB6 1 Igualmente se conectan los leds de salida S0-S7 con
S5
3 S4
RB5
RxD 2 las líneas RB0-RB7 tal y como se muestra en la figura
4 RB4 RC7 3
5
S3
RB3 RC6
TxD
4 3-45.
S2
6 RB2
S1
7 RB1
S0 AP5 CANAL SERIE
8 RB0
Figura 3-45. Conexiones para el ejemplo 37
SALIDAS DIGITALES

Comentarios

En este ejemplo se propone el empleo de una interrupción que se provoca cada vez que se recibe un byte. El
programa de tratamiento lo visualiza sobre los leds de salida y lo retransmite. Tanto la transmisión como la
recepción se puede realizar sobre un PC dotado de un software estándar de comunicaciones como puede ser el
“Hyper Terminal” que viene incorporado en todas las versiones de Windows. Hay que configurarlo para realizar
una comunicación a 9600 baudios, 8 bits por carácter y sin paridad. Se puede emplear un cable serie DB9
macho-hembra pin a pin que se conecta entre el conector de interfase RS-232 del laboratorio y el canal libre del
PC.

3.3.38 Ejemplo 38: Transmitiendo mensaje con el USART

Enunciado

Transmitir una serie de mensajes formados por varios caracteres a través del USART.

Requisitos

Se realizan las mismas conexiones que las empleadas en el ejemplo 36. La línea RC6/Tx se conecta con la
señal TxD y la línea RC7/Rx con la señal RxD. Ambas señales se encuentran en el conector AP5 de la sección
de Interfase RS-232 del laboratorio PIC’School.

3-32
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
Comentarios

Este ejemplo se puede considerar similar al ejemplo 18. Consiste en transmitir una serie de cadenas de
caracteres a través del USART. La recepción se puede realizar sobre un PC dotado de un software estándar de
comunicaciones como puede ser el “Hyper Terminal” que viene incorporado en todas las versiones de Windows.
Hay que configurarlo para realizar una comunicación a 9600 baudios, 8 bits por carácter y sin paridad. Se puede
emplear un cable serie DB9 macho-hembra pin a pin que se conecta entre el conector de interfase RS-232 del
laboratorio y el canal libre del PC.

3.3.39 Ejemplo 3-39: Ejemplo 39: Adivina el número

Enunciado

Se trata de un ejemplo de entretenimiento en el que se manejan el teclado y la pantalla LCD. Consisten en


adivinar un número comprendido entre 00 y 99 y dispone de una serie de intentos para hacerlo

Requisitos

Se realizan las conexiones mostradas en el esquema de la figura 3-46 y que ya se ha empleado en otras
ocasiones.

RB7
RB6
RA3
RB5
RB4
RA2
RB3
RB2
RA1
RB1
RB0
R/W
F3
F2
F1
F0
C3
C2
C1
C0

L7
L6
L5
L4
L3
L2
L1
L0

RS

Figura 3-46. Conexionado para


el ejemplo 39
8
7
6
5
4
3
2
1

8
7
6
5
4
3
2
1

4
3
2
1

AP21 TECLADO AP20 DATOS LCD AP9 CONTROL LCD

Comentarios

Es un simple ejemplo de divertimento en el que se conjuga el manejo de la pantalla LCD y el teclado. Se


emplean una serie de rutinas de propósito general que pueden ser empleadas en múltiples ocasiones.

3-33
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial

3-34
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD

ANEXO 1: El módulo LCD


AN1.1 INTRODUCCIÓN

El presente anexo está destinado a realizar una breve descripción del funcionamiento del módulo LCD
incluido en el laboratorio PIC’School. Se trata de un módulo compatible con el controlador HD44780 capaz de
representar 2 líneas de 16 caracteres cada una. En las direcciones www.wintek.com.tw y en www.powertip.com.tw
se puede localizar la información técnica que proporcionan estos fabricantes.

A través de 4 u 8 líneas de datos se le envía el carácter ASCII que se desea visualizar así como ciertos
códigos de instrucción 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º SIMBOLO DESCRIPCION


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. También se puede emplear una resistencia para obtener un contraste fijo.
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’School

El interface entre este módulo LCD y el laboratorio se realiza mediante los bloques de conexiones
correspondientes: AP20 para las líneas de datos y AP9 para las líneas de control de flujo.

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 de la pantalla 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 una puerta bidereccional del PIC. 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-1
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD

AN1.3.1 CLEAR DISPLAY

Borra la pantalla 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.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-2
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD

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 interfase 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.

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 el modelo de pantalla
empleada por el laboratorio.

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
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD

AN1.3.9 READ BUSY FLAG & ADDRESS

Cuando el módulo LCD está realizando cualquiera de las anteriores instrucciones, se consume 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.

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-4
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD

AN1.3.12 ABREVIATURAS

Se listan a continuación las abreviaturas empleadas en los códigos anteriores y su significado:

ABREVIATURA VALOR DESCRIPCION


S 1 Desplaza la visualización cada vez que se escribe un carácter
0 Modo normal
I/D 1 Incremento del cursor
0 Decremento del cursor
S/C 1 Desplaza el display
0 Desplaza el cursor
R/L 1 Desplazamiento a la derecha
0 Desplazamiento a la izquierda
BF 1 Módulo LCD ocupado
0 Módulo LCD disponible
DL 1 Interfase con bus de datos de 8 bits
0 Interfase con bus de datos de 4 bits
N 1 Pantalla LCD de dos o mas líneas
0 Pantalla LCD de una línea
F 1 Tamaño de carácter de 5 x 10 puntos
0 Tamaño de carácter de 5 x 7 puntos
B 1 Parpadeo del cursor en ON
C 1 Cursor ON
D 1 Display ON
X Indeterminado

AN1-5
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD

AN1.4 JUEGO DE CARACTERES DEFINIDOS

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.

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.

AN1-6
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
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 AN-2.

La CG RAM es una memoria de 64 posiciones en total. Un carácter de 5 x 7 puntos necesita de 8 octetos en


la CG RAM para ser definido. Se admiten 8 caracteres en total. Un carácter de 5 x 10 puntos necesita un total de 16
posiciones aunque las 5 últimas no se empleen. Se admiten por tanto 4 caracteres de este tipo.

En el ejemplo de la figura AN1-2, para definir la “R” en 5 x 7 puntos 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.

También se muestra la generación del carácter “P” pero con un formato de 5 x 10 puntos.

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 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).

3.- DISPLAY ON/OFF CONTROL

AN1-7
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
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
pueden ir 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 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 a 4 MHz de velocidad como el que viene incorporado de serie en el
laboratorio PIC’School.

AN1-8
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
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 una determinada conexión entre las señales que controlan la
pantalla y el PIC, aunque pueden ser modificadas para otros casos. En los ejemplos propuestos se supone que las 8
líneas de la puerta B están conectadas con las líneas de datos del módulo LCD. La línea RA1 está conectada con la
señal RS, RA2 con R/W y la línea RA3 con la señal E.

#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


;direcció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 UP_LCD

Genera la secuencia de inicio de las líneas de E/S del PIC para su conexión con la pantalla

;*************************************************************************
;UP_LCD: Configuración PIC para el LCD.
;
UP_LCD bsf STATUS,RP0 ;Banco 1
clrf PORTB ;RB <0-7> salidas digitales
movlw b'11110001'
movwf PORTA ;Puerta A salidas
bcf STATUS,RP0 ;Banco 0
OFF_COMANDO ;RS=0
DISABLE ;E=0
return

AN1-9
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
AN1.8.2 LCD_E

Genera un pulso por la señal E (RA2 en el ejemplo) 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 4MHz. Esta rutina quizá deba
modificarse en futuras versiones de los módulos LCD, según características del fabricante.

;**************************************************************************
;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 .14 ;Este valor aumenta si se trabaja a frecuencias superiores a 4MHz
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.3 LCD_BUSY

Chequea el estado del flag Busy del LCD y espera a que finalice cualquier instrucción previa antes de
retornar. Con esta rutina se garantiza que al módulo LCD no se le manda otro comando hasta que finaliza la
ejecución del anterior.

;**************************************************************************
;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-10
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
AN1.8.4 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.8.5 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.6 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 interfase 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
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
AN1.8.7 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 trabajando a 4MHz. 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 .7
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
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877

ANEXO 2: Resumen del PIC16F876/877


AN2.1 INTRODUCCION

El presente anexo está destinado a hacer un breve resumen de las características generales del
dispositivo PIC16F876, el que viene de serie con el laboratorio PIC’School, así como del PIC16F877, idéntico al
anterior pero con más líneas de E/S. 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
incluye el dispositivo PIC16F876/F877

• 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 4MHz una instrucción se ejecuta en 1µS.
• 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.
• 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).
• Puerto 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
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen 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


I Entrada para el cristal del oscilador/entrada de oscilador externo.
OSC1/CLKIN
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

PUERTA A: 6 líneas

RA0/AN0 I/O Entrada/salida digital RA0 o entrada analógica del canal 0 AN0

RA1/AN1 I/O Entrada/salida digital RA1 o entrada analógica del canal 1 AN1

RA2/AN2/VREF- I/O Entrada/salida digital RA2, entrada analógica AN2 o entrada – de tensión
de referencia VREF-

RA3/AN3/VREF+ I/O Entrada/salida digital RA3, entrada analógica AN3 o entrada + de tensión
de referencia VREF+

RA4/T0CKI I/O Entrada/salida digital en colector abierto RA4. Entrada de reloj para el
TMR0 en modo contador

RA5/SS/AN4 I/O 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
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877

NOMBRE TIPO DESCRIPCION


PUERTA B: 8 líneas

RB0/INT I/O Entrada/salida digital RB0 o entrada de interrupción externa INT

RB1 I/O Entrada/salida digital

RB2 I/O Entrada/salida digital RB2

RB3/PGM I/O Entrada/salida digital RB3. Entrada en baja tensión de programación PGM

RB4 I/O Entrada/salida digital RB4. Produce interrupción por cambio de estado

RB5 I/O Entrada/salida digital RB5. Produce interrupción por cambio de estado

RB6 I/O Entrada/salida digital RB6. Produce interrupción por cambio de estado

RB7 I/O Entrada/salida digital RB7. Produce interrupción por cambio de estado

PUERTA C: 8 líneas

RC0/T1OSO/T1CKI I/O Entrada/salida digital RC0, salida T1OSO de oscilador del TMR1 o entrada
T1CKI de reloj para el TMR1

RC1/T1OSI/CCP2 I/O Entrada/salida digital RC1, entrada de oscilador del TMR1 o E/S del módulo
CCP2

RC2/CCP1 I/O Entrada/salida digital RC2 o E/S del módulo CCP1

RC3/SCK/SCL I/O Entrada/salida digital RC3 o E/S de reloj para los modos SPI (SCK) e I2C
(SCL) de la puerta serie síncrona (SSP)

RC4/SDI/SDA I/O Entrada/salida digital RC4, entrada SDI de datos para el bus SPI o E/S SDA
de datos para el bus I2C.

RC5/SDO I/O Entrada/salida digital RC5 o salida SDO de datos para el bus SPI

RC6/TX/CK I/O Entrada/salida digital RC6, transmisor Tx del USART en modo asíncrono o
reloj del USART en modo síncrono

RC7/RX/DT I/O 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
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877

NOMBRE TIPO DESCRIPCION

PUERTA D: 8 líneas, sólo en el PIC16F877

RD0/PSP0 I/O Entrada/salida digital RD0 o línea PSP0 del puerto esclavo paralelo
RD1/PSP1 I/O Entrada/salida digital RD1 o línea PSP1 del puerto esclavo paralelo
RD2/PSP2 I/O Entrada/salida digital RD2 o línea PSP2 del puerto esclavo paralelo
RD3/PSP3 I/O Entrada/salida digital RD3 o línea PSP3 del puerto esclavo paralelo
RD4/PSP4 I/O Entrada/salida digital RD4 o línea PSP4 del puerto esclavo paralelo
RD5/PSP5 I/O Entrada/salida digital RD5 o línea PSP5 del puerto esclavo paralelo
RD6/PSP6 I/O Entrada/salida digital RD6 o línea PSP6 del puerto esclavo paralelo
RD7/PSP7 I/O Entrada/salida digital RD7 o línea PSP7 del puerto esclavo paralelo

PUERTA E: 3 líneas, sólo en el PIC16F877

RE0/RD/AN5 I/O Entrada/salida digital RE0, línea RD de control de lectura del puerto paralelo
o entrada analógica AN5

RE1/WR/AN6 I/O Entrada/salida digital RE1, línea WR de control de escritura sobre el puerto
paralelo o entrada analógica AN6

RE2/CS/AN6 I/O 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.

Figura AN2-2. Mapa de memoria de programa para PIC16F876/877

AN2-4
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877
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.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.

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-5
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877
A continuación se presenta una breve descripción de los mismos

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
ADCON0 Registro de control del convertidor A/D

AN2-6
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877
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-7
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen 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-8
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen 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, entre otros, por el laboratorio PIC’School.

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 dirección de destino la
misma que la 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 4 MHz, el ciclo de reloj es de 250nS y el ciclo máquina o ciclo de instrucción es
de 1µS.

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-9
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen 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-10
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta

ANEXO 3: Experimentando con la gama alta PIC18FXXX


AN3.1 INTRODUCCION

En este anexo se han incluido tres experimentos implementados con un dispositivo de la gama alta
PIC18FXXX. Dentro de esta gama hemos seleccionado, para realizar los experimentos propuestos, el
microcontrolador PIC18F4520 uno de los microcontroladores que más recursos incorporan y que con mayor
facilidad se consigue en el mercado debido a su masivo empleo en todo tipo de aplicaciones.

La finalidad de estos experimentos no es otra que el de hacer una muy sencilla introducción a los
dispositivos PIC18FXXX de la gama alta. No se pretende en ningún caso que sean un tutorial ni tampoco se
pretende aprovechar todos los recursos ni prestaciones que proporcionan estos potentes microcontroladores.
Para todo esto sería necesario diseñar todo un módulo de prácticas expresamente pensadas para los
PIC18FXXX en las que se expongan claramente todas sus posibilidades. No es este el objetivo del presente
anexo ni mucho menos del manual de PIC’School que tienes en tus manos. Simplemente se trata de resaltar las
posibilidades del laboratorio PIC’SChool tanto en su empleo con micros de gama media PIC16FXXX como con
dispositivos de gama alta PIC18FXXX.

Las características mas relevantes del microcontrolador PIC18F4520 son las siguientes:

Memoria de Programa 16384 Words


Memoria de Datos 1536 bytes
Memoria de Datos EEPROM 256 bytes
Fuentes de Interrupción 19
Puertos de E/S A(8), B(8), C(8), D(8) y E(3)
Temporizadores 4
Módulos Captura/Comparación 1 estándar y 1 ampliado
Comunicación Serie MSSP y USART (mejorado)
Comunicación Paralelo PSP
Convertidores ADC 13 x 10 bits

AN3.2 EXPERIMENTO 1: El multiplicador de 8 x 8 bits

Este sencillo experimento tiene como misión, familiarizarse con algunas de las instrucciones y registros
de los microcontroladores PIC de la gama alta. Simplemente va a realizar la multiplicación de los 4 bits de más
peso del puerto C por los 4 bits de menos peso del mismo puerto mostrando el resultado por el puerto B.

Dado que ambos operandos cuentan sólo con 4 bits, el valor máximo de la multiplicación será 00001111
* 00001111 = 00000000 11000001. Así, aunque el multiplicador de 8 bits incluido en estos dispositivos almacena
el resultado de la multiplicación en dos registros de 8 bits PRODH y PRODL, sólo deberemos utilizar el de menos
peso PRODL para monitorizar el resultado.

Para montar este experimento en el laboratorio PIC School, conectaremos los cuatro interruptores E3-E0
a las cuatro líneas de menos peso del puerto C (RC3-RC0) y los cuatro pulsadores E7-E4, a las cuatro líneas de
más peso del puerto C (RC7-RC4). Teniendo en cuenta que los pulsadores del PIC School están conectados de
tal forma que en reposo generan un nivel 1, mientras que cuando son pulsados conmutan a nivel 0, realizaremos
el complemento de los niveles
obtenidos en estas 4 líneas antes de
realizar la multiplicación. Por su
parte los leds de salida S7-S0 se
conectan con las líneas RB7 – RB0
de la puerta B. Estas conexiones se
resumen en el esquema de la figura
AN3-1.
Figura AN3-1. Conexiones para
implementar el experimento 1.

AN3-1
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta

Es necesario configurar todas las líneas del puerto B como salidas y todas las líneas del puerto C como
entradas. El programa fuente quedaría de la siguiente forma:

list p=18c452
#include <P18C452.INC>
OP1 equ 0x000
OP2 equ 0x001
org 00000h ; Vector de Reset
goto Inicio
org 00020h
Inicio
clrf LATB ; Borrado de posibles Latchs del puerto B
clrf LATC ; Borrado de posibles Latchs del puerto C
clrf TRISB ; Todo el puerto B salidas
movlw 0xff
movwf TRISC ; Todo el puerto C entradas
Bucle
movf PORTC,W ; Se almacena la lectura del puerto C en w
movwf OP2 ; OP2 <- Los 8 bits leídos
andlw 0x0f ; los 4 bits de más peso de w a 0
movwf OP1 ; OP1 <- primer operando
movlw 0xf0 ; Se elimina la parte baja de la lectura
andwf OP2,F
movlw 0xf0
xorwf OP2,F ; Se complementan lo 4 bits de más peso
swapf OP2,F ; Se intercambian los nibbles
movf OP1,W
mulwf OP2 ; Se realiza la multiplicación
movff PRODL,PORTB ; Se muestra el producto en puerto B
goto Bucle

end

La fotografía de la figura AN3-2 muestra el montaje práctico del experimento propuesto.

Figura AN3-2. Fotografía de montaje del


Experimento 1

AN3.3 EXPERIMENTO 2: Modulación Ancho de Banda (PWM) controlado por potenciómetro

En este experimento vamos a controlar un canal PWM estándar mediante un potenciómetro, mientras se
visualizan los 10 bits del conversor ADC en el LCD. Para comprobar el funcionamiento del programa será
necesario contar con un osciloscopio conectado al canal PWM, o en su defecto conectar un periférico, como por
ejemplo un motor, que nos permita ver el funcionamiento de este recurso.

AN3-2
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta

El esquema de conexionado se muestra en la figura AN3-3, sabiendo además que la salida RC1, deberá
conectarse a la sonda del osciloscopio.

Las líneas RD1-RD3 se conectan a las


señales de control RS, RW y E
respectivamente. Las líneas de la puerta B
RB0-RB7 se conectan con las señales de
datos L0-L7 del LCD.

Por otra parte se emplea el potenciómetro P1


para generar una tensión analógica variable
que se aplica por RA0 para su posterior
conversión.

Figura AN3-3. Esquema eléctrico del


experimento 2.

Es necesario configurar el módulo CCP para realizar funciones de modulado de ancho de banda, lo cual
se lleva a cabo en la rutina Inicio_PWM. Dado que sólo vamos a utilizar una salida PWM utilizamos el módulo
CCP estándar, es decir el CCP2.

Además como el ciclo activo del periodo PWM viene marcado por la lectura de un canal analógico es
necesario realizar la configuración del mismo por medio de la rutina Inicio_ADC. Solo AN0 actúa como analógico
y como tensión de referencia utilizamos los 5 Vcc con los que se alimenta el microcontrolador.

Una vez configurados todos los recursos, se procede a la lectura del canal analógico, volcando los 10
bits en los que convierte la entrada, en los 10 que controlan los ciclos del periodo PWM. Además se visualiza la
lectura del canal AN0 en la pantalla LCD por medio de la rutina LCD_AD. A continuación se muestra parte del
código fuente de la rutina principal. El código completo se encuentra en la carpeta de ejemplos del CDROM.

Principal
bsf ADCON0, GO ; Comienzo conversión A-D
btfss PIR1,ADIF ; Mientras no finalice conversión, espera
goto Principal
movff ADRESH,CCPR2L ; los 8 bits MSB del ADC a los 8 de PWM
btfsc ADRESL,7
bsf CCP2CON,5 ; Bit de menos peso ADC a PWM
btfss ADRESL,7
bcf CCP2CON,5
btfsc ADRESL,6 ; bit de peso 2 de ADC a PWM (total 10 bits)
bsf CCP2CON,4
btfss ADRESL,6
bcf CCP2CON,4 ;
call LCD_AD ; Mostramos en el LCD el resultado del ADC
bcf PIR1, ADIF ; Se borra el flag del ADC para la próxima
; conversión
goto Principal ; Vuelta al bucle

AN3.4 EXPERIMENTO 3: Visualización de dos canales analógicos a través del USART.

A través de este experimento vamos a visualizar el valor digitalizado de dos entradas analógicas en el
PC a través de un programa Terminal. Utilizaremos como entradas analógicas las líneas AN0 y AN1 del puerto
A, utilizando como tensión de referencia la alimentación de 5Vcc aplicada al PIC. Cada vez que pulsemos uno de
los dos pulsadores conectados a las líneas RC0 y RC1 del puerto C se enviarán al PC, por medio del USART,
los diez bits en los que el convertidor ADC ha digitalizado la entrada AN0 en caso de activar el pulsador
conectado a RC0 o AN1 si el pulsado es el cableado a RC1.

AN3-3
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta

Aquellos lectores que no dispongan de un programa Terminal propio, pueden utilizar el hiperteminal®
incluido en todas las versiones de Windows®. Recuerde que hemos configurado el USART con una velocidad
de 9600 baudios, 8 bits de datos y uno de parada luego la ventana de configuración del programa deberá quedar
tal y como se indica en la figura AN3-4.

Figura AN3-4. Configuración del programa


hiperterminal de Windows

El esquema de conexión den el


laboratorio PIC School se muestra en la
figura AN3-5. Los cursores de los
potenciómetros P1 y P2 se conectan con
las entradas analógicas asociadas a
RA0(AN0) y RA1(AN1). Los interruptores
E0 y E1 se conectan con las señales RC0
y RC1. Finalmente las señales del UART
RC6 y RC7 se conectan con las señales
TxD y RxD del canal serie.

Figura AN3-5. Esquemas de conexiones del experimento 3

A la hora de realizar el programa comenzaremos configurando los recursos utilizados. Con este
propósito la rutina Inicio_UART configura las líneas RC7/Rx y RC6/Tx como entrada y salida respectivamente,
además habilita el USART para que se establezca una comunicación asíncrona con el PC a 9600 baudios, con 8
bits de datos y uno de parada. A su vez, la rutina Inicio_ADC configura las líneas RA0/AN0 y RA1/AN1 como
analógicas manteniendo el resto del puerto A como líneas digitales. Por último la rutina Inicio_TMR0 configura el
Timer0 con 8 bits como temporizador y le asocia el prescaller que divide la frecuencia interna del PIC entre 256.

Una vez realizadas las tareas de configuración, el programa comienza testeando la activación de los dos
pulsadores conectados a las líneas de menos peso del Puerto C. Téngase en cuenta que los pulsadores del PIC

AN3-4
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta
School aportan un 1 en reposo y un 0 cuando son pulsados. En el momento en que se detecta la pulsación en
uno de ellos, y tras esperar 10 ms para eliminar los posibles rebotes que se puedan generar se activa el canal
analógico correspondiente y se procede con la conversión analógica-digital. Posteriormente se lanza por el
USART los 10 bits en los que ha resultado la conversión.

La rutina principal del programa sería la siguiente. En la carpeta de ejemplos del CDROM está disponible
el programa fuente completo.

Evalua_Pulsadores ; Se compueba si las líneas RC0 o RC1 están


btfss PORTC,0 ; activadas. Mientras por ambas líneas llegue
call Pulsador_0 ; un 1 se permanece en el bucle. Al detectar
btfss PORTC,1 ; un 0 en una de ellas se llama a la rutina
call Pulsador_1 ; Pulsador_0 o Pulsador_1.
goto Evalua_Pulsadores
Pulsador_0
call Espera_10_ms ; Espera 10 ms para eliminar posibles rebotes
btfss PORTC,0 ; Se ha soltado ya el pulsador?
goto Pulsador_0 ; No, pues espera
call Espera_10_ms ; Elimina los rebotes generados al soltar
call Lectura_AN0 ; Realiza la lectura de la línea AN0
call Visualiza ; Muestra la conversión A-D por el USART
return
Pulsador_1
call Espera_10_ms ; Espera 10 ms para eliminar posibles rebotes
btfss PORTC,1 ; Se ha soltado ya el pulsador?
goto Pulsador_1 ; No, pues espera
call Espera_10_ms ; Elimina los rebotes generados al soltar
call Lectura_AN1 ; Realiza la lectura de la línea AN0
call Visualiza ; Muestra la conversión A-D por el USART
return

AN3.5 EL COMPILADOR C

Para la realización de este último experimento vamos a emplear uno de los compiladores de C para
microcontroladores PIC más empleados: El compilador PCWH de la empresa “ccs”.

Entre las principales ventajas de este compilador destacan las siguientes:

• Compatibilidad. Es el único compilador compatible con todas las gamas y modelos de


microcontroladores PIC, permitiendo siempre, la utilización del microcontrolador más adecuado a cada
proyecto.

• Precio. Es uno de los compiladores más económicos permitiendo además la adquisición por separado
de cada una de las gamas de microcontroladores PIC.
• Facilidad de uso. Gracias al enorme número de funciones preconstruidas que incluye, capaces de
controlar a cada uno de los recursos incluidos en los microcontroladores, es sin duda el compilador de
alto nivel más potente y sencillo de utilizar no exigiendo grandes conocimientos de programación a alto o
bajo nivel.

Existe una versión de evaluación que permite, durante 30 días, desarrollar aplicaciones basadas únicamente
en el microcontrolador PIC 18F4520. Esta versión se puede descargar desde la página http://www.ccsinfo.com .

AN3-5
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta
A continuación indicamos el código fuente, programado en lenguaje C, para el desarrollo del experimento 3
que anteriormente se desarrolló en ensamblador.

#include <18F4520.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
main() {
int res;
set_tris_c(b’10111111’); //Configuración Puerto C
setup_port_A(ALL_ANALOG); //Configuración Puerto A
setup_adc( ADC_CLOCK_INTERNAL);

While (TRUE)
{
if (input(PIN_C0)==0) // Si RC0 es un 0 (Pulsador activo)
{
delay_ms(10); // Espera 10 ms.
while (input(PIN_C0) == 0) // Mientras esté pulsado
{} // no hacer nada
delay_ms(10); // Espera 10ms
set_adc_channel(0);
res = read_adc(); //Lectura de Puerto AN0
printf("AN0:\%un",res); //Muestra resultado por USART
}
if (input(PIN_C1)==0)
{
delay_ms(10);
while (input(PIN_C1) == 0)
{}
delay_ms(10);
set_adc_channel(1);
res = read_adc();
printf("AN1:\%un",res);
}
}
}

A través de este código esperamos que el lector se pueda hacer una idea de las ventajas que implica la
utilización de este tipo de herramientas. En su contra debemos advertir que la optimización del código generado
mediante cualquier compilador de alto nivel es muy inferior a la obtenida mediante lenguaje ensamblador.

AN3-6

You might also like