Вы находитесь на странице: 1из 104

Laboratorio PICSchool

Manual de usuario con tutorial y


ejemplos para PIC16F876 / 18F4520
V 1.00 Enero 2006

INGENIERIA DE MICROSISTEMAS
PROGRAMADOS S.L.
C/ Alda. Mazarredo N 47 - 1 Dpto. 2
48009 BILBAO - BIZKAIA
Tel/Fax: 94 4230651
email: info@microcontroladores.com
www.microcontroladores.com

Laboratorio PICSchool; Manual de Usuario


Indice general
INDICE GENERAL
TEMA 1: EL HARDWARE
1.1
1.2
1.3

INTRODUCCION
CARACTERISTICAS
ARQUITECTURA DE PICSCHOOL

1-1
1-2
1-4

1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
1.3.7
1.3.8
1.3.9
1.3.10
1.3.11
1.3.12
1.3.13
1.3.14

1-5
1-6
1-6
1-8
1-9
1-10
1-11
1-12
1-13
1-14
1-15
1-16
1-17
1-18

La fuente de alimentacin
El oscilador
Los microcontroladores
Entradas analgicas
Entradas digitales
El generador lgico
El teclado
Salidas digitales
Salidas digitales de alta corriente
Interfase serie RS-232
Interfase bus CAN
Pantalla LCD
Conectores para interfase RJ11 y USB
Seccin de grabacin

TEMA 2: SOFTWARE DE GRABACION


2.1
2.2

2.3

2.4

INTRODUCCION
EL SOFTWARE DE GRABACION WINPIC800

2-1
2-1

2.2.1
2.2.2
2.2.3
2.2.4

Instalacin
Configuracin del hardware
Configuracin del software
Tareas mas comunes

2-1
2-3
2-5
2-5

EL SOFTWARE DE GRABACION ICPROG

2-6

2.3.1
2.3.2
2.3.3
2.3.4

2-6
2-9
2-9
2-11

Instalacin
Configuracin del hardware
Configuracin del software
Tareas mas comunes

EL DEPURADPR EN CIRCUITO ICD2

2-12

2.4.1
2.4.2
2.4.3

2-13
2-13
2-16

Instalacin
Configuracin
Tareas mas comunes

TEMA 3: TUTORIAL
3.1
3.2

INTRODUCCION
TUTORIAL

3-1
3-3

3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6

3-4
3-8
3-9
3-10
3-11
3-12

Creacin de un proyecto
El programa fuente
Construyendo el proyecto
Preparando el hardware de la aplicacin
Grabacin del dispositivo
Comprobando el funcionamiento de la aplicacin

i-1

Laboratorio PICSchool; Manual de Usuario


Indice general
3.3

EJEMPLOS

3-13

3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7
3.3.8
3.3.9
3.3.10
3.3.11
3.3.12
3.3.13
3.3.14
3.3.15
3.3.16
3.3.17
3.3.18
3.3.19
3.3.20
3.3.21
3.3.22
3.3.23
3.3.24
3.3.25
3.3.26
3.3.27
3.3.28
3.3.29
3.3.30
3.3.31
3.3.32
3.3.33
3.3.34
3.3.35
3.3.36
3.3.37
3.3.38
3.3.39

3-13
3-13
3-13
3-14
3-15
3-15
3-16
3-17
3-17
3-18
3-18
3-19
3-20
3-20
3-21
3-22
3-22
3-23
3-23
3-24
3-24
3-25
3-25
3-26
3-26
3-27
3-27
3-27
3-28
3-28
3-29
3-29
3-30
3-30
3-31
3-31
3-32
3-32
3-33

Ejemplo 1: Simple manejo de las entradas y salidas


Ejemplo 2: Funcin lgica NOT
Ejemplo 3: Decodificador combinacional
Ejemplo 4: Automatismo secuencial
Ejemplo 5: Automatismo secuencial
Ejemplo 6: Automatismo secuencial
Ejemplo 7: Automatismo secuencial
Ejemplo 8: Juego de luces
Ejemplo 9: La interrupcin del TMR0
Ejemplo 10: La interrupcin externa RB0/INT y el modo SLEEP
Ejemplo 11: El display de 7 segmentos
Ejemplo 12: Decodificador BCD a 7 segmentos
Ejemplo 13: Contador decimal UP/DOWN
Ejemplo 14: El TMR0 como contador de pulsos externos
Ejemplo 15: La memoria EEPROM de datos, la mquina su turno
Ejemplo 16: Introduccin al manejo de la pantalla LCD
Ejemplo 17: Seguimos con la pantalla LCD
Ejemplo 18: Visualizando mas mensajes
Ejemplo 19: El teclado
Ejemplo 20: El teclado y la pantalla LCD
Ejemplo 21: Interrupcin por cambio de estado
Ejemplo 22: El TMR1 en modo temporizador, interrupcin cada cierto tiempo
Ejemplo 23: El TMR1 como contador de eventos externos
Ejemplo 24: El TMR1 como divisor de frecuencia
Ejemplo 25: Frecuencmetro
Ejemplo 26: El TMR2, interrupcin peridica
Ejemplo 27: El TMR2, temporizaciones ajustables
Ejemplo 28: Capturas con el mdulo CCP1, midiendo pulsos
Ejemplo 29: Capturas con el mdulo CCP1, midiendo la anchura de un pulso
Ejemplo 30: Capturas con el mdulo CCP1, midiendo el tiempo entre pulsos
Ejemplo 31: Comparacin con el mdulo CCP1, contador de eventos ajustable
Ejemplo 32: Modulacin de anchura de pulsos (PWM) mediante el mdulo CCP1
Ejemplo 33: PWM mediante el mdulo CCP1, variando la anchura
Ejemplo 34: El convertidor ADC
Ejemplo 35: Modulacin PWM mediante el convertidor ADC
Ejemplo 36: El USART, transmitiendo caracteres
Ejemplo 37: El USART, recepcin/transmisin de caracteres
Ejemplo 38: Transmitiendo mensajes con el USART
Ejemplo 39: Entretenimiento, adivina el nmero

ANEXO 1: EL MODULO LCD


AN1.1 INTRODUCCION
AN1.2 CONEXIN CON PICSCHOOL
AN1.3 JUEGO DE INSTRUCCIONES
AN1.3.1
AN1.3.2
AN1.3.3
AN1.3.4
AN1.3.5
AN1.3.6
AN1.3.7
AN1.3.8
AN1.3.9
AN1.3.10

AN1-1
AN1-1
AN1-1

Clear Display
Home
Entry mode set
Display ON/OFF Control
Cursor or Display Shift
Function Set
Set the CG RAM address
Set the DD RAM address
Read Busy flag & address
Write Data to CG or DD RAM

AN1-2
AN1-2
AN1-2
AN1-2
AN1-3
AN1-3
AN1-3
AN1-3
AN1-4
AN1-4

i-2

Laboratorio PICSchool; Manual de Usuario


Indice general
AN1.3.11
AN1.3.12
AN1.4
AN1.5
AN1.6
AN1.7
AN1.8

Read data from CG o DD RAM


Abreviaturas

AN1-4
AN1-5

JUEGO DE CARACTERES
CARACTERES GRAFICOS
SECUENCIA DE INICIALIZACION
DIAGRAMA DE TIEMPOS
RUTINAS DE CONTROL

AN1-6
AN1-6
AN1-7
AN1-8
AN1-8

AN1.8.1
AN1.8.2
AN1.8.3
AN1.8.4
AN1.8.5
AN1.8.6
AN1.8.7

AN1-9
AN1-10
AN1-10
AN1-11
AN1-11
AN1-11
AN1-12

UP_LCD
LCD_E
LCD_BUSY
LCD_REG
LCD_DATO
LCD_INI
LCD_DELAY

AN1.9 DIMENSIONES DEL MODULO LCD

AN1-12

ANEXO 2: RESUMEN DEL PIC16F876/877


AN2.1
AN2.2
AN2.3
AN2.4
AN2.5
AN2.6
AN2.7

INTRODUCCION
CARACTERISTICAS GENERALES
DESCRIPCION DE PINES
ORGANIZACIN DE LA MEMORIA FLASH DE MEMORIA
LA MEMORIA RAM DE DATOS
CONDICIONES INICIALES EN EL RESET
JUEGO DE ISTRUCCIONES

AN2-1
AN2-1
AN2-2
AN2-4
AN2-5
AN2-7
AN2-9

ANEXO 3: EXPERIMENTANDO CON LA GAMA ALTA PIC18FXXX


AN3.1
AN3.2
AN3.3
AN3.4
AN3.5

INTRODUCCION
EXPERIMENTO 1: El multiplicador de 8 x 8
EXPERIMENTO 2: Modulacin de ancho de banda
EXPERIMENTO 3: Visualizacin de dos canales analgicos mediante UART
EL COMPILADOR C

BIBLIOGRAFIA
1.2.3.4.5.6.5.6.7.-

Microcontroladores PIC, La clave del diseo. Ed. Paraninfo


Microcontroladores PIC, diseo prctico de aplicaciones. Primera parte. Ed. Mac Graw-Hill
Microcontroladores PIC, diseo prctico de aplicaciones. Segunda parte. Ed. Mc Graw-Hill
Diseo prctico con microcontroladores. Ed. Thomoson
Curso prctico de Diseo con PIC, 1 parte. Ingeniera de Microsistemas Programados.
Curso prctico de Diseo con PIC, 2 parte. Ingeniera de Microsistemas Programados.
MPASM Users guide. Microchip
MPLAB Users guide. Microchip
PIC16F87X Data Sheet. Microchip

DIRECCIONES DE INTERES
Ingeniera de Microsistemas Programados S.L. www.microcontroladores.com
Microchip. www.microchip.com
Custom Computer Services inc. (compiladores C) www.ccsinfo.com
Software de grabacin WinPIC800. http://perso.wanadoo.es/siscobf/winpic800.htm
Software de grabacin IcProg. www.ic-prog.com

i-3

AN3-1
AN3-1
AN3-3
AN3-4
AN3-5

Laboratorio PICSchool; Manual de Usuario


Indice general

i-4

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
TEMA 1: EL HARDWARE
1.1 INTRODUCCION
Bienvenido al fascinante mundo de los microcontroladores. Ingeniera de Microsistemas Programados
S.L. se complace en poner en tus manos el laboratorio PICSchool, la herramienta definitiva para el aprendizaje
y diseo de aplicaciones basadas en los populares microcontroladores PIC de Arizona Microchip. Figura 1-1.
PICSchool es un laboratorio
de carcter didctico y una evolucin
lgica de los populares y conocidos
entrenadores MicroPIC Trainer y
PICLaboratory. Permite trabajar con
los
dispositivos
PIC
mas
representativos de las familias 12F,
16F y 18F, pudindose desarrollar
aplicaciones tanto a nivel de software
como de hardware. Dispone de un
amplio y representativo nmero de
perifricos muy utilizados en las
aplicaciones reales y un mdulo board
para el montaje sin soldadura que
permite implementar el hardware
necesario en un determinado proyecto.
Figura 1-1. El laboratorio PICSchool
A diferencia de otros equipos similares, ninguno de los perifricos contenidos en el laboratorio
PICSchool estn conectados de forma predeterminada a las lneas de E/S del microcontrolador. Es el propio
usuario quien, mediante un sencillo cableado sin soldadura, conecta y asocia los distintos perifricos a esas
lneas de E/S segn lo requiera la aplicacin. Esto permite tener un contacto mas directo con el hardware y un
mayor control del mismo.
En Ingeniera de Microsistemas Programados S.L. somos conscientes de la necesidad de disponer de
herramientas sencillas, flexibles, potentes y de bajo coste, que permitan desarrollar y evaluar de forma cmoda y
rpida las aplicaciones desarrolladas por el usuario, y donde se puedan emplear y aprovechar al mximo los
distintos recursos internos que poseen los microcontroladores PIC, desde la gama baja a la gama alta. Esta ha
sido nuestra meta y objetivo final a la hora de presentar el laboratorio PICSchool.
1.2 CARACTERISTICAS
A continuacin se muestran las caractersticas mas relevantes del laboratorio PICSchool:

El laboratorio PICSchool se presenta totalmente montado y comprobado con un manual en


castellano donde se incluye un tutorial, abundantes ejemplos de demostracin y en un maletn de
plstico para su fcil transporte y almacenamiento.

Tambin se incluye un CD-ROM con las diferentes herramientas de diseo as como los programas
fuentes de todos los ejemplos propuestos en el manual.

Es totalmente modular y con firme voluntad de expansin. A corto/medio plazo se ir ampliando con
una serie de mdulos de prcticas opcionales en donde se irn tratando diferentes temas
relacionados con los microcontroladores: comunicaciones, Bluetooth, USB, CAN, R.F. control de
motores, perifricos avanzados y un largo etctera. En esos mdulos tambin se irn proponiendo
aplicaciones que permitan conocer las caractersticas de los PICs desde la sencilla familia 12FXXX
hasta los potentes 18FXXXX. Cada mdulo constar de un conjunto de prcticas y todos los
componentes necesarios para implementarlas.

1-1

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware

Alimentacin nica mediante F.Alimentacin externa (no incluida) de 9 a 15VDC con positivo al
centro. El laboratorio incorpora los circuitos de filtrado, estabilizacin, piloto ON/OFF y bomba de
carga para la grabacin.

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 zcalo de 8
pines y es fcilmente intercambiable por otros osciladores con otras frecuencias.

Configuracin mediante jumpers de las seales CLK/GP5, CLK/RA7, MCL/GP3, MCL/RA5 y


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

Tres modos de operacin diferentes que se seleccionan fcilmente mediante un conmutador. El modo
RUN se emplea cuando el dispositivo est grabado con el programa de aplicacin a ejecutar. Todas
las lneas de E/S estn disponibles para el control de perifricos. El modo PC se emplea durante los
ciclos de grabacin del dispositivo. Esta grabacin se realiza mediante el canal serie de un PC dotado
del software de grabacin correspondiente (WinPic 800, IcProg, etc..). Se suministra el cable de
conexin con el PC. Finalmente el modo ICSP permite conectar el laboratorio PICSchool con otros
grabadores externos dotados de las seales ICSP o bien con depuradores en circuito como el ICD2
de Microchip. De esta forma es posible la emulacin/depuracin/grabacin del dispositivo contenido
en el laboratorio.

Todos los puertos con las lneas de E/S del PIC son accesibles mediante bloques de conectores que
permiten una rpida y sencilla conexin con los perifricos a controlar.

No hay conexiones predeterminadas. Cualquier perifrico se puede conectar a cualquier lnea de E/S.

Acceso a los perifricos mediante bloques de conectores que permiten realizar un rpida y fiable
conexin con las lneas de E/S del PIC. Basta emplear cable rgido de conexiones de 0.6 mm de
grosor.

Interfase serie estndar RS232 con conector DB9 hembra y acceso para la gestin y control de las
seales TxD, RxD, CTS y RTS.

Interfase para redes CAN con conector DB9 macho y acceso para la gestin y control de las seales
Vr, RxCAN, TxCAN y GND.

8 salidas digitales pilotadas mediante leds rojos de 3 mm.

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

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

Teclado matricial de 4 x 4 teclas de propsito general.

8 entradas digitales formadas por 4 interruptores y 4 pulsadores activos por transicin 1-0-1.

2 entradas mediante potencimetros que permiten evaluar y simular variables analgicas.

Generador lgico de onda cuadrada con frecuencia de salida ajustable de 1Hz, 10Hz, 100Hz y 1KHz
y pilotada mediante leds.

1-2

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware

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

Conector de interfase USB tipo B de propsito general para aplicaciones de comunicacin USB.

Mdulo board de 550 contactos para el montaje sin soldadura de todo tipo de circuitos de adaptacin,
perifricos, etc..

Conector de expansin PIC-BUS 2 de 40 vas que transporta todas las seales del PIC y que permite
la conexin de todo tipo de tarjetas y circuitos externos.

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

1-3

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
1.3 ARQUITECTURA DE PICSchool
En este apartado se hace un explicacin exhaustiva del laboratorio PICSchool cuyas secciones se
muestran en la figura 1-2. Mediante los correspondientes esquemas el usuario podr comprender la conexin de
los diferentes perifricos disponibles as como las consideraciones que se deben tener sobre los mismos. Estas
explicaciones pueden servir de ayuda al usuario para realizar sus propias aplicaciones a medida.

Figura 1-2. Secciones del PICSchool

1-4

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
1.3.1 La fuente de alimentacin
Se encarga de obtener la tensin general de +5Vcc con la que se alimenta el laboratorio PICSchool. En
la figura 1-3 se muestra su ubicacin.

Figura 1-3. La fuente de alimentacin


El esquema elctrico se muestra en la figura 1-4. A travs del conector CN1 se aplica la tensin de 9 a
15VDC procedente de un alimentador estndar con el positivo al centro. El interruptor SW3 conecta el sistema.
El diodo D1 evita la polarizacin inversa y con ello los daos que se pudieran ocasionar al equipo. El regulador
U1 estabiliza la tensin a +5Vcc 1A mximo con la que trabaja el equipo. Dicha tensin, junto con GND estn
disponibles en el conector AP1 y AP2 respectivamente para alimentar a los circuitos y prototipos del usuario. En
el conector AP3 est disponible tambin la tensin de entrada sin estabilizar +Vin para aquellos circuitos que la
requieran. El diodo led D3 indica la presencia de tensin +5Vcc.

AP1

ON/OFF

U1
UA7805/TO
IN

GND

D1

1N4007

OUT

F. DE
ALIM ENTACION

Figura 1-4. Esquema de la fuente de alimentacin

1-5

1
2
3
4

AP2

C2
100n

+
C28
100uF

1
2
3
4

+5Vcc
R3
330

9-15VDC

+Vin

SW3

GND

3
2
1

+5Vcc

CN1

1
2
3
4

D3
Vcc ON

AP3

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
1.3.2 El oscilador
+5Vcc

OSCILADOR
PRINCIPAL

Se encarga de generar la frecuencia


principal de trabajo del microcontrolador. Su
esquema se muestra en la figura 1-5. Est
formado por el dispositivo integrado X1 y la red RC
formada por R20 y C1. Mediante el jumper JP2 se
obtiene la seal de reloj CLKIN. Cerrando 1-2 dicha
seal la proporciona el oscilador X1. Cerrando 2-3 la
seal se obtiene de la red RC. El valor de estos
componentes determina la frecuencia de la misma
(consultar
parmetros
proporcionados
por
Microchip)

1
2

X1
NC

VCC

GND

OUT

OSCILADOR

+5Vcc

R20
4K7

JP2

3
1

C1
22p

CLKIN

Figura 1-5. Circuito oscilador


El dispositivo X1 contiene en su interior un
oscilador preciso controlado por cuarzo y todo ello en una
cpsula metlica en formato DIP8. Ver la figura 1-6. Este
oscilador, tambin llamado Canned Oscillator , se puede
adquirir en diferentes frecuencias segn nuestras
necesidades. Basta simplemente cambiar uno por otro
para que nuestra aplicacin se ejecute a mas o menos
velocidad.
Figura 1-6. Canned Oscillator
1.3.3 Los microcontroladores
Es el seccin mas importante del entrenador
PICSchool y donde se inserta el dispositivo PIC
con el que se va a trabajar. Bsicamente consta
de cuatro zcalos donde se pueden insertar los
dispositivos de 8, 18, 28 y 40 patillas tal y como se
muestra en la fotografa de la figura 1-7.

Figura 1-7. Los microcontroladores


En la figura 1-8 se muestran los diferentes tipos de encapsulados que se admiten. Se debe tener en
cuenta que Microchip disea y comercializa de forma constante nuevos modelos y por ello, la figura muestra la
distribucin de patillas y seales que deben tener las cpsulas de 8, 18, 28 y 40 patillas, para ser compatibles a
nivel de hardware con el laboratorio PICSchool. Tambin se debe considerar que el software de grabacin
soporte un dispositivo determinado. Nosotros sugerimos el empleo de los programas de libre distribucin como
WinPIC800, IcProg y/o el MPLAB de Microchip. Este ltimo debe ir acompaado del depurador en circuito ICD2.
Estos programas se pueden actualizar peridicamente con nuevas versiones en las que se soportan nuevos
dispositivos PIC.
La figura 1-8 tambin muestra cmo algunas patillas pueden tener una doble funcin segn el modelo de
PIC que se trate. Normalmente dichas seales se pueden configurar en el propio PIC, durante el proceso de
grabacin y, mediante jumpers, se conectan al hardware segn interese. Por ejemplo, en algunos dispositivos
PIC de 18 pines, la patilla 16 se puede emplear como entrada de reloj (CLKIN) o como lnea de E/S (RA7).

1-6

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware

1
2
3
4

CLKIN/GP5
MCLR/GP3

VDD
GP5
GP4
GP3

GND
GP0
GP1
GP2

MCLR/RA5

8
7
6
5

RB7/PGD
RB6/PGC

1
2
3
4
5
6
7
8
9

PIC8PINS

RA2
RA3
RA4
RA5
GND
RB0
RB1
RB2
RB3

RA1
RA0
RA7
RA6
VDD
RB7
RB6
RB5
RB4

18
17
16
15
14
13
12
11
10

CLKIN/RA7
CLKOUT/RA6
RB7/PGD
RB6/PGC

PIC18PINES
MCLR/RE3
MCLR/RE3

CLKIN/RA7
CLKOUT/RA6

1
2
3
4
5
6
7
8
9
10
11
12
13
14

RE3
RA0
RA1
RA2
RA3
RA4
RA5
GND
RA7
RA6
RC0
RC1
RC2
RC3

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RC7
RC6
RC5
RC4

28
27
26
25
24
23
22
21
20
19
18
17
16
15

RB7/PGD
RB6/PGC

CLKIN/RA7
CLKOUT/RA6

PIC28PINES

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

RE3
RA0
RA1
RA2
RA3
RA4
RA5
RE0
RE1
RE2
VDD
GND
RA7
RA6
RC0
RC1
RC2
RC3
RD0
RD1

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

RB7/PGD
RB6/PGC

PIC40PINES

Figura 1-8. Distribucin de seales segn el tipo de encapsulado


El esquema elctrico de la figura 1-9 muestra las distintas conexiones as como los diferentes jumpers de
configuracin disponibles en el laboratorio PICSchool y que se resumen en la siguiente tabla:
CAPSULA
8 Pines

JUMPER
JP3

POSICION
1-2
2-3

JP4

1-2
2-3

18 Pines

JP5

1-2
2-3

JP6

1-2
2-3

28/40
Pines

JP6

1-2
2-3

JP7

1-2
2-3

DESCRIPCION
Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
GP5. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabacin del dispositivo.
GP3. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabacin
RA5. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
RA7. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
RA7. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabacin del dispositivo.
RE3. Lnea de E/S de propsito general si est disponible en el
dispositivo.

1-7

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
CLKIN

+5Vcc
+5Vcc

C3

C4

100n
JP3

100n

PIC1

1
2
3
4

2
GP4
3

VDD
GP5
GP4
GP3

GP3

PIC2

8
7
6
5

PICDATA
PICCLK
GP2

1
2

1
2
3
4
5
6
7
8
9

RA2
RA3
RA4

PIC8PINES

GP5
3

GND
GP0
GP1
GP2

JP5

RB0
RB1
RB2
RB3

RA2
RA3
RA4
RA5
GND
RB0
RB1
RB2
RB3

RA1
RA0
RA7
RA6
VDD
RB7
RB6
RB5
RB4

18
17
16
15
14
13
12
11
10

RA1
RA0

JP6
1
2

RA6
PICDATA
PICCLK
RB5
RB4

RA7

PIC18PINES

JP4
RA5

PICMCLR

+5Vcc
C6
100n

JP7
1

PIC3
2

RA0
RA1
RA2
RA3
RA4
RA5

RE3
RA6
RC0
RC1
RC2
RC3

1
2
3
4
5
6
7
8
9
10
11
12
13
14

PIC4

RE3
RA0
RA1
RA2
RA3
RA4
RA5
GND
RA7
RA6
RC0
RC1
RC2
RC3

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RC7
RC6
RC5
RC4

28
27
26
25
24
23
22
21
20
19
18
17
16
15

PICDATA
PICCLK
RB5
RB4
RB3
RB2
RB1
RB0
RC7
RC6
RC5
RC4

RA0
RA1
RA2
RA3
RA4
RA5
RE0
RE1
RE2

RA6
RC0
RC1
RC2
RC3
RD0
RD1

PIC28PINES
C5
100n

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

RE3
RA0
RA1
RA2
RA3
RA4
RA5
RE0
RE1
RE2
VDD
GND
RA7
RA6
RC0
RC1
RC2
RC3
RD0
RD1

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

PICDATA
PICCLK
RB5
RB4
RB3
RB2
RB1
RB0
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2

PIC40PINES

+5Vcc

Figura 1-9. Conexiones y jumpers de configuracin


1.3.4 Entradas analgicas
Estn formadas por dos potencimetros tal y como se muestra en la fotografa de la figura 1-10.

Figura 1-10. Las entradas


analgicas

El esquema elctrico se muestra en la figura 1-11. Las lneas de los potencimetros son directamente
accesibles desde el bloque de conexin AP16 correspondiente y se les puede conectar cualquier tipo de circuito
elctrico analgico.

1-8

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
P1
10K

P2
10K

R8
470

Figura 1-11. Conexiones de las


entradas analgicas

1
2
3
4
5
6
7
8

R7
470

AP16
ENTRADAS ANALOGICAS

ENTRADAS ANALOGICAS

1.3.5 Entradas digitales

Se muestran en la fotografa de la figura 1-12 y


estn formadas por 4 interruptores deslizantes y otros
tantos pulsadores.

Figura 1-12. Entradas digitales

La figura 1-13 muestra el esquema elctrico de estas ocho entradas cuyas seales estn disponibles en
el bloque de conexiones AP18. Las seales E0-E3 proceden de los cuatro interruptores deslizantes. Cuando
estos estn abiertos (hacia arriba) proporcionan nivel lgico 1 gracias a las resistencias Pull-Up de RP2.
Cuando cualquiera de ellos se cierra (hacia abajo) se conecta directamente con la seal GND por lo que
proporcionan nivel 0.
Por otra parte los cuatro pulsadores en situacin de reposo permanecen abiertos generando nivel lgico
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 PICSchool; Manual de Usuario


TEMA 1: EL Hardware

10K

10K

5
4
3
2
1

RP2

1
2
3
4
5

RP3

+5VCC

E0

R14
470

E1

R15
470

E2

E3

E4

E5

E6

E7

R16
470

+5VCC

R13
470

R12
470

R11
470

R10
470

R9
470

1
2
3
4
5
6
7
8

E0
E1
E2
E3
E4
E5
E6
E7
AP18

ENTRADAS
DIGITALES

ENTRADAS DIGITALES

Figura 1-13. Esquema de las entradas digitales.

1.3.6 El generador lgico


Se muestra en la figura 1-14 y est basado en el dispositivo SYM10AA. Es capaz de generar ondas
cuadradas simtricas a frecuencias de 1Hz, 10Hz, 100Hz y 1KHz. Est especialmente indicado para aplicaciones
de control de tiempos y tambin para evaluar y ensayar con los mdulos de captura y comparacin (CCP)
contenidos en ciertos modelos de dispositivos PIC.

Figura 1-14. El generador lgico


El esquema elctrico de dicho generador es el que proporciona su propio fabricante y se muestra en la
figura 1-15. Puede servir como base para mltiples aplicaciones.

1-10

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
FREQ.SELEC.

SW2
R17
+5VCC

+5VCC

U6
4

SEL

1Hz

10K

10Hz
1

C22
100n

VDD

100Hz
1KHz

GND
SY M-10

Figura 1-15. Esquema


del generador lgico
GENERADOR LGICO

OUT

D5

D6

D7

D8

470

3
AP8

4
3
2
1

R23

FREQ. OUT

La seal 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 PICSchool va provisto de una teclado matricial de
4 x 4 teclas. Se trata del perifrico de entrada por excelencia que va a permitir introducir todo tipo de datos para
su posterior procesamiento.

El control del mismo va a suponer el tener que aprender y


utilizar una serie de tcnicas y conceptos que se emplean en las mas
diversas aplicaciones. Manejar conceptos tales como barrido del
teclado, tecla pulsada, rebotes, interrupcin con cada pulsacin,
wake up con cada pulsacin, etc.. darn al usuario la posibilidad de
acometer ambiciosos proyectos de carcter profesional.

Figura 1-16. El Teclado

Un dato relevante a tener en cuenta es que a pesar de disponer de 16 teclas, tan solo son necesarias 8
lneas de E/S del microcontrolador para su total control. Ello es debido a su distribucin matricial. La figura 1-17
muestra el teclado asociado al bloque de conexiones AP21. En dicha figura tambin se puede apreciar la
relacin 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 PICSchool las 8 lneas del teclado se puede conectar a cualquier puerta del PIC, pero
se sugiere conectarlo a las lneas de la puerta B (como se muestra en la figura anterior). Esto es porque la
mencionada puerta tiene, en la mayora de los dispositivos PIC, un par de caractersticas muy interesantes para
el control de un teclado: resistencias pull-up internas para las lneas de entrada y posibilidad de interrupcin
cuando cualquiera de esas lneas de entrada cambie de estado.

1-11

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
Figura 1-17. Esquema de
conexiones del teclado

TECLADO 4 X 4
SW5
F3
F2
F1
F0
C3
C2
C1
C0

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

AP21

8
7
6
5
4
3
2
1

F0

F1

F2

F3

C0

C1

C2

C3

8
7
6
5
4
3
2
1

Vamos
a
analizar
las
conexiones mostradas en la figura 117. Las cuatro filas F0-F3 se conectan
a RB4-RB7 y las cuatro columnas C0C3 se conectan con las lneas RB0RB3. La interseccin fila-columna da
lugar a una tecla en concreto. Es
decir, si se pulsa por ejemplo la tecla
4, supone unir elctricamente la fila F1
con la columna C0, que es tanto como
decir que las lneas RB0 y RB5 del
PIC se han unido.

TECLADO

TECLADO 4 X 4

La rutina software encargada de explorar el teclado tiene que determinar qu tecla se ha pulsado. Para
ello, por ejemplo, se configura las lneas 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 relacin fila-columna que define a cada tecla. Esta tarea, conocida como
barrido de teclado, ha de repetirse de forma constante y peridica. De esta manera y, a la velocidad de trabajo
del PIC, ser posible detectar una pulsacin en cualquier momento.
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 lneas, en estado de reposo, estn a nivel 1. Por otra parte tambin podemos habilitar la interrupcin
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 situacin 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 pulsacin de cualquier tecla.
Efectivamente, puesto que RB0-RB3 (columnas) estn a 0 y RB4-RB7 (filas) estn a 1 gracias a las
resistencias pull-Up internas, cuando se pulse cualquier tecla se produce una interrupcin por cambio de estado
en cualquiera de las lneas RB4-RB7 (filas).
Esa interrupcin provoca la inmediata atencin del microcontrolador que pasa a ejecutar la rutina que se
encargar de averiguar qu tecla se pulso.
1.3.8 Salidas digitales
Estn formadas por 8 diodos led (S0-S7) que sirven para monitorizar el nivel lgico de las lneas a las
que estn conectados. Ver la figura 1-18.

Figura 1-18. Salidas digitales

1-12

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
En el laboratorio PICSchool los leds son
accesibles mediante el conector AP17 tal y como se
muestra en el esquema de la figura 1-19, y se
pueden conectar individualmente a cualquiera de las
lneas del microcontrolador. Estas lneas son
capaces de suministrar del orden de 25mA por lo
que no es necesario ningn circuito adicional de
amplificacin excepto las resistencias de absorcin
contenidas en el pack RP1.
Un nivel lgico 1 por cualquiera de esas
lneas provoca el encendido del led correspondiente.
Un nivel 0 lo apaga. Es una forma muy simple y
econmica de reflejar el estado binario de las lneas
de salida, donde cada led simula la carga que se
desea controlar.

1
2
3
4
5
6
7
8
9

RP1 SIL
330

S7

S6

S5

S4

S3

S2

S1

S0

S0
S1
S2
S3
S4
S5
S6
S7
1
2
3
4
5
6
7
8

Figura 1-19. Esquema de las salidas digitales

AP17

SALIDAS
DIGITALES

SALIDAS DIGITALES

1.3.9 Salidas digitales de alta corriente


El laboratorio PICSchool dispone de un driver de 4 canales formado por el dispositivo L293D y capaz de
proporcionar salidas de alta corriente. Ver la fotografa de la figura 1-20.

Figura 1-20. Las salidas de alta


corriente

En la figura 1-21 se puede apreciar el esquema


elctrico. El dispositivo integrado L293D dispone de 4 canales
amplificadores o drivers capaces de proporcionar salidas de
hasta 0.6 A a 36V cada uno, a partir de seales TTL de baja
corriente.
Mediante el conector AP6 se conectan las seales 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 PICSchool; Manual de Usuario


TEMA 1: EL Hardware

CN7

VDD
U5

GND

L293D

VCC
IN2

IN3

IN4

EN1

GND

16

IN1

GND

JP8

3
OUT1

11

6
OUT2

GND

OUT3

OUT4

14

EN2

S1

12

S2

S3

S4

13

+5VCC
C21

10

15

100n
9

Cabe indicar que el dispositivo L293D


integra en su interior sendos diodos para la
absorcin de corrientes inversas provocadas
por cargas inductivas.

+VM

Mediante estas salidas de alta


corriente el laboratorio PICSchool puede
controlar cargas de consumo elevado como
pueden ser lmparas incandescentes, rels,
motores DC, motores paso a paso, etc..

SALIDAS DEL DRIVER

GND

Mediante el jumper JP8 se selecciona


la tensin de salida para las cargas. En la
posicin 1-2 (por defecto) dicha tensin es de
+5Vcc. En la posicin 2-3 la tensin que
alimenta a las cargas se aplica externamente
a travs de la borna +VM.

+5VCC

1
2
3
4

E1
E2
E3
E4

Figura 1-21. Esquema de las salidas de


alta corriente.

AM PLIFICADOR DE
4 CANALES

AP6
ENTRADAS AL DRIVER

1.3.10 Interfase serie RS-232


Su ubicacin dentro del laboratorio se muestra en la figura 1-22. Consiste en el clsico interfase serie
que permite adaptar los niveles lgicos del microcontrolador a niveles RS-232.

Figura 1-22. Canal serie RS-232


Segn el esquema elctrico mostrado en la figura 1-23 el
interfase est formado por el popular adaptador de niveles MAX232. Mediante el conector AP5 disponemos de las seales de
transmisin y recepcin (TxD y RxD) as como las de control de
flujo CTS y RTS. Estas seales proceden del microcontrolador.
El conector CN5 es un conector DB9 hembra estndar, que
permite realizar la conexin con el perifrico serie. Mediante un
led bicolor (D17/D18) se monitoriza todo tipo de transmisin y/o
recepcin.
Este interfase permite realizar todo tipo de comunicaciones serie entre el laboratorio PICSchool y
cualquier otro equipo mediante el protocolo estndar RS-232. La velocidad de transferencia ir en funcin 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 comunicacin segn los protocolos tanto RS-232
como RS-485. En este ltimo caso basta con montar el sencillo circuito de adaptacin correspondiente, sobre el
mdulo board de montaje sin soldadura con que cuenta PICSchool.

1-14

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
CN5
5
9
4
8
3
7
2
6
1

MAX232

1
3

C17
100n

C1+
C1-

C2+
C2-

V+

V-

16

C15
100n

R1IN
R2IN
R1OUT
R2OUT

Vcc

T1OUT
T2OUT
T1IN
T2IN

RTS
TxD
CTS
RxD

13
8
14
7
4
5

C18
100n

GND

12
9
11
10

C16
100n

15

RTS
RxD
CTS
TxD

U4

INTERFACE RS-232

D17
ROJO (Tx)

D18
VERDE (Rx)

C19
RTS
CTS
RxD
TxD

+5VCC
R5
330

AP5

4
3
2
1

100n

CANAL
SERIE
RS-232

CANAL SERIE

+5VCC

Figura 1-23. Esquema elctrico del interfase RS-232

1.3.11 Interfase bus CAN


Se muestra en la figura 1-24 y est compuesto del dispositivo adaptador MCP2551 que convierte las
seales lgicas segn las especificaciones del bus CAN.

Figura 1-24. Interfase CAN

El bus CAN permite crear una red con


una transferencia de datos muy robusta y fiable
entre el microcontrolador principal (host) y todo
tipo de dispositivos o nodos CAN conectados
entre s mediante 2 hilos. Este protocolo es muy empleado por la industria del automvil y algunos dispositivos
PIC incorporan mediante hardware interno todos los mecanismos necesarios para su implementacin.
En la figura 1-25 se muestra el esquema elctrico de este interfase incorporado en el laboratorio
PICSchool. Por el conector AP10 se proporcionan, procedentes del microcontrolador, las seales RxCAN,
TxCAN que van a parar al circuito de adaptacin MCP2551. Las seales de salida CANH y CANL se obtienen
por el conector CN6 (DB9 macho) y de aqu van a parar a los diferentes nodos de la red. El circuito de
adaptacin es capaz de conectar con hasta 112 nodos. Mediante el jumper JP1 se habilita o no la resistencia
Terminal R2 segn qu lugar ocupe nuestro laboratorio en la red (por defecto habilitada).

1-15

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
CN6

5
9
4
8
3
7
2
6
1

CAN

INTERFACE CAN

R2

120

CANL
VREF

CANH

GND

+5VCC
C24
100n

U7
MCP2551

VCC

10

TxD

RS

R1

RxD

1 JP1

4
3
2
1

VREF
RxCAN
TxCAN

AP10
INTERFACE CAN

Figura 1-25. Esquema del interfase CAN


1.3.12 Pantalla LCD
Se trata de uno de los perifricos mas verstiles e interesantes que dispone el laboratorio PICSchool. Se
muestra en la figura 1-26 y es capaz de visualizar dos lneas de 16 caracteres alfanumricos cada una.

Figura 1-26. La pantalla LCD

Este potente perifrico de salida va a permitir


representar cualquier tipo de mensaje compuesto de
letras, nmeros y smbolos produciendo adems diferentes
efectos de visualizacin como desplazamientos a izquierda
y derecha, parpadeos, scrolls, etc.
La transferencia de informacin entre la pantalla LCD y el microcontrolador se realiza en paralelo en
grupos de 4 u 8 bits de datos y se conecta con las lneas de E/S mediante el conector AP20. El esquema
elctrico se muestra en la figura 1-27.
Existe adems otro conector, el AP9, donde se conectan las seales que controlan el flujo y tipo de
informacin que se transfiere. Con la seal RS se determina si la pantalla recibe el cdigo ASCII del carcter a
visualizar (nivel 1) o bien un cdigo de instruccin (nivel 0). Mediante la seal RW el microcontrolador informa
a la pantalla LCD si se va a leer o escribir sobre la misma. Finalmente, con la seal E, se habilita o no a esa
pantalla. Cuando esta seal vale 0 la pantalla queda desconectada, las lneas de datos quedan en alta
impedancia. Cuando vale 1 , la pantalla queda habilitada para recibir o mandar datos.

1-16

Laboratorio PICSchool; 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
LCD

INTERFACE LCD

VLC
VCC
GND

C23
100n

3
2
1

E
RW
RS
6
5
4

D7
D6
D5
D4
D3
D2
D1
D0
L0
L1
L2
L3
L4
L5
L6
L7

Figura 1-27. Conexiones de


la pantalla LCD

14
13
12
11
10
9
8
7

16
15

LL+

LCD HD44780 compatible

GND

R19
4K7

4
3
2
1

8
7
6
5
4
3
2
1

RS
RW
E

AP20
DATOS

AP9
CONTROL

+5VCC

1.3.13 Conectores para interfase RJ11 y USB


Son simples conectores de propsito general y que se muestran en la fotografa de la figura 1-28.

Figura 1-28. Conectores RJ11 y USB

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


dispositivos externos con el microcontrolador y/o el hardware contenidos
en el laboratorio PICSchool.

Las seales del conector RJ11 estn disponibles en el bloque de conexiones AP19. Este conector se
puede emplear para conectar el laboratorio PICSchool con dispositivos I2C, RS-485, iButton, y un largo etc..
Por su parte el conector USB es del tipo B y sus seales estn disponibles en el bloque de conexiones
AP7. Mediante este conector es posible realizar un interfase estndar con los mltiples dispositivos USB
existentes en el mercado. El jumper JP9 permite que la alimentacin del bus USB se obtenga desde los +5Vcc
del propio Laboratorio (posicin 1-2), la suministre el usuario (posicin 2-3) o bien el bus USB no se alimenta
desde el laboratorio PICSchool (JP9 abierto).
Se recuerda que algunos dispositivos PIC integran en su interior el hardware necesario para
implementar el protocolo USB, y disponen de las seales D+ y D- que se conectarn directamente con el bloque
de conexiones AP7.

1-17

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware

2 1
3 4

CONECTOR USB
TIPO B

CN9
USB TIPO B
1
2
3
4

CN3
RJ11-6
6
5
4
3
2
1

C20
100n

+5VCC
JP9

INTERFACE USB

AP7
INTERFACE USB

INTERFACE RJ11

GND
D+
DVUSB

8
7
6
5
4
3
2
1

6 5 4 3 2 1
AP19

+5VCC

CONECTOR RJ11-6

INTERFACE
RJ11

1
2
3
4

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


1.3.14 Seccin de grabacin
Se muestra en la fotografa de la figura 1-30 y se encarga, mediante el software oportuno, de realizar los
ciclos de lectura/grabacin del dispositivo PIC contenido en el laboratorio.

Figura 1-30. La seccin de grabacin


El esquema por bloques de la figura 1-31 trata de sintetizar el funcionamiento del circuito de grabacin que
dispone el laboratorio PICSchool.

1-18

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware
Todos los dispositivos PIC disponen de 3 seales para la
lectura/grabacin de la memoria de programa, la memoria
EEPROM para datos y la memoria de configuracin. La seal
PICDATA permite transferir los datos de forma serie y sncrona
entre el PIC y el hardware de grabacin, la seal PICCLK
transporta la seal de reloj para el sincronismo de los datos y la
seal PICMCLR, que inicia los ciclos de lectura/grabacin y
aplica la tensin Vpp necesaria. Estas tres seales son adems
compartidas y empleadas como lneas de E/S de propsito
general una vez que el PIC ha sido grabado.
Estas tres seales se conectan con tres fuentes
diferentes segn el modo de operacin seleccionado mediante el
conmutador SW4.

Figura 1-31. Esquema por bloques del


circuito de grabacin
El modo RUN se emplea cuando el dispositivo est grabado. Las tres seales del PIC anteriormente
mencionadas se consideran lneas de E/S de propsito general y estn disponibles a travs de los bloques de
conexin correspondientes, para ser utilizadas por los perifricos de la aplicacin.
En el modo ICSP el laboratorio queda configurado para que el PIC actual en l insertado se pueda
leer/grabar a travs de las seales que se aplican mediante el conector RJ11 (ICSP- In Circuit Serial
Programing). Estas seales a su vez las debe proporcionar un grabador externo dotado de su correspondiente
software de grabacin. Se puede emplear el mdulo ICD2 de Microchip junto con el entorno integrado de
desarrollo MPLAB, que se puede obtener de forma gratuita desde www.microchip.com. El mdulo ICD2 adems
de grabar dispositivos es capaz de realizar depuracin en circuito en tiempo real, con ciertos modelos de
dispositivos PIC.
En el modo PC la lectura/grabacin del PIC se realiza a travs de las seales del canal serie de un PC
dotado del correspondiente software de grabacin. Un diodo led, el Vpp ON, indica transferencia de datos entre
el PC y el laboratorio. Entre los mltiples 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 grabacin determinado grabe mltiples dispositivos y
de diferentes familias, es necesario que tambin haya compatibilidad a nivel de hardware. Esta compatibilidad
viene dada fundamentalmente por la distribucin de patillas del dispositivo en cuestin, tal y como se explic en
el apartado 1.3.3. En el laboratorio PICSchool se admiten todos los dispositivos PICs de 8, 18, 28 y 40 patillas
distribuidas como se menciona en dicho apartado y que tambin sean soportados por el software de grabacin
empleado.

1-19

Laboratorio PICSchool; Manual de Usuario


TEMA 1: EL Hardware

1-20

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
TEMA 2: Software de grabacin
2.1 INTRODUCCION
Este tema est dedicado a comentar las caractersticas mas relevantes de diferente software de
grabacin de distribucin gratuita y que puede emplearse desde el PC para la lectura/grabacin de dispositivos
PIC en el laboratorio PICSchool. Por los buenos resultados obtenidos, vamos a referirnos al WinPIC800, el
IcProg y el MPLAB.
No tratamos de reemplazar el manual de usuario de dichos programas, simplemente queremos
proporcionar un resumen de las operaciones bsicas de los mismos. Se recomienda que sea el usuario quien se
descargue y obtenga los correspondientes manuales, si los hubiera, de cada software as como las
actualizaciones mas recientes.
2.2 EL SOFTWARE DE GRABACION WINPIC800
Se trata de un software de libre distribucin desarrollado por Sisco Benach que se puede descargar
desde el sitio http://perso.wanadoo.es/siscobf/winpic800.htm Es conveniente hacerlo de forma peridica con
objeto de obtener la ltima versin disponible. Se descarga un fichero ZIP que contiene el archivo ejecutable,
archivos de configuracin, lenguajes, etc.. Se aconseja descomprimirlo todo sobre una misma carpeta (p.e.
WinPic800) y crear un acceso directo al ejecutable.
El programa WINPIC800 es un proyecto abierto sujeto a constantes ampliaciones y mejoras, que se
adapta a diferentes tipos de grabadores. En la opcin Acerca de.. del men de Ayuda hay un enlace directo al
foro Todo PIC donde gran cantidad de usuarios y entusiastas exponen sus dudas tanto de hardware como de
software, comentarios, posibles mejoras, bugs, soluciones, etc.. De esta forma el programa se encuentra en
permanente evolucin.
En Ingeniera de Microsistemas Programados S.L., aunque no proporcionamos su soporte tcnico,
hemos analizado el software WinPic800 con el laboratorio PICSchool. Tras chequear y comprobar su
funcionamiento con un buen nmero de dispositivos PIC de las familias 12FXXX, 16FXXX y 18FXXXX, podemos
afirmar que hemos obtenido unos muy buenos resultados.
Aunque poco a poco se le van aadiendo nuevos idiomas, el programa se presenta totalmente en
castellano, es muy intuitivo, rpido en la grabacin y eficaz en sus posibilidades.
2.2.1 Instalacin
WinPic800 se presenta en un nico fichero ZIP. Para la instalacin debe descomprimirse sobre una
carpeta (p.e. WinPic800) donde se ubicarn 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 grabacin WinPic800, en versin 3.56.c,
donde se encuentran las diferentes reas de trabajo, opciones y mens.
1.- Opciones del men principal
Archivo: Se seleccionan las distintas opciones que permiten abrir, guardar, cerrar, etc. los archivos de
trabajo que contienen el contenido HEX a grabar en el dispositivo PIC.
Edicin: 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.
Configuracin: Se selecciona el tipo de hardware grabador que el software debe controlar. Tambin se
seleccionan diferentes opciones de control.

2-1

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
Idiomas: Se selecciona el lenguaje empleado por el software WinPic800.
Ayuda: Se obtiene informacin adicional del software.

Figura 2-1. Pantalla de trabajo del software WinPic800


2.-

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

3.-

Barra de comandos
Mediante el empleo de estos botones se puede ejecutar de una forma rpida y fcil la mayor parte de los
comandos contenidos en los mens Archivo y Dispositivo: Abrir fichero, Actualizar, Guardar fichero, Leer
PIC, Grabar PIC, Verificar PIC, Borrar PIC, configurar hardware y software.

4.-

Seleccin del Buffer o rea de memoria


Mediante estas tres pestaas, el usuario puede conmutar entre cualquiera de las tres reas de memoria
o buffers de que constan los dispositivos PIC.
Cdigo: Representa a la memoria OTP/EEPROM/FLASH de programa. Sobre este buffer se visualiza el
contenido de la memoria de programa del PIC recin ledo o bien el contenido que se desea grabar
sobre ese PIC y que procede de un archivo *.HEX recin abierto. El contenido se representa en cdigo
hexadecimal y ASCII y puede ser de 12, 14 o 16 bits por cada posicin. El tamao de este buffer vara en
funcin del modelo de PIC seleccionado.

2-2

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
Datos: Representa a la memoria EEPROM de datos. Sobre este buffer se visualiza el contenido de la
memoria EEPROM de datos del PIC recin ledo o bien el contenido que se desea grabar sobre ese PIC
y que procede de un archivo *.HEX recin abierto. El contenido se representa en cdigo hexadecimal y
ASCII con 8 bits. El tamao de este buffer vara en funcin del modelo de PIC seleccionado y puede
quedar deshabilitado si dicho modelo no dispone internamente de memoria EEPROM para datos.
Config.: Representa a la memoria de configuracin. Sobre este buffer se almacena y visualiza el
contenido de la memoria de configuracin del PIC recin ledo o bien la configuracin que se desea
grabar sobre ese PIC y que procede de un archivo *.HEX recin abierto. La representacin de este buffer
se realiza en modo binario de forma que se puedan activar/desactivar individualmente los distintos bits
de las distintas palabras de configuracin. El nmero de bits representados vara en funcin del modelo
de PIC.
5.-

Botones de edicin
Este conjunto de botones permiten de una forma fcil y rpida realizar tareas propias de edicin del rea
o buffer de memoria seleccionado: Copiar, Pegar, Cortar, Llenar buffer, Marcar, Buscar y Buscar
siguiente.

6.-

Areas de memoria o buffers


Esta es la zona de la pantalla de trabajo donde se visualizan y/o modifican los contenidos del rea de
memoria seleccionada. En el rea de programa o cdigo la visualizacin se representa en formato
hexadecimal y ASCII con 12, 14 o 16 bits, segn el modelo de PIC seleccionado. El rea de datos se
representa siempre en formato de 8 bits en hexadecimal y ASCII y slo es visible si el modelo de PIC
dispone realmente de memoria EEPROM para los datos.
El contenido de cualquier posicin de cualquiera de estas dos reas se puede modificar a nivel
individual. Basta con hacer click en la posicin deseada y teclear el nuevo valor en hex. o en ASCII.
Tambin se pueden modificar a nivel de bloque mediante las opciones de llenado de Buffer, donde se
pide una direccin inicial, otra final y el valor a almacenar.
Por su parte el rea de configuracin representa los contenidos a nivel binario, donde es posible activar o
desactivar individualmente cada uno de los bits de acuerdo a la configuracin deseada.

7.-

Botones de verificacin
Permite leer el valor ID del dispositivo, visualizar una imagen de cmo se debe insertar el PIC en el
zcalo segn el tipo de grabador empleado (si la imagen est disponible), verificar el hardware del
grabador, e identificar el modelo de PIC.

2.2.2 Configuracin del hardware


Una de las caractersticas 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 PICSchool. Ello es posible gracias a
su flexible sistema de configuracin.
Para grabar la mayor parte de dispositivos PIC se emplean bsicamente 5 seales:
VDD

Alimentacin de +5V

GND

Tierra o 0V

MCLR/Vpp

Seal de Reset por donde adems se aplica la tensin VPP de grabacin.

PGD

Seal de E/S por donde, de forma sncrona, se transfieren al PIC los distintos comandos y datos
para su lectura (DataOut) y/o grabacin (DataIn).

2-3

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
PGC

Seal de reloj para sincronizar los comandos y datos que se aplican al PIC durante la lectura o
grabacin.

Estas seales las debe generar el propio software de grabacin y aplicarlas al circuito grabador que
contiene el PIC a grabar. El WinPic800 puede generar esas seales a travs del canal paralelo del PC, del canal
serie o, mediante el interface apropiado, a travs de un puerto USB. Todo ello se puede configurar mediante la
opcin Configuracin/Hardware del men principal. Incluso, es posible configurar y determinar la asociacin y
polarizacin entre las seales anteriores de grabacin y las seales que ofrecen los canales serie/paralelo del
PC, de forma que se pueda adaptar a la mayora de grabadores disponibles.
La figura 2-2 muestra la configuracin necesaria para controlar el circuito de grabacin del laboratorio
PICSchool con el software WinPic800.

Figura 2-2. Configuracin de WinPic800 para adaptarlo PICSchool


A la vista de la figura se puede deducir la configuracin necesaria. En primer lugar se emplear el canal
serie COMx como interfase con el PC. La seal de salida de datos a grabar (PGD = Data) est asociada con el
bit DTR del canal serie. La seal de entrada de datos ledos (PGD = DataIn) se asocia al bit CTS. La seal
sncrona de reloj (PGC = Clock) queda asociada con el bit RTS. Estas tres seales son empleadas de forma
invertida por el hardware de grabacin de PICSchool, por lo que el software WinPic800 tambin las debe invertir.
Para ello estn activadas las casillas correspondientes. Por ltimo, la seal de grabacin (MCLR/Vpp) queda
asociada con el bit TXD del canal serie del PC.
Habilitando o no las casillas apropiadas en la columna Test, se pueden activar o desactivar
individualmente las seales asociadas a modo de comprobacin. Los indicadores luminosos de la columna
Estado nos indican el estado actual de dichas seales.
Deshabilitando el Bloqueo de configuracin se puede hacer cualquier cambio sobre las seales
mencionadas y ajustarlas a las necesidades del hardware segn el grabador disponible. Una vez configurado el
sistema, puede generarse un fichero de configuracin 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. PICSchool) y queda registrado en una lista de ficheros con la configuracin de otros
tantos grabadores.

2-4

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
2.2.3 Configuracin del Software
Existen unas opciones de
configuracin a nivel de software que
el usuario puede habilitar o no segn
preferencias. Estas se muestran en la
figura 2-3.

Figura 2-3. Opciones de


configuracin software

Programar. Permite activar o no las opciones de Verificar tras la programacin y Avisar antes de
borrar y programar. En el primer caso, al activarse, se fuerza a que el software verifique de forma
automtica el contenido del PIC recin grabado, comparndolo con el contenido actual de los
distintos buffer o reas de memoria.

Dispositivo. Permite activar o no las opciones de Usar autoseleccin 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 deteccin se basa en que los modelos de PIC mas recientes
integran un cdigo de identificacin. El modelo detectado pasa automticamente a ser el
seleccionado. Activando la segunda opcin se trata de detectar el PIC nada mas ejecutar WinPic800.
Hay que indicar que no todos los modelos de PIC integran el cdigo de identificacin. 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 grabacin por si se hubiera
realizado alguna modificacin de los buffers de memoria y ajustar los ficheros *.HEX si se trata de
dispositivos de la familia 18FXXX.

2.2.4 Tareas mas comunes


Bsicamente se ejecutan mediante los distintos botones disponibles sin necesidad de navegar entre los
distintos mens. Ver la figura 2-4.

Figura 2-4. Botones de las tareas mas comunes


1.- Abrir: Accede al clsico navegador de windows que permite seleccionar el archivo que se desea abrir.
Dicho archivo debe tener la extensin *.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 grabacin del PIC. Este botn tambin permite acceder de forma rpida a los archivos *.HEX
recientemente abiertos.
2.- Actualizar Archivo: Este comando permite restaurar los distintos buffer de memoria de WinPic800 despus
de haber sufrido cualquier tipo de modificacin, con el contenido del archivo *.HEX actual.

2-5

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
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 (cdigo, datos y
configuracin) 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, dejndolas en los valores originales
de fbrica. Este comando slo es operativo en los dispositivos con memoria EEPROM/FLASH. Los
dispositivos con memoria OTP no pueden ser borrados.
8.- Test Hardware: Realiza una comprobacin del hardware del grabador en uso (PICSchool).
9.- Detectar PIC: Trata de averiguar el modelo de PIC que est instalado en el grabador y lo selecciona como
modelo actual si esta opcin est activada en Configuracin / Software. No todos los modelos de PIC
integran su propia identificacin. En este caso la deteccin resulta imposible.
2.3 EL SOFTWARE DE GRABACION ICPROG
Se trata de otro programa de libre distribucin, multi-lenguaje y apto para un gran nmero de grabadores
entre los que se encuentra el laboratorio PICSchool. Desarrollado por Bonny Gijzen se puede descargar desde
el sitio www.ic-prog.com. Se recomienda visitar peridicamente esa direccin con objeto de obtener las versiones
mas actualizadas.
En Ingeniera de Microsistemas Programados S.L., aunque no proporcionamos su soporte tcnico,
hemos analizado el software IcProg con el PICSchool. Tras chequear y comprobar su funcionamiento con un
buen nmero de dispositivos PIC de las familias 16FXXX y 18FXXXX, podemos afirmar que hemos obtenido
unos buenos resultados.
2.3.1 Instalacin
La instalacin de IcProg requiere descargarse desde www.ic-prog.com tres ficheros ZIP comprimidos. El
fichero Icprogxxxx.ZIP contiene el ejecutable, donde xxxx representa la versin 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, obtenindose 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 traduccin al castellano de la ayuda y est realizada por Carlos
Chueke. Por ltimo se puede hacer un acceso directo al fichero ejecutable para una rpida ejecucin.
La figura 2-5 muestra la pantalla de trabajo del IcProg con las diferentes reas y opciones disponibles en
la versin 1.05D.

2-6

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin

Figura 2-5. Pantalla de trabajo del software IcProg


1.- Opciones del men principal
Archivo: Presenta las clsicas 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 recin utilizados. Imprimir realiza una copia
impresa del contenido actual del buffer de memoria seleccionado. Cerrar finaliza la sesin de trabajo con
IcProg.
Edicin: 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 idnticas 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
informacin con el PIC a leer/grabar. Mediante las opciones aqu disponibles es posible seleccionar uno
de entre los 5 posibles buffer como buffer actual. Tambin 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 rpida 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 seales de grabacin. Opciones permite
seleccionar diferentes parmetros de trabajo: confirmaciones, avisos, lenguajes, programacin, etc..).

2-7

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
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 configuracin). Programar
bits de configuracin permite modificar nicamente la palabra de configuracin. Borrar todo borra el rea
de cdigo, de datos y configuracin 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 visualizacin. Ensamblador visualiza el rea de programa en forma
de nemnicos, con las instrucciones y los operandos sitas en el buffer activo. Hexadecimal visualiza el
contenido del rea de cdigo y de datos del buffer activo en formato hexadecimal. Posicin de dispositivo
presenta una imagen de cmo se debe insertar el dispositivo en el zcalo 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. Informacin dispositivo presenta un breve resumen de las caractersticas mas
relevantes del dispositivo seleccionado. Refrescar actualiza el buffer activo.
Ayuda: Presenta las opciones de ayuda que explican el manejo del software IcProg.
2.- Seleccin de dispositivo
Mediante esta persiana despegable se selecciona el modelo del dispositivo a leer/grabar.
3.- Barra de comandos
Mediante el empleo de estos botones se puede ejecutar de una forma rpida y fcil la mayor parte de los
comandos mas utilizados: Abrir fichero, Guardar fichero, Leer PIC, Grabar PIC, Verificar PIC, Borrar PIC,
Test de Hardware , etc..
4.- Palabra de configuracin
En esta rea queda reflejado el estado de la palabra de configuracin del PIC recin ledo o bien el valor
de configuracin que se desea grabar en ese dispositivo. El aspecto de la palabra de configuracin
puede variar de un modelo otro en funcin de las caractersticas del PIC. En general se pueden activar o
desactivar de forma individual los distintos bits que permiten configurar el PIC de una determinada
manera.
5.- Area de cdigo
Representa a la memoria OTP/EEPROM/FLASH de programa. Sobre este buffer se visualiza el
contenido de la memoria de programa del PIC recin ledo o bien el contenido que se desea grabar
sobre ese PIC y que procede de un archivo *.HEX recin abierto. El contenido se puede visualizar en
cdigo hexadecimal y ASCII y puede ser de 12, 14 o 16 bits por cada posicin. El tamao de este buffer
vara en funcin del modelo de PIC seleccionado. Tambin puede ser visualizado en formato
nemotcnico representando las instrucciones y sus operadores. Para modificar el contenido de cualquier
posicin, basta con situar el cursor en la misma y teclear el nuevo valor. Esto se puede hacer tanto en
hexadecimal como en ASCII.
6.- Area de datos
Representa a la memoria EEPROM de datos. Sobre este buffer se visualiza el contenido de la memoria
EEPROM de datos del PIC recin ledo o bien el contenido que se desea grabar sobre ese PIC y que
procede de un archivo *.HEX recin abierto. El contenido se representa en cdigo hexadecimal y ASCII
con 8 bits. El tamao de este buffer vara en funcin 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 posicin, 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 PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
7.- Pestaas de seleccin
El IcProg dispone de 5 buffer diferentes que representan la memoria de programa y la de datos.
Mediante cualquiera de estas pestaas se selecciona el buffer deseado. Disponer de varios buffer
permite acceder rpidamente a informacin que proviene, p.e. de un PIC recin ledo por un lado y de un
fichero *.HEX recin abierto por otro.
2.3.2 Configuracin del Hardware
IcProg es un software que se adapta a numerosos grabadores comerciales o que tengan un hardware
compatible. Mediante la opcin Tipo de Hardware del men Ajustes es posible configurar IcProg al tipo de
grabador disponible. En la figura 2-6 se muestra la configuracin necesaria para adaptarlo con el circuito de
grabacin de PICSchool que nos ocupa.

Figura 2-6. Configuracin de IcProg


para adaptarlo a PICSchool

Mediante el men despegable se selecciona el modelo JDM. Se trata de un programador estndar que
se gobierna desde el canal serie, al igual que el nuestro laboratorio PICSchool. Para una correcta adaptacin
con ste, es necesario activar la inversin de las seales Data Out, Data In y Clock, tal y como se muestra en la
imagen.
El botn deslizante permite ajustar entre 1 y 40 el retardo en las transiciones de las lneas de I/O. Un
valor de orientacin 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 grabacin con xito del dispositivo y el
menor retardo posible.
2.3.3 Configuracin del software
Los usuarios de Windows NT, W2000 y WXP deben guardar en la misma carpeta que IcProg, el driver
icprog.sys. Sobre el icono que representa el archivo ejecutable icprogxxxx.exe se hace doble click con el botn
derecho y se selecciona la opcin Propiedades. Debe aparecer una ventana como la mostrada en la figura 2-7.
Seleccionamos la pestaa 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 PICSchool; Manual de Usuario


TEMA 2: Software de grabacin

Figura 2-7. Propiedades de


IcProg para ejecutarlo desde
WNT, W2000 y WXP

Finalmente, desde Opciones del men Ajuste se activa la pestaa Miscelnea y se realizan los
ajustes mostrados en la figura 2-8, consistentes en habilitar el driver para NT/2000/XP.

Figura 2-8. Habilitando el


driver para NT/2000/XP

Mediante la opcin Prueba de Hardware del men Ajustes es posible comprobar el correcto
funcionamiento tanto de PICSchool como la comunicacin con IcProg. La Figura 2-9 muestra una ventana en la
que es posible activar/desactivar individualmente cada una de las seales empleadas en la grabacin de un
dispositivo PIC.

2-10

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin

Figura 2-9. Comprobando


el hardware

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

Figura 2-10. Personalizando


el software IcProg

2.3.4 Tareas mas comunes


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

Figura 2-11. Botones con las tareas mas comunes

2-11

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
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 aplicacin.

2.-

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

3.-

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

4.-

Opciones: Abre la pantalla de opciones que permiten el ajuste de diferentes parmetros 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 configuracin)
y lo deposita sobre el buffer activo.

6.-

Programar Todo: Graba sobre las diferentes reas de memoria del PIC (programa, datos y configuracin)
el contenido actual del buffer activo.

7.-

Borrar Todo: Borra el contenido de las diferentes reas de memoria del Pic (programa, datos y
configuracin), dejndolo en blanco.

8.-

Verificar: Compara el contenido de las diferentes reas de memoria del PIC (programa, datos y
configuracin) con el contenido del buffer activado. Genera un informe con la 1 posicin cuyo contenido
no coincida con el del buffer.

9.-

Asistente Smartcard: Presenta una pantalla para la gestin de tarjetas de memoria tipo SmartCard. No
es til con PICSchool.

10.-

Vista ensamblador: Cambia la visualizacin del rea de datos presentando las instrucciones mediante
nemnicos. Slo es vlido con los dispositivos PIC de 12 y 14 bits de la familia 12XXXX y 16XXXX.

11.-

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

2.4 EL DEPURADOR EN CIRCUITO ICD2


Se trata de una herramienta semi profesional que tiene dos finalidades. Por un lado es un depurador en
circuito que facilita la depuracin y puesta a punto del programa de aplicacin, 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 grabacin. Esto es lo que nos
interesa bajo el punto de vista del laboratorio PICSchool 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 pgina de forma peridica para descargar las versiones mas actuales de dicho software.
Las imgenes y comentarios del presente texto son relativos a la versin 7.30.
La figura 2-12 muestra la conexin entre el mdulo ICD2 y el laboratorio PICSchool. Basta emplear el
cable RJ11 que se suministra con el ICD2 para conectar ambos equipos a travs de los correspondientes
conectores. Una vez realizada la instalacin, PICSchool ser capaz de grabar todos los dispositivos PIC de la
familia 12Fxxx, 16Fxxx y 18Fxxx que soporta el propio ICD2 y ser quin, bajo el control del software MPLAB IDE,
suministre las seales necesarias para la grabacin: Vcc, GND, Vpp, PGC y PGD.

2-12

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin

Figura 2-12. Conexin de PICSchool con el mdulo ICD2


2.4.1 Instalacin
Desde www.microchip.com se debe bajar la versin mas actualizada del MPLAB IDE que consistir en
un fichero *.ZIP. Tambin se puede descargar el manual de usuario completo (en ingls). Una vez
descomprimido se ejecuta la instalacin, debindose seguir los pasos que se van indicando a lo largo del
proceso.
En dicho proceso tambin se orienta cmo instalar los drivers necesarios para el control del mdulo
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 informacin referente a la
instalacin y empleo que acompaa al software MPLAB IDE.
2.4.2 Configuracin
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 opcin Programmer/Select
Programmer/MPLABICD2, tal y como se muestra en la figura 2-13.

2-13

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin

Figura 2-13. Seleccin


del ICD2 como grabador
por defecto

Mediante Programmer/Settings se activa una ventana similar a la de la figura 2-14 en la que se deben
ajustar diferentes parmetros de configuracin del ICD2.
1.-

Status: Visualizar el estado de la conexin entre el MPLAB IDE y el mdulo 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 comunicacin.

3.-

Limitations: Presenta un pequeo informe de las restricciones que tiene el ICD2 respecto al modelo de
PIC seleccionado.

4.-

Power: Con esta opcin se determina si el ICD2 se encargar de alimentar al circuito externo, en este
caso el PICSchool. Se recomienda tener desactivada esta opcin.

5.-

Program: Permite seleccionar qu rangos y reas de memoria van a ser tratados en los distintos procesos
de lectura/grabacin del PIC seleccionado.

6.-

Versions: Genera un informe sobre la versin del MPLAB ICD2, tipo de firmware, versin del mismo, etc..

7.-

Warnings: Permite habilitar o no la visualizacin de los diferentes tipos de avisos que se pueden generar
durante una sesin de trabajo con ICD2.

Figura 2-14. Ajustes de


configuracin para el ICD2

2-14

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
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 configuracin.

Figura 2-15 Seleccin de dispositivo

1.-

Select Device: Permite seleccionar el tipo de dispositivo a emplear. Mediante una ventana como la
mostrada en la figura 2-16, se informa de qu herramientas y grabadores son soportados segn el PIC
seleccionado.
Las herramientas iluminadas en verde indican que son totalmente operativas con el modelo seleccionado.
Las que estn marcadas en amarillo indican que son soportadas pero en fase beta de pruebas.
Finalmente, aquellas herramientas iluminadas en rojo indican que no estn disponibles para el modelo de
PIC seleccionado.

Figura 2-16. Seleccin de dispositivo

2.-

Configuration bits: Abre una ventana en la que se debe seleccionar los diferentes parmetros de
configuracin del PIC: tipo de oscilador, proteccin de cdigo, activacin del WDT, etc..

3.-

ID Memory: Permite introducir el valor de identificacin del dispositivo

2-15

Laboratorio PICSchool; Manual de Usuario


TEMA 2: Software de grabacin
2.4.3 Tareas mas comunes
Se realizan con las distintas opciones disponibles en el men Programmer, y son las mostradas en la
figura 2-17.

Figura 2-17. Desde el men Programmer se


pueden seleccionar las tareas mas comunes
para la lectura/grabacin del dispositivo PIC
seleccionado

1.-

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

2.-

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

3.-

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

4.-

Erase Part: Borra todo el contenido del PIC.

5.-

Blank Check: Comprueba que las distintas reas de memoria del PIC estn borradas, generando un
informe de las posiciones que no estn.

6.-

Connect: Establece la comunicacin entre el software MPLAB y el mdulo ICD2 al que a su vez est
conectado el laboratorio PICSchool, con el PIC a leer/grabar. Es posible que, segn el modelo de PIC
elegido, sea necesario actualizar el firmware interno del ICD2 con una versin que acepte a dicho modelo.
Esto es un proceso automtico y transparente. Cuando la actualizacin 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 PICSchool; 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 aplicacin. Tambin vamos a proponer una serie de ejemplos bsicos con
programas de carcter didctico que se grabarn y ejecutarn sobre el dispositivo PIC 16F876 que incorpora de
serie el laboratorio PICSchool. El organigrama mostrado en la figura 3-1 trata de resumir los pasos necesarios.

Figura 3-1. Esquema bsico de trabajo


1

El primer paso para el diseo del software de una aplicacin es editar el programa fuente. Para
ello se puede emplear cualquier editor de textos tpico 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 programacin que
estemos empleando: Ensamblador, C, BASIC, etc.. La extensin del archivo que contiene el
programa fuente suele indicar el tipo de lenguaje para el que est escrito (*.ASM, *.C, *.BAS,
etc..).

Ensamblar y/o compilar consiste en traducir el programa fuente escrito mediante el editor de
textos, en su equivalente en cdigo mquina o hexadecimal. Para ello existen diferentes
herramientas segn el tipo de lenguaje empleado. Las herramientas para traducir cdigo
ensamblador suelen ser gratuitas y estn disponibles en la web del fabricante. En el caso de
Microchip existen versiones para MS-DOS (MPASM) para Windows (MPASMWIN) o la versin
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 evaluacin.

En el proceso de traduccin se pueden producir errores. Estos errores son de tipo sintctico. Es
decir, la herramienta empleada para la traduccin ha encontrado alguna incongruencia en el

3-1

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
programa fuente, instrucciones desconocidas, parmetros incorrectos, etc. Es algo as como si
se detectaran faltas de ortografa. 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 ms importante, contiene el resultado de la
traduccin, es decir el cdigo mquina o hexadecimal. La extensin de este archivo es *.HEX. El
resto de archivos suelen ser archivos auxiliares y contienen informacin de la traduccin,
listados, informacin para simulacin, etc.. Suelen ser necesarios y empleados por las
herramientas de depuracin, emulacin y/o simulacin.
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 aplicacin recin obtenido y, en su
defecto, facilitar la localizacin 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 anlisis en tiempo real del resultado de
la ejecucin. El emulador se conecta fsicamente en el hardware de la aplicacin sustituyendo a
todos los efectos, sin ningn tipo de restriccin, al microcontrolador que en dicho hardware
debiera estar insertado. Mediante el software de emulacin adecuado el emulador ejecuta el
programa de aplicacin como si del propio microcontrolador se tratara, controlando en tiempo
real a todos los perifricos existentes. Es posible detener la ejecucin en un momento
determinado (breakpoint), ejecutar paso a paso todas las instrucciones, visualizar/modificar los
registros internos, analizar tiempos de ejecucin, registrar sucesos o eventos externos y un largo
etctera.
En el caso de los PICs, Microchip dispone de sendos emuladores como el IC2000 y el IC4000
cuyo control se realiza mediante el conocido entorno integrado MPLAB. Tambin existen varios
fabricantes o terceras partes que comercializan este tipo de herramientas para estos
microcontroladores.
En un trmino 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 depuracin integrados. Basta un sencillo hardware
externo llamado ICD para comunicar dichos mecanismos con el software de depuracin. Gracias
al ICD el programa de aplicacin del usuario se graba fsicamente 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 perifricos que hubiera en dicho hardware. El ICD
tambin permite el empleo de puntos de parada (breakpoints), ejecucin paso a paso,
visualizacin/modificacin de registros, etc..
Puesto que el ICD es una herramienta de bajo coste, tambin tiene una serie de limitaciones o
restricciones. Dado que se emplean algunos recursos del propio microcontrolador, estos no
estn disponibles para el usuario. Consume parte del rea de programa, algunas lneas de E/S y,
cada vez que se modifique el programa de aplicacin, es necesario volver a regrabarlo sobre el
microcontrolador con el desgaste que esto supone. En ningn caso se puede por tanto comparar
un Depurador con un Emulador. Microchip dispone del depurador ICD2 que tambin se
controla mediante el software de depuracin MPLAB.
Por ltimo nos encontramos con las herramientas de simulacin. Es la solucin 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 aplicacin. Naturalmente esta ejecucin
NO se realiza en tiempo real ni tampoco podemos conectar perifricos reales al PC.
El ya mencionado entorno de desarrollo MPLAB de microchip tambin tiene la posibilidad de
hacer simulacin de los diferentes dispositivos PIC existentes. Es una solucin bastante vlida a
nivel didctico en ciclos formativos y, sobre todo, es gratuita.

3-2

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
5

Sea cual sea la herramienta de emulacin/depuracin/simulacin seleccionada, el objetivo final


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

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


ejecutable (*.HEX) se procede a grabarlo en la memoria interna del microcontrolador. Para ello
se recurre a un grabador dotado del software de grabacin oportuno.
Por supuesto que el entorno de desarrollo MPLAB tambin tiene la posibilidad de grabar
dispositivos. Concretamente permite la conexin con varios equipos de grabacin diseados y
comercializados por Microchip: PICSTART Plus, MPLAB ICD2, MPLAB PM3, PROMATE II y
PICkit 1.

El ltimo paso consiste en hacer las pruebas finales y definitivas. El microcontrolador recin
grabado se inserta en el hardware final de la aplicacin donde se verifica el correcto
funcionamiento de todo el conjunto hardware/software.

El laboratorio PICSchool es una potente y autnoma herramienta hardware para el desarrollo de


aplicaciones basadas en microcontroladores PIC. Admite los dispositivos mas representativos, posee un buen
nmero de perifricos con un flexible sistema para su interconexin, dispone de un rea para el montaje rpido
sin soldaduras y es capaz de grabar el dispositivo PIC insertado en su correspondiente zcalo.
Con PICSchool es posible hacer emulacin si se dispone de la herramienta correspondiente, el
emulador. Tambin admite la conexin con el depurador en circuito ICD2 (se vende por separado), lo que facilita
la depuracin y puesta en marcha del programa as como su grabacin. Finalmente, como PICSchool posee de
su propio sistema de grabacin, basta con disponer de un software de simulacin y otro de grabacin para el
desarrollo de la aplicacin. Es la opcin mas econmica y en la que se va a basar el presente tutorial.
3.2 TUTORIAL
En Ingeniera de Microsistemas Programados S.L hemos optado por el empleo del software MPLAB para
el desarrollo del presente tutorial, por ser un Entorno Integrado de Desarrollo (IDE) muy completo:
Es totalmente gratuito y desde www.microchip.com
se pueden obtener las diferentes
actualizaciones.
Permite realizar todas las tareas necesarias en un proyecto: editar el programa fuente, ensamblar
y/o compilar (si se dispone del compilador) el programa fuente, simular el funcionamiento del
programa ejecutable, etc..
Si se dispone de las herramientas hardware correspondientes tambin es posible emular, depurar
y grabar el dispositivo.
Como software de grabacin vamos a emplear el WinPIC800 por los siguientes motivos:
Es de libre distribucin y desde http://perso.wanadoo.es/siscobf/winpic800.htm se pueden obtener
las distintas actualizaciones.
Est en constante evolucin y cuenta con un interesante foro.
Se adapta perfectamente al hardware de grabacin contenido en el laboratorio PICSchool.
Admite los dispositivos PIC mas relevantes.
Se supone que ambos programas estn debidamente instalados siguiendo las instrucciones de
instalacin. Tambin se sugiere crear una carpeta llamada Ejemplos para PICSchool y copiar en ella todos los
programas fuente *.ASM de ejemplo contenidos en el CD-ROM que viene con el equipo.

3-3

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
3.2.1. Creacin de un proyecto
Cuando se est en fase de desarrollo de un programa de aplicacin, se genera una abundante
informacin relacionada con el mismo que se aglutina en torno a lo que se llama un Proyecto. Un proyecto no
es mas que un fichero en el que queda reflejado una importante serie de datos relacionados con esa aplicacin:

Tipo de procesador empleado.


Lenguaje de programacin.
Nombre del fichero que contiene el programa fuente.
Ficheros que se obtienen tras el ensamblado y/o compilacin: ejecutables (*.HEX), listados
(*.LST), errores (*.ERR), informacin de simulacin, etc..
Entorno de trabajo
Parmetros de configuracin, etc...
De esta forma, cuando se retoma el trabajo de un da para otro, basta con abrir simplemente el proyecto
en cuestin. Automticamente y de forma rpida y cmoda aparece el entorno de trabajo tal y como se dej.
El entorno de desarrollo MPLAB dispone de un cmodo gestor de proyectos que, tal y como se muestra
en la figura 3-2, se inicia mediante la opcin Project/Project Wizard del men principal.

Figura 3-2. Iniciando el gestor de proyectos


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

Definir el tipo de microcontrolador que se va a emplear en la aplicacin. Ver la figura 3-3.

3-4

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial

Aparece una lista despegable con todos


los dispositivos admitidos en la versin actual de
MPLAB. Estamos empleando la versin 7.30 y el
dispositivo seleccionado es el PIC16F876A que
es el que incorpora de serie el laboratorio
PICSchool .
Se pulsa el botn Siguiente para seguir
con el proceso.
Figura 3-3. Seleccin del dispositivo

Se selecciona la herramienta software que se va a emplear en el proceso de ensamblado y/o compilacin


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

Mediante la persiana denominada


Active Toolsuite se selecciona una de
esas herramientas.
En la actualidad, MPLAB se puede
integrar con herramientas propias de
Microchip o de terceras fuentes. Para ello
se deben seguir las instrucciones de
instalacin propias de cada una de ellas.
En el caso que nos ocupa seleccionamos
Microchip MPASM Toolsuite que es el
ensamblador
que
se
suministra
gratuitamente y se instala junto con el
propio MPLAB. Esta herramienta consta
del
ensamblador
(mpasmwin.exe)
propiamente dicho, el enlazador o lincador
(mplink.exe) y libreras (mplib.exe). Con el
botn Browse... se puede seleccionar el
lugar o ruta donde se encuentran cada
uno de estos ficheros, que por defecto es
la mostrada en la figura.
Figura 3-4. Seleccionando la herramienta de
ensamblado/compilacin
3

Dar nombre al proyecto e indicar la carpeta donde ha de guardarse, tal y como se muestra en la figura 3-5.

3-5

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
En este caso el proyecto se denomina
Ejem_1 y se guardar en la carpeta
Ejemplos para PICSchool de la unidad F:\ (o
cualquier otra unidad disponible).
Esta carpeta es la que se sugiri crear
anteriormente para guardar en ella todos los
programas fuentes de ejemplo (*.ASM) que se
suministran en el CD-ROM.

Figura 3-5. Asignando nombre al proyecto

Asignar el programa fuente asociado al proyecto. Ver la figura 3-6. En el caso que nos ocupa los
programas de ejemplo ya estn editados y almacenados en la carpeta F:\Ejemplos para PICSchool
procedentes del CD-ROM. De esta manera evitamos tener que teclearlos. En otros casos habra que
editarlos mediante el editor de textos que dispone el propio MPLAB.

La carpeta F:\Ejemplos para


PICSchool es la que se eligi para
almacenar el proyecto Ejem_1 y en ella
se encuentran todos los ficheros con los
programas fuente *.ASM propuestos como
ejemplos.
Seleccionamos
el
fichero
Ejem_1.asm y se pulsa el botn Add.
Al proyecto Ejem_1 le hemos asignado el
programa fuente Ejem_1.asm
Conviene indicar que un proyecto
puede tener asignado mas de un
programa fuente.
Figura 3-6. Asignacin del programa
fuente

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

3-6

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial

Se indica tipo de dispositivo empleado,


herramienta de ensamblado/compilacin y
carpeta y nombre del fichero que contiene el
proyecto.
Cuando se pulsa Finalizar se visualiza
la ventana principal de MPLAB que muestra el
rea de trabajo y una pequea ventana que
resumen al proyecto Ejem_1.mcp y los
ficheros asociados.

Figura 3-7. Sumario del proyecto


Ejem_1.mcp
Tambin podemos configurar el rea de trabajo de MPLAB a nuestro gusto, visualizando las ventanas
que nos interesen, su tamao, posicin, etc.. Por ejemplo y, como referencia, podemos abrir el programa fuente
para tenerlo a la vista. Se emplea la opcin File/Open del men principal y se busca y selecciona el fichero
Ejem_1.asm. Mediante la opcin 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 configuracin
del dispositivo. La figura 3-8 puede servir como muestra del rea de trabajo configurada a gusto del usuario.

Figura 3-8. Configurando el rea de trabajo

3-7

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Se puede seleccionar el
tipo de herramienta para realizar la
puesta a punto del programa. En
la figura 3-9 se ha seleccionado el
simulador MPLAB SIM, pero se
hubiera podido seleccionar el
emulador MPLAB ICE 2000 o el
depurador en circuito MPLAB ICD
2 si estuvieran disponibles.
Figura 3-9. Seleccin del
simulador
Todos estos ajustes y configuraciones tambin forman parte del proyecto. Mediante las diferentes
opciones del men Project se puede salvar un proyecto, recuperarlo, iniciar uno nuevo, etc.
En la direccin www.microchip.com est disponible el manual de usuario completo del entorno de
desarrollo MPLAB, en el que se explica todas las funciones y prestaciones del programa. En la red es posible
encontrar herramientas equivalentes a MPLAB, aunque nosotros recomendamos su empleo por ser un producto
original fabricado por el propio Microchip. Su aprendizaje puede resultar un poco costoso, pero es una
herramienta potente, actualizada y que permite cubrir diferentes etapas desde la simulacin hasta la emulacin
en tiempo real.
3.2.2 El programa fuente
Todos los programas fuente los suministramos en el CD-ROM para que el usuario no pierda tiempo en
su edicin. 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 pginas y foros que
ofrecen programas de demostracin. En nuestra pgina www.microcontroladores.com tenemos gran cantidad de
ejemplos que, aunque no estn expresamente pensados para el laboratorio PICSchool, se pueden adaptar
fcilmente. Tambin existe abundante literatura en castellano destinada a conocer el mundo de los PICs y su
programacin. 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 continuacin. Puede servir como ejemplo de
referencia para analizar el aspecto de un programa fuente en ensamblador. No pretendemos desde aqu a
ensear a programar PICs. Como ya se mencion anteriormente existe abundante material escrito sobre el
tema.
En todo programa fuente se permite la inclusin de comentarios que facilitan la compresin del mismo
aadiendo 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 traduccin.
Por su parte la directiva include permite aadir ficheros previamente editados. Normalmente el contenido de
estos ficheros puede ser empleado por mltiples programas sin necesidad de tener que editarlos cada vez. En el
ejemplo se incluye el fichero P16F876A.INC que contiene la declaracin 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 cmo han de quedar los bits de configuracin del dispositivo a
la hora de grabarlo. Esta informacin queda registrada en el fichero *.HEX y es empleada por el software de
grabacin. En el ejemplo que nos ocupa se ha seleccionado una configuracin de Proteccin de cdigo y
datos=OFF, LVP=OFF, WDT=OFF y OSC=XT.

3-8

Laboratorio PICSchool; 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
;lgico de los mismos sobre los leds conectaqdos a RB5-RB0
List
p=16F876A
include "P16F876A.INC"

;Tipo de procesador
;Definiciones de registros internos

;Ajusta los valores de la palabra de configuracin durante el ensamblaje:


;Proteccin de cdigo y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT
__config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC
;Estos y otros valores se pueden modificar segn las necesidades

Inicio

Loop

org
goto
org

0x00
Inicio
0x05

clrf
bsf
clrf
movlw
movwf
movlw
movwf
bcf

PORTB
STATUS,RP0
TRISB
0x06
ADCON1
b'00111111'
TRISA
STATUS,RP0

;Borra los latch de salida


;Selecciona banco 1
;Puerta B se configura como salida

movf
movwf
goto

PORTA,W
PORTB
Loop

;Leer las entradas RA0-RA5


;Reflejar en las salidas
;Bucle sin fin

end

;Vector de reset

;Puerta A digital
;Puerta A se configura como entrada
;Selecciona banco 0

;Fin del programa fuente

El programa comienza en la direccin 0x0000 destinada al vector de Reset. Todos los programas deben
comenzar configurando las lneas de E/S del PIC determinado quines son entradas y quines 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 direccin 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, perifricos contenidos en el laboratorio
PICSchool.
Por ltimo la directiva end se pone al final del programa fuente y su empleo es obligatorio. Le informa al
ensamblador el final del mismo.

3.2.3 Construyendo el proyecto


Bsicamente consiste en ensamblar/compilar el programa fuente (*.ASM) para obtener el programa en
cdigo mquina (*.HEX). Recordemos que nuestro proyecto Ejem_1.mcp est compuesto del programa fuente
Ejem_1.asm. Como ya se ha explicado anteriormente, tras el ensamblado se obtiene una serie de ficheros
como es el ejecutable Ejem_1.hex, de listado Ejem_1.lst, de errores Ejem_1.err, de simulacin
Ejem_1.cod, etc..
La figura 3-10 muestra alguna de las opciones del men Project, entre las que se encuentra la opcin
Buid All (ctrl.+F10) que es la que emplearemos para proceder a ensamblar.

3-9

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial

Figura 3-10. Ensamblando el proyecto


3.2.4 Preparando el hardware de la aplicacin
El programa de este ejemplo de aplicacin consiste en leer el estado de 6 interruptores de entrada
conectados a las lneas RA0-RA5 de la puerta A y reflejarlo en otras tantas salidas conectadas a las lneas RB0RB5 de la puerta B.
La figura 3-11 muestra el esquema de conexiones de los interruptores de entrada y los leds de salida del
laboratorio PICSchool conectados a las lneas de las Puertas A y B respectivamente.
AP17
1
2
3
4
5
6
7
8

AP18

S5
S4
S3
S2
S1
S0

RB5
RB4
RB3
RB2
RB1
RB0

E5
E4
E3
E2
E1
E0

RA5
RA4
RA3
RA2
RA1
RA0

SALIDAS DIGITALES

1
2
3
4
5
6
7
8
ENTRADAS DIGITALES

Figura 3-11. Conexiones elctricas de los interruptores y leds en PICSchool


Las entradas estn disponibles a travs del bloque de conexiones AP17 y estn representadas como E0E7. Las cuatro primeras se corresponden con los interruptores E0-E3 y las cuatro ltimas con los pulsadores E4E7. En este ejemplo slo se conectan las entradas E0-E5 con las lneas RA0-RA5 del microcontrolador.
Las conexiones con los leds de salida se realizan a travs del bloque de conexiones AP18 y estn
representados como S0-S7. En este ejemplo de aplicacin nicamente se emplean los leds S0-S5 que se
conectan con las lneas de salida RB0-RB5 del PIC.
Todas las conexiones se pueden realizar mediante cable rgido de conexiones de 0.6 a 0.8 mm de grosor
tal y como se muestra en la fotografa de la figura 3-12.

3-10

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial

Figura 3-12. Conexiones realizadas sobre PICSchool

3.2.5 Grabacin del dispositivo


Obtenido tras el ensamblado el fichero ejecutable Ejem_1.hex y habiendo preparado el hardware en
PICSchool con las conexiones necesarias, lo nico que queda por hacer es grabar el dispositivo. Esto se puede
realizar desde el mismo entorno de desarrollo MPLAB, si dispusieramos de cualquiera de los grabadores
soportados, por ejemplo el ICD2.
Sin embargo el laboratorio PICSchool incorpora su propio grabador por lo que no es necesario de
ningn equipo adicional. Basta con ejecutar el software de grabacin apropiado. Nosotros hemos optado por
emplear el WinPIC800 o el IcProg que se comentaron en el tema anterior.
Suponiendo que se disponga del WinPic800 debidamente instalado y configurado, basta con ejecutarlo y
seguir los siguientes pasos:
1

Conectar la alimentacin del laboratorio PICSchool.

El conmutador del grabador debe estar en la posicin PC

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

Pulsar el botn de detectar PIC. Se debe selecciona el 16F876A de forma automtica.

Abrir el fichero Ejem_1.hex recin 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 fsicamente
sobre el PIC. Igualmente se puede mostrar la palabra de configuracin con los ajustes que se realizaron
en el programa fuente Ejem_1.asm mediante la directiva __config, almacenados tambin en el fichero
Ejem_1.hex.

3-11

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial

Figura 3-13. El programa ejecutable


6

Se sugiere borrar el PIC mediante el botn correspondiente.

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

3.2.6 Comprobando el funcionamiento de la aplicacin


El dispositivo PIC16F876 ya est grabado, vamos a verificar el correcto funcionamiento de la aplicacin:
1

Colocar el conmutador del grabador del laboratorio PICSchool en la posicin RUN

Comprobar que cualquier actuacin sobre los interruptores/pulsadores de entrada queda inmediatamente
reflejado sobre los leds de salida. Recordar que los pulsadores estn normalmente, en situacin de
reposo, a nivel 1. Cuando se accionan generan nivel lgico 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. Tambin es el momento de ir revisando los diferentes ejemplos
propuestos a continuacin y cuyos programas fuentes se suministran en el CD-ROM.

3-12

Laboratorio PICSchool; 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 CDROM. Adems de aprender ciertas tcnicas y trucos de programacin con los ejercicios propuestos, tambin
nos vamos a familiarizar con el manejo del laboratorio PICSchool, sus perifricos, las conexiones de los mismos
con las lneas de E/S del PIC as como con los recursos internos del microcontrolador.
3.3.1 Ejemplo 1: Simple manejo de las entradas y salidas
Es el ejemplo contenido en el archivo Ejem_1.asm y que se empleo en el tutorial del apartado anterior.
3.3.2 Ejemplo 2: Funcin lgica NOT
Enunciado
Leer el estado de un interruptor conectado a RA0 y visualizarlo sobre un led conectado a RB0. En RB1 se
conecta otro led que visualiza el complemento de RA0.
Requisitos
Realizar las conexiones mostradas en el esquema de la figura 3-14 en las que RA0 se conecta con el interruptor
E0, RB0 se conecta con el led S0 y RB1 se conecta con el led S1.
AP17
1
2
3
4
5
6
7
8

AP18

S1
S0

RB1
RB0

E0

RA0

SALIDAS DIGITALES

1
2
3
4
5
6
7
8
ENTRADAS DIGITALES

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


Comentarios
Este ejemplo contenido en el fichero Ejem_2.asm realiza un sencillo tratamiento con el valor de la seal de
entrada.
3.3.3 Ejemplo 3: Decodificador combinacional
Enunciado
El presente ejemplo propone generar unas seales de salida sobre RB0-RB7 en funcin de dos seales de
entrada que se aplican por RA0 y RA1, segn la siguiente tabla de la verdad. Se trata de una clsica aplicacin
combinacional.
ENTRADAS
RA1 RA0
0
0
0
1
1
0
1
1

RB7
1
0
0
1

RB6
0
1
0
1

RB5
1
0
0
1

SALIDAS
RB4
RB3
0
1
1
0
0
1
1
0

3-13

RB2
0
1
1
0

RB1
1
0
1
0

RB0
0
1
1
0

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Requisitos
Las lneas de entrada RA0 y RA1 se conectan con los interruptores E0 y E1 respectivamente. Las lneas RB0RB7 se conectan con los leds S0-S7. Ver el esquema de la figura 3-15.
AP17

AP18
S7
S6
S5
S4
S3
S2
S1
S0

1
2
3
4
5
6
7
8

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

RA1
RA0

E1
E0

SALIDAS DIGITALES

1
2
3
4
5
6
7
8
ENTRADAS DIGITALES

Figura 3-15. Conexiones del ejemplo 3


Comentarios
El programa contenido en el fichero Ejem_3.asm muestra el empleo de las mscaras que permiten filtrar una
informacin de entrada de varios bits y procesar slo los que interese.
3.3.4 Ejemplo 4: Automatismo secuencial, simulando una maniobra de torneado
Enunciado
Se trata de simular una sencilla maniobra para el torneado de una pieza. La activacin/desactivacin de un
cilindro simula el arrastre de la pieza a tornear. Esta pasa por distintos sensores a lo largo del recorrido
provocando que el motor del torno se active o no. El funcionamiento se resume a continuacin:
1
2

La secuencia se inicia al pulsar "I" (RA0) que activa el cilindro "V" (RB0).
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.
Durante el avance se alcanza el sensor "c" (RA3) que desactiva el cilindro "V" (RB0) inicindose el
retroceso del mismo.
Al volver a pasar por "b" (RA2), se desconecta "M" (RB1).
Cuando se alcanza el final de carrera "a" (RA1) se activa una seal acstica "A" (RB2) para que el
operario retire la pieza, coloque otra nueva y, se inicie un nuevo ciclo, al pulsar "I" (RA0).

3
4
5

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
1
2
3
4
5
6
7
8

AP18
RA3
RA2
RA1
RA0
S1 (M)
S0 (V)

SALIDAS DIGITALES

RB1
RB0

E7
E6
E5
E4

(c)
(b)
(a)
(I)

1
2
3
4
5
6
7
8

Figura 3-16. Conexiones del ejemplo 4

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 mquina simulada. Se recuerda por otra parte que los pulsadores
empleados en la simulacin son activos por nivel 0 cada vez que se accionan.

3-14

Laboratorio PICSchool; 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 perforacin de una pieza. Dicho cabezal es sometido a
distintos movimientos de aproximacin segn la siguiente secuencia:
1
2
3
4

Al accionar el pulsador "I" (RA0) el cabezal realiza un descenso rpido de aproximacin, activando el
motor de bajada rpida "BR"(RB3).
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).
Cuando se activa el sensor "c" (RA3) se considera que la pieza est taladrada. Se inicia una subida rpida
del cabezal "SR" (RB0) al tiempo que el rel "M" (RB1) de giro sigue activado.
Cuando se alcanza el final de carrera "a" (RA1), se detiene la subida rpida "SR"(RB0), el rel de giro "M"
(RB1) y se activa una seal acstica "A" (RB2) de aviso. El ciclo comienza con una nueva pulsacin 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 seales 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 lneas RB0RB4. Respectivamente simulan las seales que controlan la subida rpida del cabezal (SR), el motor (M), la
seal de aviso (A), la bajada rpida del cabezal (BR) y la bajada lenta (BL). Seguir el esquema de conexiones de
la figura 3-17.
AP17
1
2
3
4
5
6
7
8

Figura 3-17. Conexiones del ejemplo 5

AP18

S4
S3
S2
S1
S0

(BL)
(BR)
(A)
(M)
(SR)

SALIDAS DIGITALES

RB4
RB3
RB2
RB1
RB0

RA3
RA2
RA1
RA0

E7
E6
E5
E4

(c)
(b)
(a)
(I)

1
2
3
4
5
6
7
8

ENTRADAS DIGITALES

Comentarios
Este ejemplo est contenido en el archivo Ejem_5.asm y, al igual que el anterior, consiste en un conjunto de
instrucciones que siguen fielmente la secuencia de funcionamiento de la mquina simulada. Se recuerda por otra
parte que los pulsadores empleados en la simulacin son activos por nivel 0 cada vez que se accionan.
3.3.6 Ejemplo 6: Automatismo, mquina de envasar
Enunciado
Dos cintas transportadoras transportan piezas y envases respectivamente. Cuando se detecta un envase
debidamente posicionado comienzan a entrar piezas. Cuando 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
2
3
4
5

Dos rels "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1"
(RB0) transporta piezas y "M2" (RB1) embalajes.
Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de
un envase.
Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una seal acstica "A" (RB2) y,
la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vaco.
En este momento se desactiva la seal acstica "A" (RB2) y nuevamente avanza la cinta de piezas
repitindose as el ciclo.
Un interruptor "I" (RA0) activa o no a todo el sistema.

3-15

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Requisitos
Mediante el interruptor E0 (I) conectado a RA0 se inicia el funcionamiento de la mquina. El interruptor E1 (DE)
se conecta a la lnea 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 lneas RB0-RB2 que
respectivamente simulan las salidas de avance de piezas (M1), avance de embalaje (M2) y seal acstica (A).
Todo ello queda reflejado en el esquema de conexiones mostrado en la figura 3-18.
AP17

AP18

1
2
3
4
5
6
7
8

RA1
S2 (A)
S1 (M2)
S0 (M1)

RB2
RB1
RB0

RA2
RA0

SALIDAS DIGITALES

1
2
3
4
5
6
7
8

E4 (DP)
E1 (DE)
E0 (I)

Figura 3-18. Esquema del ejemplo 6

ENTRADAS DIGITALES

Comentarios
Este ejemplo trata de mostrar el empleo de variables sobre la memoria RAM del microcontrolador y tambin la
forma de contar pulsos en ciertas seales de entrada. El pulsador E4 es el encargado de simular el paso de
piezas y genera un pulso con transicin 1-0-1 en cada una.
3.3.7 Ejemplo 7: Mquina de envasar, versin mejorada
Enunciado
Dos cintas transportadoras transportan piezas y envases respectivamente. Cuando se detecta un envase
debidamente posicionado comienzan a entrar piezas. Cuando 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
2
3
4
5

Dos rels "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1"
(RB0) transporta piezas y "M2" (RB1) embalajes.
Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de
un envase.
Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una seal acstica "A" (RB2) y,
la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vaco.
En este momento se desactiva la seal acstica "A" (RB2) y nuevamente avanza la cinta de piezas
repitindose as el ciclo.
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 mquina. El interruptor E1 (DE)
se conecta a la lnea 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 lneas RB0-RB2 que
respectivamente simulan las salidas de avance de piezas (M1), avance de embalaje (M2) y seal acstica (A).
Todo ello queda reflejado en el esquema de conexiones mostrado en la figura 3-19.
AP17
1
2
3
4
5
6
7
8

AP18

RA1
S2 (A)
S1 (M2)
S0 (M1)

SALIDAS DIGITALES

RB2
RB1
RB0

RA2
RA0

E4 (DP)
E1 (DE)
E0 (I)

1
2
3
4
5
6
7
8

Figura 3-19. Esquema del ejemplo 6

ENTRADAS DIGITALES

3-16

Laboratorio PICSchool; 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 diseado, sino que el pulsador que simula el paso de piezas provoca un desagradable
efecto rebote. Un accionamiento del pulsador puede suponer generar varias seales que, por supuesto son
detectadas por el PIC. Estos rebotes se producen en todos los dispositivos electromecnicos. Es posible que
este efecto se haya notado tambin en el interruptor que detecta el posicionamiento de embalajes.
Para evitarlo se intercala una temporizacin al detectar un cambio de estado o accionamiento. De esta forma
esperamos que las lminas metlicas de los contactos se estabilicen.
En el ejemplo se hace uso de una rutina de temporizacin de propsito 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 mquina es de 1S. Con un preesacler de 256 el
TMR0 evoluciona cada evento de 256 S (256 * 1). La temporizacin termina cuando el TMR0 cuenta 39
eventos de 256S (256 * 39 = 10000S = 10mS).
3.3.8 Ejemplo 8: Juego de luces
Enunciado
Se va a realizar un juego de luces con unos leds conectados a las lneas de la Puerta B. Se iluminarn de forma
secuencial de izda. a dcha. y viceversa en funcin 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 lneas RB0-RB7 de salida. El interruptor E0 se conecta con la entrada RA0. Todo
ello se muestra en la figura 3-20.
AP17

Figura 3-20. Conexiones del ejemplo 8

1
2
3
4
5
6
7
8

AP18
S7
S6
S5
S4
S3
S2
S1
S0

SALIDAS DIGITALES

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

RA0

E0

1
2
3
4
5
6
7
8
ENTRADAS DIGITALES

Comentarios
Se emplea una rutina de temporizacin basada en los mismos principios que la empleada en el ejemplo anterior.
Sin embargo la mxima temporizacin 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 temporizacin de 10mS que se repetir 25 veces para conseguir el total
deseado (25 * 10mS = 250mS = 0.25s).
3.3.9 Ejemplo 9: La interrupcin del TMR0
Enunciado
Se pretende demostrar el funcionamiento de la interrupcin provocada por el rebasamiento del TMR0. El
programa lee constantemente el estado de dos entradas y lo visualiza sobre sendas salidas. Al mismo tiempo el
un led de salida genera una intermitencia constante de 0.5 seg.

3-17

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Requisitos
A la vista del esquema de la figura 3-21
conectar los interruptores E0 y E1 con las
lneas de entrada RA0 y RA1. Los leds S0S1 se conectan con las seales RB0 y RB1
y visualizarn de forma constante el estado
de esas entradas. El led S7 se conecta a la
salida RB7 y estar constantemente
parpadeando cada 0.5 s.

AP17
1
2
3
4
5
6
7
8

AP18
S7

RB7

S1
S0

RB1
RB0

SALIDAS DIGITALES

RA1
RA0

E1
E0

1
2
3
4
5
6
7
8
ENTRADAS DIGITALES

Figura 3-21. Esquema para el ejemplo 9


Comentarios
El ejemplo nos introduce en el mundo de las interrupciones, en este caso la que produce el TMR0 cada 10mS.
En este momento el PIC salta a la direccin del vector de interrupcin (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 ningn momento de ser reflejadas sobre las salidas RB0 y RB1.

3.3.10 Ejemplo 10: La interrupcin externa RB0/INT y el modo sleep


Enunciado
El programa activa las salidas RB1-RB7 durante 1 segundo. Cada vez que se produzca la interrupcin externa
RB0/INT.
Requisitos
AP17
1
2
3
4
5
6
7
8

Los leds de salida S1-S7 se conectan con las lneas


RB1-RB7. La lnea RB0 se conecta con el pulsador
entrada E4. Ver el esquema de la figura 3-22.

AP18
S7
S6
S5
S4
S3
S2
S1

SALIDAS DIGITALES

RB7
RB6
RB5
RB4
RB3
RB2
RB1

RB0

E4

1
2
3
4
5
6
7
8

Figura 3-22. Esquema del ejemplo 10

ENTRADAS DIGITALES

Comentarios
Cada vez que se acciona el pulsador E4 se provoca una interrupcin 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 slo despierta cundo se produzca la mencionada
interrupcin.
3.3.11 Ejemplo 11: El display de 7 segmentos
Enunciado
El programa presenta sobre un display de 7 nsegmentos el estado lgico presente en la entrada RA0,
visualizando 1 o 0 segn corresponda. Con la entrada RA1 se activa o no el punto decimal del display.

Requisitos

3-18

Laboratorio PICSchool; 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 absorcin de 330. El display empleado es del tipo ctodo comn y modelo SC43-11HWA. Las
lneas RB0-RB7 actan como salidas y se conectan a las resistencias de absorcin. Estas a su vez se conectan
con los segmentos del display segn el esquema de la figura 3-23.
AP18

Figura 3-23. Esquema de


montaje del ejemplo 11

a
b
c
d
e
f
g
dp

1
13
10
8
7
2
11
9

cc

14

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9
8 x 330

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

RA1
RA0

E1
E0

1
2
3
4
5
6
7
8

ENTRADAS DIGITALES

SC43-11HWA

Los interruptores E0 y E1 se conectan con las


seales RA0-RA1 respectivamente, que
sern configuradas como entradas. Todo el
montaje se realiza sobre el mdulo board
para el montaje sin soldaduras que dispone el
laboratorio PICSchool, tal y como se aprecia
en la fotografa de la figura 3-24. En
Ingeniera de Microsistemas Programados
pensamos que tan importante como el
desarrollo del software es el desarrollo del
hardware. Este ejemplo y en otros nos brinda
esta oportunidad.

Figura 3-24. Montaje prctico del ejemplo 11

Comentarios
El ejemplo es una simple muestra de cmo visualiza dos nmeros (0 y 1) sobre un display de 7 segmentos
montado en el rea de montaje sin soldaduras que dispone el laboratorio PICSchool. Sobre la puerta B de salida
se saca el cdigo de 7 segmentos del dgito a visualiza.
3.3.12 Ejemplo 12: Decodificador BC-7 segmentos
Enunciado
Mediante 4 seales de entrada se introduce el cdigo BCD (desde 0 hasta F) del dgito a visualizar sobre el
display de 7 segmentos.

Requisitos
Mediante los interruptores de entrada E0-E3 conectados a las lneas RA0-RA3 se aplica el cdigo BCD del dgito
a visualizar. Las lneas RB0-RB7 se conectan con las resistencias de absorcin 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 PICSchool; Manual de Usuario


TEMA 3: Tutorial
AP18

Figura 3-25. Esquema del


ejemplo 12

a
b
c
d
e
f
g
dp

1
13
10
8
7
2
11
9

cc

14

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

8 x 330

RA3
RA2
RA1
RA0

E3
E2
E1
E0

1
2
3
4
5
6
7
8

ENTRADAS DIGITALES

SC43-11HWA

Comentarios
Este ejemplo pretende introducirnos al manejo de tablas con datos constantes. Efectivamente, la tabla contiene
los 16 cdigos de 7 segmentos de otros tantos dgitos a visualizar. Mediante la suma del PC con un
desplazamiento, se selecciona cualquiera de los elementos de esa tabla, en este ejemplo el del cdigo 7
segmentos.
3.3.13 Contador decimal UP/DOWN
Enunciado
Se trata de realizar un contador ascendente/descendente (UP/DOWN). Los pulsos a contar se aplican por RA0 y
deben estar libres del efecto rebote. Medianta la entrada RA1 se selecciona si la cuenta es ascendente o
descendente.
Requisitos
AP18
a
b
c
d
e
f
g
dp

1
13
10
8
7
2
11
9

cc

14

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

8 x 330

RA0

RA1

E4

E0

1
2
3
4
5
6
7
8

ENTRADAS DIGITALES

SC43-11HWA

El pulsador E4 se conecta con la


lnea RA0 y el interruptor E0 con la
lnea RA1. Las lneas RB0-RB7 se
conectan con las resistencias de
absorcin y estas a su vez se
conectan con los segmentos del
display. Todo ello se muestra en el
esquema de la figura 3-26 que es
bastante similar al de ejemplos
anteriores.

Figura 3-26. Esquema del ejemplo 13


Comentarios
Este ejemplo es una aplicacin prctica que consiste en realizar una dcada contadora. La cuenta es en decimal
de 0 a 9 y puede ser ascendente o descendente.
3.3.14 Ejemplo 14: El TMR0 como contador de pulsos externos
Enunciado
Procedente del generador lgico 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 PICSchool; Manual de Usuario


TEMA 3: Tutorial

a
b
c
d
e
f
g
dp

1
13
10
8
7
2
11
9

cc

14

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

AP8
1
2
3
4

RA4/T0CKI

FREQ. OUT

8 x 330

SC43-11HWA

La salida del generador se conecta


con la lnea RA4/T0CKI. Las lneas
RB0-RB7 se conectan con las
resistencias de absorcin y estas a
su vez se conectan con los
segmentos del display. Todo ello
se muestra en el esquema de la
figura 3-27 que es bastante similar
al de ejemplos anteriores.

Figura 3-27. Conexiones del ejemplo 14


Comentarios
En este ejemplo se demuestra que el TMR0 puede actuar como contador de eventos o pulsos externos que se
introducen por la lnea RA4/T0CKI y, si procede, provocar interrupcin al finalizar la cuenta. Tambin muestra
cmo se puede modificar dinmicamente el registro OPTION para hacer que el TMR0 acte como contador o
temporizador segn 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 instruccin SLEEP. En este
ejemplo despierta al provocar un RESET manual.
La velocidad del contaje se puede variar modificando la frecuencia que suministra el generador lgico y que se
selecciona mediante el pulsador Frec.Sel. entre 1Hz y 1KHz.
3.3.15 Ejemplo 15: La memoria EEPRON de datos, la mquina Su Turno
Enunciado
Se trata de emular el funcionamiento de la tpica mquina Su Turno habitual en muchos comercios de venta al
pblico. Sobre el display se visualiza el turno actual. Este se incrementa con cada pulso aplicado por RA0. En la
memoria EEPROM de datos del PIC se almacena el turno en curso de forma que, ante un fallo de alimentacin,
se reanude la cuenta desde donde se qued.
Requisitos
El pulsador E4 se conecta con la
entrada RA0 y hace evolucionar al
turno siguiente. Las lneas RB0RB7 se conectan con las
resistencias de absorcin y estas
a su vez se conectan con los
segmentos del display. Todo ello
se muestra en el esquema de la
figura 3-28 que es bastante similar
al de ejemplos anteriores.

AP18
a
b
c
d
e
f
g
dp

1
13
10
8
7
2
11
9

cc

14

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

RA0

8 x 330

E4

1
2
3
4
5
6
7
8

ENTRADAS DIGITALES

SC43-11HWA

Figura 3-28. Esquema del ejemplo 15


Comentarios
El ejemplo pretende ilustrar la forma de grabar y recuperar datos no voltiles sobre la memoria EEPROM de
datos del PIC. Las aplicaciones de este tipo de memoria son numerosas (cdigos de acceso, agenda no voltil,
etc..)

3-21

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
3.3.16 Ejemplo 16: Introduccin al manejo de la pantalla LCD
Enunciado
Se trata de hacer una introduccin al manejo de la pantalla LCD del laboratorio PICSchool, donde quedar
visualizado el mensaje Hola.
Requisitos
AP9
CONTROL
RS
R/W
E

RA1
RA2
RA3

L0
L1
L2
L3
L4
L5
L6
L7

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

1
2
3
4
1
2
3
4
5
6
7
8

Las lneas de la RB0-RB7 se conectan con las lneas de datos L0-L7 de la


pantalla. Las seales RA1, RA2 y RA3 se conectan con las seales RS,
R/W y E respectivamente. Estas conexiones se muestran en el esquema de
la figura 3-29.

Figura 3-29. Conexiones con la pantalla LCD

AP20
DATOS

Comentarios
El programa hace uso de las rutinas para el
manejo de la pantalla LCD y estn
contenidas en el archivo LCD_CXX.INC.
Dichas rutinas son de propsito general y se
pueden emplear en cualquier aplicacin que
requiera el empleo de una pantalla. Se
pueden incluir en cualquier programa fuente
mediante el simple empleo de la directiva
INCLUDE. Es un buen mtodo para incluir
rutinas de propsito general desde otros
ficheros sin tenerlas que escribir en cada
uno de los programas fuentes en que sean
necesarias. La imagen de la figura 3-30
muestra una fotografa del montaje
propuesto y que servir para sucesivos
ejemplos.
Figura 3-30. Montaje del ejemplo 16

3.3.17 Ejemplo 17: Seguimos con la pantalla LCD


Enunciado
Se trata de visualizar diferentes mensajes contenidos en tablas previamente definidas por el usuario. En el
presente ejemplo se visualizan los mensajes Hola y Adios.
Requisitos
Los mismos que en el ejemplo anterior

3-22

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Comentarios
Mostrar una forma cmoda y verstil para visualiza cualquier tipo de mensaje de cualquier tamao. Los
mensajes se definen en tablas como si de datos constantes se tratara. La instruccin RETW devuelve en cada
momento el carcter a visualizar. Todo mensaje finaliza con un cdigo especial de fin de mensaje (0x00). Se ha
diseado una rutina llamada Mensaje que lee y visualiza todos los caracteres que forman el mensaje hasta
llegar al carcter final (0x00). Antes de llamar a esta rutina en el programa principal, se debe indicar el inicio de
cada mensaje individual que se desea visualizar.

3.3.18 Ejemplo 18: Visualizando mas mensajes


Enunciado
Al igual que el ejemplo anterior, se trata de visualizar diferentes mensajes contenidos en tablas previamente
definidas por el usuario en el programa fuente
Requisitos
Los mismos que en el ejemplo anterior
Comentarios
El ejemplo es similar al anterior en cuanto a que se trata de visualizar diferentes textos previamente definidos en
tablas. La diferencia est precisamente en la forma de definir estas tablas. Efectivamente, mediante la directiva
DT del ensamblador es posible definir tablas de datos expresados en ASCII, cadenas de caracteres,
hexadecimal, etc. Durante el proceso de ensamblado se generan tantas instrucciones RETLW como datos haya.
Es una forma mucho mas cmoda y fcil de incluir en nuestros programas tablas de datos constantes.
3.3.19 Ejemplo 19: El teclado
Enunciado
Se trata de una primera toma de contacto con el manejo del teclado del laboratorio PICSchool. En el ejemplo se
trata de explorar el teclado y visualiza sobre los leds conectados a RB0-RB3 el cdigo BCD de la tecla pulsada
durante 2 segundos.
Requisitos
Realizar las conexiones de la figura 3-31. Las lneas RB0RB3 se conectan con los leds S0-S3 y con las lneas C0-C3
del teclado (las columnas). Las lneas RB4-RB7 se conectan
con las lneas F0-F3 (las filas).

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

8
7
6
5
4
3
2
1

8
7
6
5
4
3
2
1

S0
S1
S2
S3

C0
C1
C2
C3
F0
F1
F2
F3
AP21 TECLADO

Figura 3-31. Conexin del telado para el ejemplo 18

AP17 SALIDAS DIGITALES

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

3-23

Laboratorio PICSchool; 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 perifricos. Sobre la pantalla LCD se visualiza la tecla
pulsada.
Requisitos

RA3
RA2
RA1

4
3
2
1

8
7
6
5
4
3
2
1

8
7
6
5
4
3
2
1
AP20 DATOS LCD

RS
R/W
E

AP21 TECLADO

L0
L1
L2
L3
L4
L5
L6
L7

Figura 3-32. Ejemplo 20

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
C0
C1
C2
C3
F0
F1
F2
F3

Realizar las conexiones mostradas en


la figura 3-32. Se puede observar que
las lneas RB0-RB7 se emplean tanto
para gestionar el teclado (C0-C3 y F0F7) como para la transferencia de
datos con la pantalla LCD (L0-L7). Las
seales RA1, RA2 y RA3 se emplean
como seales de control RS, R/W y E
de la pantalla.

AP9

CONTROL LCD

Comentarios
El ejemplo trata de mostrar cmo configurando las puertas
en cada momento, el PIC puede gobernar en una misma
aplicacin perifricos tan dispares como son un teclado y
una pantalla LCD. En la fotografa de la figura 3-33 se
muestra el montaje prctico y la ejecucin del programa.

Figura 3-33. Montaje prctico del ejemplo 20

3.3.21 Ejemplo 21: Interrupcin por cambio de estado


Enunciado
Se trata de un ejemplo similar al anterior en cuanto a que sobre la pantalla LCD se visualiza la tecla pulsada. La
diferencia consiste en que la exploracin del teclado slo se realiza cuando se detecte una interrupcin por
cambio de estado en las lneas RB4-RB7 como consecuencia de pulsar cualquier tecla.
Requisitos
Los mismos que en el ejemplo anterior
Comentarios
El programa principal se mantiene detenido en el modo SLEEP de bajo consumo. Cuando se pulsa cualquier
tecla se produce una interrupcin 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 aplicacin. En el ejemplo anterior el PIC estaba en ejecucin constante esoperando que se pulse una
tecla. En este ejemplo el PIC se mantiene en standby y slo reacciona cuando tiene lugar una pulsacin.

3-24

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
3.3.22 Ejemplo 22: El TMR1 en modo temporizador, interrupcin cada cierto tiempo
Enunciado
Se trata de que el TMR1 provoque una interrupcin cada 0.1. Un contador binario reflejado mediante leds
conectados a la puerta B, representa el nmero de interrupciones producidas.
Requisitos
AP17
1
2
3
4
5
6
7
8

S7
S6
S5
S4
S3
S2
S1
S0

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

Conectar los leds S0-S7 a las lneas RB0-RB7 de la puerta B, tal y como se
muestra en el esquema de la figura 3-34.

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 acte en el modo temporizador y provoque una interrupcin cada
0.1. El nmero de interrupciones producidas se ver reflejado en formato binario sobre los leds de salida.
3.3.23 Ejemplo 23: El TMR1 como contador de eventos externos
Enunciado
Mediante el generador de onda cuadrada del laboratorio PICSchool se aplican pulsos por la lnea RC0/T1CKI.
La pantalla LCD visualiza en binario el nmero de pulsos que entran al TMR1.
Requisitos
Las lneas RB0-RB7 se conectan con las lneas
de datos L0-L7 del LCD. Las seales RS, R/W y
E se conectan con RA1-RA3 respectivamente.
La salida del generador se conecta con la seal
RC0/T1CKI de entrada de pulso para el TMR1 y
tambin con el led S0 que pilota dicha salida.
Ver el esquema de la figura 3-35.

Figura 3-35. Conexiones para el ejemplo 23

AP9
CONTROL
RA1
RA2
RA3
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

RS
R/W
E
L0
L1
L2
L3
L4
L5
L6
L7

1
2
3
4
1
2
3
4
5
6
7
8
AP20
DATOS

AP8
FREQ. OUT
1
2
3
4

RC0/T1CKI

S0

1
2
3
4
5
6
7
8

AP17 SALIDAS DIGITALES

Comentarios
Al igual que le TMR0, el TMR1 tambin puede contar pulsos con flanco ascendente de entrada que se aplican
por la patilla RC0/T1CKI. El generador que dispone el laboratorio PICScholl se encarga de suministrar los pulsos
a contar. Se recomienda variar la frecuencia de dicho generador (entre 1Hz y 1KHz) para apreciar la variacin
que se produce en el contaje y apreciar cmo las evoluciones del contador se realizan en el flanco ascendente
de la seal.

3-25

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
3.3.24 Ejemplo 24: El TMR1 como divisor de frecuencia
Enunciado
El TMR1 cuenta el nmero 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 interrupcin que hace bascular a la lnea de
salida RB0. La frecuencia en esta lnea de salida ser la del generador externo dividida entre 2 * Valor_N.
Requisitos
AP8
FREQ. OUT
RC0/T1CKI

1
2
3
4

Realizar las conexiones mostradas en la figura 3-36.


La salida del generador se conecta con RC0/T1CKI y
la lnea RB0 con el led de salida S0

AP17
1
2
3
4
5
6
7
8

S0

RB0

Figura 3-36. Conexiones del ejemplo 24

SALIDAS DIGITALES

Comentarios
Este sencillo ejemplo nos muestra la capacidad que tiene TMR1 de provocar interrupcin cuando trabaja en el
modo contador de eventos externos. Un detalle importante es que el PIC puede estar en el modo SLEEP de bajo
consumo. Efectivamente, como el TMR1 est trabajando como contador de eventos externos, no necesita de la
frecuencia generel del reloj del sistema y, puede provocar interrupcin, al llegar a 0. Se sugiere modificar el
programa modificando el valor de la variable Valor_N con objeto de obtener otras divisiones de frecuencia as
como variar la frecuencia de entrada procedente del generador, entre 1Hz y 1 KHz.
3.3.25 Ejemplo 25: Frecuencmetro
Enunciado
El ejemplo propone realizar un frecuencmetro en base al nmero de pulsos que entran al TMR1 en el modo
contador contador de eventos externos. La frecuencia obtenida se visualiza sobre la pantalla LCD.
Requisitos
Conectar la pantalla LCD como se muestra en el
esquema de la figura 3-37, como se venido
realizando hasta ahora. La salida del generador
lgico se conecta con la seal RC0/T1CKI.

Figura 3-37. Montaje del frecuencmetro

AP9
CONTROL
RA1
RA2
RA3
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

RS
R/W
E
L0
L1
L2
L3
L4
L5
L6
L7

1
2
3
4
1
2
3
4
5
6
7
8

AP8
FREQ. OUT
RC0/T1CKI

1
2
3
4

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 interrupcin 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 seal de entrada y se visualiza en el LCD. Posteriormente se
inicia una nueva medida.

3-26

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
3.3.26 Ejemplo 26: El TMR2, interrupcin peridica
Enunciado
Mediante el empleo del TMR2 se trata de hacer un segundero que se visualiza en binario sobre unos leds
conectados a la puerta B.
Requisitos
AP17
1
2
3
4
5
6
7
8

S7
S6
S5
S4
S3
S2
S1
S0

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

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


Simplemente se conectan los leds S0-S7 con las lneas RB0-RB7.

Figura 3-38. Conexiones del ejemplo 26

SALIDAS DIGITALES

Comentarios
Se pretende mostrar el empleo del TMR2. Para ello se provoca una interrupcin 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 automtica del TMR2 cada vez que
finaliza la cuenta. Este registro determina por la tanto la temporizacin a realizar en cada caso.
3.3.27 Ejemplo 27: El TMR2, temporizaciones ajustables
Enunciado
Se trata de obtener por la salida RB0 una frecuencia variable en funcin de los interruptores de entrada
conectados a RA0-RA5. Para ello se emplea el TMR2 modificando dinmicamente su registro de periodos.
Requisitos
Tal y como se muestra en el esquema de la figura 339 los cuatro interruptores E0-E3 y los dos
pulsadores E4 y E5 se conectan con las lneas de
entrada RA0-RA5. Pos su parte la seal RB0 acta
como salida y se conecta con el led E0.
Figura 3-39. Conexiones del ejemplo 27

AP17
1
2
3
4
5
6
7
8

AP18

S0

SALIDAS DIGITALES

RB0

RA5
RA4
RA3
RA2
RA1
RA0

E5
E4
E3
E2
E1
E0

1
2
3
4
5
6
7
8

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 temporizacin. 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 vara, tambin lo har la cuenta. La salida RB0 cambia de estado cuando se hayan
producido 10 interrupciones (1 S * (valor RA0-RA5 *4) * Valor del Preescaler * Valor del Postcaler *10)
3.3.28 Ejemplo 28: Capturas con el mdulo CCP, midiendo periodos
Enunciado
Se trata de experimentar con el modulo CCP1. Para ello se propone un programa que mide el tiempo que
transcurre entre dos flancos ascendentes de la seal aplicada por RC2/CCP1. Se obtiene as el periodo de esa
seal que ser visualizado en la pantalla LCD.

3-27

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Requisitos
AP9
CONTROL
RA1
RA2
RA3

RS
R/W
E

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

L0
L1
L2
L3
L4
L5
L6
L7

1
2
3
4
1
2
3
4
5
6
7
8

AP8
FREQ. OUT
RC0/T1CKI

1
2
3
4

La pantalla LCD se conecta como se ha venido


haciendo hasta ahora. Las lneas de datos L0-L7 se
conectan con RB0-RB7. Las lneas de control RS,
R/W y E se conectan con RA1, RA2 y RA3. Por otra
parte la seal que proporciona el generador del
laboratorio se conecta con la entrada RC2/CCP1.
Todo ello se muestra en el esquema de la figura 3-40.

Figura 3-40. El ejemplo 28

AP20
DATOS

Comentarios
En este ejemplo se pretende mostrar el funcionamiento del mdulo CCP1 en el modo de captura. El TMR1
evoluciona a una frecuencia conocida. Se captura el valor que adquiere el TMR1 entre dos flancos ascendentes
de la seal de entrada y que suministra el generador del laboratorio PICSchool. Ese valor capturado representa
el periodo de la seal. Trabajando a 4MHz y con un preescaler de 1:8, el TMR1 evoluciona cada 8S. El valor
mnimo que puede adquirir el TMR1 es de 1 lo que supone un periodo de 8S y una frecuencia de 125Kz. El
valor mximo 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 evolucin del TMR1) para obtener el
periodo final.
3.3.29 Ejemplo 29: Capturas con el mdulo CCP1, midiendo la anchura de un pulso
Enunciado
Se pretende medir el tiempo transcurrido entre el flanco ascendente y el descendente de la seal de entrada que
suministra el generador del laboratorio. Con ello se obtiene la duracin del pulso de esa seal de entrada.
Requisitos
Los mismos que en el ejemplo anterior.
Comentarios
El ejemplo es similar al anterior. Se trata de conocer la evolucin 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 duracin de la anchura del pulso.

3.3.30 Ejemplo 30: Capturas con el mdulo 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 seal de entrada aplicada por
RC2/CCP1.
Requisitos
Los mismos que en los ejemplos anteriores

3-28

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Comentarios
Este es el ltimo ejemplo dedicado al mdulo CCP1 en su modo de captura. En esta ocasin se mide el tiempo
que transcurre entre el flanco descendente de un pulso y el ascendente del siguiente. Con ello conocemos el
lapsus 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: Comparacin con el mdulo 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
1
2
3
4

RC0/T1CKI
AP17
1
2
3
4
5
6
7
8

S0

SALIDAS DIGITALES

RB0

RA5
RA4
RA3
RA2
RA1
RA0

Conectar las entradas E0-E5 con las lneas


RA0-RA5, la salida del generador del laboratorio
con la entrada RC0/T1CKI y la lnea RB0 con la
salida E0. Todo ello se muestra en el esquema
de la figura 3-41.

AP18

E5
E4
E3
E2
E1
E0

1
2
3
4
5
6
7
8

ENTRADAS DIGITALES

Figura 3-41. Conexiones del ejemplo 31

Comentarios
El modo de comparacin de un mdulo 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
interrupcin cuyo tratamiento reinicia del al TMR1 y hace cambiar el estado lgico de la salida S0 conectado a
RB0. El TMR1 acta como contador de eventos externos sensibles al flanco ascendente de la seal que
suministra el generador lgico del laboratorio PICSchool. La salida del generador tambin se puede conectar a
uno de los leds de salida para poder apreciar las transiciones de la seal. Se recomienda seleccionar una baja
frecuencia.
3.3.32 Ejemplo 32: Modulacin de anchura de pulsos (PWM) mediante el mdulo CCP1
Enunciado
Obtener por la salida RC2/CCP1 una seal modulada en anchura. El periodo de esta seal se determina
mediante la constante periodo y la anchura del pulso o Duty Cycle mediante la constante Duty.
Requisitos
La salida del mdulo CCP1 se realiza por la lnea RC2/CCP1 y por ella se obtiene la seal modulada en anchura.
Se recomienda emplear un osciloscopio para poderla visualizar.
Comentarios
La modulacin de anchura de pulsos consiste en obtener una seal 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 mdulo CCP1. Cuando el TMR2 alcanza el valor de PR2 (periodo de la seal), 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 PICSchool; 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
seal de salida tanto en periodo como en anchura.
En el ejemplo se emplea el TMR2 con un preescaler 1:1 por lo que trabajando a 4MHz evoluciona cada 1S.
Conocido este dato es fcil 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 seal presente en RC2/CCP1 y permita constatar los resultados. Tambin hay que destacar que el
funcionamiento del mdulo PWM es totalmente independientemente del programa en ejecucin. Efectivamente,
una vez programado el mdulo CCP1 y el TMR2, la seal de salida se obtiene de forma automtica sin que el
programa de aplicacin tenga que intevenir a no ser que sea para modificar los valores de PR2 y/o de CCPR1L.
3.3.33 Ejemplo 33: PWM mediante el mdulo CCP1, variando la anchura
Enunciado
Se trata de un ejemplo similar al anterior. La diferencia consiste en que la anchura del pulso se modifica
dinmicamente en funcin del valor binario que se introduce por RA0-RA5.
Requisitos
AP18

E5
E4
E3
E2
E1
E0

RA5
RA4
RA3
RA2
RA1
RA0

1
2
3
4
5
6
7
8

Los interruptores E0-E5 se conectan con las seales RA0-RA5 de entrada,


tal y como se muestra en el esquema de la figura 3-42.

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 parmetros externos
como puede ser el valor binario que se introduce por las lneas 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 seal de salida es de
3200S (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 512S (64 * 16). Se recomienda
emplear un osciloscopio conectado a la salida RC2/CCP1 para comprobar el correcto funcionamiento de la
aplicacin. Tambin se recuerda que los pulsadores E4 y E5 conectados en RA4 y RA5, cuando estn en reposo
proporcionan nivel lgico 1. Tenerlo en cuenta a la hora de introducir el valor binario de entrada.

3.3.34 Ejemplo 34: El convertidor ADC


Enunciado
Se trata de obtener el valor analgico que se introduce por la entrada RA0. El resultado de la conversin se
visualiza en binario sobre la pantalla LCD.

3-30

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Requisitos

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

RS
R/W
E
L0
L1
L2
L3
L4
L5
L6
L7

1
2
3
4
5
6
7
8

P2
10K

R7
470

R8
470

ENTRADAS ANALOGICAS

AP20
DATOS

AP16

1
2
3
4
5
6
7
8

RA1
RA2
RA3

1
2
3
4

P1
10K

AP9
CONTROL

Se conecta la pantalla LCD como se


ha venido haciendo en ejemplos
anteriores, es decir, las seales
RB0-RB7 se conectan con las lneas
de datos L0-L7 y las seales RA1RA3 se conectan con las lneas de
control
RS,
R/W
y
E
respectivamente. Por su parte el
cursor del potencimetro P1 se
conecta con la lnea RA0 y los
extremos de dicho potencimetro se
conectan con GND y +5Vcc. Todo
ello se muestra en el esquema de
conexiones de la figura 3-43.

RA0

+5Vcc

Figura 3-43. Conexiones para el ejemplo 34


Comentarios
En este ejemplo se pretende introducir al manejo del mdulo conversor ADC que integran algunos dispositivos
PIC. En el caso del PIC16F876A se trata de un conversor de 10 bits. Trabajando con una tensin de referencia
de +5Vcc, se dispone de una resolucin de 4.8mV/Bit. El resultado binario de la conversin se visualiza sobre la
pantalla LCD. Moviendo el potencimetro P1 se aprecian claramente las variaciones en la medida visualizada en
la pantalla.
3.3.35 Ejemplo 35: Modulacin PWM mediante el convertidor ADC
Enunciado
Se trata de modular la anchura del pulso de la seal de salida que proporciona el mdulo CCP1 sobre la lnea
RC2/CCP1, en funcin de la seal analgica introducida por RA0/AN0 previa conversin.
Requisitos
Conectar el potencimetro P1 del laboratorio PICSchool tal y como se hizo el ejemplo anterior.
Comentarios
En este ejemplo se muestra el empleo combinado del convertidor ACD con el mdulo CCP1 en el modo PWM. El
convertidor ADC obtiene un valor binario en funcin de una tensin analgica de entrada (potencimetro). Este
valor se emplea para ajustar el registro CCPR1L y regular as la anchura del pulso de la seal de salida. Con un
osciloscopio conectado en la lnea RC2/CCP1 se puede apreciar claramente la variacin de la anchura del pulso
segn se vara la posicin del eje del potencimetro.

3.3.36 Ejemplo 36: El USART, Transmitiendo caracteres


Enunciado
Emplear el mdulo USAR disponible en algunos dispositivos PIC, para transmitir el carcter A a intervalos
regulares de 1 segundo.

3-31

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial
Requisitos
Conectar la lnea RC6/Tx con la seal TxD y la lnea RC7/Rx con la seal RxD.
Ambas seales se encuentran en el conector AP5 de la seccin de Interfase RS232 del laboratorio PICSchool. Ver la figura 3-44.

RxD
TxD

RC7
RC6

Figura 3-44. Ejemplo 36

AP5

1
2
3
4

CANAL SERIE

Comentarios
Este ejemplo muestra lo sencillo que resulta realizar la transmisin serie de cualquier carcter o byte. Emplea el
USART que integran los PIC de la serie 16F87X entre otros. La recepcin se puede realizar sobre un PC dotado
de un software estndar de comunicaciones como puede ser el Hyper Terminal que viene incorporado en todas
las versiones de Windows. Hay que configurarlo para realizar una comunicacin a 9600 baudios, 8 bits por
carcter y sin paridad. Se puede emplear un cable serie DB9 macho-hembra pin a pin que se conecta entre el
conector de interfase RS-232 del laboratorio y el canal libre del PC.
3.3.37 Ejemplo 37: EL USART, recepcin/transmisin de caracteres
Enunciado
En este ejemplo se realiza transmisin y recepcin mediante el USAR. El programa espera que se reciba un
carcter o byte. Este se visualiza en binario sobre unos leds conectados a las lneas RB0-RB7. Acto seguido el
mismo carcter recibido se retransmite a modo de eco.
Requisitos
AP17
1
2
3
4
5
6
7
8

S7
S6
S5
S4
S3
S2
S1
S0

SALIDAS DIGITALES

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

RxD
TxD

RC7
RC6
AP5

1
2
3
4

Conectar las lneas RC6/Tx con la seal TxD y la


lnea RC7/Rx con la seal RxD del laboratorio.
Igualmente se conectan los leds de salida S0-S7 con
las lneas RB0-RB7 tal y como se muestra en la figura
3-45.

CANAL SERIE

Figura 3-45. Conexiones para el ejemplo 37

Comentarios
En este ejemplo se propone el empleo de una interrupcin 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 transmisin como la
recepcin se puede realizar sobre un PC dotado de un software estndar de comunicaciones como puede ser el
Hyper Terminal que viene incorporado en todas las versiones de Windows. Hay que configurarlo para realizar
una comunicacin a 9600 baudios, 8 bits por carcter y sin paridad. Se puede emplear un cable serie DB9
macho-hembra pin a pin que se conecta entre el conector de interfase RS-232 del laboratorio y el canal libre del
PC.
3.3.38 Ejemplo 38: Transmitiendo mensaje con el USART
Enunciado
Transmitir una serie de mensajes formados por varios caracteres a travs del USART.
Requisitos
Se realizan las mismas conexiones que las empleadas en el ejemplo 36. La lnea RC6/Tx se conecta con la
seal TxD y la lnea RC7/Rx con la seal RxD. Ambas seales se encuentran en el conector AP5 de la seccin
de Interfase RS-232 del laboratorio PICSchool.

3-32

Laboratorio PICSchool; 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 travs del USART. La recepcin se puede realizar sobre un PC dotado de un software estndar de
comunicaciones como puede ser el Hyper Terminal que viene incorporado en todas las versiones de Windows.
Hay que configurarlo para realizar una comunicacin a 9600 baudios, 8 bits por carcter y sin paridad. Se puede
emplear un cable serie DB9 macho-hembra pin a pin que se conecta entre el conector de interfase RS-232 del
laboratorio y el canal libre del PC.
3.3.39 Ejemplo 3-39: Ejemplo 39: Adivina el nmero
Enunciado
Se trata de un ejemplo de entretenimiento en el que se manejan el teclado y la pantalla LCD. Consisten en
adivinar un nmero comprendido entre 00 y 99 y dispone de una serie de intentos para hacerlo
Requisitos
Se realizan las conexiones mostradas en el esquema de la figura 3-46 y que ya se ha empleado en otras
ocasiones.
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

RA3
RA2
RA1

4
3
2
1

8
7
6
5
4
3
2
1

8
7
6
5
4
3
2
1
AP20 DATOS LCD

RS
R/W
E

L0
L1
L2
L3
L4
L5
L6
L7

C0
C1
C2
C3
F0
F1
F2
F3
AP21 TECLADO

AP9

Figura 3-46. Conexionado para


el ejemplo 39

CONTROL LCD

Comentarios
Es un simple ejemplo de divertimento en el que se conjuga el manejo de la pantalla LCD y el teclado. Se
emplean una serie de rutinas de propsito general que pueden ser empleadas en mltiples ocasiones.

3-33

Laboratorio PICSchool; Manual de Usuario


TEMA 3: Tutorial

3-34

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
ANEXO 1: El mdulo LCD
AN1.1 INTRODUCCIN
El presente anexo est destinado a realizar una breve descripcin del funcionamiento del mdulo LCD
incluido en el laboratorio PICSchool. Se trata de un mdulo compatible con el controlador HD44780 capaz de
representar 2 lneas de 16 caracteres cada una. En las direcciones www.wintek.com.tw y en www.powertip.com.tw
se puede localizar la informacin tcnica que proporcionan estos fabricantes.
A travs de 4 u 8 lneas de datos se le enva el carcter ASCII que se desea visualizar as como ciertos
cdigos de instruccin que permiten realizar diferentes efectos de visualizacin. Igualmente mediante estas lneas de
datos el mdulo puede devolver informacin de su estado interno.
Con otras tres seales adicionales se controla el flujo de informacin entre el mdulo LCD y microcontrolador
que lo gobierna. A continuacin se presenta la descripcin de seales empleadas por el mdulo LCD as como el
nmero de patilla a la que corresponden.
PIN N
1
2
3

SIMBOLO
Vss
Vdd
Vee

RS

DESCRIPCION
Patilla de tierra de alimentacin
Patilla de alimentacin de +5V
Patilla de contraste del cristal lquido. Normalmente se conecta a un potencimetro a travs
del cual se aplica una tensin variable entre 0 y +5V que permite regular el contraste de la
pantalla. Tambin se puede emplear una resistencia para obtener un contraste fijo.
Selecciona entre el registro de control y el registro de datos:

R/W

RS=0 Seleccin del registro de control


RS=1 Seleccin del registro de datos
Seal de lectura/escritura:

7-14

D0-D7

R/W=0 El Mdulo LCD es escrito


R/W=0 El Mdulo LCD es ledo
Seal de activacin del mdulo LCD:
E=0 Mdulo desconectado
E=1 Modulo habilitado
Bus de datos bi-direccional. A travs de estas lneas se realiza la transferencia de
informacin entre el mdulo LCD y el microcontrolador que lo gestiona.

AN1-2 CONEXIN CON PICSchool


El interface entre este mdulo LCD y el laboratorio se realiza mediante los bloques de conexiones
correspondientes: AP20 para las lneas de datos y AP9 para las lneas de control de flujo.
AN1.3 JUEGO DE INSTRUCCIONES
A continuacin se presentan los diferentes cdigos de control o instrucciones que admite el mdulo LCD.
Gracias a ellos es posible configurar diferentes opciones de trabajo de la pantalla y conseguir diferentes efectos de
visualizacin. Consisten en diferentes cdigos que se introducen a travs del bus de datos del mdulo LCD
conectado a una puerta bidereccional del PIC. Se indica tambin el nivel lgico que deben tener las lneas de control
RS y R/W, suponiendo que la seal de habilitacin E est permanentemente activada.

AN1-1

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.3.1 CLEAR DISPLAY
Borra la pantalla LCD y la RAM de datos (DD RAM), colocando el cursor en la primera posicin (direccin
0). Pone el bit I/D a "1" por defecto.
Cdigo:
RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
0

DB3
0

DB2
0

DB1
0

DB0
1

Tiempo de ejecucin: 1.64 mS


AN1.3.2 HOME
Coloca el cursor en la posicin de inicio de la pantalla (direccin 0) y hace que el display comience a
desplazarse desde la posicin original. El contenido de la memoria RAM de datos de visualizacin (DD RAM)
permanecen invariables. La direccin de la memoria RAM de datos para la visualizacin (DD RAM) es puesta a 0.
Cdigo:
RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
0

DB3
0

DB2
0

DB1
1

DB0
X

Tiempo de ejecucin: 1.64 mS

AN1.3.3 ENTRY MODE SET


Establece la direccin de movimiento del cursor y establece si la visualizacin se va desplazando a la
siguiente posicin de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la DD RAM o
CG RAM. Para visualizar normalmente poner el bit S a "0".
Cdigo:
RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
0

DB3
0

DB2
1

DB1
I/D

DB0
S

Tiempo de ejecucin: 40 S

AN1.3.4 DISPLAY ON/OFF CONTROL


Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este ltimo
debe o no parpadear (B).
Cdigo:
RS
0

R/W
0

DB7
0

Tiempo de ejecucin: 40 S

AN1-2

DB6
0

DB5
0

DB4
0

DB3
1

DB2
D

DB1
C

DB0
B

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.3.5 CURSOR OR DISPLAY SHIFT
Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualizacin DD
RAM.
Cdigo:
RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
1

DB3
S/C

DB2
R/L

DB1
X

DB0
X

Tiempo de ejecucin: 40 S
AN1.3.6 FUNCTION SET
Establece el tamao del interfase con el bus de datos en 4 u 8 bits (DL). Tambin determina el nmero de
lneas del display (N) y tipo de carcter (F).
Cdigo:
RS
0

R/W
0

DB7
0

DB6
0

DB5
1

DB4
DL

DB3
N

DB2
F

DB1
X

DB0
X

Tiempo de ejecucin: 40 S
AN1.3.7 SET THE CG RAM ADDRESS
El mdulo LCD adems de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir
hasta 8 caracteres grficos. La composicin de estos caracteres se va guardando en una memoria llamada CG RAM
con capacidad para 64 bytes. Cada carcter grfico definido por el usuario se compone de 8 bytes que se
almacenan en sucesivas posiciones de la CG RAM.
Mediante esta instruccin se establece la direccin de la memoria CG RAM a partir de la cual se irn
almacenando los bytes que definen un carcter grfico. Ejecutado este comando todos los datos que se escriban o
se lean posteriormente, lo hacen desde esta memoria CG RAM.
Cdigo:
RS
0

R/W DB7 DB6 DB5


0
0
1

DB4 DB3 DB2 DB1


Direccin de la CG RAM

DB0

Tiempo de ejecucin: 40 S
AN1.3.8 SET THE DD RAM ADDRESS
Los caracteres o datos que se van visualizando, se van almacenando previamente en una memoria llamada
DD RAM para de aqu pasar a la pantalla.
Mediante esta instruccin se establece la direccin de memoria DD RAM a partir de la cual se irn
almacenado los datos a visualizar. Ejecutado este comando, todos los datos que se escriban o lean posteriormente
los hacen desde esta memoria DD RAM. Las direcciones de la 0x80h a la 0x8Fh corresponden con los 16 caracteres
del primer rengln y de la 0xC0h a la 0xCFh con los 16 caracteres del segundo rengln, en el modelo de pantalla
empleada por el laboratorio.
Cdigo:
RS
0

R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1


0
1
Direccin de la DD RAM

Tiempo de ejecucin: 40 S

AN1-3

DB0

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.3.9 READ BUSY FLAG & ADDRESS
Cuando el mdulo LCD est realizando cualquiera de las anteriores instrucciones, se consume un cierto
tiempo de ejecucin en el que no se le debe mandar ninguna otra. Para ello dispone de un flag llamado BUSY (BF)
que indica que el mdulo est ocupado.
Este instruccin de lectura informa del estado de dicho flag adems de proporcionar el valor del contador de
direcciones de la CG RAM o de la DD RAM segn la ltima que se haya empleado.
Cdigo:
RS
0

R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


1
BF
Direccin de la CG RAM o de la DD RAM

Tiempo de ejecucin: 40 S

AN1.3.10 WRITE DATA TO GG OR DD RAM


Mediante este comando se escribe en la memoria DD RAM los datos que se quieren presentar en pantalla y
que corresponden a los diferentes cdigos ASCII de los caracteres a visualizar. Igualmente tambin es posible
escribir en la memoria CG RAM los diferentes bytes que permiten confeccionar caracteres grficos a gusto del
usuario.
El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de
direccionamiento DD RAM o la de direccionamiento CG RAM.

Cdigo:
RS
1

R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1


0
Cdigo ASCII o byte del carcter grfico

DB0

Tiempo de ejecucin: 40 S
AN1.3.11 READ DATA FROM CG OR DD RAM
Mediante este comando se lee, desde la memoria DD RAM, los datos que haya almacenados y que sern
los cdigos ASCII de los caracteres visualizados.
Igualmente se lee, de la memoria CG RAM, los diferentes bytes con los que se ha confeccionado un
determinado carcter grfico.
El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de
direccionamiento de la DD RAM o la de direccionamiento CG RAM.
Cdigo:
RS
1

R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1


1
Cdigo ASCII o byte del carcter grfico

Tiempo de ejecucin: 40 S

AN1-4

DB0

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.3.12 ABREVIATURAS
Se listan a continuacin las abreviaturas empleadas en los cdigos anteriores y su significado:
ABREVIATURA
S
I/D
S/C
R/L
BF
DL
N
F
B
C
D
X

VALOR
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
1

DESCRIPCION
Desplaza la visualizacin cada vez que se escribe un carcter
Modo normal
Incremento del cursor
Decremento del cursor
Desplaza el display
Desplaza el cursor
Desplazamiento a la derecha
Desplazamiento a la izquierda
Mdulo LCD ocupado
Mdulo LCD disponible
Interfase con bus de datos de 8 bits
Interfase con bus de datos de 4 bits
Pantalla LCD de dos o mas lneas
Pantalla LCD de una lnea
Tamao de carcter de 5 x 10 puntos
Tamao de carcter de 5 x 7 puntos
Parpadeo del cursor en ON
Cursor ON
Display ON
Indeterminado

AN1-5

Laboratorio PICSchool; Manual de Usuario


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

Figura AN1-1. Juego de caracteres


AN1.5 CARACTERES GRFICOS
El usuario puede definir hasta 8 caracteres de 5 x 7 puntos o 4 de 5 x 10. Se seleccionan y visualizan
enviando a la DD RAM cualquier valor entre 00 y 07 08 y 0Fh como si de un cdigo ASCII se tratara.

AN1-6

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
Los caracteres grficos se definen introduciendo en sucesivas direcciones de la CG RAM unos bytes cuyos
patrones binarios definen el carcter tal y como se muestra en la figura AN-2.
La CG RAM es una memoria de 64 posiciones en total. Un carcter de 5 x 7 puntos necesita de 8 octetos en
la CG RAM para ser definido. Se admiten 8 caracteres en total. Un carcter de 5 x 10 puntos necesita un total de 16
posiciones aunque las 5 ltimas no se empleen. Se admiten por tanto 4 caracteres de este tipo.
En el ejemplo de la figura AN1-2, para definir la R en 5 x 7 puntos se introducen 8 octetos en las 8 primeras
posiciones ( 0 a la 7) de la CG RAM. Cada bit de cada uno de esos octetos que valga nivel "1" implica que su
correspondiente pixel en el LCD se active. Como es el primer conjunto de 8 bytes es decir, el primer carcter de la
CG RAM, este se visualizar enviando el cdigo 00 a la DD RAM, como si fuera cualquier otro cdigo ASCII.
Tambin se muestra la generacin del carcter P pero con un formato de 5 x 10 puntos.

Figura AN1-2. Generando caracteres grficos


AN1.6 SECUENCIA DE INICIALIZACIN
El mdulo LCD ejecuta automticamente una secuencia de inicio interna en el instante de aplicarle la tensin
de alimentacin, si se cumplen los requisitos que indica el fabricante. Estos consisten bsicamente en que dicha
tensin pase de 0.2 a 4.5V en un tiempo comprendido entre 0.1 y 10mS. Igualmente el tiempo de desconexin debe
ser al menos de 1mS antes de una nueva conexin. La secuencia de inicio que realiza la electrnica interna del
mdulo LCD se puede resumir en los pasos siguientes:
1.-

CLEAR DESPLAY
El flag BUSY se mantiene a 1 (ocupado) durante 15mS hasta que finaliza todo el
proceso de inicializacin.

2.-

FUNCTION SET
Se elige por defecto el tamao del bus de datos a 8 bits (DL=1) y el nmero de renglones
del display en 1 (N=0).

3.-

DISPLAY ON/OFF CONTROL

AN1-7

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
Se selecciona por defecto el dysplay en OFF (D=0), el cursor en OFF (C=0) y el
parapadeo del mismo en OFF (B=0).
4.-

ENTRY MODE SET


Se elige por defecto el incremento del cursor (I/D=1) y el modo normal del display (S=0).
Se selecciona la primera posicin de la DDRAM.

Si no se satisfacen las condiciones de alimentacin, la secuencia de inicializacin habra que realizarla por
software, donde las instrucciones que aplica el usuario podran ser las expuestas anteriormente o cualquier otra
segn sus propias necesidades.
Es importante realizar una temporizacin de unos 15 mS tras enviar la primera instruccin al mdulo LCD
para la completa reinicializacin interna del mismo.
AN1.7 DIAGRAMA DE TIEMPOS
La figura AN1-3 muestra el diagrama y tabla de tiempos para distintos dispositivos controladores LCD que
pueden ir integrados en el propio mdulo. Es posible que estos tiempos se vean modificados por las distintas
versiones que van apareciendo en el mercado.

Figura AN1-3. Diagramas de tiempos


AN1-8 RUTINAS DE CONTROL
En este apartado se presentan una serie de rutinas escritas en el ensamblador MPASM de MICROCHIP con
objeto de proporcionar al usuario una idea de cmo gestionar las diferentes actividades a realizar con el mdulo
LCD. Estn diseadas para los PIC 16F876 a 4 MHz de velocidad como el que viene incorporado de serie en el
laboratorio PICSchool.

AN1-8

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
Las rutinas emplean dos posiciones de memoria RAM para manejar sus propios datos variables. El inicio de
esas posiciones ha de ser declarado por el usuario en su programa fuente mediante el empleo de la directiva:
Lcd_var

equ

0xdd

;Inicio de variables de las rutinas


;LCD a partir de la posicin 0xdd

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

LCD_CXX.INC

Al principio de las rutinas se realizan una serie de definiciones previas de las lneas de E/S como las que se
muestran a continuacin. Estas definiciones sirven para una determinada conexin entre las seales que controlan la
pantalla y el PIC, aunque pueden ser modificadas para otros casos. En los ejemplos propuestos se supone que las 8
lneas de la puerta B estn conectadas con las lneas de datos del mdulo LCD. La lnea RA1 est conectada con la
seal RS, RA2 con R/W y la lnea RA3 con la seal E.

#define ENABLE
#define DISABLE
#define LEER
#define ESCRIBIR
#define OFF_COMANDO
#define ON_COMANDO
CBLOCK

bsf PORTA,3
bcf PORTA,3
bsf PORTA,2
bcf PORTA,2
bcf PORTA,1
bsf PORTA,1

;Activa seal E
;Desactiva seal E
;Pone LCD en Modo RD
;Pone LCD en Modo WR
;Desactiva RS (modo comando)
;Activa RS (modo dato

Lcd_var

;Inicio de las variables. Ser la primera


;direccin libre disponible

Lcd_Temp_1
Lcd_Temp_2
ENDC

Una vez definidas las posiciones que emplean las variables de las rutinas, as como incluido el fichero que
las contiene, el usuario podr hacer uso de ellas tantas veces como sea necesario. Se facilita de forma notable el
escribir programas destinados a la visualizacin mediante pantalla LCD.
AN1.8.1 UP_LCD
Genera la secuencia de inicio de las lneas de E/S del PIC para su conexin con la pantalla

;*************************************************************************
;UP_LCD: Configuracin 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 PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.8.2 LCD_E
Genera un pulso por la seal E (RA2 en el ejemplo) para activar al mdulo LCD. Entre un pulso y el
siguiente se genera una temporizacin de unos 40 S a una frecuencia de trabajo de 4MHz. Esta rutina quiz deba
modificarse en futuras versiones de los mdulos LCD, segn caractersticas del fabricante.

;**************************************************************************
;LCD_E: Pulso de Enable. En los nuevos LCD's esta seal debe estar a "0" unos 40uS
;antes de volver a ponerse a "1".
;
LCD_E
ENABLE
;Activa E
nop
DISABLE
;Desactiva E
movlw .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 mdulos LCD de winteck
return

AN1.8.3 LCD_BUSY
Chequea el estado del flag Busy del LCD y espera a que finalice cualquier instruccin previa antes de
retornar. Con esta rutina se garantiza que al mdulo LCD no se le manda otro comando hasta que finaliza la
ejecucin del anterior.

;**************************************************************************
;LCD_BUSY: Lectura del Flag Busy y la direccin.
;
LCD_BUSY
LEER
;Pone el LCD en Modo RD
bsf
STATUS,RP0
movlw H'FF'
movwf PORTB
;Puerta B como entrada
bcf
STATUS,RP0 ;Selecciona el banco 0
ENABLE
;Activa el LCD
nop
LCD_BUSY_1 btfsc PORTB,7
;Chequea bit de Busy
goto LCD_BUSY_1
DISABLE
;Desactiva LCD
bsf
STATUS,RP0
clrf
PORTB
;Puerta B salida
bcf
STATUS,RP0
ESCRIBIR
;Pone LCD en modo WR
return

AN1-10

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.8.4 LCD_REG
Deposita el cdigo de instruccin contenido en el registro W sobre la puerta B. Espera que el LCD ejecute la
ltima operacin y genera el pulso de activacin en la seal E, enviando dicho cdigo a la pantalla.

;**************************************************************************
;LCD_REG: Escritura de comandos en el LCD. Enva el comando presente en el W
LCD_REG

OFF_COMANDO
movwf PORTB
call
LCD_BUSY
goto LCD_E

;Desactiva RS (modo comando)


;Cdigo de comando.
;LCD libre?.
;SI.Genera pulso de E.

AN1.8.5 LCD_DATO
Deposita el cdigo ASCII del carcter a visualizar presente en el registro W, sobre la puerta B. Espera a que
el LCD ejecute la ltima operacin y genera el pulso de activacin en la seal E. El carcter enviado se visualiza
sobre la posicin actual del cursor.

;**************************************************************************
;LCD_DATO: Escritura de datos en DDRAM o CGRAM. Enva el dato presente en el W
;
LCD_DATO
OFF_COMANDO
;Desactiva RS (modo comando)
movwf PORTB
;Valor ASCII a sacar por portb
call
LCD_BUSY
;Espera a que se libere el LCD
ON_COMANDO
;Activa RS (modo dato).
goto LCD_E
;Genera pulso de E

AN1.8.6 LCD_INI
Realiza la inicializacin del mdulo LCD segn los tiempos marcados por el fabricante (15 mS). En este
ejemplo la pantalla queda inicializada con un interfase de 8 bits de bus de datos, 2 lneas de visualizacin y
caracteres de 5 x 7 puntos.

;***************************************************************************
;LCD_INI: inicializacin del LCD enviando el comando "Function Set" 3 veces consecutivas
;con un intervalo de unos 5 mS. El LCD queda borrado y el cursor en la primera posicin
LCD_INI

movlw
call
call
movlw
call
call
movlw
call
call
movlw
call
return

b'00111000'
LCD_REG
;Cdigo de instruccin
LCD_DELAY ;Temporiza
b'00111000'
LCD_REG
;Cdigo de instruccin
LCD_DELAY ;Temporiza
b'00111000'
LCD_REG
;Cdigo de instruccin
LCD_DELAY ;Temporiza
b'00000001' ;Borra LCD y Home.
LCD_REG

AN1-11

Laboratorio PICSchool; Manual de Usuario


ANEXO 1: La pantalla LCD
AN1.8.7 LCD_DELAY
Genera una temporizacin de 5 mS de propsito general. Se emplean para ellos las variables LCD_Temp_1
y LCD_Temp_2.

;*****************************************************************************
;LCD_DELAY: Rutina de temporizacin de unos 5 mS a 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:

LCD_DELAY_1:

clrwdt
movlw
movwf
clrf
decfsz
goto
decfsz
goto
return

.7
Lcd_Temp_1
Lcd_Temp_2
Lcd_Temp_2,F
LCD_DELAY_1
Lcd_Temp_1,
LCD_DELAY_1

AN1.9 DIMENSIONES DEL MDULO LCD


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

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

AN1-12

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
ANEXO 2: Resumen del PIC16F876/877
AN2.1 INTRODUCCION
El presente anexo est destinado a hacer un breve resumen de las caractersticas generales del
dispositivo PIC16F876, el que viene de serie con el laboratorio PICSchool, as como del PIC16F877, idntico al
anterior pero con ms lneas de E/S. Para mas informacin se recomienda acudir a la pgina
www.microchip.com donde podemos encontrar los data sheets completos con todos los detalles tcnicos de
todos los modelos de PIC, notas de aplicacin, actualizaciones de las diferentes herramientas software, etc.
AN2.2 CARACTERISTICAS GENERALES
A continuacin se detallan las caractersticas ms relevantes que definen la CPU y perifricos que
incluye el dispositivo PIC16F876/F877

CPU con arquitectura RISC (juego de instrucciones reducido)


Juego de 35 instrucciones de un nico word de 14 bits cada una de ellas.
Todas las instrucciones se ejecutan en un nico ciclo de instruccin excepto los saltos
que necesitan dos. Un ciclo de instruccin necesita a su vez de cuatro ciclos de reloj.
Trabajando a 4MHz una instruccin se ejecuta en 1S.
Memoria FLASH de programa de 8K word de 14 bits, 368 bytes de memoria RAM para
datos variables y 256 bytes de memoria EEPROM para datos no voltiles.
Capacidad de interrupcin que puede ser provocada por 14 fuentes o eventos distintos.
Stack autnomo y transparente de 8 niveles
Modos de direccionamiento directo, indirecto y relativo.
Circuito Power-On Reset (POR) integrado. Automticamente genera la seal de
arranque cuando la tensin de alimentacin alcanza un determinado valor.
Temporizadores Power-up Timer (PWRT) y Oscillator Start-up Timer (OST) que
retrasan el arranque, en espera de la total estabilizacin tanto de la tensin de
alimentacin como de la frecuencia de trabajo del oscilador.
Temporizador WDT o Perro guardin capaz de provocar un arranque automtico en
determinadas ocasiones.
Modo de trabajo en standby que reduce el consumo as como velocidades del oscilador
seleccionables.
Tensin de alimentacin de 2 a 5.5V con un bajo consumo: < 2 mA a 5V y 4MHz; 20A
a 3V y 32KHz;< 1A en el modo de espera o stanby.
Corriente de salida de hasta 25 mA por pin
Temporizador/contador de 8 bits con preescaler (TMR0)
Temporizador/contador de 16 bits con preescaler (TMR1)
Temporizador/contador de 8 bits con registro de periodos, prescaler y postcaler (TMR2)
Dos mdulos CCP independientes para la captura, comparacin y modulacin de
anchura de pulsos (PWM).
Convertidor analgico/digital con resolucin de 10 bits y hasta 8 canales de entrada.
Puerta serie sncrona (SSP) con modalidad de bus SPI (modo master) y bus I2C
(Master/Slave).
Receptor/Transmisor universal sncrono/asncrono (USART).
Puerto paralelo esclavo (PSP) de 8 bits para transferencias en paralelo con seales de
control del tipo read (RD), write (WR) y sleccin (CS). Slo est disponible en el modelo
PIC16F877.

AN2-1

Laboratorio PICSchool; Manual de Usuario


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

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


NOMBRE

TIPO
DESCRIPCION
Entrada para el cristal del oscilador/entrada de oscilador externo.
I

OSC1/CLKIN
OSC2/CLKOUT

MCLR/Vpp/THV

I/P

Salida del cristal del oscilador. En el modo RC por este pin sale de la
frecuencia de OSC1 y denota la ejecucin de un ciclo de instruccin
Entrada de reset activa por nivel bajo. Por esta patilla tambin se
introduce la tensin Vpp de grabacin y la tensin de test THV
PUERTA A: 6 lneas

RA0/AN0

I/O

Entrada/salida digital RA0 o entrada analgica del canal 0 AN0

RA1/AN1

I/O

Entrada/salida digital RA1 o entrada analgica del canal 1 AN1

RA2/AN2/VREF-

I/O

Entrada/salida digital RA2, entrada analgica AN2 o entrada de tensin


de referencia VREF-

RA3/AN3/VREF+

I/O

Entrada/salida digital RA3, entrada analgica AN3 o entrada + de tensin


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 analgica AN4. Tambin acta como


seal SS de seleccin de esclavo para el mdulo SSP.

AN2-2

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
NOMBRE

TIPO

DESCRIPCION
PUERTA B: 8 lneas

RB0/INT

I/O

Entrada/salida digital RB0 o entrada de interrupcin externa INT

RB1

I/O

Entrada/salida digital

RB2

I/O

Entrada/salida digital RB2

RB3/PGM

I/O

Entrada/salida digital RB3. Entrada en baja tensin de programacin PGM

RB4

I/O

Entrada/salida digital RB4. Produce interrupcin por cambio de estado

RB5

I/O

Entrada/salida digital RB5. Produce interrupcin por cambio de estado

RB6

I/O

Entrada/salida digital RB6. Produce interrupcin por cambio de estado

RB7

I/O

Entrada/salida digital RB7. Produce interrupcin por cambio de estado

PUERTA C: 8 lneas
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 mdulo
CCP2

RC2/CCP1

I/O

Entrada/salida digital RC2 o E/S del mdulo CCP1

RC3/SCK/SCL

I/O

Entrada/salida digital RC3 o E/S de reloj para los modos SPI (SCK) e I2C
(SCL) de la puerta serie sncrona (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 asncrono o


reloj del USART en modo sncrono

RC7/RX/DT

I/O

Entrada/salida digital RC7, recepcinRx del USART en modo asncrono o lnea


de datos del USAR en modo sncrono

AN2-3

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
NOMBRE

TIPO

DESCRIPCION
PUERTA D: 8 lneas, slo en el PIC16F877

RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O

Entrada/salida digital RD0 o lnea PSP0 del puerto esclavo paralelo


Entrada/salida digital RD1 o lnea PSP1 del puerto esclavo paralelo
Entrada/salida digital RD2 o lnea PSP2 del puerto esclavo paralelo
Entrada/salida digital RD3 o lnea PSP3 del puerto esclavo paralelo
Entrada/salida digital RD4 o lnea PSP4 del puerto esclavo paralelo
Entrada/salida digital RD5 o lnea PSP5 del puerto esclavo paralelo
Entrada/salida digital RD6 o lnea PSP6 del puerto esclavo paralelo
Entrada/salida digital RD7 o lnea PSP7 del puerto esclavo paralelo

PUERTA E: 3 lneas, slo en el PIC16F877

RE0/RD/AN5

I/O

Entrada/salida digital RE0, lnea RD de control de lectura del puerto paralelo


o entrada analgica AN5

RE1/WR/AN6

I/O

Entrada/salida digital RE1, lnea WR de control de escritura sobre el puerto


paralelo o entrada analgica AN6

RE2/CS/AN6

I/O

Entrada/salida digital RE2, lnea CS de seleccin del puerto paralelo o


entrada analgica AN7

Vss
Vdd

P
P

Entrada de alimentacin de tierra o GND


Entrada de alimentacin de tensin positiva de +2 a +5.5Vcc

AN2.4 ORGANIZACIN DE LA MEMORIA FLASH DE PROGRAMA


Los dispositivos PIC16F876/877 disponen de un total de 8K
word de memoria de programa organizada en cuatro bancos de 2K
cada uno, tal y como se muestra en la figura AN2-2. Cabe destacar
que en la arquitectura de los PIC las instrucciones son de tamao fijo
y ocupan un nico word de 14 bits. Cuando se dice que la memoria
de programa es de 8K word es que admite realmente 8K de
instrucciones.
El contador de programa (PC) es de 13 bits por lo que puede
direccionar toda la memoria. En el caso de ejecutar instrucciones de
tipo CALL o, bien cuando se produce una interrupcin, el PC se
guarda en la pila o memoria de stack. Cuando se ejecutan
instrucciones de retorno como RETURN, RETFIE o RETLW le valor
del PC se restaura desde dicho stack. El stack es una memoria tipo
LIFO de 8 niveles y 13 bits por nivel. Esto permite anidar hasta un
mximo de 8 subrutinas y/o interrupciones.
La posicin 0x0000 es la posicin conocida como vector de
RESET. Cada vez que se produce esta situacin el PC se carga con
el valor 0x0000 con lo que empieza la ejecucin del programa a
partir de esa direccin. Lo normal es que en esta direccin el usuario
coloque una instruccin del tipo GOTO xxxx que enve al PC al inicio
del programa de aplicacin.
Figura AN2-2. Mapa de memoria de programa para PIC16F876/877

AN2-4

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
Otra posicin destacable es la 0x0004, conocida como vector de interrupcin. Sea cual fuere la fuente de
interrupcin que se haya producido, el PC se carga con 0x0004. En esta direccin el usuario coloca otra
instruccin del tipo GOTO xxxx que enva al PC al inicio del programa de tratamiento de la interrupcin.
Desde el vector de RESET (0x0000) al vector de interrupcin (0x0004) hay un rango de 4 posiciones que
el usuario puede emplear para introducir instrucciones fundamentales que permitan habilitar o no interrupciones,
iniciar el PCLATH, el STATUS, etc..
AN2.5 LA MEMORIA RAM DE DATOS
La memoria de RAM de datos est organizada en 4 bancos de 128 registros de 8 bits cada uno. Algunos
de esos registros los emplea el propio microcontrolador como registros de estado y control de perifricos.
Reciben el nombre de SFR (Special Function Registers).
Otros registros no estn
implementados y, finalmente, hay
algunos que estn duplicados en
los distintos bancos.
En definitiva al usuario le
quedan libres a su disposicin un
total de 368 registros donde poder
almacenar otros tantos bytes de
datos. Se tratan de registros tipo
RAM que se pueden leer o escribir
tantas veces sea necesario. La
informacin contenida en ellos es
voltil y desaparece cada vez que
falte la tensin de alimentacin.
En la figura AN2-3 se
muestra la distribucin de los
distintos registros sobre los
diferentes bancos. Tambin se
indica la direccin y el nombre que
tienen asignados. Posteriormente
se har una breve descripcin de
la misin de los registros
especiales SFR. Para conocer
ms acerca de los mismos, se
recomienda
acudir
a
www.microchip.com donde se
proporciona
una
explicacin
detallada de cada uno de ellos.

Figura AN2-3. Detalle de la


memoria RAM de datos

Se puede apreciar que ciertamente algunos registros SFR estn repetidos en los 4 bancos. Dichos
registros son considerados esenciales y pueden ser empleados en cualquier momento sin necesidad de tener
que andar cambiando de banco.

AN2-5

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
A continuacin se presenta una breve descripcin de los mismos
REGISTRO
INDF

PCL
TMR0
OPTION_REG
STATUS
FSR
PORTA
TRISA
PORTB
TRISB
PORTC
TRISC
PORTD
TRISD
PORTE
TRISE
PCLATH
INTCON
PIR1
PIE1
PIR2
PIE2
PCON
TMR1L
TMR1H
T1CON
TMR2
PR2
T2CON
SSPBUF
SSPCON
SSPCON2
SSPADD
SSPSTAT
CCPR1L
CCPR1H
CCP1CON
RCSTA
TXSTA
TXREG
RCREG
SPBRG
CCPR2L
CCPR2H
CCP2CON
ADRESH
ADRESL
ADCON0

DESCRIPCION
Registro ficticio empleado en los direccionamientos indirectos
Representa la parte baja del contador de programa o PC
Registro contador/temporizador TMR0
Registro de opciones del TMR0, WDT, RB Pull_Up,etc
Contiene informacin del estado interno de la CPU
Contiene el ndice que apunta a la direccin que se va a emplear en los direccionamientos
indirectos
Sus 6 bits de menos peso permiten acceder directamente a las 6 lneas de la puerta A
Con sus 6 bits de menos peso se establece qu lneas de la puerta A actan como entradas o
salidas
Accede directamente a las 8 lneas de la puerta B
Determina qu lneas de la puerta B actan como entradas o como salidas
Accede directamente a las 8 lneas de la puerta C
Determina qu lneas de la puerta C actan como entradas o como salidas
Accede directamente a las 8 lneas de la puerta D. Slo est disponible en el PIC16F877
Determina qu lneas de la puerta D actan como entradas o como salidas. Slo est disponible
en el PIC16F877
Accede directamente a las tres lneas de la puerta D. Slo est disponible en el PIC16F877
Determina qu lneas de la puerta D actan como entradas o como salidas. Slo est disponible
en el PIC16F877
Representa los bits de ms peso del PC. Se emplea para seleccionar los distintos bancos de la
memoria de programa cuando va a realizarse algn tipo de salto
Registro para el control de las interrupciones bsicas habilitndolas o no
Registro de estado de las interrupciones de los perifricos. Indica si se ha producido o no alguna
Registro para la habilitacin o no de las interrupciones de los perifricos
Registro de estado de las interrupciones de perifricos (cont.)
Registro para la habilitacin o no de las interrupciones de los perifricos (cont.)
Registro de control de POR y BOR
Parte baja de los 16 bits del TMR1
Parte alta de los 16 bits del TMR1
Registro de control para el TMR1
Registro del contador /temporizador TMR2
Registro de periodos del TMR2
Registro de control del TMR2
Buffer de transmisin/recepcin del mdulo SSP
Registro de control del mdulo SSP
Registro auxiliar de control del mdulo SSP
Registro de direcciones del mdulo SSP
Registro de estado del mdulo SSP
Registro parte baja de los 16 bits del mdulo CCP1
Registro parte alta de los 16 bits del mdulo CCP1
Registro de con control del mdulo CCP1
Registro de estado del receptor de la USART
Registro de estado del transmisor de la USART
Registro transmisor del USART
Registro receptor del USART
Registro generador de baudios
Registro parte baja de los 16 bits del mdulo CCP2
Registro parte alta de los 16 bits del mdulo CCP2
Registro de con control del mdulo CCP2
Parte alta del resultado de la conversin A/D
Parte baja del resultado de la conversin A/D
Registro de control del convertidor A/D

AN2-6

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
ADCON1
EEDATA
EEADR
EEDATH
EEADRH
EECON1
EECON2

Registro auxiliar de control del convertidor A/D


Parte baja del registro de datos para la memoria FLASH o EEPROM de programa o datos
Parte baja del registro de direcciones de la memoria FLASH o EEPROM de programa o datos
Parte alta del registro de datos para la memoria FLASH de programa
Parta alta del registro de direcciones para la memoria FLASH de programa
Registro de control para el acceso a memoria FLASH o EEPROM
Registro auxiliar de control para el acceso a la memoria FLASH o EEPROM

AN2.6 CONDICIONES INICIALES EN EL RESET


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

Figura AN2-4. Bits del registro de estado


En la tabla de la figura AN2-5 se muestra el valor adquirido por ciertos registros tras la condicin de
RESET.

Figura AN2-5. Valores adquiridos por ciertos registros tras el RESET


Finalmente, en la tablas de las figuras AN2-6 y AN2-7 se muestra el valor que adquieren todos los
registros internos del PIC segn se produzcan diferentes situaciones.

AN2-7

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877

Leyenda: u = no vara; x = desconocido; - = bit no implementado, se lee como 0; q = depende de la condicin

Figura AN2-6. Los registros internos tras el RESET

AN2-8

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877

Leyenda: u = no vara; x = desconocido; - = bit no implementado, se lee como 0; q = depende de la condicin

Figura AN2-7.Los registros internos tras el RESET. Continuacin

AN2-7 JUEGO DE INSTRUCCIONES


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

AN2-9

Laboratorio PICSchool; Manual de Usuario


ANEXO 2: Resumen del PIC16F876/877
La penltima columna indica qu bits del registro STATUS se puede ver modificados como consecuencia
de ejecutar las distintas instrucciones. Es una informacin que se debe tener muy en cuenta.
La ltima columna aade una serie de notas que se indican a continuacin:
1.-

Cuando se modifica cualquiera de los registros asociados a las puertas de E/S, la


modificacin afecta directamente a las patillas de E/S de dichas puertas.

2.-

Cuando la ejecucin de estas instrucciones afecten al TMR0, el preescaler se borra si


es que est asignado al propio TMR0.

3.-

Cualquier instruccin que implique modificar el contenido actual del PC, se considera
una instruccin de salto. Consume dos ciclos de instruccin.

Figura AN2-8. Resumen del juego de instrucciones

AN2-10

Laboratorio PICSchool; Manual de Usuario


ANEXO 3: Experimentando con la gama alta
ANEXO 3: Experimentando con la gama alta PIC18FXXX
AN3.1 INTRODUCCION
En este anexo se han incluido tres experimentos implementados con un dispositivo de la gama alta
PIC18FXXX. Dentro de esta gama hemos seleccionado, para realizar los experimentos propuestos, el
microcontrolador PIC18F4520 uno de los microcontroladores que ms 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 introduccin a los
dispositivos PIC18FXXX de la gama alta. No se pretende en ningn caso que sean un tutorial ni tampoco se
pretende aprovechar todos los recursos ni prestaciones que proporcionan estos potentes microcontroladores.
Para todo esto sera necesario disear todo un mdulo de prcticas 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 PICSchool que tienes en tus manos. Simplemente se trata de resaltar las
posibilidades del laboratorio PICSChool tanto en su empleo con micros de gama media PIC16FXXX como con
dispositivos de gama alta PIC18FXXX.
Las caractersticas mas relevantes del microcontrolador PIC18F4520 son las siguientes:
Memoria de Programa
Memoria de Datos
Memoria de Datos EEPROM
Fuentes de Interrupcin
Puertos de E/S
Temporizadores
Mdulos Captura/Comparacin
Comunicacin Serie
Comunicacin Paralelo
Convertidores ADC

16384 Words
1536 bytes
256 bytes
19
A(8), B(8), C(8), D(8) y E(3)
4
1 estndar y 1 ampliado
MSSP y USART (mejorado)
PSP
13 x 10 bits

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


Este sencillo experimento tiene como misin, familiarizarse con algunas de las instrucciones y registros
de los microcontroladores PIC de la gama alta. Simplemente va a realizar la multiplicacin de los 4 bits de ms
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 slo con 4 bits, el valor mximo de la multiplicacin ser 00001111
* 00001111 = 00000000 11000001. As, aunque el multiplicador de 8 bits incluido en estos dispositivos almacena
el resultado de la multiplicacin en dos registros de 8 bits PRODH y PRODL, slo 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 lneas de menos peso del puerto C (RC3-RC0) y los cuatro pulsadores E7-E4, a las cuatro lneas de
ms peso del puerto C (RC7-RC4). Teniendo en cuenta que los pulsadores del PIC School estn 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 lneas antes de
realizar la multiplicacin. Por su
parte los leds de salida S7-S0 se
conectan con las lneas 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 PICSchool; Manual de Usuario


ANEXO 3: Experimentando con la gama alta
Es necesario configurar todas las lneas del puerto B como salidas y todas las lneas del puerto C como
entradas. El programa fuente quedara de la siguiente forma:
list p=18c452
#include
<P18C452.INC>
OP1
OP2

equ
equ
org
goto

org
Inicio
clrf
clrf
clrf
movlw
movwf
Bucle
movf
movwf
andlw
movwf
movlw
andwf
movlw
xorwf
swapf
movf
mulwf
movff
goto

0x000
0x001

00000h
Inicio

; Vector de Reset

00020h
LATB
LATC
TRISB
0xff
TRISC
PORTC,W
OP2
0x0f
OP1
0xf0
OP2,F
0xf0
OP2,F
OP2,F
OP1,W
OP2
PRODL,PORTB
Bucle

; Borrado de posibles Latchs del puerto B


; Borrado de posibles Latchs del puerto C
; Todo el puerto B salidas
; Todo el puerto C entradas
;
;
;
;
;

Se almacena la lectura del puerto C en w


OP2 <- Los 8 bits ledos
los 4 bits de ms peso de w a 0
OP1 <- primer operando
Se elimina la parte baja de la lectura

; Se complementan lo 4 bits de ms peso


; Se intercambian los nibbles
; Se realiza la multiplicacin
; Se muestra el producto en puerto B

end

La fotografa de la figura AN3-2 muestra el montaje prctico del experimento propuesto.

Figura AN3-2. Fotografa de montaje del


Experimento 1

AN3.3 EXPERIMENTO 2: Modulacin Ancho de Banda (PWM) controlado por potencimetro


En este experimento vamos a controlar un canal PWM estndar mediante un potencimetro, 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 perifrico, como por
ejemplo un motor, que nos permita ver el funcionamiento de este recurso.

AN3-2

Laboratorio PICSchool; Manual de Usuario


ANEXO 3: Experimentando con la gama alta
El esquema de conexionado se muestra en la figura AN3-3, sabiendo adems que la salida RC1, deber
conectarse a la sonda del osciloscopio.
Las lneas RD1-RD3 se conectan a las
seales de control RS, RW y E
respectivamente. Las lneas de la puerta B
RB0-RB7 se conectan con las seales de
datos L0-L7 del LCD.
Por otra parte se emplea el potencimetro P1
para generar una tensin analgica variable
que se aplica por RA0 para su posterior
conversin.

Figura AN3-3. Esquema elctrico del


experimento 2.
Es necesario configurar el mdulo CCP para realizar funciones de modulado de ancho de banda, lo cual
se lleva a cabo en la rutina Inicio_PWM. Dado que slo vamos a utilizar una salida PWM utilizamos el mdulo
CCP estndar, es decir el CCP2.
Adems como el ciclo activo del periodo PWM viene marcado por la lectura de un canal analgico es
necesario realizar la configuracin del mismo por medio de la rutina Inicio_ADC. Solo AN0 acta como analgico
y como tensin 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 analgico, volcando los 10
bits en los que convierte la entrada, en los 10 que controlan los ciclos del periodo PWM. Adems se visualiza la
lectura del canal AN0 en la pantalla LCD por medio de la rutina LCD_AD. A continuacin se muestra parte del
cdigo fuente de la rutina principal. El cdigo completo se encuentra en la carpeta de ejemplos del CDROM.
Principal
bsf
btfss
goto
movff
btfsc
bsf
btfss
bcf
btfsc
bsf
btfss
bcf
call

ADCON0, GO ;
PIR1,ADIF
;
Principal
ADRESH,CCPR2L
ADRESL,7
CCP2CON,5
;
ADRESL,7
CCP2CON,5
ADRESL,6
;
CCP2CON,4
ADRESL,6
CCP2CON,4
;
LCD_AD
;

bcf

PIR1, ADIF

goto

Principal

Comienzo conversin A-D


Mientras no finalice conversin, espera
; los 8 bits MSB del ADC a los 8 de PWM
Bit de menos peso ADC a PWM
bit de peso 2 de ADC a PWM (total 10 bits)

Mostramos en el LCD el resultado del ADC

; Se borra el flag del ADC para la prxima


; conversin
; Vuelta al bucle

AN3.4 EXPERIMENTO 3: Visualizacin de dos canales analgicos a travs del USART.


A travs de este experimento vamos a visualizar el valor digitalizado de dos entradas analgicas en el
PC a travs de un programa Terminal. Utilizaremos como entradas analgicas las lneas AN0 y AN1 del puerto
A, utilizando como tensin de referencia la alimentacin de 5Vcc aplicada al PIC. Cada vez que pulsemos uno de
los dos pulsadores conectados a las lneas RC0 y RC1 del puerto C se enviarn 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 PICSchool; 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 configuracin del programa deber quedar
tal y como se indica en la figura AN3-4.

Figura AN3-4. Configuracin del programa


hiperterminal de Windows

El esquema de conexin den el


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

Figura AN3-5. Esquemas de conexiones del experimento 3

A la hora de realizar el programa comenzaremos configurando los recursos utilizados. Con este
propsito la rutina Inicio_UART configura las lneas RC7/Rx y RC6/Tx como entrada y salida respectivamente,
adems habilita el USART para que se establezca una comunicacin asncrona con el PC a 9600 baudios, con 8
bits de datos y uno de parada. A su vez, la rutina Inicio_ADC configura las lneas RA0/AN0 y RA1/AN1 como
analgicas manteniendo el resto del puerto A como lneas 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 configuracin, el programa comienza testeando la activacin de los dos
pulsadores conectados a las lneas de menos peso del Puerto C. Tngase en cuenta que los pulsadores del PIC

AN3-4

Laboratorio PICSchool; 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 pulsacin en
uno de ellos, y tras esperar 10 ms para eliminar los posibles rebotes que se puedan generar se activa el canal
analgico correspondiente y se procede con la conversin analgica-digital. Posteriormente se lanza por el
USART los 10 bits en los que ha resultado la conversin.
La rutina principal del programa sera la siguiente. En la carpeta de ejemplos del CDROM est disponible
el programa fuente completo.
Evalua_Pulsadores
; Se compueba si las lneas RC0 o RC1 estn
btfss PORTC,0
; activadas. Mientras por ambas lneas llegue
call Pulsador_0
; un 1 se permanece en el bucle. Al detectar
btfss PORTC,1
; un 0 en una de ellas se llama a la rutina
call Pulsador_1
; Pulsador_0 o Pulsador_1.
goto Evalua_Pulsadores
Pulsador_0
call Espera_10_ms
btfss PORTC,0
goto Pulsador_0
call Espera_10_ms
call Lectura_AN0
call Visualiza
return

;
;
;
;
;
;

Espera 10 ms para eliminar posibles rebotes


Se ha soltado ya el pulsador?
No, pues espera
Elimina los rebotes generados al soltar
Realiza la lectura de la lnea AN0
Muestra la conversin A-D por el USART

Pulsador_1
call Espera_10_ms
btfss PORTC,1
goto Pulsador_1
call Espera_10_ms
call Lectura_AN1
call Visualiza
return

;
;
;
;
;
;

Espera 10 ms para eliminar posibles rebotes


Se ha soltado ya el pulsador?
No, pues espera
Elimina los rebotes generados al soltar
Realiza la lectura de la lnea AN0
Muestra la conversin A-D por el USART

AN3.5 EL COMPILADOR C
Para la realizacin de este ltimo experimento vamos a emplear uno de los compiladores de C para
microcontroladores PIC ms empleados: El compilador PCWH de la empresa ccs.
Entre las principales ventajas de este compilador destacan las siguientes:

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


microcontroladores PIC, permitiendo siempre, la utilizacin del microcontrolador ms adecuado a cada
proyecto.

Precio. Es uno de los compiladores ms econmicos permitiendo adems la adquisicin por separado
de cada una de las gamas de microcontroladores PIC.
Facilidad de uso. Gracias al enorme nmero 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 ms potente y sencillo de utilizar no exigiendo grandes conocimientos de programacin a alto o
bajo nivel.

Existe una versin de evaluacin que permite, durante 30 das, desarrollar aplicaciones basadas nicamente
en el microcontrolador PIC 18F4520. Esta versin se puede descargar desde la pgina http://www.ccsinfo.com .

AN3-5

Laboratorio PICSchool; Manual de Usuario


ANEXO 3: Experimentando con la gama alta
A continuacin indicamos el cdigo 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(b10111111);
setup_port_A(ALL_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL);

//Configuracin Puerto C
//Configuracin Puerto A

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 travs de este cdigo esperamos que el lector se pueda hacer una idea de las ventajas que implica la
utilizacin de este tipo de herramientas. En su contra debemos advertir que la optimizacin del cdigo generado
mediante cualquier compilador de alto nivel es muy inferior a la obtenida mediante lenguaje ensamblador.

AN3-6

Вам также может понравиться