Microcontroladoress Modulo I
Microcontroladoress Modulo I
MODULO I
EL MICROCONTROLADOR PIC
2. ¿QUÉ ES UN MICROCONTROLADOR?
Un microcontrolador de fábrica, no realiza tarea alguna, este debe ser programado para
que realice desde un simple parpadeo de un led hasta un sofisticado control de un robot. Un
microcontrolador es capaz de realizar la tarea de muchos circuitos lógicos como compuertas
AND, OR, NOT, NAND, conversores A/D, D/A, temporizadores, decodificadores, etc.,
simplificando todo el diseño a una placa de reducido tamaño y pocos elementos.
Los microcontroladores PIC (Peripheral interface Controller), son fabricados por la empresa
MICROCHIP Technology INC. cuya central se encuentra en Chandler, Arizona, esta empresa
ocupa el primer lugar en venta de microcontroladores de 8 bits desde el año 2002. Su gran éxito
se debe a la gran variedad (más de 180 modelos), gran versatilidad, gran velocidad, bajo costo,
bajo consumo de potencia, y gran disponibilidad de herramientas para su programación. Uno de
los microcontroladores más populares en la actualidad es el PIC16F628A y sus variantes
PIC16F627A y PIC16F648A, estos modelos (serie A) soportan hasta 100.000 ciclos de escritura
en su memoria FLASH, y 1’000.000 ciclos en su memoria Eeprom, este está reemplazando
rápidamente al popular PIC16F84A, pues presenta grandes ventajas como son:
11 bits 9 bits
Bus de Bus de
Instrucciones Datos
9 bits
Memoria única
Bus común de direciones
de
Instrucciones y 8 bits
CPU
Datos
Bus de Datos e Instrucciones
Figura 2.2.2. En la arquitectura Von Neumann se conecta el CPU con una memoria única en
donde se almacenan datos e instrucciones en forma indistinta, compartiendo el mismo bus.
El CPU del microcontrolador 16F6XX emplea una avanzada arquitectura RISC (computador
con juego de instrucciones reducido) con un set de 35 instrucciones poderosas pertenecientes a
la gama media de la familia de los microcontroladores PIC, la mayoría de instrucciones se
ejecutan en un ciclo de instrucción a excepción de los saltos que requieren de 2 ciclos, dentro de
su Procesador existe una PILA de 8 niveles que permiten el anidamiento de subrutinas, esto
quiere decir que puede retomar 8 lugares diferentes de línea de programa e ir regresando a cada
uno en el orden inverso al que fueron anidados (ver figura 2.3.1).
Bus de Datos
Contador Prog.
Memoria 8
13
Flash de
Programa Memoria
16F628A Pila de 8 Niveles Memoria
EEPROM
2K x 14 (13 bits) RAM
de Datos Bus
PORT A
14
Reg. Instrucción M R
Bus U A
de X B 0
direcc u /
A
iona 8 s N
mient d 0
o e R
Direct di A
o r. 1
in /
di A
re N
ct 1
o
R
A
2
/
A
N
2
/
V
R
E
F
R
A
3
/
A
N
3
/
C
M
P
1
uc a gramación
cio n
ne q
u
s
8 e
o
s
G ci
e la
T
n e
d
o
e m r
C
r p
o or Cir
n a
iz cui
t d a to
r o d de
o r or RE
l d SE
d e
OSC1/CLK
D e e
IN e Cir
ti n
c cui
OSC2/CLK e c
o e to
OUT d m de
n
i p di vigi
f o d lan
cia
i s o
P W
c DT
a W
d R Detec
T
o
Brow
r Te n-out
m
I po Baj
n riz
s ad volt
or aje
t
de de
r arr Pro
------------------------ Microcontroladores PIC Programación en BASIC ------------------------ 19
Reg. O N R
SFR
R
A S B
rama . uí se escribe
4 C 6 de las ordenes
R. T 2 /
ST O / RB T bloque C para que el
AT PORT
C C 0/I 1 s o CPU las
US K L NT O
B
1 K RB S funcion n ejecute. En el
C
M
O
U
1/
RX
O ales o caso del
/
1 MUX
P T /D T del c microcontrola
2 T 1
R RB C
PIC, i dor
R
A A
A
2/T K conexi d PIC16F628A
L 5/ X/ I
U M 7 CK ón o tiene memoria
/
8
C
O
RB
3/ R
interna de programa
L
R/ S CC B es t no volátil tipo
R T C P1 7
e H 1 RB / median a FLASH, en
/ te comparación a
g
.
V
C
4/ T m
R PG 1
A L M O buses, b su antecesor la
K S
W
6/
I
RB
I
se i memoria
5
aprecia é EEPROM,
la n este se
MCLR VDD
conexi caracteriza por
VSS ón c ser más rápido
las o en el proceso
Comparadores memori m de
as o escritura/borra
Timer 0 Flash, do eléctrico,
Ram m además
Timer 1
Eepro e dispone de
Timer 2 m. m mayor
o capacidad de
r almacenamien
i to, esta
2.3. L a característica
CCP1 USART A hace que sea
d ideal para
M e prácticas de
F E laboratorio en
i M donde la
i
g O n grabación y el
u R borrado son
s
r I t frecuentes
a A (recuerde que
r
u soporta
2 D c 100.000 ciclos
. E c de
2 i escritura/borra
. P o do). El bus de
3 R n direcciones de
. O e la memoria de
G programa es
s
D R
, de 13 bits, por
i A
lo que el
a M
a Contador de
g A
q Programa (PC)
------------------------ Microcontroladores PIC Programación en BASIC ------------------------ 20
puede
direcci
onal
8192
posicio
nes de
14 bits
cada
una
(desde
la
0000h
hasta
1FFFh)
, de las
cuales
sólo las
primera
s 2048
líneas
tiene
implem
entadas
(desde
la
0000h
hasta la
07FFh)
, es
decir
que el
PC sólo
utiliza
los 11
primer
os bits
de
direcci
ones
los
demás
bits los
ignora.
Nivel 8 de la Pila
Figura 2.3.1. Mapa de la memoria de
Vector de
Programa, de las 8196 posiciones, sólo tiene
RESET0000h
implementado las primeras 2048 posiciones, la
2048 Posiciones
dirección 0000h está reservada para el vector de
reset y la 0004h está reservada para el vector de Vector de
interrupción. INTERRUPCION 0004h
0005h
MEMORIA DE
PROGRAMA
PIC16F628A
07FFh
NO
IMPLEMEN
TADO 1FF
Fh
El PIC16F628A, tiene dos tipos de memorias de datos, la RAM estática o SRAM (Random
Access Memory) o memoria de acceso casual que es un tipo de memoria volátil, es decir sus
datos permanecen en la memoria mientras exista alimentación en el dispositivo y es de vital
importancia porque ahí residen dos tipos de datos, los registros de propósito general (GPR), en
donde se almacenan las variables y los registros especiales (SFR), que son los encargados de
llevar el contador de programa, el conteo del Temporizador, el estado de los puertos, la
configuración de las interrupciones, etc.
El otro tipo de memoria es una memoria auxiliar no volátil llamada EEPROM, con
capacidad de 128 posiciones de 8 bits cada una. Esta memoria puede ser accedida por el usuario
mediante programación, es muy útil para almacenar datos que el usuario necesita que se
conserven aún sin alimentación, tal es el caso de la clave de una alarma, esta puede ser
modificada, pero no debe perderse por un corte de energía, el fabricante asegura que la serie
PIC16F6XXA, tiene una retención de datos en esta memoria mayor a 100 años.
Como este microcontrolador es fabricado con tecnología CMOS, su consumo de
potencia es muy bajo (2 mA a 4 Mhz) y además es completamente estático, lo que significa que
si el reloj se detiene los datos de la memoria RAM no se pierden, esto mientras el micro sigue
alimentado. La memoria de datos RAM, tiene 512 líneas de 8 bits cada una y está particionada
por 4 bancos; el banco 0, banco 1, banco 2 y banco 3, cada uno con 128 bytes, el acceso a cada
banco de memoria lo realiza los bits RP1 y RP0 del registro STATUS, la mayoría de los bytes
son ocupados por los Registros de Funciones Especiales (SFR) o no están implementadas. Para
el caso del PIC16F628A sólo 224 posiciones de memoria RAM están disponibles para los
Registros de Propósito General (GPR), la distribución de memoria se muestra en la tabla de la
figura 2.4.1.
00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh Dir. indirecto
Dir. indirecto 80h Dir. indirecto 100h Dir. indirecto 180h
0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h (1) 15h 16h 17h (1) (1) (1)
81h 101h 181h
18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1FhTMR0 OPTION TMR0 OPTION
PCL 82h 102h 182h
20h PCL PCL PCL
STATUS 83h 103h 183h
STATUS STATUS STATUS
FSR 84h 104h 184h
FSR FSR FSR
TRISA 85h 105h 185h
PORTA
TRISB 86h 106h 186h
PORTB PORTB TRISB
87h 107h 187h
88h 108h 188h
70h 89h 109h 189h
PCLACH PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 PIE1 8Ch 10Ch 18Ch
8Dh 10Dh 18Dh
TMR1L PCON 8Eh 10Eh 18Eh
TMR1H 8Fh 10Fh 18Fh
T1CON 90h
TMR2 91h
T2CON PR2 92h
93h
94h
CCPR1L 95h
CCPR1H 96h
CCP1CO 97h
N TXSTA
98h
RCSTA SPBRG
99h
TXREG EEDATA
9Ah
RCREG EEADR
EECON1 9Bh
EECON2 9Ch
(1) 9Dh
9Eh
CMCON VRCON 9Fh 11Fh
A0h 48 Bytes 120h
80 Registros
Bytes Propósito 14Fh
Registr G.
96 150h
os
Bytes Propós
Registr EFh 16Fh 1EFh
ito
os Gener F0h 170h 1F0h
Propós al acce
ito acce
so 70h
Gener so 70h
7Fh acce FFh 17Fh – 7Fh 1FFh
al – 7Fh
so 70h
Banco 0 Banco 1 Banco 2 Banco 3
Figura 2.4.1. Mapa de la memoria de DATOS SRAM, los bloques marcados con tramas no son
implementados, se leen “0” las localidades marcadas con (1) no son registros físicos, las
localidades 20h a 7Fh, corresponden a los 96 bytes de los registros de propósito general GPR,
80 bytes GPR en el banco 1(A0h – EFh) y 48 bytes GPR en el banco 2 (120h – 14Fh), dando un
total de 224 bytes disponibles para el usuario. Para mayor información y utilización de los
SFR, refiérase al datasheet del PIC16F6XXA que se incluye en el CD de este libro.
2.5. CARACTERÍSTICAS GENERALES.
Hasta aquí se puede resumir las características más relevantes del PIC16F628A, estas son:
Excluyendo los dos pines de alimentación, todos los 16 pines restantes pueden ser configurados
como entradas o salidas, algunos de ellos tienen funciones especiales, ver figura 2.6.2.
RA2/AN2VREF RA1/AN1
RA3/AN3/CMP1 RA0/AN0
RA4/TOCKI/CMP2 RA7/OSC1/CLKIN
RA5/MCLR/THV RA6/OSC2/CLKOUT
VSS VDD
RB0/INT RB7/T1OSI
RB1/RX/DT RB6/T1OSO/T1CKI
RB2/TX/CK RB5
RB3/CCP1 RB4/PGM
Figura 2.6.1. Presentación más popular del PIC16F628A el PDIP y su diagrama de pines.
P NOMBRE DESCRIPCI
I ON
N
1 RA0/AN0 Pin bidireccional I/O, entrada comparador análogo.
7
1 RA1/AN1 Pin bidireccional I/O, entrada comparador análogo.
8
1 RA2/AN2/VREF Pin bidireccional I/O, entrada comp. análogo y Voltaje de referencia.
2 RA3/AN3/CMP1 Pin I/O, entrada comp. análogo y salida del comparador análogo 1.
3 RA4/T0CKI/CMP2 Pin I/O, entrada reloj TIMER0 y salida del comparador análogo 2.
4 RA5/MCLR/VPP Pin de entrada, en modo MCLR activa RESET externo.
1 RA6/OSC2/CLKO Pin I/O, entrada oscilador externo, salida de ¼ de la frecuencia OSC 1.
5 UT
1 RA7/OSC1/CLKIN Pin I/O, entrada oscilador externo, entrada del reloj externo.
6
6 RB0/INT Pin I/O, resistencia Pull-Up programable, entrada de interrupción ext.
7 RB1/RX/DT Pin I/O, resist. Pull-Up, entrada dato RS232, I/O dato serial
asincrónico.
8 RB2/TX/CK Pin I/O, resist. Pull-Up, salida dato RS232, I/O señal de reloj
asincrónico.
9 RB3/CCP1 Pin I/O, resist. Pull-Up, módulo CCP/PWM entrada o salida.
1 RB4/PGM Pin I/O, resist. Pull-Up, entrada del voltaje bajo de programación.
0
1 RB5 Pin I/O, resistencia Pull-Up programable.
1
1 RB6/T1OSO/T1CK Pin I/O, resist. Pull-Up, salida oscilador TIMER1, entrada reloj de
2 I ICSP.
1 RB7/T1OSI Pin I/O, resist. Pull-Up, entrada oscilador TIMER1, I/O datos de ICSP.
3
NOTA: sus 2 puertos el A y el B entregan un total de 200mA cada uno, es decir 25 mA cada
pin. En modo sumidero pueden soportar cada uno de sus puertos 200mA. es decir 25 mA. cada
pin.
Es muy importante tomar en cuenta estas recomendaciones ya que si no se las sigue podría
correr el riesgo de dañar el PIC:
1. recuerde que el PIC tiene tecnología CMOS, esto quiere decir que consume muy poca
corriente pero que a la vez es susceptible a daños por estática, se recomienda utilizar pinzas para
manipular y así poder transportar desde el grabador al protoboard o viceversa, o a su vez utilizar
una manilla antiestática.
2. procure utilizar un regulador de voltaje como el 7805 que nos entrega exactamente 5V. y no
un adaptador de pared, ya que el voltaje de salida no siempre es el mismo del que indica su
fabricante, por último puede utilizar un circuito con un diodo zener de 5.1 V.
3. no sobrepase los niveles de corriente, tanto de entrada como de salida, recuerde que el PIC
puede entregar por cada uno de sus pines una corriente máxima de 25 mA. Asimismo soporta
una corriente máxima de entrada de 25 mA., esto quiere decir que puede encender un led con
una resistencia de 330 Ω, revisemos: