Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Usuario V1.00 Enero 2006 PDF
Manual de Usuario V1.00 Enero 2006 PDF
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
TEMA 3: TUTORIAL
3.1 INTRODUCCION 3-1
3.2 TUTORIAL 3-3
i-1
Laboratorio PIC’School; Manual de Usuario
Indice general
3.3 EJEMPLOS 3-13
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
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
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
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.
1.2 CARACTERISTICAS
● 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.
● 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.
● 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.
● 8 entradas digitales formadas por 4 interruptores y 4 pulsadores activos por transición 1-0-1.
● 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.
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.
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.
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
3
4
+ C2
C28 100n D3
100uF Vcc ON AP3
F. DE 1
ALIM ENTACION 2
+Vin
3
4
1-5
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware
1.3.2 El oscilador
OSCILADOR +5Vcc +5Vcc
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
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:
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
Están formadas por dos potenciómetros tal y como se muestra en la fotografía de la figura 1-10.
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
AP16
ENTRADAS ANALOGICAS
ENTRADAS ANALOGICAS
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
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.
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.
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
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.
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.
1-12
Laboratorio PIC’School; Manual de Usuario
TEMA 1: EL Hardware
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.
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
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.
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
GND
+VM
S4
S3
S2
S1
alimenta a las cargas se aplica externamente
a través de la borna +VM. 3 JP8
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
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.
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
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.
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
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.
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
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
Son simples conectores de propósito general y que se muestran en la fotografía de la figura 1-28.
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
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
1
2
3
4
INTERFACE RJ11 INTERFACE USB
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.
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
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
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.
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.
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.
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
Mediante estas dos persianas se puede seleccionar el tipo de dispositivo a grabar así como el modelo.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
● 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.
Básicamente se ejecutan mediante los distintos botones disponibles sin necesidad de navegar entre los
distintos menús. Ver la figura 2-4.
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.
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.
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
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.
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..
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.
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
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.
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.
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
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.
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
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.
Básicamente se ejecutan mediante los distintos botones de la barra de comandos. Son las mostradas en
la figura 2-11.
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.
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
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
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.
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.
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.
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..
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.
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.
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.
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.
3-2
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
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.
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:
Como software de grabación vamos a emplear el WinPIC800 por los siguientes motivos:
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
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.
Este gestor nos va guiando a definir el proyecto que se puede resumir en los siguientes pasos:
3-4
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3-5
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
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.
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
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
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.
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.
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.
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
__config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC
org 0x00
goto Inicio ;Vector de reset
org 0x05
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.
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
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
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
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:
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
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.
Es el ejemplo contenido en el archivo Ejem_1.asm y que se empleo en el tutorial del apartado anterior.
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
Comentarios
Este ejemplo contenido en el fichero Ejem_2.asm realiza un sencillo tratamiento con el valor de la señal de
entrada.
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
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.
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
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.
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
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.
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
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).
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
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).
Enunciado
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
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.
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.
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
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.
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.
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
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.
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
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.
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
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
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
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.
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
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.
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
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
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
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
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.
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.
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
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.
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
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.
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)
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
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
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.
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.
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
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
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.
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.
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
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.
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.
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.
Enunciado
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
8
7
6
5
4
3
2
1
4
3
2
1
Comentarios
3-33
Laboratorio PIC’School; Manual de Usuario
TEMA 3: Tutorial
3-34
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
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.
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.
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
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
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
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
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
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
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
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
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
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
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.
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
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.
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
AN1-5
Laboratorio PIC’School; Manual de Usuario
ANEXO 1: La pantalla LCD
La figura AN1-1 muestra el juego de caracteres que admite el presente módulo LCD y que están
establecidos por el fabricante. Una memoria ROM interna contiene la definición de cada uno de ellos.
AN1-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.
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.
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:
El flag BUSY se mantiene a “1” (ocupado) durante 15mS hasta que finaliza todo el
proceso de inicialización.
Se elige por defecto el tamaño del bus de datos a 8 bits (DL=1) y el número de renglones
del display en 1 (N=0).
AN1-7
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).
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.
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.
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:
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.
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
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
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
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.
AN1-12
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877
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.
A continuación se detallan las características más relevantes que definen la CPU y periféricos que
incluye el dispositivo PIC16F876/F877
AN2-1
Laboratorio PIC’School; Manual de Usuario
ANEXO 2: Resumen del PIC16F876/877
AN2.3 DESCRIPCION DE PINES
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
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
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
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
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
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..
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).
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.
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
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.
En la tabla de la figura AN2-5 se muestra el valor adquirido por ciertos registros tras la condición de
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
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
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.
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.
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.
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.
AN2-10
Laboratorio PIC’School; Manual de Usuario
ANEXO 3: Experimentando con la gama alta
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:
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
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.
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
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.
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.
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”.
• 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