Академический Документы
Профессиональный Документы
Культура Документы
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
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
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
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
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
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
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
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-12
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
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.-
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
i-4
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
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.
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.
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.
8 entradas digitales formadas por 4 interruptores y 4 pulsadores activos por transicin 1-0-1.
Generador lgico de onda cuadrada con frecuencia de salida ajustable de 1Hz, 10Hz, 100Hz y 1KHz
y pilotada mediante leds.
1-2
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.
1-3
1-4
AP1
ON/OFF
U1
UA7805/TO
IN
GND
D1
1N4007
OUT
F. DE
ALIM ENTACION
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
OSCILADOR
PRINCIPAL
1
2
X1
NC
VCC
GND
OUT
OSCILADOR
+5Vcc
R20
4K7
JP2
3
1
C1
22p
CLKIN
1-6
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
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
+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
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
P2
10K
R8
470
1
2
3
4
5
6
7
8
R7
470
AP16
ENTRADAS ANALOGICAS
ENTRADAS ANALOGICAS
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
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
1-10
SW2
R17
+5VCC
+5VCC
U6
4
SEL
1Hz
10K
10Hz
1
C22
100n
VDD
100Hz
1KHz
GND
SY M-10
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.
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
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.
1-12
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
AP17
SALIDAS
DIGITALES
SALIDAS DIGITALES
1-13
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
+VM
GND
+5VCC
1
2
3
4
E1
E2
E3
E4
AM PLIFICADOR DE
4 CANALES
AP6
ENTRADAS AL DRIVER
1-14
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
1-15
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
1-16
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
14
13
12
11
10
9
8
7
16
15
LL+
GND
R19
4K7
4
3
2
1
8
7
6
5
4
3
2
1
RS
RW
E
AP20
DATOS
AP9
CONTROL
+5VCC
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
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
1-18
1-19
1-20
2-1
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.-
2-2
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.-
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.
Alimentacin de +5V
GND
Tierra o 0V
MCLR/Vpp
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
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.
2-4
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-5
2-6
2-7
2-8
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
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.
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
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.
2-11
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.-
2-12
2-13
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.-
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.
2-14
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.
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.-
2-15
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.-
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
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
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
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.
3-3
3-4
Dar nombre al proyecto e indicar la carpeta donde ha de guardarse, tal y como se muestra en la figura 3-5.
3-5
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.
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
3-7
3-8
;Tipo de procesador
;Definiciones de registros internos
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
movf
movwf
goto
PORTA,W
PORTB
Loop
end
;Vector de reset
;Puerta A digital
;Puerta A se configura como entrada
;Selecciona banco 0
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-9
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
3-10
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
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
AP18
S1
S0
RB1
RB0
E0
RA0
SALIDAS DIGITALES
1
2
3
4
5
6
7
8
ENTRADAS DIGITALES
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
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
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
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
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
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
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)
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
ENTRADAS DIGITALES
3-16
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
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
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
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
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
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
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
Requisitos
3-20
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
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
3-21
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
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-22
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
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
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
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
C0
C1
C2
C3
F0
F1
F2
F3
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.
3-24
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.
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.
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
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
1
2
3
4
AP17
1
2
3
4
5
6
7
8
S0
RB0
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.
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
S7
S6
S5
S4
S3
S2
S1
S0
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
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
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
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
RC0/T1CKI
AP17
1
2
3
4
5
6
7
8
S0
SALIDAS DIGITALES
RB0
RA5
RA4
RA3
RA2
RA1
RA0
AP18
E5
E4
E3
E2
E1
E0
1
2
3
4
5
6
7
8
ENTRADAS DIGITALES
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
E5
E4
E3
E2
E1
E0
RA5
RA4
RA3
RA2
RA1
RA0
1
2
3
4
5
6
7
8
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-30
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
RA0
+5Vcc
3-31
RxD
TxD
RC7
RC6
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
CANAL SERIE
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
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
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
3-34
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
7-14
D0-D7
AN1-1
R/W
0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
0
DB1
0
DB0
1
R/W
0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
0
DB1
1
DB0
X
R/W
0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
1
DB1
I/D
DB0
S
Tiempo de ejecucin: 40 S
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
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
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
Tiempo de ejecucin: 40 S
AN1-3
DB0
Tiempo de ejecucin: 40 S
Cdigo:
RS
1
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
Tiempo de ejecucin: 40 S
AN1-4
DB0
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
AN1-6
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.-
AN1-7
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.
AN1-8
equ
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
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
;**************************************************************************
;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
;**************************************************************************
;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
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
;*****************************************************************************
;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-12
AN2-1
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
RA1/AN1
I/O
RA2/AN2/VREF-
I/O
RA3/AN3/VREF+
I/O
RA4/T0CKI
I/O
RA5/SS/AN4
I/O
AN2-2
TIPO
DESCRIPCION
PUERTA B: 8 lneas
RB0/INT
I/O
RB1
I/O
Entrada/salida digital
RB2
I/O
RB3/PGM
I/O
RB4
I/O
RB5
I/O
RB6
I/O
RB7
I/O
PUERTA C: 8 lneas
RC0/T1OSO/T1CKI
I/O
RC1/T1OSI/CCP2
I/O
Entrada/salida digital RC1, entrada de oscilador del TMR1 o E/S del mdulo
CCP2
RC2/CCP1
I/O
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
RC6/TX/CK
I/O
RC7/RX/DT
I/O
AN2-3
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
RE0/RD/AN5
I/O
RE1/WR/AN6
I/O
RE2/CS/AN6
I/O
Vss
Vdd
P
P
AN2-4
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
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
AN2-7
AN2-8
AN2-9
2.-
3.-
Cualquier instruccin que implique modificar el contenido actual del PC, se considera
una instruccin de salto. Consume dos ciclos de instruccin.
AN2-10
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-1
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
end
AN3-2
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
AN3-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
;
;
;
;
;
;
Pulsador_1
call Espera_10_ms
btfss PORTC,1
goto Pulsador_1
call Espera_10_ms
call Lectura_AN1
call Visualiza
return
;
;
;
;
;
;
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:
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
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