Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso PIC - PPSX
Curso PIC - PPSX
Contenido
Instrucciones
INSTRUCCIONES
Equipo necesario
Requerimientos mnimos
Computador personal Pentium III 128MB RAM, disco duro con
100MB libres, unidad de CD, monitor igual o mayor de 14 de
alta resolucin y puertos: serial (RS-232) o paralelo (LPT), y
conexin a Internet (no indispensable, pero recomendable).
Sistema operativo Windows 98SE o superior.
Software MS Office 2000 o superior (Power Point).
En cuanto a componentes, podrs tratar de ubicar lo siguiente:
Microcontroladores: PIC16C54JW o PIC16F54, PIC16F84A y un
PIC16F877 o algn otro PIC16F87X.
Leds rojos, verdes y amarillos, resistencias, indicadores
numricos 7 segmentos, pulsadores, interruptores y lo que te
interese utilizar para tus aplicaciones.
Un programador PICSTART Plus. Si no lo consigues o te parece
muy costoso, podrs construir tu propio programador, para ello
debers consultar el anexo 7 despus de ver el tema 2.
Adems ser necesario
Mucha voluntad y dedicar suficiente tiempo para aprender sobre
los microcontroladores PIC.
INSTALACIONES
CONTENIDO
INTRODUCCIN.
TEMA I. GENERALIDADES DE LOS MICROCONTROLADORES PIC
TEMA 2. PROGRAMACIN DEL PIC16C54.
TEMA 3. MEMORIA DE PROGRAMA, REGISTROS, PUERTOS Y
TEMPORIZADORES
TEMA 4. CARACTERSTICAS ESPECIALES DEL HARDWARE
TEMA 5. OTROS MICROCONTROLADORES DE LA GAMA BSICA
TEMA 6. MICROCONTROLADOR PIC 16F84A
TEMA 7. MICROCONTROLADORES DE LA SERIE PIC16F87X
CONCLUSIN
ANEXOS
INTRODUCCIN
INICIO
Este mdulo instruccional te ofrece adems, algunos anexos, los cuales podrs
consultar para profundizar tus conocimientos acerca de los microcontroladores y el
software que emplears, definiciones comnmente utilizadas en este campo, y
sugerencias para la elaboracin de circuitos electrnicos con microcontroladores PIC.
INICIO
Tema 2:
Se explica detalladamente los pasos para programar cualquier
microcontrolador. Se dan ejemplos y se ensean los primeros pasos para trabajar con
el lenguaje Ensamblador y el ambiente de trabajo MPLAB, el cual es una herramienta
muy poderosa para trabajar con cualquiera de los microcontroladores PIC que vayas a
utilizar en el futuro. Aqu aprenders: a editar un programa, a ensamblarlo en un
cdigo para la memoria del microcontrolador, a simularlo para observar si la lgica del
programa est correcta y grabarlo en un microcontrolador. Para ello utilizaremos unos
ejemplos sencillos.
INICIO
Tema 4: Aqu vers las caractersticas de los circuitos internos o hardware del
microcontrolador PIC16C54.
En este tema podrs informarte acerca de la
inicializacin del circuito, los temporizadores internos, el modo de reposo o bajo
consumo y los tipos de osciladores que puedes utilizar.
INICIO
UNOS CONSEJOS MS
ANTES DE EMPEZAR
Para el mejor aprendizaje de este mdulo es conveniente que leas y practiques con
este material de manera ordenada, para que t, como interesado en esta rea,
conozcas los microcontroladores, su tecnologa electrnica avanzada y su aplicacin
en la actualidad.
Es importante que cuentes, al menos con una computadora compatible con las PCs
que trabaje en ambiente Windows, e instales el MPLAB IDE, el cual lo puedes bajar
gratuitamente en la direccin microchip.com. Si tienes la posibilidad de obtener el
PICSTART PLUS, y conseguir algunos microcontroladores, tales como el PIC16F54,
el PIC16F84 y el PIC16F877 sera mucho ms provechoso para ti todava, ya que
podrs contar con la posibilidad de hacer tus propios montajes.
Si no tienes la posibilidad de obtener el PICSTART PLUS, en el anexo 7
encontrars un circuito y un software que podrs utilizar para grabar tu
microcontrolador PIC.
Finalmente, te aconsejamos que para empezar a estudiar con microcontroladores,
ser necesario que tengas conocimientos de electrnica analgica y electrnica
digital: Circuitos con resistencias, condensadores, diodos, leds, transistores,
tiristores, amplificadores operacionales, interfaces, lgebra de Boole, sistemas
numricos binarios y hexadecimales, aritmtica de nmeros binarios, compuertas
lgicas, bloques funcionales combinacionales, contadores, etc.
Mientras mayores conocimientos tengas de electrnica, circuitos digitales,
instrumentacin y otros campos relacionados o no con la electrnica, mejor provecho
podrs sacar a estos microcontroladores para tus planes en el futuro.
10
INICIO
RECOMENDACIONES
Te recomendamos que leas el material detalladamente, porque as
comprenders mejor el contenido.
Ten presente, que gracias a tu empeo el aprendizaje depender de
ti, ya que eres el nico responsable directo de l.
Debes cumplir con las actividades y ejercicios que aparecen en el
material.
Cuando tengas dudas, pide a tu profesor asesor de la materia una
entrevista.
Si eres claro al responder la auto-prueba que aparece en el
material, sabrs cul ha sido tu avance.
11
INICIO
TEMA I
Generalidades de los Microcontroladores PIC
1.1.- Contexto histrico de los microcontroladores
1.2.- Definiciones de microcontroladores
1.3.- Funciones de los microcontroladores
1.4.- Aplicaciones de los microcontroladores
1.5.- Algunos fabricantes de microcontroladores
1.6.- Consideraciones que debes tener antes de seleccionar un microcontrolador
1.7.- Familia de los microcontroladores PIC
1.8.- Principales caractersticas del PIC16C54
1.9.- Descripcin de los microcontroladores PIC16C54
1.10.- Arquitectura del microcontrolador PIC16C54
1.11.- Instrucciones del PIC16C54 y los PIC de la gama bsica
INICIO
Objetivos Terminales:
Describir
cmo
surgido
microcontroladores
travs del tiempo.
han
los
a
Enumerar
algunas
aplicacio-nes
de
los
microcontrolado-res.
Explicar la arquitectura
de los microcontroladores
de la serie PIC16C54.
Clasificar
las
instrucciones
de
los
microcontroladores de la
gama bsica.
INICIO
Hoy en da su uso se
perifricos
de
computadoras,
telfonos
inalmbricos
celulares,
14
INICIO
El primer microcontrolador
Durante la dcada de 1960, algunas compaas fabricantes de dispositivos electrnicos,
entre ellas Intel, Texas Instruments y Motorala, decidieron integrar componentes
electrnicos para el desarrollo de circuitos integrados.
El TMS1000,
Este
INICIO
integrado
Controller).
destinado
controlar
los
puertos:
el
PIC
(Peripheral
Interface
INICIO
de capital de riesgo,
los cuales,
tras analizar la
situacin,
Mientras en 1990
En febrero
17
INICIO
Las razones del xito de los PIC se basa quizs en muchas cosas: simplicidad en el
uso, conjunto de pocas instrucciones con alta eficiencia de cdigo, rapidez en la
ejecucin de programas, compatibilidad de instrucciones desde la gama bsica a la
alta, gran variedad de modelos, multiplicidad de interfaces, soporte de software,
librera de aplicaciones prcticas.
fabricantes
de
los
PICs,
ofrecen
una
gama
de
diversos
tipos
de
18
INICIO
Manejador de interrupciones,
convertidores A/D,
convertidores D/A, memoria EEPROM y FLASH (que pueden mantener sus datos despus
de quitar la alimentacin, sin aadir un equipo externo), moduladores de ancho de pulso,
sensores de temperatura, comparadores, interfaces seriales, entre otros.
19
INICIO
20
INICIO
Interfaces
20
0
21
INICIO
Los
microcontroladores
cantidad
de
tienen
aplicaciones;
una
gran
prcticamente
la
actualidad
utiliza
al
menos
un
microcontrolador.
Las aplicaciones de stos pueden desglosarse
en reas de: computacin, comunicaciones,
industria, automocin y electrodomsticos.
22
INICIO
Texas Instruments
NEC
Toshiba
Hitachi
SGSTHOMSON
(ST-Micro)
National
Semiconductor
Zilog
Microchip
Microcontroladores
MCS51, 151, 251
C540U (8051)
8051-52
68HC05
68HC08
68HC11
TMS370
PD7890xxx
PD780xxx
TLCS-870
TLCS-90
H8/300
ST-6
ST-7
ST-9
COP820, 840, 880C, 912
COP884xx, 888xx
Z8
16Cxx
18Fxx
Capacidad de Memoria
INICIO
INICIO
Software
Hardware
Sencillez en el montaje.
Diversidad de productos.
Disponibilidad
desarrollo.
de
herramientas
de
INICIO
INICIO
Memoria de
Caractersticas Principales
Programa
0,5 - 1K x 12
2K x 14
PIC 12F6XX
PIC 16C5X
PIC 16CXXX
INICIO
PIC 16FXXX
PIC 17C4X/7XX
2K - 8K x 16 Multiplicador de 8x8 bits, Comparador
Digital, PWM, Opciones en: OTP, EPROM
y
FLASH - ROM, USART, I2C,Velocidad:
8,5 MIPS, manejo de
Interrupciones,
Disponibilidad de hasta 44 Terminales.
Conjunto de 58 instrucciones de 16 bits.
PIC18CXX /18FXX 0 - 65K x 16 Similar a la serie PIC 17C7XX. Conjunto
de 77 instrucciones de 16 bits velocidad
de 10
MIPS. Compilacin en C eficiente
rfPIC12C5XX
rfPIC12F6XX
1K x 12
1K x 14
INICIO
Proteccin de programas.
29
INICIO
30
INICIO
31
INICIO
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
12
DECODIFICADOR
DE
INSTRUCCIONES
8
DIRECCIN
DIRECTA
TIEMPO DE
ESPERA DEL
WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
5-7
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
(SRAM)
25 BYTES
F
BUS DE DATOS
8
TRIS 5
ESCALAMIENTO
DE TMRO Y WDT
STATUS
TIPO DE
OSCILAD.
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
PALABRA DE
CONFIGURACIN
TRISA
PUERTO A
4
RA3 RA0
32
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
los cdigos de
al Registro de
cdigo de la
Instrucciones.
INICIO
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
35
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
36
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
37
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
38
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
39
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
40
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
41
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
OSCILADOR,
TIEMPO Y
CONTROL
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
SLEEP
F
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
42
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
43
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
44
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
45
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
46
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
47
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
48
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
49
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
50
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
51
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
9-11
9-11
EPROM-ROM
512x12
PC
ENTRADA
TOCKI
PILA 1
PILA 2
INHABILITA
TEMPORIZADOR
PROTECCIN
WDT
DE CODIGOS
12
REGISTRO DE
INSTRUCCIONES
12
8
DECODIFICADOR
DE
INSTRUCCIONES
DIRECCIN
DIRECTA
PALABRA DE
CONFIGURACIN
TIEMPO DE
ESPERA DEL
WDT
TIPO DE
OSCILAD.
ESCALAMIENTO
DE TMRO Y WDT
6
REG. OPTION
RAM DE
DIRECCIN DIRECTA
OPTION
STATUS
OSCILADOR,
TIEMPO Y
CONTROL
SLEEP
REGISTROS DE
PROPOSITOS
GENERALES
(SRAM)
25 BYTES
TMRO
W
UNIDAD
LGICA Y
ARITMTICA
8
BUS DE DATOS
8
4
TRIS 5
TRISA
PUERTO A
4
RA3 RA0
52
TRIS 6
TRISB
8
PUERTO B
8
RB7 RB0
INICIO
PIC
16C54
Cada conexin tiene su propia funcin especfica.
Haz clic en el terminal
deseado para encontrar la funcin correspondiente en el glosario.
53
INICIO
INICIO
INICIO
Para escribir un programa en un microcontrolador, sea cual fuere el lenguaje que vamos
a emplear, debemos utilizar un software que nos facilite la labor de la comunicacin.
En este curso se emplear el software MPLAB, ya que es la plataforma de
programacin gratuita que ofrece Microchip para todos los microcontroladores que
fabrica, y permite realizar todos los pasos necesarios en la programacin del
microcontrolador, sin necesidad de llamar a otro software.
Para escribir un programa en un microcontrolador, debes comenzar por conocer las
instrucciones o el lenguaje que vas a emplear. En este curso comenzaremos por utilizar
el lenguaje Ensamblador, ya que ste nos permitir conocer con bastante profundidad el
modo de funcionamiento del microcontrolador. Ms adelante podrs emplear un lenguaje
de alto nivel; sin embargo queremos que sepas que si puedes hacer un buen programa en
el lenguaje ensamblador, ste se ejecutar con mayor rapidez y emplear menos
cantidad de memoria que al hacer uso de un compilador de lenguaje de alto nivel.
Despus de conocer las instrucciones del lenguaje de programacin, podrs utilizar el
MPLAB o algn otro software para editar el programa, es decir, escribirlo como si
fuera una carta, pero de manera ordenada; luego debers ejecutar el comando que
ensambla o compila el programa; despus, si no hubo error de sintaxis, podrs hacer la
simulacin del programa; y si no hay errores de lgica, podrs finalmente grabarlo en la
memoria del microcontrolador para que, de esta manera, puedas probar si funciona
correctamente en un circuito. En cada fase debe hacerse las correcciones necesarias
segn los resultados que se van obteniendo.
56
INICIO
Fjate en lo siguiente:
El microcontrolador PIC16C54 utiliza palabras de 12 bits divididas en un cdigo de
operacin que especifica el tipo de instruccin y los registros en donde se va a
ejecutar la operacin y en qu lugar se va a colocar el resultado. Esto te permite
utilizar instrucciones que en el microcontrolador se codifican en una sola palabra.
Eso te garantiza que tu programa en el microcontrolador ocupa igual nmero de
instrucciones como las que empleaste en el lenguaje ensamblador. Esto no ocurre
con la mayora de los otros microcontroladores.
El nmero de instrucciones que presenta el PIC16C54, es de apenas 33. El formato
de estas instrucciones, permite tratar a la memoria de datos, como si fueran
registros de trabajo, lo cual implica un ahorro tanto en la codificacin de la
instruccin, como en el tiempo de ejecucin en la misma.
Las instrucciones pueden hacer operaciones entre registros de un byte, para lo cual
se utiliza el apuntador de direcciones de registros f y el registro de trabajo W;
pueden ejecutarse entre operaciones con valores constantes y el registro de
trabajo W; tambin pueden ejecutarse operaciones orientadas a bits, para esto se
utiliza la variable b, que indica la posicin del bit en el registro apuntado por f.
En las instrucciones orientadas a bytes, f es un valor que representa la direccin
de un registro de asignacin y d representa el destino, que puede ser el mismo
registro apuntado por f o el registro W. Los registros sealados por f, son uno de
los 32 lugares de memoria a los que puede acceder la instruccin, por medio de los
5 bits del cdigo especificado para ello.
57
INICIO
En resumen
W Registro de trabajo.
F Direccin del registro de la RAM.
d Destino, a donde va el resultado (W o F).
b Direccin del bit a utilizar en el registro de
direccin F.
K Valor numrico constante.
58
INICIO
Operaciones entre W y f
La designacin del destino, que se hace por medio de d, indicar si el resultado se
llevar al registro de trabajo W, cuando d=W, o al registro de direccin f, cuando
d=f.
Recuerda que las operaciones lgicas y aritmticas se hacen en cdigo
binario, y por lo general se utiliza el cdigo hexadecimal en los valores asignados en
el lenguaje ensamblador.
Por ejemplo, la instruccin:
ADDWF
f,d
ADDWF
f,d
Indicarsumar
sumar(ADD)
(ADD)elelregistro
registrode
detrabajo
trabajoW,
W,
Indicar
conelelregistro
registrode
dedireccin
direccinf.f.ElElresultado
resultadose
se
con
colocar
en
W
si
d=W,
o
en
f
si
d=f.
Si
no
colocar en W si d=W, o en f si d=f. Si no
colocasningn
ningndestino,
destino,elelensamblador
ensamblador
colocas
guardar
el
resultado
en
el
registrode
de
guardar el resultado en el registro
direccinffyyte
tedar
darun
unmensaje
mensajede
de
direccin
advertencia.
advertencia.
12,W
;Suma en binario el contenido del registro
;W con el contenido del registro 12 y el
Registro
;resultado se guardar en el registro W
Destino
Cdigo de la instruccin
59
INICIO
GOTOK
; (Ejemplo GOTO
LAZO)
f,b
60
INICIO
INICIO
Instrucciones de transferencia
de datos y aritmticas
INSTRUCCIONES DE TRANSFERENCIA DE DATOS
MOVF
f,d
MOVLW
; Se asigna a W el valor K
MOVWF
INSTRUCCIONES ARITMTICAS
ADDWF
f,d
SUBWF
f,d
; Resta f menos W
DECF
f,d
; Decremento en 1 el contenido de f
INCF
f,d
; Incremento en 1 en contenido de f
62
INICIO
INSTRUCCIONES LGICAS
ANDLW
ANDWF
f,d
COMF
f,d
IORLW
IORWF
f,d
XORLW
XORWF
f,d
INSTRUCCIONES DE BORRADO
CLRF f
CLRW
63
INICIO
Instrucciones de rotacin
y manejo de bits
INSTRUCCIONES DE ROTACIN
RLF f,d
RRF f,d
SWAPF
f,d
BSF f,b
64
INICIO
Instrucciones de Salto
BTFSC
f,b
BTFSS
f,b
CALL K
GOTO
; El programa va a la direccin K
DECFSZ
f,d
INCFSZ
f,d
RETLW
65
INICIO
Instrucciones de Control
INSTRUCCIONES DE CONTROL
CLRWDT
SLEEP
NOP
; No ejecuta operacin
OPTION
; El contenido de W se carga al registro OPTION,
; que se utiliza para la configuracin de los
temporizadores y el escalamiento.
TRIS
f
; Contenido de W va a TRIS (programacin puertos),
; f representa uno de los puertos A o B (5 6).
; Un 1
en el bit de programacin, configura la lnea
; correspondiente al
puerto como entrada; un 0 lo
; configura como lnea de salida.
66
INICIO
ACTIVIDADES A REALIZAR
En este aparte, se pide que t desarrolles las actividades que a continuacin se
presentan, para comprender mejor el tema siguiente.
1.- Define con tus propias palabras los siguientes trminos:
a.- Qu es un Microcontrolador?
b.- Cmo funciona un microcontrolador?
c.- En cules aplicaciones se podra utilizar un microcontrolador?
d.- Describe las principales caractersticas de los microcontroladores PIC.
2.- Dibuja la arquitectura de un microcontrolador PIC16C54.
3.- Haz una clasificacin de las instrucciones de los microcontroladores PIC de la
gama bsica y relaciona el significado de cada cdigo de operacin con la instruccin
que ejecuta con sus operadores.
4.- Explica qu es lenguaje ensamblador y haz un ejemplo de un programa que lea
dos datos ubicados en la memoria de datos y los sume.
67
INICIO
TEMA 2
Programacin del PIC 16C54
Contenido
2.1.- Programacin de Microcontroladores
2.2.- Pasos para programar un Microcontrolador
2.3.- Representacin del circuito.
2.4.- Edicin del Programa con el MPLAB
2.5.- Ensamblaje del Programa
2.6.- Simulacin
2.7.- Grabacin del Microcontrolador
2.8.- Reduciendo el programa
2.9.- Advertencia para un vehculo
2.10.- Control de leds por medio de pulsadores
2.11.- Ejemplo de un programa para sumar
2.12.- Resta de dos nmeros
INICIO
69
INICIO
2.1.- Programacin de
Microcontroladores
La programacin es el modo de organizacin de las instrucciones que va a realizar
el microcontrolador para cumplir una o ms funciones especficas.
Para programar los microcontroladores es importante que utilices el lenguaje
ensamblador, ya que es el ms parecido al lenguaje del procesador, y esto te
ayudar a entender mejor cmo trabaja cada instruccin. Existe tambin la
posibilidad de utilizar los programas en lenguaje C, Basic o algn otro de alto
nivel.
Queremos convencerte que esta labor no es difcil, especialmente si ya has
programado en cualquier otro lenguaje, recuerda que programar es parecido a
hablar o escribir en el idioma que empleas usualmente para comunicarte.
Para hacer un diseo en el que se utilicen circuitos integrados programables, ser
necesario emplear herramientas que ayuden a la puesta a punto del Hardware y
del Software.
70
INICIO
Software
71
Hardware
INICIO
Editar el programa
Representar el circuito
72
INICIO
INICIO
Respuestas
De acuerdo a las preguntas planteadas en la pgina anterior, las respuesta sern las
siguientes:
Se necesitarn doce lneas de entrada y salida, de las cuales cuatro sern entradas,
que correspondern a los interruptores y ocho sern salidas, que correspondern a
los indicadores o leds.
Las interfaces se harn de una forma sencilla. Se tomar en cuenta que en los
puertos de entrada, si las lneas no estn conectadas, la lectura ser indefinida (0
1), entonces se conectar una resistencia de 4,7K al voltaje de alimentacin para
cada entrada, y en el mismo punto, se colocar un interruptor a la referencia
negativa o tierra, de manera que si el interruptor est abierto, se leer un 1, y si
est cerrado, se leer un 0. En cuanto a las interfaces de salida, se deber
considerar si los microcontroladores pueden manejar directamente a los leds.
Teniendo en cuenta que los puertos de los microcontroladores pueden entregar o
absorber hasta 25mA a 25C con una alimentacin de 5V, y para un led basta una
corriente de 5 a 10mA para encenderlo, entonces la interfaz se har por medio de
una resistencia de 300 en serie con cada led. La ecuacin para calcular la
resistencia de cada Led, ser: Rled=(Vdd-Vled)/Iled
Donde:
Vled 2V (Depende del color del led: Rojo -> 1,6V; Verde -> 2,4V)
Iled 10mA (Depende del brillo deseado y la corriente mxima del led)
74
INICIO
Vdd
PIC
16C54
75
INICIO
76
INICIO
77
INICIO
2
78
INICIO
Es importante documentar
bien el programa
En un programa ensamblador, es muy importante hacer una buena documentacin; en
lo posible, hay que colocar los comentarios que sean necesarios para comprender bien
qu es lo que se est haciendo. Los comentarios se reconocern por el smbolo ;
tal como se puede ver en la figura de la pgina siguiente, en donde se hace una
breve descripcin del programa que se va a realizar.
Te recalcamos la importancia de colocar los comentarios, ya que los que comienzan a
trabajar en esto, consideran innecesario colocarlos.
Sin embargo, un tiempo
despus, a la hora de analizar el programa no recuerdan qu fue lo que hicieron, y
prcticamente tienen que comenzar desde cero para tratar de entender el programa.
Antes de comenzar a editar el programa, te recomendamos que revises, en el tema
1, en la parte de las Instrucciones del Lenguaje Ensamblador, lo que hacen las
siguientes instrucciones, o sino accede a las explicaciones de ellas, por medio del
hipervnculo asociado:
MOVLW K
GOTO
TRIS
BSF f,b
CLRW
BTFSS
BCF f,b
f,b
BTFSC
f,b
INICIO
Comentarios
80
INICIO
INICIO
Representacin
0B / 0BH / H0B / 0x0B
B1011
D11
Observa que a los nmeros hexadecimales que empiezan por una letra, le debes colocar
un 0 a la izquierda.
A continuacin seguimos con la elaboracin del programa en la siguiente pgina, donde
podrs observar, cmo se separa el programa en columnas, por medio de la tecla de
tabulacin, de manera que la columna 1 se utiliza para etiquetas, la segunda para la
instruccin, la tercera para los operadores y la cuarta para los comentarios:
82
INICIO
Columna 4
{Instruccion
es}
{Etiquetas
}
{Comentarios}
{Operadores
}
83
INICIO
84
INICIO
INICIO
86
INICIO
87
INICIO
88
INICIO
89
INICIO
Cambio
90
INICIO
Listado de errores
91
INICIO
INICIO
2.6.- Simulacin
Corregiste todo?
prximo paso.
El prximo paso, consiste en la simulacin del programa. Esto significa que se debe
revisar si hay errores de lgica, los cuales no se detectan al ensamblar el archivo.
Una vez ensamblado el programa, procederemos a hacer la simulacin. Para ello,
vamos a asegurarnos que el MPLAB tiene activada la simulacin. Nos colocamos en el
men Debugger:
Debemos asegurarnos que la herramienta MPLAB SIM est activada, para poder
ejecutar la simulacin.
Despus de ensamblar el programa, en la memoria ROM del MPLAB se encuentra el
programa ensamblado. Podremos ver las memorias y registros en la simulacin al
seleccionar en View, segn veremos en la pgina siguiente.
Las ventanas las
podemos colocar segn nuestra conveniencia.
93
INICIO
Registros
Memoria de
programa
Registro de
funciones
especiales
94
INICIO
95
INICIO
2.
96
INICIO
Action. Determina el tipo de entrada que se va a colocar: High (cambia a 1), Low
(cambia a cero), Toggle (cambia al estado opuesto cada vez que se presiona),
Pulse (pulso que cambia momentneamente al estado opuesto y luego vuelve al
inicial).
High cicles. Nmero de ciclos en que la entrada se mantiene en uno, al aplicar un
estmulo sincrnico.
Low cicles. Nmero de ciclos en que la entrada se mantiene en cero, al aplicar un
estmulo sincrnico.
PC. Direccin numrica o smbolo en el cual ocurrir el estmulo.
Invert. Si el smbolo de chequeo est activo, indica que se invertir el pulso si se
est utilizando un estmulo sincrnico.
Comments. Puedes indicar un comentario relacionado con el estmulo.
97
INICIO
T podrs aadir ms entradas de estmulo cada vez que presionas el botn Add
Row.
Cuando termines de colocar todos los estmulos con sus caractersticas,
presionars Edit Complete y luego Save para guardar lo que hiciste. Despus de
esto podrs comenzar la simulacin.
Trata de colocar las entradas del puerto A como estmulo tipo toggle:
98
INICIO
Reinicio
Paso que se
ejecuta
Ejecucin
paso a paso
Verificacin
de estados
Ejecucin
animada
Estimulacin
de entradas
99
INICIO
Revisin de resultados
Los resultados no los podrs ver en el momento del aplicar los estmulos.
observar los cambios, debers detener el programa.
Para
100
INICIO
101
INICIO
102
INICIO
103
INICIO
Comenzando a Grabar
Una vez que escogiste el puerto de comunicacin serial y tienes todo conectado, entonces
colocars el microcontrolador en el conector del programador. Procederemos a llamar al
programador en Programmer, Enable Programmer. Primero se verificar la comunicacin
con el programador. Si todo est correcto, entonces aparecer la siguiente ventana:
Chequeo si
est borrado
Flash
Leer
memoria
104
Grabar
programa
Verificar
programacin
Borrar
memoria
INICIO
105
INICIO
Antes
de
programar
nos
fijaremos en la ventana inferior,
la
cual
establece
algunas
condiciones del hardware del
microcontrolador:
INICIO
INICIO
Una vez que se ha grabado el microcontrolador, este dispositivo est listo para ser
utilizado en un circuito. Como se vio en el captulo 1, las conexiones restantes a los
puertos sern: Vdd voltaje de alimentacin positiva, cuyo valor continuo, puede estar
comprendido entre 3V y 6V; Vss que corresponde al punto negativo de la fuente o
comn; MCLR o inicializacin, que en operacin normal se deber conectar a Vdd;
TOCKI, que es la base de tiempo del temporizador TMR0, y que se deber conectar a
Vdd o a Vss en el caso de no utilizarse. Las otras dos lneas son OSC1 y OSC2, que
se utilizan para conectar el circuito oscilador.
Como primera prueba, se podr conectar el circuito, segn se muestra en la siguiente
pgina.
Al activar los interruptores, se deber observar el funcionamiento del circuito, tal
como se program. En el caso de no ser as, se deber chequear las conexiones, y
las tensiones en cada punto del circuito, observar si hay oscilacin en OSC1 y OSC2,
y chequear si los leds no estn invertidos.
En el caso de haber revisado todo, y el circuito sigue sin funcionar, consulta con tu
profesor.
108
INICIO
Circuito final
5V
10K
f680KHz
100 pF
5V
8 Resistencias de 300
4 Resistencias de 4,7K
5V
18 17 16 15 14 13 12 11 10
PIC16C54
1 2 3 4 5
6 7 8 9
5V
109
INICIO
Algunas Preguntas
110
INICIO
MOVF
DECF
f,d
INCF f,d
DECFSZ
f,d
INCFSZ
RRF f,d
f,d
f,d
RLF f,d
En las instrucciones RRF y RLF, el registro f rueda un bit hacia la derecha o hacia
la izquierda respectivamente; sin embargo esto lo hace al travs de un noveno bit
que se llama Carry (C) que se encuentra en el registro STATUS. Este registro
guarda algunas condiciones despus de que se ejecutan ciertas operaciones, por
ejemplo, si un resultado es igual a cero, en STATUS hay un bit Z, que se colocar en
1. De manera similar, si en el bit 0 de f hay un 1, al hacer la rotacin a la
derecha, el bit C del STATUS, se colocar en 1.
111
INICIO
112
INICIO
IOR
XOR
COM
Donde:
n Posicin de bit
f Direc. de RAM
w Reg de trabajo
d Destino (w o f)
113
INICIO
INICIO
=
=
=
=
=
MOTOR.(PCOND+PACOM)
MOTOR.CINTU
MOTOR.LUCES
MOTOR.PCOND.LLAVE
COND1 + COND2 + COND3 + COND4
=
=
=
=
=
RB0.(RB1+RB2)
RB0.RB3
RB0.RB4
RB0.RB1.RB6
RA0 + RA1 + RA2 + RA3
Donde RAn son las lneas que corresponde al puerto A y RBn son las lneas que
corresponden al puerto B.
115
INICIO
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
10
11
12
13
14
15
16
17
18
19
1A
Nota: Es muy importante que las direcciones asignadas a cada etiqueta, no coincidan con las reservadas
para cada uno de los registros de propsitos especiales del microcontrolador.
116
INICIO
CONSIDERANDO UN PROGRAMA
MODULAR
La forma en la cual se present las posiciones de los registros es completamente vlida.
Sin embargo, te recomendamos que te acostumbres a hacer mdulos de subrutina, de
manera que con pocos cambios, lo puedas utilizar sin problemas en otros programas.
Para ello, en cada subrutina se especificar la longitud del programa, la direccin de
arranque, la cantidad de registros utilizados y la posicin de referencia de estos
registros.
Si te acostumbras a hacer esto, entonces podrs hacer mdulos que
utilizaras luego sin mucha dificultad. Para ello te proponemos que especifiques los
registros de la manera siguiente:
MOTOR
PCOND
PACOM
CINTU
LLAVE
LUCES
COND1
COND2
COND3
COND4
ALGEN
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
10
;MOTOR
MOTOR+1
;PUERTA DEL CONDUCTOR
MOTOR+2
;PUERTA DEL ACOMPAANTE
MOTOR+3
;CINTURON DE SEGURIDAD
MOTOR+4
;LLAVE DE ENCENDIDO
MOTOR+5
;LUCES
MOTOR+6
;CONDICION 1
MOTOR+7
;CONDICION 2
MOTOR+8
;CONDICION 3
MOTOR+9
;CONDICION 4
MOTOR+0A
;ALARMA GENERAL
En este caso, sabremos que la cantidad de registros utilizada es de 11, y que la posicin de referencia
es MOTOR, que ocupa la posicn 10H.
117
INICIO
Otra manera que puedes utilizar para nombrar las etiquetas de tu programa en un
bloque, es la siguiente:
cblock
0x10
118
INICIO
119
INICIO
Asignacin de advertencias
120
INICIO
121
INICIO
Motor
(Llave. Pcond)
Condicin4
Motor
Motor
Luces
Cintu
Condicin3
Condicin2
Motor
(Pcond+Pacom)
Condicin1
PREPAR
CLRW
TRIS PORTA
MOVLW 7F
TRIS PORTB
122
INICIO
123
INICIO
124
INICIO
Vss
PIC
16C54
125
INICIO
126
INICIO
Preparacin y deteccin
INCLUDE "P16F84.INC"
; ESTA DIRECTIVA INDICA QUE SE ASIGNARA VALORES
; NUMERICOS A CADA UNO DE LOS REGISTROS DE FUNCIONES
; ESPECIALES Y LOS BITS DEL REGISTRO STATUS
PBANTES
STTUSPA
ORG
PREPAR
TRIS
CLRW
TRIS
MOVLW
MOVWF
CLRF
CLRF
INICIO
GOTO
BCF
GRUPO1
GOTO
BCF
GRUPO2
GOTO
BCF
GRUPO3
GOTO
BCF
SIGCICL
GOTO
EQU
EQU
10
; INDICA EL ESTADO ANTERIOR DEL PUERTO B
PBANTES + 1 ; INDICA EL ESTADO DE LOS BITS LEIDOS EN EL PUERTO A
0
MOVLW 0F
PORTA ; PUERTO A SERA ENTRADA
PORTB ; PUERTO B SERA SALIDA
55
PORTB ; SE ALTERNAN 1 Y 0 EN LAS LINEAS DE SALIDA DEL PUERTO B
PBANTES
; PALABRA DE ESTATUS QUE INDICA EN CADA GRUPO QUE LOS
; LEDS ROJOS ESTAN ENCENDIDOS Y LOS VERDES APAGADOS
STTUSPA
; PALABRA DE CONTROL PARA MANTENER VALOR EN LA ENTRADA
BTFSS PORTA,0
CAMBIO0
;
STTUSPA,0
;
BTFSS PORTA,1
CAMBIO1
;
STTUSPA,1
BTFSS PORTA,2
CAMBIO2
;
STTUSPA,2
BTFSS PORTA,3
CAMBIO3
;
STTUSPA,3
CALL RETARDO
INICIO
127
INICIO
128
INICIO
129
INICIO
f,d
SUBWF
RETLW
K
SWAPF
f,d
130
f,d
INICIO
Programa SUMABYTE
SUMABYTE
131
INICIO
RESTABYTE
Programa que resta dos nmeros de 8 bits
Los valores se encuentran ubicados en las posiciones minuendo (8h)
y sustraendo (9h) en ;la memoria de datos.
El resultado se guardar en la posicin 0Ah
MINUENDO
EQU
8
; Posicin del minuendo
SUSTRAENDO EQU
9
; Posicin del sustraendo
RESULTADO
EQU
0A
; Posicin del resultado
ORG
50
; Direccin del comienzo del programa 50h
RESTABYTE
MOVLW 5
; Asigna el valor 5 a W (Registro de trabajo)
MOVWF MINUENDO
; El valor 5 pasa al minuendo
MOVLW 3
; Asigna el valor 3 a W
MOVWF
SUSTRAENDO
; El valor 3 pasa al sustraendo
MOVF SUSTRAENDO,W
; El valor del sustraendo pasa a W
SUBWF MINUENDO,W
; Resta MINUENDO SUSTRAENDO,
; resultado en W
MOVWF RESULTADO
; El resultado se guarda en la posicin 0A
END
132
INICIO
Trata de hacerlo t
En el siguiente ejemplo se propone hacer el control de cuatro semforos en una
interseccin de dos vas. Los semforos tienen cruces a la izquierda en cada esquina.
Se asume que los tiempos de duracin sern los que se muestran en la tabla anexa:
1
Esquinas1 y 3
Esquinas 2 y 4
Duracin
Rojo
8 segundos
Verde
Rojo
20 segundos
Amarillo
Rojo
3 segundos
Rojo
8 segundos
Rojo
Verde
25 segundos
Rojo
Amarillo
3 segundos
133
INICIO
ACTIVIDADES A REALIZAR
Hasta este punto hemos visto los pasos necesarios para realizar programas,
simulaciones y prototipos con microcontroladores desde un punto de vista muy bsico.
Algunas de las actividades que puedes realizar, para complementar este tema, son las
siguientes:
1.- Edita, compila y simula los programas que se han explicado en este tema.
2.- Graba un microcontrolador PIC16C54JW, PIC16F54 o PIC16F84 con los programas
que se proponen como ejemplos y monta los circuitos para verificar el funcionamiento.
3.- Hacer un circuito con un microcontrolador, que detecte una clave secreta de 8
bits. El usuario introducir un valor binario en uno de los puertos y, por medio de un
pulsador, har vlido el cdigo de entrada. Si el cdigo falla tres veces seguidas, se
deber inhibir el circuito por un perodo de dos minutos. En el caso de que el cdigo
sea correcto, se deber activar una luz indicadora.
4.- Hacer un contador binario de 8 bits, con dos pulsadores de entradas, que permita
que cuente en forma ascendente o descendente, de acuerdo al pulsador que se
presione.
134
INICIO
TEMA 3
MEMORIA DE PROGRAMA, REGISTROS,
PUERTOS Y TEMPORIZADORES
CONTENIDO
3.1- Organizacin de las memorias del PIC 16C54:
3.2.- Organizacin de la memoria de programa del PIC16C54:
3.3.- Organizacin de la memoria de datos del microcontrolador PIC 16C54:
3.4.- Registro STATUS
3.5.- Registros INDF y FSR, Modo de acceso indirecto
3.6.- Registro contador de programa PC
3.7.- Registro STACK (pila)
3.8.- Puertos de Entrada y Salida
3.9.- Registro OPTION
3.10.- Temporizador contador
3.11.- Temporizador WDT (Perro Guardin)
INICIO
TEMA III:
MEMORIA DE PROGRAMA, REGISTROS, PUERTOS
Y TEMPORIZADORES
Objetivos Terminales:
Describir
los
registros
funciones
especiales
microcontrolador PIC16C54.
de
del
Mencionar la utilidad
temporizadores
en
microcontro-ladores.
los
los
de
136
INICIO
Memoria de Programa
Se almacenan todas las instrucciones
del programa de control. El tamao
de esta memoria es de 512
palabras.
137
Memoria de Datos
Los datos que manejan los programas
varan continuamente y esto exige
que la memoria que los contiene,
debe ser de lectura y escritura, por
lo que la memoria RAM esttica
(SRAM) es la ms adecuada, aunque
sea voltil.
INICIO
PC<8:0>
CALL, RERLW
NIVEL DE PILA 1
NIVEL DE PILA 2
Espacio
para
memoria
del
usuario
MEMORIA
DE
PROGRAMA
VECTOR DE INICIALIZACIN
000h
0FFh
100h
1FFh
138
INICIO
Registros de
propsitos
generales
Registros de
funciones
especiales
Estos incluyen:
INICIO
INDF(1)
01h
02h
TMRO
PCL
03h
STATUS
04h
05h
FSR
PORTA
06h
PORTB
07h
0Fh
10h
REGISTROS
DE
PROPSITOS
GENERALES
1Fh
(1) El registro INDF, no corresponde a una posicin fsica, sino al registro cuya direccin est
contenida en el registro FSR.
140
INICIO
Tipos de Registros
141
INICIO
de encender
WDT y MCLR
N/A
OPTION Contiene los bits de configuracin del escalamiento, TMRO y WDT --11 1111 --11 1111
00h
INDF
01h
TMRO
02h
PCL
03h
STATUS PA2
04H
FSR
05h
PORTA
RA3
RA2
RA1
RA0
06H
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
PA0
TO
PD
DC
uuuu uuuu
uuuu uuuu
0001 1xxx
1xxx xxxx
INICIO
143
INICIO
R-1
PA2 PA1
PA0
TO
PD
DC
bit7 bit6
bit5
bit4
bit3
bit2
bit1
bit0
INICIO
145
INICIO
146
INICIO
MOVWF
Prximo
CLRF
INCF
FSR, F
BTFSS
FSR,5
GOTO
Prximo
147
INICIO
PIC16C54
PC
PCL
Palabra de Instruccin
148
INICIO
Para una instruccin CALL, o alguna instruccin donde el PCL es el destino, los bits 7
a 0 del PC se obtienen del cdigo de la instruccin. Sin embargo, el bit 8 del PC no
viene del cdigo de la instruccin, sino que es puesto en cero.
Algunas de las instrucciones donde el PCL es el destino, o se le modifica el
contenido, son: MOVWF PCL, ADDWF PCL y BSF PCL, 5. Recuerda que la direccin
del PCL es la 2
PC
7
PCL
PIC16C54
149
INICIO
REG0,3
BTFSC
STATUS,C
MOVWF
PCL
ADDWF
XORWF
INICIO
NOTA:
Al utilizar la instruccin RETLW, el registro W se cargar con el valor literal en la
instruccin. Esto es til para la construccin de tablas de conversin con la
memoria de programa.
151
INICIO
"P16C5X.INC"
equ
10
0
valorBCD,w
; el valor BCD a convertir se lleva a W
BCD7SEG
INICIO
; rutina de conversion BCD a 7 segmentos
PCL,f ; El valor BCD se suma al contador de programa
; en el retorno se convierte en 7 segmentos
b'00111111'
;0
b'00000110'
;1
b'01011011'
;2
b'01001111'
;3
b'01100110'
;4
b'01101101'
;5
b'01111101'
;6
b'00000111'
;7
b'01111111'
;8
b'01101111'
;9
152
a (RB0)
f (RB5)
b (RB1)
g (RB6)
e (RB4)
c (RB2)
d (RB3)
INICIO
Los puertos de entrada y salida pueden ser ledos y escritos como cualquier registro
de datos por medio de las instrucciones de programa. Sin embargo, una instruccin
de lectura (por ejemplo MOVF PORTB, W) leer los terminales de los puertos,
independientemente si ellos estn programados como entrada o salida. Despus de
una inicializacin, todos los puertos se definen como entrada (alta impedancia), ya
que los registros de control TRISA y TRISB son puestos en 1.
Puerto A: El puerto A es un registro de 4 bits (PORTA), los bits que se utilizan son
los menos significativos (RA3:RA0). Los bits 7-4 se leen como ceros.
Puerto B: El puerto B es un registro de entrada-salida de 8 bits (PORTB<7:0>).
153
INICIO
Los registros de control de puertos, son cargados con el contenido del registro W,
al ejecutar la instruccin TRIS F. Un 1 en un bit del registro TRIS, coloca el
adaptador del terminal correspondiente en modo de alta impedancia o entrada. Un
0 en ese bit, coloca el adaptador de ese terminal como salida.
NOTA:
Una lectura de los puertos, lee los terminales de los puertos de salida, y no la
salida que ha sido enviada. Esto significa que si una salida de un terminal es
habilitada para tener un 1 y en el sistema externo, este terminal es forzado a un
nivel bajo, la lectura del puerto indicar que en el terminal correspondiente habr
un cero.
Los registros TRIS, son registros de escritura solamente, y son colocados en 1
despus de una inicializacin (RESET todas las lneas de los puertos quedarn
programados como entradas).
Los registros TRIS no tienen una direccin asignada en los microcontroladores de la
gama bsica. Sin embargo en los microcontroladores de la gama media si tienen
una direccin asignada, y por lo tanto, en ellos no se recomienda utilizar la
instruccin TRIS.
154
INICIO
Para
El nivel de
Para usar un
155
INICIO
Bus de
Datos
Escribe
en puerto
Registro
W
Q
Registro
Tipo D
Vdd
CK
terminal de
Entrada/Salida
Vss
Registro
TRIS
TRIS f
CK
Q
Inicializacin
Lee de Puerto
156
INICIO
La siguiente tabla presenta un resumen de la posicin de las lneas en cada uno de los
puertos:
Valor despus Valor despus
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
de encender
WDT y MCLR
N/A
Tris
05h
PORTA
RA3
RA2
RA1
RA0
06H
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
157
INICIO
Escritura en un Indicador
7 segmentos
En el registro W se encuentra el cdigo 7 segmentos que se va a
escribir en el indicador numrico.
La instruccin:
MOVWF
PORTB
RB3
RB4
RB5
RB6
158
INICIO
RA0
RA1
RA2
RA3
PIC16C54
RB0
RB1
En la siguiente pgina se
muestra una rutina para el
control de varios dgitos.
RB5
RB2
RB3
RB4
RB6
159
INICIO
CLRW
PORTA
PORTB ; SE PROGRAMAN PUERTOS A Y B COMO SALIDAS
160
INICIO
INICIO
MOVLW
B11111110 ; SE HACE 0 EL BIT 0, PARA ENCENDER PRIMER DIGITO
MOVWF
SELDIGI,F ; EL VALOR SE LLEVA DE W A SELDIGI
MOVLW
DIGITO0
; VALOR DIGITO 0 VA A W PARA CARGARLO A FSR
MOVWF
FSR ; DIGITOX VA AL APUNTADOR DE DIRECCIONES
PROXDIG MOVF INDF,W
; VALOR DEL DIGITO VA A W
MOVWF
PORTB
; SE SACA VALOR AL PUERTO B
MOVF SELDIGI,W ; SELECCIONADOR DE DIGITO A W
MOVWF
PORTA
; SELECCION DE DIGITO AL PUERTO A
BSF STATUS,C ; COLOCA ACARREO EN 1, PARA APAGAR DIGITO 0
RLF SELDIGI,F ; CAMBIO EN LA SELECCION DE DIGITO
INCF FSR,F ; INCREMENTA APUNTADOR DE DIGITOS
CALL RETARDO ; PERMANENCIA DEL VALOR EN EL INDICADOR
BTFSS
SELDIGI,4 ; SI FINALIZA ULTIMO DIGITO SALTA
GOTOPROXDIG ; SINO VA AL PROXIMO DIGITO
161
INICIO
U-0
6
W1
TOCS
W1
TOSE
W1
PSA
3
W1
PS2
2
W1
PS1
W1
PS0
INICIO
Relacin TMR0
Relacin WDT
000
1:2
1:1
001
1:4
1:2
010
1:8
1:4
011
1:16
1:8
100
1:32
1:16
101
1:64
1:32
110
1:128
1:64
111
1:256
1:128
163
INICIO
Cambios en el
preescalador
Veamos un ejemplo de cmo cambiar el preescalador para los temporizadores del
PIC16C54. En el primer caso se hace un cambio del temporizador 0 al WDT.
Recuerda que los valores binarios x, son los que vamos a asignar:
CLRWDT
OPTION
CLRWDT
MOVLW
OPTION
164
INICIO
165
INICIO
Modo Temporizador
El modo temporizador se selecciona al colocar un cero en el bit TOCS, bit 5 del
registro OPTION.
En este modo, el temporizador se incrementa por cada
transicin del escalamiento, el cual divide la frecuencia de cada ciclo de instruccin.
Si se escribe el registro TMR0 (temporizador 0), el incremento se inhibe durante
los dos ciclos siguientes, vase las siguientes figuras:
Ciclos del Temporizador 0, para el oscilador interno sin escalamiento:
PC (Contador de
programa)
Preparacin de
instruccin
01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04
MOVWF TMR0
MOVF TMR0,W
MOVF TMR0,W
MOV TMR0,W
MOVF TMR0, W
Temporizador 0
Instruccin
Ejecutada
Escribir
TRMRO
Ejecutado
166
Leer TMRO Leer TMRO Leer TMRO Leer TMRO Leer TMRO
Lee NTO
Lee NTO
Lee NTO
INICIO
PC (Contador de
programa)
Preparacin de
instruccin
01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04 01 02 03 04
MOVWF TMR0
MOVF TMR0,W
MOVF TMR0,W
MOVF TMR0,W
MOVF TMR0,W
MOV TMR0,W
MOVF TMR0,W
Escribir
TRMRO
Ejecutado
Leer TMRO Leer TMRO Leer TMRO Leer TMRO Leer TMRO
Temporizador 0
Instruccin
Ejecutada
Lee NTO
Lee NTO
Lee NTO
Lee NTO
Lee NTO+1
INICIO
Modo Contador
El modo contador se selecciona al poner en 1 el bit TOCS (bit 5 del registro
OPTION). En este modo, el temporizador o el escalamiento se incrementar en 1
cada vez que haya una transicin en el terminal de entrada TOCKI. El tipo de
transicin se determina por medio del bit TOSE (bit 4 del registro OPTION); si
ste es cero, la entrada es sensible a transiciones de subida.
En la siguiente figura, se muestra la conexin elctrica del terminal TOCKI, que es
la entrada del temporizador TMR0:
TOCKI
Entrada con
Disparador de
Schmitt
El escalamiento puede ser usado por TMR0 o por el temporizador WDT perro
guardin, pero no por ambos. La asignacin del escalamiento se hace por el bit
PSA (bit 3 de OPTION). Si el bit PSA es cero, el escalamiento ser asignado al
temporizador TMR0. Los valores de escalamiento pueden ser desde 1/2 hasta
1/256, segn la tabla mostrada en el registro OPTION.
168
INICIO
Valor al
Valor despus
OPTION
TOCS
169
TOSE
PSA
PS2
PS1
PS0
Encender
de TMR0 y TO
1111 1111
INICIO
Contador de tiempo
Veamos como ejemplo que se quiere incrementar un contador de tiempo cada segundo,
y que en una posicin de memoria, se lleve la cuenta del tiempo en minutos.
Supongamos que el microcontrolador tiene un cristal de 10MHz.
Para este caso, si el oscilador es de 10MHz, el perodo del oscilador es igual a
100nSeg.
El ciclo de mquina dura cuatro perodos del oscilador, por tanto
corresponde a 400nSeg. El valor mximo que se puede asignar al preescalador para
el TMR0, corresponde a 256 veces. Es decir que si tomamos el mximo valor, se
obtiene: 400nSeg X 256 = 102,4Seg. El TMR0 es de 8 bits, por tanto este tiempo
lo podemos ampliar hasta 102,4Seg X 255 = 26,112mSeg. Si la idea es obtener un
tiempo submltiplo de 1Seg, podramos seleccionar por ejemplo 20mSeg o 10mSeg, de
manera que al leer 50 o 100 veces el incremento de un registro que detecte cada vez
que el TMR0 se desborda, entonces obtendramos 1 segundo respectivamente.
Supongamos que seleccionamos como base del temporizador 10mSeg, entonces
podramos tomar el valor de escalamiento en 1/128, en vez de 1/256 que es el
mximo. As se podr tener mayor exactitud en la medicin del tiempo.
El incremento del tiempo se har en 400nSeg X 128 = 51,2Seg. En 10mSeg se
necesitarn 10mSeg/51,2Seg perodos del TMR0, es decir; 195,3125 ciclos de
TMR0. Como ste slo admite un valor entero, se tomar el 195. El resto podra
corregirse con una rutina que retarde la escritura del temporizador unos 51,2Seg X
0,3125 = 16Seg, que corresponde a la ejecucin de 40 ciclos del PIC. Sin embargo,
lo mejor sera probarlo sin tomar en cuenta este remanente, y luego corregir.
Para obtener los 195 ciclos del TMR0, debe cargarse el valor 256-195=61; no se
toma en cuenta el retardo en la escritura, ya que el valor del escalamiento es alto.
170
INICIO
El Contador de segundos
y minutos
include "P16C5X.INC" ; Incluye los smbolos del PIC16C54
cblock 10H
segund, minuto, hora, dia
endc
prepara
movlw b'00000110' ; Seleccin del preescalador a TMR0 y divisin por 128
option
; Carga al registro OPTION la configuracin
tmr0full
movf TMR0,w
btfss STATUS,Z
; Chequea si el TMR0 est en 0
goto tmr0full
movlw d'61'
movwf TMR0 ; carga el valor 61 para que se ejecuten 195 ciclos de tmr0
incf
segund,f
; Se incrementan los segundos
call
ajuste
goto tmr0full
; Se espera hasta que el tmr0 vuelva a 0. Para otras aplicacione
; el programa principal puede seguir mientras se incrementa TMR0
ajuste movlw 6
; Se hace el ajuste a BCD
addwf segund,w
; suma 6 para correccin digito 0
btfsc STATUS,DC ; chequea si hubo un acarreo en digito 0
movwf segund
; corrige si hay acarreo digito 0
movlw 0A0
addwf segund,w
; suma 100 para correccin de segundos
btfsc STATUS,C
; corrige si hay acarreo
goto incminu
; va a incrementar los minutos
retlw 0
; retorna si no hay incremento de minutos
incminu
movwf segund
; corrige si hay acarreo en el siguiente dgito
incf
minuto,f
;
171
INICIO
172
INICIO
01 02
Entrada de un
Oscilador Externo o
Salida del
Escalamiento
Salida del Oscilador
Externo/Escalamiento
Despus del muestreo
03
04 01 02
03
04
01 02
03
04
03 04
01 02
Un pequeo pulso se
pierde en el muestreo
(1)
(3)
173
INICIO
Cuando se usa el escalamiento, se obtiene una seal simtrica cuya frecuencia est
divida con respecto a la de la frecuencia de entrada del oscilador. Es necesario que
en la entrada TOCKI, el perodo sea de por lo menos 4Tosc dividido entre el valor
escalado. Por otro lado, la duracin de un nivel debe ser mayor que el mnimo ancho
de pulso requerido de acuerdo a las especificaciones, es decir 10nSeg.
Debido a que la salida del escalamiento se sincroniza con el oscilador interno, cuando
ocurre una transicin en la seal externa habr un pequeo retardo en el incremento
del temporizador TMR0.
174
INICIO
de
la
secuencia
de
instrucciones
programadas.
Bsicamente
esta
anormalidad har que el programa ejecute un lazo sin retorno, y por tanto el
microcontrolador no har la funcin que se le haba asignado.
Si esto ocurre, y se
175
INICIO
Esto
significa que este circuito genera una seal, aunque el oscilador principal (terminales
OSC1/CLKIN y OSC2/CLKOUT) se haya detenido, como por ejemplo al ejecutar la
instruccin SLEEP.
176
INICIO
177
INICIO
Consideraciones al programar
el Temporizador WDT:
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Valor al
Valor despus de
--11 1111
--11 1111
N/A
OPTION
TOCS
TOSE
178
PSA
PS2
PS1
PS0
INICIO
INICIO
ACTIVIDADES A REALIZAR
1.- Hacer un contador BCD con dos pulsadores para el control ascendente y
descendente, y que tenga dos dgitos de salida en formato siete segmentos.
2.- Hacer un control de luces para el semforo propuesto en el tema 2, en el cual se
lleve la medicin del tiempo con el temporizador TMR0. Suponga que la frecuencia
del oscilador es igual a 4MHz.
3.- Hacer un reloj digital, que sincronice su velocidad con el temporizador TMR0.
Este reloj deber tener la posibilidad de ajustar la hora y minutos, por medio de
pulsadores. Asuma que la frecuencia del oscilador es igual a 20MHz.
4.- Incluir el temporizador WDT en las actividades anteriores, de manera que el
programa se ejecute correctamente, en condiciones normales, y que haga la
inicializacin, en el caso de caer en un lazo infinito.
180
INICIO
TEMA 4
Caractersticas Especiales del
Hardware
4.1.- Configuracin de la serie PIC16C5X
CONTENIDO
INICIO
TEMA IV:
CARACTERSTICAS ESPECIA
DEL HARDWARE
Objetivos Terminales:
Describir
los
modos
de
configuracin que presentan
los microcontroladores PIC.
Sealar la importancia que
tiene activar el modo Reposo
en un microcontrolador.
Describir
los
modos
de
inicializacin que presentan los
microcontroladores PIC.
182
INICIO
4.1.- Configuracin de
la serie PIC16C5X
En la direccin FFFh de los microcontroladores de la serie 16C5X, se dispone de
una palabra de configuracin de 12 bits, de los cuales 4 bits tienen funciones
especficas.
Dos de los bits son para seleccionar el tipo de oscilador que se va a utilizar, un
bit es para la habilitacin del temporizador Perro Guardin (WDT) y un bit es
para habilitar la proteccin del cdigo del programa.
183
INICIO
CP
Bit 11 10
Bit 0
Registro CONFG
Direccin FFFH
1-> No protegido
0-> Protegido
Bit 2:
1-> Habilitado
0-> Inhabilitado
184
INICIO
Proteccin de cdigos
185
INICIO
186
INICIO
Seal de un oscilador
externo
OSC1
Abierto
OSC2
187
PIC 16C5X
INICIO
OSC1
C1(1)
PIC16C5X
SLEEP
XTAL
RF(3)
Hacia lgica
interna
RS(2)
Tabla de Seleccin
OSC2
C2(1)
Tipo de
Frecuencia
Oscilador
resonante
NOTAS:
1.- Ver tabla de seleccin de C1 y
C2
LP
XT
32KHz
100KHz
200KHz
455KHz
1MHz
2MHz
4MHz
HS
188
4MHz
8MHz
20MHz
C1
C2
15 pF
15pF
15-30 pF
200-300 pF
15-30 pF
100-200 pF
15-30 pF
15-100 pF
15-30 pF
15-30 pF
15 pF
15 pF
15 pF
15 pF
15 pF
15 pF
15 pF
15 pF
15 pF
15 pF
INICIO
Para las aplicaciones en las cuales no se requiera precisin en la medicin del tiempo,
el modo RC ofrece una alternativa econmica para el desarrollo de circuitos. La
frecuencia del oscilador RC, depende de los valores del voltaje de alimentacin, la
resistencia Rext, el condensador Cext, la temperatura de operacin y la tolerancia que
ofrece el dispositivo. Se recomienda utilizar valores de R ext entre 3 K y 100 K.
En cuanto a Cext se recomienda utilizar valores por encima de los 20 pF.
En la siguiente figura se muestra la conexin de circuito RC, ntese que se dispone de
una salida con la frecuencia de oscilacin dividida entre cuatro en el terminal
OSC2/CLKOUT.
VDD
Rext
Reloj Interno
OSC1
N
PIC16C5X
Cext
Vss
FOSC/4
189
OSC2/ClkOUT
INICIO
Cext
20pF
100pF
300pF
190
Rext
Frecuencia
Vdd= 5V, Tamb=25C
3.3K
5K
10K
100K
3.3K
5K
10K
100K
3.3K
5K
10K
160K
5,0MHz
3,8MHz
2,2MHz
260KHz
1,6MHz
1,2MHz
680KHz
72KHz
660KHz
480KHz
270KHz
29KHz
INICIO
191
INICIO
Para salir del modo de reposo, existen dos posibilidades: Por medio de una
inicializacin externa o al cumplirse el tiempo de espera en el temporizador perro
guardin (si WDT haba sido habilitado).
Estas dos formas causarn una inicializacin del dispositivo, y los bits TO y PD
pueden usarse para determinar cmo se hizo la inicializacin.
Un cero en el bit TO, indicar que el tiempo de espera en el WDT despert al
microcontrolador.
192
INICIO
Los microcontroladores PIC pueden iniciar sus funciones de las siguientes formas:
La siguiente tabla muestra las condiciones de los bits de los registros PCL y STATUS,
despus de una inicializacin.
193
INICIO
PCL
Direccin: 02h
STATUS
Direccin: 03h
1111 1111
0001 1xxx
Inicializacin MCLR
(operacin normal)
1111 1111
000u uuuu
Inicializacin MCLR al
despertar (desde modo
Reposo)
1111 1111
Inicializacin WDT
(operacin normal)
1111 1111
Inicializacin WDT al
despertar (desde modo
Reposo)
1111 1111
Condicin
0001 0uuu
0000 1uuu
0000 0uuu
INICIO
TO
PD
Encendido (POR)
195
INICIO
Direccin
Inicializacin por
Encendido
Inicializacin por
MCLR o WDT
N/A
xxxx xxxx
uuuu uuuu
TRIS
N/A
1111 1111
1111 1111
OPTION
N/A
--11 1111
--11 1111
INDF
00h
xxxx xxxx
uuuu uuuu
TMRO
01h
xxxx xxxx
uuuu uuuu
PCL(1)
02h
1111 1111
1111 1111
INICIO
Registro
Direccin
Inicializacin por
Encendido
Inicializacin por
MCLR o WDT
STATUS
03h
0001 1xxx
000? ?uuu
FSR
04h
1xxx xxxx
1000 0000
PORTA
05h
--- xxxx
---- uuuu
PORTB
06h
xxxx xxxx
uuuu uuuu
Registros de
propsitos generales
07h-7Fh
xxxx xxxx
uuuu uuuu
197
INICIO
VDD
Detector de
POR
Encendido (Inicializacin
por Encendido)
z
MCLR/VDD
Oscilador RC
Tiempo de espera
del WDT
Contador de 8 Bits
Asincrnico
(Temporizador de
Arranque)
Interno
Inicio
S
R
Q
Q
Inicializacin
del Chip
198
INICIO
4.4. El Temporizador de
Inicializacin (DRT)
El temporizador de inicializacin (DRT) es un circuito interno, basado en un
oscilador RC, que introduce un tiempo de espera nominal de 18mseg, antes de la
inicializacin del microcontrolador.
El retardo en la inicializacin que introduce este circuito, permite la estabilizacin
de la frecuencia de oscilacin en el circuito resonante que fija los ciclos del
microcontrolador; lo cual evita la necesidad de colocar una red RC externa para
este propsito.
El DRT tambin se activa despus de un tiempo de espera del perro guardin
(WDT), lo cual es importante para aplicaciones en las que despertar al
microcontrolador, despus del modo dormir o reposo.
199
INICIO
200
INICIO
V1
VDD
MCLR
TDRT
POR INTERNO
ESPERA DRT
INICIALIZACIN INTERNA
201
INICIO
TDRT
ESPERA DRT
INICIALIZACIN INTERNA
INICIO
Para los casos en los que la alimentacin sube de manera muy lenta, ocurre una
situacin problemtica. Vase la siguiente figura:
V1
VDD
MCLR
POR INTERNO
TDRT
ESPERA DRT
INICIALIZACIN INTERNA
Cuando VDD se eleva lentamente, el tiempo de espera TDRT se acaba antes de
que VDD llegue al valor final. En este ejemplo, el dispositivo tendr una
inicializacin apropiada, nicamente si V1 VDD.
203
INICIO
VDD
R
R1
MCLR
C
PIC16C5X
INICIO
TEMA V
Otros Microcontroladores de la Gama Bsica
5.1.- Introduccin
5.2.- Familia de los microcontroladores PIC de la gama bsica
5.3.- Conexiones externas de los microcontroladores PIC de la gama bsica
5.4.- Organizacin de las memorias de los microcontroladores PIC de la gama bsica
5.5.- Registro STATUS
5.6.- Registro Contador de Programa PC
5.7.- Memoria de Datos
INICIO
5.1 INTRODUCCIN
Hemos visto hasta ahora todo lo relacionado con el PIC16C54. Este microcontrolador
es muy til para aplicaciones bsicas. En la medida en que aumenta la complejidad de
un circuito, ser necesario utilizar dispositivos con mayor capacidad de memoria, o
posiblemente se requiera una mayor cantidad de lneas de entrada y salida, o por el
contrario, pueden haber aplicaciones en las que se requiera pocas lneas y bajo
consumo. Dentro de los PIC de la gama bsica, hay otros microcontroladores que
pueden solucionar estos problemas.
Recuerda que la idea al utilizar
microcontroladores, es para que este circuito haga prcticamente todas las funciones
electrnicas de la aplicacin requerida.
En otras palabras, un circuito con
microcontrolador no debera tener, en lo posible, ampliaciones externas de memoria ni
circuitos digitales de soporte. Por qu? Simplemente, porque si se hace esto, estas
soluciones implican la utilizacin de ms circuitos externos y en muchos casos se
sacrificaran lneas que pueden utilizarse como puertos; por otro lado, si en un
programa se pueden realizar todas las funciones lgicas, entonces ser ms econmico
aprovechar la elaboracin de rutinas que ejecuten esas funciones. Por ejemplo, no
sera conveniente hacer un contador con un microcontrolador, cuyas salidas vayan a un
decodificador BCD a 7 segmentos.
Es ms econmico y funcional hacer la
decodificacin BCD a 7 segmentos, por medio de una rutina de conversin. Tampoco
ser lgico aadir una memoria externa para aumentar la capacidad, ya que al
comunicar la memoria con el microcontrolador se utilizarn lneas de puerto, que bien
pueden emplearse para otra actividad. La solucin ser adquirir un microcontrolador
con mayor capacidad de memoria.
206
INICIO
MCU
Memoria de programa
Bytes OTP/EPROM
RAM Lneas
Encapsulado
ROM
Bytes E/S
207
Temporizadores Veloc.
y WDT
Otras caractersticas
Mx.
INICIO
RAM
Lneas
MCU
Memoria de
programa FLASH
Bytes
E/S
PIC16F54
512X12
25
12
PIC16F57
2KX12
72
20
Encapsulado
18/PDIP
18/SOIC
20/SSOP
Temporizadores y
WDT
Velocidad
Otras
Mx.
Caractersticas
1-8 bits
20MHz
Memoria FLASH
20MHz
Memoria FLASH
1-WDT
1-8 bits
1-WDT
Podemos observar que las caractersticas son idntica a los PIC16C54 y PIC16C57,
con la diferencia de que la memoria de programa es del tipo FLASH. Esto ofrece una
ventaja considerable, ya que no se necesita el borrador de luz ultravioleta para poder
reprogramar los microcontroladores.
208
INICIO
209
INICIO
CALL, RERLW
NIVEL DE PILA 1
NIVEL DE PILA 2
Espacio
para
memoria
del
usuario
MEMORIA
DE
PROGRAMA
VECTOR DE INICIALIZACIN
000h
0FFh
100h
1FFh
INICIO
11
PC<9:0>
NIVEL DE PILA 1
NIVEL DE PILA 2
MEMORIA DE
PROGRAMA
(pgina 0)
MEMORIA DE
PROGRAMA
(pgina 1)
Espacio
para
memoria
del
usuario
MEMORIA DE
PROGRAMA
(pgina 2)
MEMORIA DE
PROGRAMA
(pgina 3)
VECTOR DE INICIALIZACIN
CALL, RERLW
NIVEL DE PILA 1
NIVEL DE PILA 2
000h
0FFh
100h
1FFh
200h
2FFh
300h
3FFh
400h
4FFh
500h
5FFh
600h
6FFh
700h
7FFh
10
Espacio
para
memoria
del
usuario
MEMORIA DE
PROGRAMA
(pgina 0)
MEMORIA DE
PROGRAMA
(pgina 1)
VECTOR DE INICIALIZACIN
000h
0FFh
100h
1FFh
200h
2FFh
300h
3FFh
INICIO
R-1
PA2 PA1
PA0
TO
PD
DC
bit7 bit6
bit5
bit4
bit3
bit2
bit1
bit0
Pgina
(000h
(200h
(400h
(600h
INICIO
PIC16C56
9 8
PC
PCL
Palabra de Instruccin
0
PA0
STATUS
8
PC
PIC16C54/55
PCL
10 9 8 7
PC
PA1 PA0
2
7
PCL
Palabra de Instruccin
0
STATUS
PIC16C57/58
Palabra de Instruccin
213
INICIO
Para una instruccin CALL, o alguna instruccin donde el PCL es el destino, los bits 7
a 0 del PC se obtienen del cdigo de la instruccin. Sin embargo, el bit 8 del PC no
viene del cdigo de la instruccin, sino que es puesto en cero.
Algunas de las instrucciones donde el PCL es el destino, o se le modifica el
contenido, son: MOVWF PCL, ADDWF PCL y BSF PCL, 5. Recuerda que la direccin
del PCL es la 2
Para los PIC16C56, 16C57 y 16C58, se debe agregar un nmero de pgina. El bit 5
del registro STATUS se transfiere al bit 9 del PC para el PIC16C56, y los bits 5 y
6 del registro STATUS se transfieren respectivamente a los bits 9 y 10 del PC para
los PIC16C57 y PIC16C58. Vase figura a continuacin.
214
INICIO
8
PC
9 8 7
PC
PCL
PCL
Palabra de Instruccin
PIC16C54/55
Inicializacin
A 0
PA0
STATUS
PIC16C56
10 9 8 7
PC
PCL
2
PA1 PA0
7
Palabra de Instruccin
0
STATUS
PIC16C57/58
215
INICIO
Efectos de la inicializacin
216
INICIO
Por ejemplo, una instruccin NOP en la posicin 1FFh (pgina 0), incrementa el PC
a 200h (pgina 1). Un GOTO xxh en la posicin 200h, har que el programa salte
a la posicin xxh en la pgina 0 (asumiendo que PA1: PA0 valen 0). Para prevenir
esto, los bits de la pgina preseleccionada deben actualizarse por medio del
control del programa.
217
INICIO
ecuerda
La memoria de programa est seleccionada en pginas de 512 palabras de 12 bits.
Cada posicin en una pgina, puede ser accedida directamente cuando se va a
ejecutar un salto de direccin por medio de las instrucciones: CALL, RETLW o
GOTO.
Para los dispositivos con capacidad de ms de 512 palabras, se utilizan los bits de
seleccin de pgina PA1 y PA0, los cuales se encuentran en el STATUS.
En la memoria de datos se ubican los registros de funciones especiales y los de
propsitos generales. En las siguientes pginas, podrs observar la ubicacin de los
registros en los microcontroladores PIC de la serie 16C5X. En ellos encontrars que
los dispositivos de 28 terminales, tienen al puerto C ubicado en la posicin 07h, que
corresponde a un registro de propsito general para los microcontroladores de 18
terminales. Por otro lado, observars que los PIC16C57 y PIC16C58 tienen una
memoria RAM de mayor capacidad, y por tanto el acceso se hace por medio del
registro FSR, ya sea de manera indirecta a travs del registro INDF o directa, por
medio de los bits 6 y 5 del registro FSR, ya que stos indican el banco de memoria
a utilizar, que est especificado de acuerdo a su valor en binario.
218
INICIO
INDF(1)
05h
06h
PORTB
04h
07h
0Fh
10h
00h
01h
02h
03h
TMRO
PCL
STATUS
FSR
PORTA
04h
05h
06h
07h
REGISTROS
DE
PROPSITOS
GENERALES
0Fh
10h
1Fh
1Fh
INDF(1)
TMRO
PCL
STATUS
FSR
PORTA
PORTB
PORTC
REGISTROS
DE
PROPSITOS
GENERALES
(1) El registro INDF, no corresponde a una posicin fsica, sino al registro cuya direccin est
contenida en el registro FSR.
219
INICIO
Direccin
de registro00h
01h
02h
03h
04h
05h
06h
07h
08h
0Fh
00
INDF(1)
TMRO
PCL
STATUS
FSR
PORTA
PORTB
PORTC
REGISTROS
DE
PROPSITOS
GENERALES
10h REGISTROS
DE
PROPSITOS
GENERALES
1Fh
Banco 0
01
10
20h
40h
11
60h
2Fh
4Fh
50h
30h REGISTROS
DE
PROPSITOS
GENERALES
5Fh
3Fh
Banco 1
220
6Fh
REGISTROS 70h
DE
PROPSITOS
GENERALES
7Fh
Banco 2
REGISTROS
DE
PROPSITOS
GENERALES
Banco 3
INICIO
Direccin
de registro00h
01h
02h
03h
04h
05h
06h
07h
0Fh
00
INDF(1)
TMRO
PCL
STATUS
FSR
PORTA
PORTB
REGISTROS
DE
PROPSITOS
GENERALES
10h REGISTROS
DE
PROPSITOS
GENERALES
1Fh
Banco 0
01
10
20h
40h
11
60h
2Fh
4Fh
50h
30h REGISTROS
DE
PROPSITOS
GENERALES
5Fh
3Fh
Banco 1
221
6Fh
REGISTROS 70h
DE
PROPSITOS
GENERALES
7Fh
Banco 2
REGISTROS
DE
PROPSITOS
GENERALES
Banco 3
INICIO
TEMA VI
Microcontrolador PIC16F84A
6.1.- Introduccin
6.2.- Familia de los microcontroladores PIC16F8X
6.3.- El PIC16F84A
6.4.- Nuevas instrucciones de los PIC de la gama media
6.5.- Organizacin de la memoria del PIC16F84A
6.6.- El registro STATUS
6.7.- Manejo de Interrupciones en el PIC16F84A
6.8.- La Memoria EEPROM
6.9.- Registro Contador de Programa PC
6.10.- El Registro STACK (Pila)
6.11.- Los temporizadores y algo ms de PORTB
6.12- Los Bits de configuracin
INICIO
Objetivos Terminales:
Establecer las diferencias
de software y hardware
entre
los
microcontroladores de la
gama bsica y los de la
gama media.
Explicar la arquitectura
del
microcontrolador
PIC16F84.
Disear circuitos bsicos
con microcontroladores de
la gama media.
223
INICIO
6.1- INTRODUCCIN
Los microcontroladores de la gama bsica son tiles para aplicaciones sencillas, en
donde se realiza una tarea a la vez. Ejemplos de estas aplicaciones, pueden ser los
relojes digitales, las combinaciones de cajas fuertes y cerraduras, medidores de
frecuencia, tacmetros y algunos circuitos bsicos de control.
Cuando una aplicacin se hace ms compleja, se podra aadir circuitos externos a
estos microcontroladores; sin embargo, la idea de utilizar estos dispositivos consiste
en reducir considerablemente el nmero de componentes, y por tanto, el espacio y el
consumo de energa en los circuitos de diferentes aplicaciones.
Por ejemplo.
Suponiendo que se necesita disear un circuito que sea capaz de controlar un sistema
con varias seales analgicas a la vez; si utilizramos un microcontrolador de la gama
bsica, tendramos que aadir al circuito: un convertidor analgico a digital, uno o
ms multiplexers analgicos, posiblemente se deba agregar ms memoria RAM, se
necesitara utilizar una EEPROM externa para guardar constantes del sistema y
constantes de calibracin, y as el circuito se hara bastante complejo, de tal forma,
que quizs sea ms indicado utilizar un microprocesador que un microcontrolador.
Como se ha visto en la primera seccin de esta gua, existen microcontroladores que
internamente tienen los elementos que nombramos anteriormente, y por lo tanto hay
la posibilidad de disear equipos con cierta complejidad utilizando un solo
microcontrolador. En esta seccin se vern los microcontroladores de la gama media
a partir del PIC16F84.
224
INICIO
Memoria. de programa
FLASH
EEPROM
Bytes
RAM Lneas
Bytes
E/S
Encapsulado
Canales
A/D C
Comparadores
Analgicos
225
PWM
16bits
Temporizadores
y WDT
Puertos
seriales
Veloc.
ICSP
Mxima
BOR/
CCP/
PBOR ECCP
Otras caractersticas
INICIO
6.3- El PIC16F84A
Inicialmente se har una descripcin del PIC16F84A, ya que ste es uno de los ms
sencillos de la familia de los microcontroladores de la serie PIC16F8X. En principio se
establecern las diferencias con respecto al microcontrolador PIC16C54, luego se harn
unos ejemplos de aplicacin con este microcontrolador.
El PIC16F84A es un microcontrolador Microchip de la gama media que presenta las
siguientes caractersticas bsicas, las cuales se comparan con las del PIC16C54:
Microcontrolador
PIC16F84A
PIC16C54JW
Memoria de Programa
Memoria de datos
64 bytes tipo
EEPROM
Manejo de interrupciones
13
12
Nmero de temporizadores
2: TMR0 y WDT
2: TMR0 y WDT
226
INICIO
INICIO
K
; Suma W con K, donde K es constante y el resultado va a W. SUBLW
; Resta K menos W, donde K es un valor constante.
MOVWF
MOVWF
INICIO
INICIO
Banco 1
INICIO
Direccin
Valor despus
Valor despus
de otra
de encender
inicializacin
Nombre
231
INICIO
R-1
IRP
RP1
RP0
TO
PD
DC
bit7 bit6
bit5
bit4
bit3
bit2
bit1
bit0
Bit 7: IRP: Se utiliza para acceso indirecto 0-> 00h a 0ffh. 1-> 100h a 1ffh
(nota: IRP y RP1 no se utilizan en los PIC16F84, por tanto se hacen iguales a
0).
Bit 6-5: RP1-RP0: Seleccin de banco de la memoria de datos
00 =
Banco 0 = (00h - 7Fh)
01 = Banco 1 = (80h - 0FFh)
10 = Banco 2 = (100h - 17Fh) RP1 no se utiliza en los
PIC16F84A
11 = Banco 3 = (180h - 1FFh)
232
INICIO
233
INICIO
100
80
60
Interrupcin:
40
Lee la seal
Programa Principal:
Convierte a digital
Guarda en memoria
Convierte a 7 segmentos
20
0
Entonces, se puede definir las interrupciones, como desviaciones del flujo de control del
programa originadas asncronamente mediante diversas causas que pueden ser externas
al sistema, tales como el cambio de nivel de una entrada; o internas, tal como el
desbordamiento en la cuenta de un temporizador.
La manera de ejecutar una interrupcin, es similar al llamado de una subrutina con la
instruccin CALL, ya que se almacena la direccin del PC de la siguiente instruccin a
ejecutar, en el registro PILA, con la diferencia de que en la interrupcin, el programa
salta a una posicin de la memoria de programa llamada vector de interrupcin.
234
INICIO
Fuentes de interrupcin
en el PIC16F84A
En el PIC16F84A, el vector de interrupcin est ubicado en la direccin 4h de la
memoria de programa.
Esto significa que en esa posicin comienza la rutina de
interrupcin, y por lo tanto, el programa principal no debera tener nada escrito all.
Debemos considerar lo siguiente acerca de las interrupciones en el PIC16F84A:
INICIO
El registro INTCON
Control de interrupciones
La mayor parte de las indicaciones de las fuentes de interrupcin y las habilitaciones de
interrupcin, se encuentran en el registro INTCON. En el caso de las habilitaciones de
las interrupciones, un 1 indica habilitado y un 0 indica deshabilitado. Para el caso de las
indicaciones, un 1 seala que ocurri el evento, es decir que podr interrumpir si hay
habilitacin y un 0 que no ha ocurrido nada.
RBIE. Habilitacin de interrupcin por cambio de estado en RB7, RB6, RB5 RB4.
INTCON
GIE
bit7 bit6
bit5
bit4
bit3
bit2
bit1
236
bit0
INICIO
Guardar W y STATUS en
la rutina de interrupcin
En el momento de ejecutar una rutina de interrupcin, es sumamente importante
guardar los registros W y STATUS, adems de algn otro que pueda ser utilizado en
el programa principal y que la rutina de interrupcin los modifique.
En los PICs de la gama media esta labor no es tan directa como en otros
microcontroladores, los cuales utilizan las instrucciones PUSH y POP. Aqu hay que
tomar en cuenta el banco seleccionado por la RAM en el programa principal, el cual al
interrumpir al microcontrolador, no sabemos cul est seleccionado. En el caso del PIC
16F84A, los registros de propsitos generales que se acceden en el banco 0,
corresponden a la misma direccin en el banco 1, de esta manera bastara con salvar
los registros W y STATUS como se muestra a continuacin:
Rut_interr
movwf W2 ; se guarda el valor de w en W2.
swapf STATUS,w ; se utiliza esta instruccin, ya que movf afecta al bit Z de STATUS
movwf STATUS2
; Se guarda el STATUS en STATUS2 con los nibbles intercambiados
; Se ejecuta la rutina de interrupcin
swapf STATUS2,w ; se recupera el valor del STATUS con los nibbles en la posicin original
movwf STATUS
swapf W2,f ; se toma el valor de W2 con los nibbles intercambiados
swapf W2,w ; se recupera el valor de w.
retfie
; Retorno de la interrupcin
237
INICIO
Ejemplo de interrupcin
por TMR0
include
org
goto
org
interrupt
goto
btfsc
tmr0full movwf
swapf
movwf
movlw
movwf
incf
call
swapf
movwf
swapf
swapf
bcf
retfie
prepara movlw
movwf
bsf
movwf
movlw
movwf
movlw
movwf
238
INICIO
INICIO
EECON1:
Este registro contiene los bits de control de las operaciones en la
EEPROM:
RD, Bit 0 (Lectura). Se escribir 1 cuando se va a realizar un ciclo de lectura de
la EEPROM, al terminar se colocar en cero. No admite la escritura de 0.
WR, Bit 1 (Escritura). Se enviar 1 cuando se va a realizar un ciclo de escritura
de la EEPROM, al terminar se colocar en cero. No admite la escritura de 0.
EECON2: En este registro se coloca una secuencia clave para evitar grabaciones
accidentales.
240
INICIO
241
INICIO
242
INICIO
12 11 10 9 8 7
PC
PCL
PCLATCH 4-3
2
7
4
11
Palabra de Instruccin
0
PIC16F84
PCLATCH
243
INICIO
PC
PCLATCH
4-0
7
PCL
5
Resultado de la ALU
0
PCLATCH
PIC16F84
El vector de inicializacin del PIC16F84A est en la direccin 3FFh, esto significa
que la primera instruccin del programa se debe colocar en esa direccin.
244
INICIO
245
INICIO
TMR0
246
WDT
INTCON
INICIO
Al igual que los PICs de la gama bsica, los bits de configuracin del PIC16F84A se
acceden slo en el momento de grabar el programa en el microcontrolador.
Los bits de configuracin WDT, FOSC1 y FOSC0 del PIC 16F84 coinciden en lgica y
posicin con los de los PICs de la gama bsica (Repasar). En el caso del bit de
proteccin de programa, ste trabaja de la misma manera en ambos casos, pero la
lgica es invertida y la ubicacin es diferente, es decir que en el PIC16F84A este bit
se ubica en la posicin 4 de la palabra de configuracin y un 1 indicar que el
dispositivo no estar protegido, y un 0 indicar que no ser posible leer el contenido
del programa ni los datos de la EEPROM.
Finalmente el PIC16F84A tiene adicionalmente el bit PWRTE#, el cual, con un 0
activa un retardo en el reinicio por 72 ms. Este bit ocupa la posicin 3 en la palabra
de configuracin.
Palabra de Configuracin en el PIC16F84A:
CP
CP
Bit 11 10
CP
9
CP
8
CP
CP
247
CP
5
CP
4
Bit 0
INICIO
TEMA VII
MICROCONTROLADORES DE LA SERIE
PIC16F87X
7.1 Generalidades
7.2 La familia PIC16F87X
7.3 Registros de funciones especiales
7.4 Las interrupciones de los PIC16F87X
7.5 Las Memorias EEPROM y FLASH
7.6 El Puerto A, el Puerto E y el Convertidor A/D
7.7 El Puerto B
7.8 El Puerto C y los Temporizadores
7.9 El Puerto C y los mdulos de Captura, Comparacin y PWM
7.10 El Puerto C y el Mdulo de Comunicacin Serial Sncrona
7.11 El Puerto C y la Comunicacin I2C
7.12 El Puerto C y el USART
7.13 El Puerto D, el Puerto E y la Interfaz Paralela
7.14 Palabra de Configuracin
248
INICIO
Objetivos Terminales:
Establecer las diferencias de
hardware entre el
microcontrolador PIC16F84A y
los PIC16F87X
Describir las caractersticas de
los PIC16F87X
Explicar el uso de las
interrupciones en los
PIC16F87X
Describir cada uno de los
mdulos de hardware de los
PIC16F87X
Disear circuitos con
microcontroladores PIC16F87X
249
INICIO
7.1 Generalidades de
los PIC16F87X
En el tema anterior hemos visto al PIC16F84A, con el cual nos iniciamos a los
microcontroladores PIC de la gama media. Qued todo bien claro? Es importante que lo
hayas comprendido todo bien hasta ahora, para continuar con los PIC16F87x. Estos
microcontroladores presentan una serie de caractersticas que permiten una mayor
versatilidad en un sinnmero de aplicaciones. Estas caractersticas se pueden resumir en
las siguientes:
* Mayor capacidad de memoria RAM y EEPROM.
* Manejo de hasta 14 fuentes de interrupcin.
* Lneas de entrada y salida adicionales.
* Dos temporizadores adicionales: TMR1 y TMR2.
* Mdulos de captura, comparacin y modulador de ancho de pulsos.
* Convertidor Analgico a Digital de 10 bits para varias entradas.
* Mdulos de comunicacin serial.
* Los modelos de 40 terminales tienen un mdulo de comunicacin paralela.
Todas estas caractersticas colocan a los PIC16F87X como la familia de
microcontroladores de la gama media de mayor cantidad de recursos, y que obviamente se
presentan como soluciones a una gran diversidad de desarrollos.
250
INICIO
PIC16F84
PIC16F870
PIC16F871
PIC16F872
PIC16F873
PIC16F874
PIC16F876
PIC16F877
FLASH
(Programa)
1Kx14
2K x 14
2K x 14
2K x 14
4K x 14
4K x 14
8K x 14
8K x 14
RAM
64 bytes
128 bytes
128 bytes
128 bytes
192 bytes
192 bytes
368 bytes
368 bytes
64 bytes
64 bytes
64 bytes
64bytes
128 bytes
128 bytes
256 bytes
256 bytes
Puertos
A,B
A, B, C
A,B,C,D,E
A, B, C
A, B, C
A,B,C,D,E
A, B, C
A,B,C,D,E
Entradas
Analgicas
No
5 canales
8 canales
5 canales
5 canales
8 canales
5 canales
8 canales
Captura,
Comparacin y
Modulador de
ancho de pulso
No
Puerto serial
No
AUSART
AUSART
M2CSPI
AUSART/
M2CSPI
AUSART/
M2CSPI
AUSART/
M2CSPI
AUSART/
M2CSPI
Temporizadores
1-8bits,
WDT
1-16bits
1-16bits,
1-16bits,
1-16bits,
1-16bits,
1-16bits,
1-16bits
2-8bits, WDT
2-8bits,WDT
2-8bits, WDT
2 8bits, WDT
2-8bits, WDT
2-8bits, WDT
2-8bits, WDT
(Datos)
EEPROM
(Datos
permanentes)
251
INICIO
252
INICIO
253
INICIO
7.3 Registros de
funciones especiales
Sabemos que las instrucciones de los microcontroladores PIC16F87X, son las mismas
que las del PIC16F84, ya que todos pertenecen a la gama media. Sin embargo, para la
programacin se hace necesario conocer los nuevos registros de funciones especiales
que ofrecen los PIC16F87X con sus caractersticas mejoradas. Estos registros se
ubican en la memoria RAM del microcontrolador. Recordemos que para acceder a una
posicin de la RAM, contamos con 7 bits en la palabra de instruccin, que corresponden
directamente a 128 posiciones. Para seleccionar un banco de la memoria RAM se
cuenta con los bits RP1 y RP0 que se ubican en el registro STATUS. En el caso del
PIC16F84 slo se puede modificar el bit RP0, y por consiguiente, nicamente se puede
acceder a dos bancos de la RAM. En el caso de los PIC16F87X, podemos acceder a 4
bancos de la RAM.
Los registros de funciones especiales los podemos ubicar en las tablas de las pginas
siguientes, no hace falta que te lo aprendas todava, despus lo analizaremos con ms
detalle. En ellas encontraremos a los siguientes microcontroladores:
PIC16F870 y PIC16F871
PIC16F872
PIC16F873 y PIC16F874
PIC16F876 y PIC16F877
Bits de los registros de Funciones especiales
254
INICIO
PIC16F870 y 871
Banco 0
255
Banco 1
Banco 2
Banco 3
INICIO
PIC16F872
Banco 0
256
Banco 1
Banco 2
Banco 3
INICIO
PIC16F873 y 874
Banco 0
257
Banco 1
Banco 2
Banco 3
INICIO
PIC16F876 y 877
Banco 0
258
Banco 1
Banco 2
Banco 3
INICIO
259
INICIO
260
INICIO
261
INICIO
Registro
PIC16F870
PIC16F871
PIC16F872
PIC16F873
PIC16F874
PIC16F876
PIC16F877
PORTD
-----
08h
-----
-----
08h
-----
08h
Puerto
TRISD
-----
88h
-----
-----
88h
-----
88h
Paralelo
PORTE
-----
09h
-----
-----
09h
-----
09h
TRISE
-----
89h
-----
-----
89h
-----
89h
SSPBUF
-----
-----
13h
13h
13h
13h
13h
Mdulo de
SSPCON
-----
-----
14h
14h
14h
14h
14h
Comunicacin
SSPCON2
-----
-----
91h
91h
91h
91h
91h
Serial
SSPADD
-----
-----
93h
93h
93h
93h
93h
Sncrona
SSPSTAT
-----
-----
94h
94h
94h
94h
94h
18h
18h
-----
18h
18h
18h
18h
RCSTA
Puerto
TXTA
98h
98h
-----
98h
98h
98h
98h
de Comunicacin
TXREG
19h
19h
-----
19h
19h
19h
19h
Serial Universal
SPBRG
99h
99h
-----
99h
99h
99h
99h
USART
RCREG
1Ah
-----
1Ah
1Ah
1Ah
Segundo mdulo
CCPR2L
-----
2621Ah
-----
1Bh
1Bh
1Bh
-----
INICIO
1Ah
1Bh
Funcin
Direcciones
INTCON
PIE1
Habilitacin de Interrupciones 1
8CH
PIE2
Habilitacin de Interrupciones 2
8DH
PIR1
Indicador de Interrupciones 1
0CH
PIR2
Indicador de Interrupciones 2
0DH
Bsicamente estos registros contienen los bits que permiten o no las interrupciones
en el microcontrolador (registros INTCON, PIE1 y PIE2) y los bits que se
establecen cuando se genera una interrupcin (registros INTCON, PIR1 y PIR2). El
registro INTCON es similar al del PIC16F84, con la diferencia de que se sustituye
la habilitacin de la escritura de la EEPROM por la de habilitacin de los dispositivos
que no estn en INTCON. Esto se podr ver mejor en la siguiente pgina.
263
INICIO
El registro INTCON
Control de interrupciones
El registro INTCON contiene algunas de las indicaciones de las fuentes de interrupcin y
las habilitaciones de interrupcin. En el caso de las habilitaciones de las interrupciones,
un 1 indica habilitado y un 0 indica deshabilitado. Para el caso de las indicaciones, un 1
seala que ocurri el evento, es decir que podr interrumpir si hay habilitacin y un 0
que no ha ocurrido nada. Los bits del registro INTCON son:
bit7 bit6
bit5
bit4
bit3
bit2
bit1
bit0
PEIE.
Habilitacin de interrupciones de dispositivos que no se controlan con
INTCON.
RBIE. Habilitacin de interrupcin por cambio de estado en RB7, RB6, RB5 RB4.
INICIO
Registro PIE1
El registro PIE1 contiene 8 bits que se utilizan para la habilitacin de ocho de las
interrupciones de los PIC16F87X.
PIE1 (8CH)
PSPIE
bit7 bit6
bit5
bit4
bit3
bit2
BIT
bit1
TMR2IE
TMR1IE
bit0
Funcin
PSPIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
265
INICIO
Registro PIE2
El registro PIE2 contiene 3 bits que se utilizan para la habilitacin de tres de las
interrupciones de los PIC16F87X.
PIE2 (8DH)
---
---
EEIE BCLIE
bit5
bit4
bit3
---
---
bit2
bit1
CCP2IE
bit0
Funcin
EEIE
BCLIE
CCP2IE
266
INICIO
Registro PIR1
El registro PIR1 contiene 8 bits que se utilizan para la indicacin de ocho de las
interrupciones de los PIC16F87X.
PIR1 (0CH)
PSPIF
bit7 bit6
bit5
bit4
bit3
bit2
BIT
bit1
TMR2IF
TMR1IF
bit0
Funcin
PSPIF
ADIF
RCIF
Aviso de interrupcin para indicar que indica que se recibi un dato en del USART
TXIF
Aviso de interrupcin para indicar que indica que se envi un dato desde el USART
SSPIF
CCP1IF
TMR2IF
TMR1IF
267
INICIO
Registro PIR2
El registro PIR2 contiene 3 bits que se utilizan para la indicacin de tres de las
interrupciones de los PIC16F87X.
PIR2 (0DH)
---
---
bit4
bit3
--bit2
CCP2IF
bit1
bit0
BIT
Funcin
EEIF
BCLIF
CCP2IF
268
INICIO
269
movwf
INICIO
En el caso de los
PIC16F873 y PIC16F874
En los PIC16F873 y 874, no encontramos registros que se acceden en los cuatro
bancos, sino en el 0 y 2 en el 1 y 3. Es decir que con el control de RP0, podemos
guardar y recuperar W y STATUS. Guardar W y STATUS se hace ms complejo que
en los otros PIC16F87X, y se sugiere hacerlo como se presenta a continuacin:
Push btfss STATUS,RP0
; Chequea si el programa principal seala al banco 0
goto rp0_en_0
bcf
STATUS,RP0
; Si no estaba, selecciona el banco 0 para guardar
movwf W2
; w y STATUS
swapf STATUS,w
movwf STATUS2
bsf
STATUS2,1
; Ntese que se cambia el bit guardado que corresponde
goto rutint
; a RP0, que pas de la posicin 5 a 1 con el swapf
rp0_en_0
movwf W2
; Si el programa principal seala el banco 0 no se
swap STATUS,w
; realizan modificaciones
movwf STATUS2
rutint
; Rutina de interrupcin
270
INICIO
Actividades
Ya hemos visto cmo funcionan las interrupciones, y cmo hacer un programa para
salvar los registros W y STATUS cuando se atiende una interrupcin.
Debes
considerar siempre estos programas que se han mostrado anteriormente, por tanto te
recomendamos que los escribas, o los copies, y lo guardes en tus archivos personales
de tus programas.
Por los momentos, no te proponemos alguna otra actividad.
Pensamos que
comprenders mejor acerca del manejo de interrupciones, a medida que vayas
conociendo cada mdulo de los PIC16F87X, los cuales vers, poco a poco en las
siguientes secciones.
Recuerda que es importante que sepas que bsicamente en el manejo de las
interrupciones, cuentas con bits que te habilitan o no cada una de las interrupciones, y
que adems puedes acceder a los bits que te avisan cul fue la interrupcin que se
gener mientras se ejecutaba el programa principal.
271
INICIO
272
INICIO
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor en POR
y BOR
Otros
Resets
0BH (todos
los bancos)
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
10DH
EEADR
xxxx xxxx
uuuu uuuu
10FH
EEADRH
la FLASH
xxxx xxxx
uuuu uuuu
10CH
EEDATA
FLASH
xxxx xxxx
uuuu uuuu
10EH
EEDATAH
----
----
xxxx xxxx
uuuu uuuu
18CH
EECON1
EEPGD
----
----
----
x--- x000
x--- u000
18DH
EECON2
Registro
de
control
8DH
PIE2
----
----
EEIE
BCLIE
----
----
CCP2IE
-r-0 0--0
-r-0 0--0
0DH
PIR2
----
273
----
EEIF
BCLIF
----
----
CCP2IF
-r-0 0--0
----
----
----
Registro
de Dato
la
FLASH
Direccin Alta de
de la
EEPROM
la
WRERR
de
la
WREN
EEPROM
WR
y
la
RD
FLASH
-r-0 0--0
INICIO
EECON1:
Este registro contiene los bits de control de las operaciones en la
EEPROM:
RD, Bit 0 (Lectura). Se escribir 1 cuando se va a realizar un ciclo de lectura de
la EEPROM, al terminar se colocar en cero. No admite la escritura de 0.
WR, Bit 1 (Escritura). Se enviar 1 cuando se va a realizar un ciclo de escritura
de la EEPROM, al terminar se colocar en cero. No admite la escritura de 0.
EECON2: En este registro se coloca una secuencia clave para evitar grabaciones
accidentales.
274
INICIO
275
INICIO
Durante la seccin del programa que escribe en la EEPROM se recomienda deshabilitar las
interrupciones para que el proceso de escritura se realice correctamente. Despus de
iniciarse el proceso de escritura de la EEPROM, se podr habilitar las interrupciones por
medio de la instruccin BSF INTCON, GIE. En la escritura de la EEPROM el bit WR
de EECON1 se colocar en 0 automticamente. T podrs determinar cundo termina el
ciclo de escritura al leer un 1 en el bit EEIF del registro EECON1. Despus de esto se
deber colocar el bit WREN en 0 para prevenir un borrado accidental de la EEPROM.
Para leer un dato en la EEPROM se podr utilizar la seccin de programa que se muestra
a continuacin:
BCF
STATUS, RP0
; Selecciona banco 2 para EEADR
BSF STATUS, RP1
:
MOVLW
DIR_LECT
; Direccin de lectura en W
; Direccin de lectura en EEADR
BSF
STATUS, RP0
; Selecciona banco 3 para EECON1
BCF EECON1, EEPGD ; Selecciona acceso a la EEPROM
BSF
EECON1, RD
; Lectura de la EEPROM
BCF
STATUS, RP0
; Selecciona banco 2 para EEDATA
MOVF
EEDATA, W
; Coloca dato ledo de EEPROM en W
MOVWF
EEADR
Una buena prctica para escribir un dato en la EEPROM, consiste en verificar si ese dato
ha sido grabado correctamente mediante la lectura del dato escrito y comparacin con l
mismo por medio de una resta y al evaluar el bit Z del registro STATUS.
276
INICIO
BCF
STATUS, RP0
; En el banco 2 estn los registros EEADR, EEADRH,
BSF
STATUS, RP1
; EEDATA y EEDATAH
MOVF DIRECCIONH,W
; En DIRECCIONH est la posicin ms significativa donde
MOVWF
EEADRH
; se guardar el dato en la FLASH
MOVF DIRECCIONL,W
; En DIRECCIONL est la posicin menos significativa donde
MOVWF
EEADR
; se guardar el dato en la FLASH
MOVF DATOH,W
; En DATOH est el valor ms significativo del dato
MOVWF
EEDATAH
;
MOVF DATOL,W
; En DATOL est el valor menos significativo del dato
MOVWF
EEDATA
BSF
STATUS, RP0
; Selecciona banco 3 de la RAM
BCF
INTCON, GIE
; Deshabilita interrupciones al escribir en la FLASH
BSF
EECON1, EEPGD
; Selecciona acceso a la FLASH
BCF
EECON1, EEIF
; Se borra el bit indicador de finalizacin de escritura
BSF
EECON1, WREN
; Habilita escritura en la EEPROM
MOVLW
55h
;
MOVWF
EECON2
; Escribe cdigo 55h en EECON2
MOVLW
0AAh
; (Cdigos de proteccin para no grabar accidentalMOVWF
EECON2
; mente un dato) Escribe cdigo AAH en EECON2
BSF
EECON1,WR
; Comienza la grabacin del dato
NOP
; El microcontrolador ignora estas dos instrucciones y contina
NOP
; despus de terminar el proceso de grabacin
BSF
INTCON,GIE
; Habilitacin global de interrupciones
BCF
EECON1, WREN
; Se deshabilita la escritura para prevenir un borrado accidental
277
INICIO
Al igual que en el caso de la EEPROM, se considera buena prctica leer los datos, depus
de que estos sean grabados.
278
INICIO
Proteccin de la FLASH
La memoria FLASH puede ser protegida totalmente o por secciones, tanto para la lectura
como para la escritura. Para ello, antes del proceso de grabacin o lectura, hay que
acceder a los bits CP1, CP0 y WRT de la palabra de configuracin del microcontrolador.
Si el bit WRT vale 1 se podr escribir en la memoria FLASH del microcontrolador, si
vale 0 no se podr escribir. A continuacin se presenta cmo se protege la escritura
de la FLASH segn los valores de CP1 y CP0 y el modelo del microcontrolador.
Modelo PIC
CP1
CP0
Direccin inicial de
proteccin
Direccin final de
proteccin
PIC16F870/871/872
TODO
PROTEGIDO
PIC16F873/874
0000H
0FFFH
PIC16F873/874
0800H
0FFFH
PIC16F873/874
0F00H
0FFFH
PIC16F876/877
0000H
1FFFH
PIC16F876/877
1000H
1FFFH
PIC16F876/877
1F00H
1FFFH
NO
PROTEGIDO
279
INICIO
Actividades
Hemos visto cmo puedes guardar y leer datos de la EEPROM, por supuesto que las lneas
de programa mostradas anteriormente necesitan ser completadas para que pueda trabajar
bien en un programa.
La primera actividad propuesta para esta seccin, es que puedas introducir un dato de 8
bits, a travs del puerto B, lo guardes en la EEPROM. Despus apagues el dispositivo, y
puedas leer el dato que habas guardado en ese puerto. Para ello debers colocar un
interruptor de control en una lnea del puerto C, de manera que en un momento dado el
puerto B trabaje como entrada, lea el dato y lo guarde en una posicin de la EEPROM, y
en la otra posicin de esa lnea del puerto C, el puerto B trabaje como salida y aparezca
el dato desde la posicin donde guardaste el dato anteriormente.
La segunda actividad propuesta es hacer un contador de dos dgitos 7 segmentos, que
tenga un pulsador para la cuenta ascendente, otro para la cuenta descendente y uno ms
para almacenar el valor de la cuenta en la EEPROM, de manera que al encender el
dispositivo, el valor que aparezca en pantalla, sea el que se almacen en la EEPROM, y
desde all se seguir el conteo.
280
INICIO
RA5/AN4/SS#
RA4/TOCKI
RA3/AN3/Vref
RA2/AN2
RA1/AN1
RA0/AN0
E/S DIGITAL
E/S DIGITAL
E/S DIGITAL
E/S DIGITAL
E/S DIGITAL
E/S DIGITAL
ENTRADA
ANALGICA 3
ENTRADA
ANALGICA 2
ENTRADA
ANALGICA 1
ENTRADA
ANALGICA 0
ENTRADA
ANALGICA 4
MODO ESCLAVO EN
COMUNICACIN
SERIAL SNCRONA
ENTRADA DE
RELOJ DEL
TMRO
VOLTAJE DE
REFERENCIA A/D C
INICIO
Registros asociados
a PORTA
La siguiente tabla muestra los registros asociados al puerto A y la ubicacin de los
mismos en la memoria RAM.
Direccin
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor en
POR y BOR
Otros
Resets
05h
PORTA
---
---
RA5
RA4
RA3
RA2
RA1
RA0
--0x 0000
--0u 0000
85h
TRISA
---
---
--11 1111
--11 1111
1Fh
ADCON0
ADCS1
ADCS0
CHS2
CHS1
CHS0
9Fh
ADCON1
ADFM
---
---
---
PCFG3
---
ADON
0000 00-0
0000 00-0
PCFG2
PCFG1
PCFG0
0--- 0000
0--- 0000
DONE#
Las lneas PCFG0 PCFG3 del registro ADCON1 configuran las lneas del puerto A y
el puerto E para que trabajen como entradas analgicas o digitales (los PIC16F870,
872, 873 y 876 no tienen puerto E). Debemos observar que los bits de estos
registros son puestos a 0 despus de un RESET, un POR (inicializacin por encendido)
o un BOR (inicializacin por baja de Vdd).
Esto significa, como se ver ms
adelante, que la configuracin inicial de las lneas de los puertos A y E estarn como
entradas analgicas. Si se desea que todas ellas trabajen en forma digital, deber
escribirse el valor 011x en los cuatro bits menos significativos del registro
ADCON1.
282
INICIO
RE1/WR#/AN6
RE0/RD#/AN5
E/S DIGITAL
c
E/S DIGITAL
E/S DIGITAL
Entrada Analgica 7
Entrada Analgica 6
Entrada Analgica 5
Seleccin de Chip en el
modo PSP (CS)
En la tabla se indica que cada lnea del puerto E, puede trabajar como
Entrada/Salida Digital, como entrada analgica o como control del puerto paralelo.
En esta seccin, slo veremos las dos primeras funciones, y cuando se estudie el
puerto paralelo, se ver la tercera funcin.
En la direccin 89H se encuentra TRISE, que es el que configura las lneas
digitales del puerto E y la interfaz paralela (Bits 4 a 7). La configuracin como
entrada analgica o E/S digital, se hace por medio del registro ADCON1.
Direccin
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
89h
TRISE
IBF
OBF
IBOV
PSP
---
MODE
283
Bit 0
Valor en
POR y BOR
Otros
Resets
Registro de
Configuracin de PORTE
0000 -111
0000 -111
Bit 2
Bit 1
INICIO
INICIO
Descripcin del
funcionamiento del AD/C
Para que funcione el convertidor analgico a digital (AD/C), se necesita configurarlo
inicialmente. Esto significa que hay que definir las lneas que se utilizarn como
entradas analgicas, cules van a ser las tensiones de referencia a emplear, la
velocidad de conversin del AD/C, cul oscilador se va a emplear, cmo se escribir el
valor digital en los registros ADRESH y ADRESL, y la habilitacin o no de la
interrupcin por convertidor. Despus de esto, en el programa se seleccionar cada
canal a convertir seguido de la orden de conversin.
En principio, el AD/C utiliza la tcnica de aproximaciones sucesivas y est controlado
por un oscilador. Estos pulsos pueden ser una seal proveniente del oscilador de
cristal, dividida entre 2, 8 32, o el oscilador RC interno del microcontrolador. Si se
selecciona esta ltima opcin, se podrn hacer conversiones durante el modo de reposo.
Es importante tomar en cuenta que el tiempo del AD/C para cada bit, no debe ser
menor de 1,6Seg, para que las conversiones se hagan correctamente. En el caso de
utilizar el oscilador RC, este tiempo es de aproximadamente 4Seg.
La seal a convertir se selecciona por medio del multiplexer analgico, luego va al
circuito de muestreo y retencin y despus al convertidor A/D. El tiempo total de
lectura est dado por el tiempo de adquisicin mas el tiempo que emplea el convertidor.
Un dato importante es conocer el tiempo de lectura de cada seal, para el empleo de
circuitos de control. En la siguiente pgina se muestra el clculo del tiempo de lectura
y la frecuencia de muestreo para la seal correspondiente a un canal.
285
INICIO
INICIO
287
INICIO
Notas:
1: Estos canales no son disponibles en los PIC16F870, 872, 873 y 876.
2: Esta columna indica el nmero de canales analgicos y el nmero de entradas de referencia.
288
INICIO
Frecuencia
00
fosc/2
01
fosc/8
10
fosc/32
11
Osilador RC interno
Debe tomarse en cuenta que el tiempo de conversin de cada bit debe ser mayor o
igual a 1,6Seg. La frecuencia mxima del cristal segn los valores de ADCS1-ADCS0
se muestra a continuacin:
es
INICIO
290
INICIO
PIE1 (8CH)
PSPIE
c
bit7 bit6
bit5
bit4
bit3
bit2
bit1
TMR2IE c
TMR1IE
TMR2IF
TMR1IF
bit0
PIR1 (0CH)
PSPIF
c
bit7 bit6
bit5
bit4
bit3
bit2
291
bit1
bit0
INICIO
En la siguiente figura se
muestra un esquema de las
conexiones
internas
del
convertidor analgico a digital.
Podemos
observar
que
las
entradas analgicas van a un
multiplexer analgico, y la
seleccin del canal a convertir
se realiza por medio de los bits
CHS2, CHS1 y CHS0 del
registro ADCON0.
Por otro lado, vemos que es
posible sacrificar las entradas
AN3 y AN2, para colocar las
tensiones
de
referencia
externas, y con ello mejorar la
exactitud en las lecturas del
convertidor A/D.
292
INICIO
El convertidor A/D queda configurado. Para hacer lecturas de cada canal, se deber
seleccionar los canales por medio de los bits CHS2, CHS1 y CHS0 del registro ADCON0,
y colocar en 1 el bit Go/Done del mismo registro ADCON0.
293
INICIO
Actividades
Para una mejor comprensin del manejo del convertidor analgico a digital, te
proponemos las siguientes actividades:
Hacer un programa y montar un circuito con un microcontrolador PIC, que lea el canal 0,
y coloque el valor binario en los 8 bits del puerto B, y en 2 bits del puerto C.
Hacer un programa y montar un circuito que haga las veces de voltmetro digital, en
donde se muestre la lectura de un canal a seleccionar y se haga la conversin a BCD, y
luego a 7 segmentos, para presentarlo en un indicador de tres dgitos y medio (0,000 a
1,998), para ello la tensin de referencia deber ser de 2V.
294
INICIO
7.7 El Puerto B
El puerto B dispone de 8 lneas bidireccionales que se utilizan para entradas o salidas
digitales. Cada lnea se puede programar como salida o entrada al colocar en 0 o
en 1 respectivamente el bit asociado en el registro TRISB. Dos de las lneas de
este puerto se utilizan en el momento de grabar la memoria de programa del
microcontrolador.
Estas dos entras son: RB6/PGC (Program Clock) y RB7/PGD
(Program Data) para ms detalles, ver el anexo 7. El terminal RB0 se puede emplear
como entrada de interrupcin externa. Por otro lado, es posible hacer la conexin de
cada terminal RBn a una resistencia interna asociada a Vdd (Pull-up), al colocar un 0
en el bit RBPU# del registro OPTION REG. Por otro lado, si seleccionas a RB0 como
entrada de interrupcin, podrs escoger el tipo de transicin a la cual se activar
sta. Un 0 en el bit INTEDEG del registro OPTION_REG, har que la interrupcin
en el microcontrolador sea por medio de una transicin de bajada y un 1, por una
transicin de subida. En la siguiente tabla se resume los registros asociados a PORTB.
Direccin
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor en
POR y BOR
Otros
Resets
06h,106h
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
uuuu uuuu
86h,186h
TRISB
1111 1111
1111 1111
81h,181h
OPTION_REG
RBPU#
INTEDEG
TOCS
TOSE
PSA
PS2
PS1
PS0
1111 1111
1111 1111
0Bh, 8Bh,
10Bh,18Bh
INTCON
GIE
PEIE
TOIE
INTE
RBIE
TOIF
INTF
RBIF
0000 000x
0000 000x
295
INICIO
RC6/TX/CK
RC5/SDO
RC4/SDI/
SDA
RC3/SCK/
SCL
RC2/CCP1
RC1/T10SC1/
CCP2
RC0/T1OSC0/
T1CKI
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
E/S
DIGITAL
DIGITAL
RECEPCIN
USART
TRANSMIS.
USART
SALIDA
DATOS
SPI
ENTRADA
DATOS
SPI
RELOJ SPI
ENTRADA
CAPTURA 1
ENTR. TMR1
ENTRADA TMR1
ENTR. CAPT2
DATOS
TRANS
SINCRONA
RELOJ
TRANS
SINCRONA
ENTRADA
DATOS
I2C
RELOJ I2C
SAL COMP1
SAL COMP2
SAL PWM1
SAL PWM2
SALIDA TMR1
INICIO
El Temporizador TMR1
TMR1 es un temporizador con preescalamiento de conteo ascendente, con una capacidad
de 16 bits. Esto significa que se necesitan dos registros para cargar un valor entre
0000H y 0FFFFH: TMR1H (direccin 0FH) y TMR1L (direccin 0EH). Al igual que con
TMR0 en el PIC16F84A, al haber un desbordamiento en la cuenta, puede generar una
interrupcin por medio del bit TMR1IF del registro PIR1. La habilitacin de esta
interrupcin se hace por medio del bit TMR1IE del registro PIE1.
Los pulsos de conteo de TMR1 pueden provenir del oscilador del microcontrolador (f osc/4)
o externamente a travs de los terminales RC0 o RC1. El registro de control de TMR1
es el T1CON y se ubica en la posicin 10H. El diagrama de bloques de TMR1 es el que
se muestra en la siguiente figura:
297
INICIO
T1CON (10CH)
----
----
bit7 bit6
T1CKPS1
bit5
bit4
T1CKPS0
bit3
bit2
T1OSCEN
TISYNC#
bit1
BIT
TMR1CS
TMR1ON
bit0
Funcin
TMR1ON
TMR1CS
TISYNC#
T1OSCEN
T1CKPS0
T1CKPS1
0-0 1:1;
0-1 1:2;
298
1-0 1:4;
1-1 1:8
INICIO
INICIO
Actividades
Hemos visto la operacin del temporizador 1, y que ste tiene una resolucin de 16 bits.
Por otro lado, vimos una seccin de programa que permite hacer la lectura del TMR1 sin
necesidad de detenerlo. Te proponemos que hagas un circuito y programa de un reloj
digital, que tenga como base de tiempo a la frecuencia del oscilador del PIC y el
temporizador TMR1.
300
INICIO
El Temporizador TMR2
El temporizador TMR2 es un contador ascendente de 8 bits, que se puede leer y
escribir, y tambin puede realizar funciones con el mdulo de comunicacin serial SSP y
los mdulos de captura y comparacin. TMR2 se ubica en la posicin 11H de la memoria
RAM, utiliza la seal fosc/4, la cual pasa por un pre-escalador, y luego su salida pasa por
un post-escalador. El registro de control de TMR2 es T2CON. A continuacin se
muestra el diagrama de bloques de TMR2.
El encendido del TMR2 se hace al colocar un 1 en el bit TMR2ON del registro T2CON.
La salida de TMR2 puede seleccionarse por software, para que en el puerto de
comunicacin serial trabaje como generador de baudios. El bit TMR2IF del registro
PIR1 se coloca en 1 al haber un desbordamiento del post-escalador de TMR2 y puede
ser utilizado como interrupcin al habilitarla por medio del bit TMR2IE del registro
PIE1.
El registro PR2 (direccin 92H) se utiliza para fijar un valor de conteo mximo del TMR2
cuando se trabaja en modulacin de ancho de pulsos (PWM).
301
INICIO
T2CON (12CH)
---- -
TOUTPS3
bit7 bit6
bit5
TOUTPS2
bit4
bit3
TOUTPS1
bit2
bit1
TOUTPS0
TMR2ON
T2SCKPS1 T2SCKPS0
bit0
T2SCKPS1 - T2CKPS0
TOUTPS3 - TOUTPS0
00
1:1
0000
1:1
01
1:4
0001
1:2
1x
1:16
0010
1:3
.....
1:Bn + 1
1110
1:15
1111
1:16
INICIO
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RC3/SCK/SCL
RC2/CCP1
E/S DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S DIGITAL
E/S
DIGITAL
RECEPCIN
USART
TRANSMIS.
USART
c
SALIDA
DATOS
SPI
ENTRADA
DATOS SPI
RELOJ SPI
DATOS
TRANS
SINCRONA
RELOJ
TRANS
SINCRONA
ENTRADA
DATOS I2C
RELOJ I2C
303
RC1/T10SC1/
CCP2
RC0/T1OSC0/
T1CKI
E/S
DIGITAL
E/S
DIGITAL
ENTRADA
CAPTURA 1
ENTR. TMR1
ENTR. CAPT2
c TMR1
ENTRADA
SAL COMP1
SAL PWM1
SAL COMP2
SAL PWM2
SALIDA TMR1
INICIO
El Registro CCP1CON
En el registro CCP1CON se utilizan 4 bits para configurar la funcin del mdulo CCP1,
los cuales son CCP1M3-CCP1M0. Por otro lado, los bits CCP1X y CCP1Y slo se utilizan
en el modo PWM y representan los bits menos significativos del valor de un ciclo de
trabajo. Los 8 bits ms significativos del ciclo de trabajo, se encuentran en el registro
CCPR1L. A continuacin se presenta la disposicin de los bits de CCP1CON y en la tabla
se describe el modo de trabajo de CCP1, segn los valores de CCP1M3 CCP1M0.
CCP1CON (17H)
----
----
bit7
bit6
bit5
bit4
bit3
CCP1M2
bit2
CCP1M3-CCP1M0
bit1
CCP1M1
CCP1M0
bit0
Funcin
0000
0100
0101
0110
0111
1000
1001
1010
Modo comparacin que genera una interrupcin (no afecta al terminal RC2/CCP1)
1011
11xx
Modo PWM
304
INICIO
El Registro CCP2CON
Al igual que CCP1CON, en el registro CCP2CON se utilizan 4 bits para configurar la
funcin del mdulo CCP2, los cuales son CCP2M3-CCP2M0; los bits CCP2X y CCP2Y slo
se utilizan en el modo PWM y representan los bits menos significativos del valor de un
ciclo de trabajo. Los 8 bits ms significativos de ese ciclo de trabajo se encuentran en
el registro CCPR2L. A continuacin se presenta la disposicin de los bits de CCP2CON y
el modo de trabajo de CCP2 segn los valores de CCP2M3 CCP2M0.
CCP2CON (1DH)
----
----
bit7
bit6
bit5
bit4
bit3
CCP1M2
bit2
CCP1M3-CCP1M0
bit1
CCP1M1
CCP1M0
bit0
Funcin
0000
0100
0101
0110
0111
1000
1001
1010
Modo comparacin que genera una interrupcin (no afecta al terminal RC1/CCP2)
1011
11xx
Modo PWM
305
INICIO
Modo Captura
En este modo, si ocurre un evento en los terminales RC2/CCP1 o RC1/CCP2, el valor
del temporizador se carga a los registros CCPR1H-L o CCPR2H-L respectivamente.
Esto podra utilizarse para la medicin de intervalos de tiempo entre pulsos o para la
medicin de la duracin de un pulso. Sin estos mdulos, las mediciones de intervalos
de tiempo habran que hacerla con un temporizador al detectar una interrupcin
externa, el problema est en que la lectura no ser precisa debido a que el
temporizador sigue contando mientras se ejecuta la rutina de interrupcin que va a
leer su contenido.
En el modo de captura es importante que el TMR1 est configurado como
temporizador o como contador sincrnico para que la transferencia se haga
correctamente.
Como se vio en las tablas de los registros CCP1CON y CCP2CON, los eventos pueden
darse como: una deteccin de una transicin de subida, una deteccin de una
transicin de bajada, una deteccin de 4 pulsos de transicin ascendente o una
deteccin de 16 pulsos de transicin ascendente. La seleccin se hace por medio de
los bits CCP1M3-0 CCP2M3-0, segn el mdulo que se vaya a utilizar.
La resolucin en la medicin del tiempo de captura y el perodo mximo estn dados
por el ancho de los pulsos que activan al TMR1. Por ejemplo si selecciona a f OSC/4
como entrada del TMR1, el escalamiento es 1:1, y la frecuencia f OSC es igual a
20MHz, entonces la resolucin de la medicin del intervalo ser igual a 200nSeg. El
perodo mximo en el cual se podr hacer la captura, ser igual a 13,107mSeg. Por
qu?
306
INICIO
307
INICIO
308
INICIO
Modo Comparacin
INICIO
Modo Comparacin
310
INICIO
Inicializacin en el
modo Comparacin
La siguiente seccin de programa presenta la configuracin del mdulo CCP1 para
trabajar en el modo Comparacin.
CLRF CCP1CON
; El mdulo CCP es apagado
CLRF TMR1L
; Borra byte de menor peso del temporizador 1
CLRF TMR1H
; Borra byte de mayor peso del temporizador 1
CLRF INTCON
; Deshabilita interrupciones y borra TOIF
BSF STATUS, RP0
; Selecciona Banco 1
BSF TRISC, CCP1
; Configura CCP como terminal de entrada
CLRF PIE1
; Deshabilita interrupciones
BCF STATUS, RP0
; Selecciona Banco 0
CLRF PIR1
; Borra avisos de interrupciones
MOVLW
0x08
; Configura modo comparacin, establece terminal
MOVWF
CCP1CON
; para la comparacin
BSF T1CON, TMR1ON ; Arranca el temporizador 1
; Al estar la interrupcin de CCP1 deshabilitada se evala
; el bit CCP1IF continuamente
COMPARA
BTFSS
PIR1, CCP1IF
GOTOCOMPARA
; Ocurre la comparacin
BCF PIR1, CCP1IF
; Este bit debe borrarse antes de la prxima comparacin
311
INICIO
INICIO
En el modo PWM, el bit RC2/CCP1 deber programarse como salida mediante el registro
TRISC. El valor del perodo que entra al contador menos significativo que est antes de
TMR2 es igual a Tosc multiplicado por la relacin del preescalador. De esta manera, el
perodo del ciclo es:
TCICLO = (PR2 + 1) X 4 X TOSC X preescalador de TMR2
Para el mdulo CCP1, el ancho del pulso estar dado por la siguiente ecuacin:
T1 = (CCPR1L,CCP1X,CCP1Y) X Tosc X preescalador de TMR2
La resolucin del PWM ser mejor cuando mayor es el valor de PR2. Para obtener una
precisin de 10bits, PR2 deber valer 255, ya que de esta manera el valor a escribir en
CCPR1L, y los bits CCP1X y CCP1Y corresponden a 10 bits.
La misma explicacin dada hasta ahora se aplica para el CCP2 para los
microcontroladores que tienen dos mdulos CCP.
313
INICIO
314
INICIO
315
INICIO
Actividades
Las actividades a realizar en esta seccin correspondern a las funciones del mdulo de
captura, comparacin y modulacin de anchos de pulso.
Con respecto al modo captura, te proponemos que hagas un programa y un circuito capaz
de medir el tiempo que tarda en hacer una revolucin un motor. Para ello debers
colocar una marca al eje del motor y un sistema de emisin y recepcin infrarroja o
magntica, de manera que cada vez que se detecte esa marca, se medir el tiempo
transcurrido entre una y otra aparicin de la lectura. Por medio de este mtodo,
podrs calcular las revoluciones por minuto del motor.
Para la parte de comparacin, te proponemos mejorar la precisin del reloj digital
propuesto en la actividad con el temporizador 1. En este caso, la propuesta es cargar
automticamente un valor al temporizador, por medio de los registros CCPR1H y CCPR1L,
de manera que el TMR1 se inicialice automticamente. Esto te permitir contar con un
contador de tiempo fiel, al cual no tendrs que cargar un valor cada vez que se ponga en
0. Para ello podramos fijar que la inicializacin del temporizador se efecte cada 10
mSeg, y utilices este valor como base para el contador de tiempo.
En cuanto a la modulacin de ancho de pulsos, te proponemos hacer un convertidor digital
a analgico que tenga una precisin de 10 bits. Para ello colocars una resistencia y un
condensador como filtro pasa bajo a la salida del modulador de ancho de pulsos, de
manera que promedie la seal de salida. El valor DC a la salida del circuito RC ser
igual a la relacin entre el tiempo en que dura el 1 a la salida del PWM y el perodo
total. Debers en este caso calcular los valores de R y C para que el rizado sea mnimo.
316
INICIO
INICIO
La comunicacin SPI
La comunicacin en el modo SPI (Serial Peripheral
Interface) permite la transferencia de datos de 8 bits
en serie, los cuales se transmiten y reciben en forma
sncrona y simultneamente. El microcontrolador en este
tipo de transmisin puede trabajar como maestro o
como esclavo. En el caso de trabajar como esclavo,
adems de utilizar los terminales SDO, SDI y SCK,
utilizar una lnea adicional de seleccin de esclavo, la
cual se ubica en el terminal RA5/SS# y que deber ser
puesta a nivel 0.
Para que un dispositivo trabaje como maestro, se
deber configurar la lnea RC5/SCK como salida. Cuando
se trabaja en modo esclavo, las lneas RC5/SCK y
RA5/SS# se debern configurar como entradas; esta
ltima se colocar a 0V. Para ambos casos, la lnea
RC3/SDO se configurar como salida y la lnea RC4/SDI
se configurar como entrada.
La transferencia de informacin entre el maestro y
esclavo se suele hacer de la siguiente manera:
el
el
el
el
INICIO
319
INICIO
Para CKE=1
320
INICIO
Registros asociados
En el modo SPI los registros asociados son los que se presentan en la siguiente tabla.
Para mayor detalles de los registros SSPCON y SSPSTAT, nos referiremos a las
pginas siguientes en donde se presenta el funcionamiento de cada bit.
321
INICIO
Registro SSPSTAT
Registro de Estatus del MSSP
SMP:
Modo de muestreo.
Maestro: 1 muestreo al final del dato de salida.
0 muestreo a la mitad del dato de salida.
Esclavo: Debe ponerse en 0.
INICIO
Registro SSPCON
Registro de control del MSSP
WCOL:
Modo de trabajo del MSSP. Para el modo de trabajo del puerto serial
SSPM0:
323
INICIO
Bits SSPM3-SSPM0
SSPM3-SSPM0
Modo de trabajo
0000
0001
0010
0011
0100
0101
Modo esclavo SPI con sincronizacin igual a SCK (SS# no est activo)
0110
0111
1000
1011
1110
Modo maestro I2C controlado por firmware, con bits de arranque y parada,
interrupcin activada y direccin de 7bits
1111
Modo maestro I2C controlado por firmware, con bits de arranque y parada,
interrupcin activada y direccin de 10bits
324
INICIO
Programa ejemplo
Configuracin y transmisin y recepcin en Modo maestro
CLRF STATUS
MOVLW
0x31
MOVWF
SSPCON
;
BSF
STATUS, RP0
BSF
PIE, SSPIE
BSF
INTCON, GIE
MOVLW
DATOTX
MOVWF
SSPBUF
; Comienza la transmisin
; Lectura de un dato
MOVF SPBUF,W
; Dato pasa a W
MOVWF
DATORX
; Se guarda dato en la RAM
MOVF TRANSM,W
; El dato a transmitir va a W
MOVWF
SPBUF
; Se carga SPBUF y se transmite el
; dato automticamente
325
INICIO
PIC16F87X
74XX164
SDO
SCK
SI
Clock
326
INICIO
7.11 El Puerto C y la
Comunicacin I2C
Este protocolo de comunicacin fue desarrollado por Philips en la dcada de 1980.
Utiliza dos lneas para la transferencia de informacin entre varios elementos; stas
son: La SDA, la cual se encarga de la transferencia de datos en forma bidireccional, y la
lnea SCL la cual es generada por un dispositivo maestro hacia los esclavos, y lleva los
pulsos de sincronizacin. La interconexin entre dispositivos es la que se muestra en la
figura siguiente, en donde puede haber en cada caso, ms de un dispositivo maestro y
no se necesita que todos los dispositivos tengan la misma tecnologa digital.
Los dispositivos involucrados en la comunicacin I 2C se conectan formando un AND
cableado con las lneas SDA y SCL, ya que las salidas de cada uno es del tipo drenador
abierto o colector abierto (open drain or open collector). De all que sea necesario
colocar resistencias a una de las alimentaciones en las lneas SDA y SCL.
Esta
configuracin, a la vez evita que ocurra fallas, en el caso de haber colisin de datos
cuando dos dispositivos traten de enviar seales al mismo tiempo.
Observa las
conexiones de varios elementos y las resistencias Rp en la figura siguiente.
VDD1
NMOS
327
INICIO
(RC4)
(RC3)
328
INICIO
329
INICIO
Colisin de datos
Existe la posibilidad de que en un bus I2C dos dispositivos maestros puedan generar
una transmisin simultneamente.
Para resolver este problema los dispositivos
maestros leen el valor en la lnea SDA y lo compara con el valor enviado. En el caso
de que enve un 1 y lee un 0, querr decir que otro maestro tiene dominio del bus
y por tanto el primero tendr que ceder e inhibir su salida SDA. Podra suceder que
en este conflicto, el maestro que toma el control est enviando informacin al maestro
que cedi el bus. En este caso el maestro que cedi el bus deber pasarse a la
condicin de esclavo.
La figura siguiente muestra en un diagrama de tiempo de cmo un primer maestro cede
el bus al segundo maestro, ya que el tiempo en 0 del segundo se mantiene por ms
tiempo que el del primero.
330
INICIO
331
INICIO
93h
SSPADD
A7
A6
A5
A4
A3
A2
A1
A0
0000 0000
0000 0000
87h
TRISC
TC7
TC6
TC5
TC4
TC3
TC2
TC1
TC0
0000 0000
0000 0000
07h
PORTC
RC7
RC6
RC5
RC4/SDA
RC3/SCl
RC2
RC1
RC0
0000 0000
0000 0000
332
INICIO
Registro SSPSTAT
(Registro de Estatus del MSSP)
333
INICIO
Registro SSPCON
(Registro de control del MSSP)
WCOL:
Modo de trabajo del MSSP. Para el modo de trabajo del puerto serial
SSPM0:
334
INICIO
Bits SSPM3-SSPM0
SSPM3-SSPM0
Modo de trabajo
0000
0001
0010
0011
0100
0101
Modo esclavo SPI con sincronizacin igual a SCK (SS# no est activo)
0110
0111
1000
1011
1110
Modo maestro I2C controlado por firmware, con bits de arranque y parada,
interrupcin activada y direccin de 7bits
1111
Modo maestro I2C controlado por firmware, con bits de arranque y parada,
interrupcin activada y direccin de 10bits
335
INICIO
Registro SSPCON2
(Registro de control 2 del MSSP)
GCEN:
Habilitacin de llamada general (slo en modo esclavo).
1 Habilita interrupcin al detectar direccin 0000H; 0 Deshabilitado.
ACKSTAT: Bit de reconocimiento de estatus (Slo en modo maestro).
1 No se recibi reconocimiento del esclavo; 0 Si hubo reconocimiento.
ACKDT:
Bit de reconocimiento de dato (Slo en modo maestro).
1 No reconocido. 0 Reconocido.
ACKEN:
Reconocimiento de habilitacin de secuencia (Slo en modo maestro).
1 Reconoce secuencia en SDA y SCL y transmite bit de reconocimiento = 0
0 Secuencia de reconocimiento en reposo.
RCEN Bit de habilitacin de recepcin (Slo en modo maestro).
1 Habilita modo de recepcin; 0 Recepcin en reposo.
PEN: Habilitacin de la condicin de parada (Slo en modo maestro).
1 Habilita condicin de parada en SDA y SCL. 0Condicin de parada en reposo.
RSEN:
Condicin de arranque repetido (Slo en modo maestro).
1 Inicia condicin repetida de arranque en SDA y SCL. 0 Arranque en reposo.
SEN: Habilitacin de condicin de arranque (Slo en modo maestro).
1 Inicia condicin de arranque en SDA y SCL. 0 Condicin de arranque en reposo.
336
INICIO
clrf
STATUS
movwf SPCON1
bsf
STATUS,RP0
movwf SSPADD
movwf SSPSTAT
Finalmente, se deben programar las lneas SCL y SDA como entradas, para que stas
trabajen en el modo I2C.
movlw b00000110
movwf TRISC
337
INICIO
(No reconocimiento)
6) Escritura.
Hasta aqu te hemos dado una introduccin relacionada con el puerto I 2C. Si deseas
saber ms detallada sobre este tema, te recomendamos que leas la nota de aplicacin
AN735,
338
INICIO
Actividad
339
INICIO
RC6/TX/CK
RC5/SDO
RC4/SDI/
SDA
RC3/SCK/
SCL
RC2/CCP1
RC1/T10SC
1/CCP2
RC0/T1OSC0
/T1CKI
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
RECEPCIN
USART
TRANSMIS.
USART
SALIDA
DATOS
SCPI
ENTRADA
DATOS
SPI
RELOJ SPI
c
ENTRADA
CAPTURA 1
ENTR. TMR1
ENTR. CAPT2
ENTRADA
TMR1
DATOS
TRANS
SINCRONA
RELOJ
TRANS
SINCRONA
ENTRADA
DATOS I2C
RELOJ I2C
SAL COMP1
SAL PMW1
SAL COMP2
SAL PMW2
SALIDA TMR1
E/S
DIGITAL
INICIO
Transmisin Asncrona
En la siguiente figura se muestra un esquema de dos equipos que se comunican de manera
serial asincrnica.
PIC 1
RS232C
PIC 2
Tx
Rx
Rx
Tx
Gnd
Gnd
INICIO
Diagrama de bloques
de la transmisin del USART
En la siguiente figura se muestra el diagrama de funcionamiento de la seccin de
transmisin serial del USART que se encuentra en los PIC16F87X.
En una transmisin serial asncrona, para enviar un dato de 8 bits, ste se coloca en el
registro TXREG; ese dato se transfiere al registro de desplazamiento TSR, el cual har
que los datos salgan por el terminal de salida RC6/TX/CK. El dato a enviar, podr tener
un bit adicional, el cual se utiliza normalmente para colocar la paridad de los datos
transmitidos, segn se habilite o no el bit 8 por medio de TX9. Cuando se desea hacer
la transmisin se coloca en 1 el bit TXEN (habilitacin de transmisin) y con ello, el
oscilador del generador de velocidad de transmisin enva los pulsos para que se produzca
el desplazamiento de los datos del registro TSR y salgan por el terminal RC6/TX/CK. El
bit TXIF, el cual se puede utilizar para interrumpir el programa principal para colocar un
nuevo dato en TXREG, se activa cuando un dato se transfiere de TXREG a TSR al
iniciarse una nueva transmisin, entonces TXREG est listo para recibir un nuevo dato.
342
INICIO
Bits de configuracin
de la transmisin del USART
De acuerdo a la explicacin anterior, podemos nombrar los bits que configuran al
transmisor del USART ubicados en el registro TXSTA.
CSRC:
Seleccin de la fuente del oscilador.
1 Modo Maestro (oscilador interno). 0 Modo esclavo (Oscilador externo)
TX9: Habilitacin del bit 9 de transmisin.
1 Transmisin de 9 bits. 0 Transmisin de 8 bits.
TXEN:
Habilitacin de la transmisin.
1 Transmisin habilitada. 0 Transmisin inhabilitada.
SYNC:
Seleccin del modo de operacin del USART.
1 Modo sncrono. 0 Modo asncrono.
BRGH:
Velocidad de transmisin:
1 Velocidad alta. 0 Velocidad baja.
TRMT:
Estado del registro de transmisin:
1 Registro vaco (transmiti los datos). 0 Registro no vaco.
TX9D:
Bit 9 del dato a transmitir. Usualmente se utiliza para el bit de paridad.
343
INICIO
Formas de onda en la
transmisin asncrona
Otra manera de observar el funcionamiento de esta interfaz serial, la podemos analizar
de acuerdo al diagrama de las formas de onda involucradas.
Vemos que la seal BRG es una oscilacin libre, la cual determinar la velocidad de
transmisin. En un segmento de transmisin, podemos ver que el envo comienza con un
bit de arranque (start bit) que comienza con valor 0, luego se enva el dato de 8 9
bits y finaliza con un bit de parada (stop bit) el cual es de valor 1. Un dato se puede
escribir en el registro TXREG despus de haberse transmitido el bit de parada (stop bit)
de un dato previo, es decir, que mientras se est transmitiendo un dato, por medio del
registro TSR, se puede cargar otro en el registro TXREG. El bit TXIF del registro
PIR1 es el que nos indicar cundo se puede cargar un dato a transmitir en el registro
TXREG. El bit TRMT indicar si el registro TSR est vaco.
344
INICIO
Diagrama de bloques
de la recepcin del USART
Conociendo el funcionamiento de un dispositivo de transmisin serial asncrona, ser ms
fcil comprender el receptor serial. En principio, el receptor serial deber ser un
dispositivo que lea los datos enviados por el transmisor serial. En la siguiente figura se
muestra el diagrama de funcionamiento de la seccin de recepcin serial del USART que
se encuentra en los PIC16F87X.
Los datos entran por el terminal RC7/RX/DT, y de all pasan al registro RSR cuando el
bit CREN est en 1. El circuito de control de datos de entrada y el generador de
baudios, se encargan de transferir el dato al registro RSR. Al llenarse el registro RSR,
se activa el bit RCIF del registro PIR1, el cual se puede utilizar como interrupcin, y se
transfiere el dato a una memoria FIFO con dos datos de capacidad, la cual se podr leer
por medio del PIC16F87X al acceder al registro RCREG.
345
INICIO
Bits de configuracin
de la recepcin del USART
Veamos a continuacin la descripcin de los bits de configuracin del registro RCSTA:
SPEN:
Habilitacin del puerto serial.
1 Puerto serial habilitado. 0 Puerto serial deshabilitado.
RX9: Habilitacin del bit 9 de Recepcin.
1 Recepcin de 9bits. 0 Recepcin de 8 bits.
SREN:
Configuracin de la recepcin sencilla en modo sncrono maestro.
1 Habilita la recepcin sencilla. 0 Deshabilita la recepcin sencilla.
CREN:
Configura la recepcin continua.
1 Habilita la recepcin continua. 0 Deshabilita la recepcin continua.
ADDEN: Habilitacin de la deteccin de direccin:
1 Activa la deteccin de direccin e interrupcin.
0 Inhibe la deteccin de direccin y el bit 9 puede ser utilizado.
FERR:
Error de trama:
1 Hay error de trama. 0 No hay error de trama.
OERR:
Error de desbordamiento
1 Hay error de desbordamiento. 0 No hay error de desbordamiento.
RX9D:
Bit 9 del dato Recibido. Usualmente se utiliza para el bit de paridad.
346
INICIO
Formas de onda en la
transmisin asncrona
Otra manera de observar el funcionamiento del receptor serial, la podemos analizar de
acuerdo al diagrama de las formas de ondas involucradas.
En la figura se muestra una recepcin de tres datos simultneos. Cada vez que se
activa el bit de parada, se transfiere un dato a la FIFO, que es leda como el registro
RCREG, y se activa el bit RCIF de PIR1, que puede utilizarse para interrumpir al
programa principal del microcontrolador. Si la lectura del registro RCREG no se realiza,
y se llena la FIFO, Se colocar el bit OERR en 1, para indicar que hay un
desbordamiento, y que podran perderse datos.
347
INICIO
Velocidad de transmisin
La cantidad de datos que se pueden enviar por unidad de tiempo depende de la velocidad
de transmisin. A mayor velocidad, podremos transferir ms rpidamente los datos de
un dispositivo a otro, pero esto podra llevar algunos inconvenientes, tales como la
incompatibilidad de velocidad con el otro equipo, una mayor probabilidad de error, una
menor distancia de transmisin y una mayor dedicacin del microcontrolador al manejo de
los datos enviados y recibidos. El compromiso est en poder transmitir a la mayor
velocidad posible, sin que ocurra algn inconveniente de importancia, lo cual amerita un
estudio de mayor profundidad.
En los PIC16F87X, la velocidad
interno del microcontrolador o
registro SPBRG, el cual fija la
frecuencia del oscilador y el bit
esta relacin:
INICIO
Determinar la velocidad
de transmisin
En el caso de que BGRH=0, obtenemos la siguiente tabla:
349
INICIO
350
INICIO
351
INICIO
Para configurar el mdulo USART para una recepcin serial asncrona, en el caso en el
que no se haya configurado el bloque transmisor, se deber seguir los siguientes pasos:
Se fija la velocidad de transmisin al cargar el valor adecuado en SBREG y BGRH.
352
INICIO
353
INICIO
Programa de configuracin
del USART en modo asncrono
STATUS, RP0
MOVLW
b10xxxxxx
MOVWR
TRISC
MOVLW
BAUDIOS
MOVWF
SPBRG
MOVLW
0x40
MOVWF
TXTA
BSF
PIE1,TXIE
BSF
PIE1,RCIE
BCF STATUS,RP0
MOVLW
0x90
MOVWF
RCSTA
354
INICIO
INICIO
A pesar de las nueve lneas que se presentan en el conector, bastara con utilizar
solamente tres. En la figura de la siguiente pgina se muestra un esquema de la
conexin de dos elementos con la interfaz RS-232.
356
INICIO
Conexin RS-232
La figura muestra las lneas de transmisin y recepcin, ya que se sobreentiende que
stas estn referidas a tierra (GND) y representa el sistema ms sencillo de transmisin
bidireccional RS-232.
INTERFAZ o TRANSCEIVER
2
3
Por lo general, una tensin positiva (mayor que +3Vdc) representa un 0 y una negativa
(menor que -3Vdc) representa un 1. Los elementos que se representan por medio de
un rectngulo a trazos, se les conoce con el nombre de Transceiver, y se utiliza para
convertir los niveles lgicos de 0 a 5V en los niveles de voltaje RS-232. Un ejemplo de
esta interfaz es el circuito integrado SN75155.
La comunicacin RS232 podra ser sencilla, ya que el USART transmite y recibe datos en
el formato de bytes. Esta transmisin se podr hacer ms compleja, si se incluye la
paridad, las seales de protocolo y el estado de break, el cual consiste en una salida
cero que se mantiene por un perodo en el orden de 100mS a 500mS.
357
INICIO
Asignacin de terminales en un
conector RS-232
A continuacin, en la siguiente tabla, se presenta la asignacin de cada terminal en la
mayora de los conectores macho RS-232-C de 9 pines que emplean terminales o
computadores. Adems se muestran las abreviaciones y los nombres de cada terminal, y
el sentido de flujo de datos entre un DTE (computador o terminal) y DCE (equipo de
comunicacin).
54321
9876
N Terminal
Nombre
DTE-DCE
Funcin
DCD
RD
Recepcin de datos
TD
Transmisin de datos
DTR
Terminal listo
SG
DSR
RTS
CTS
Borrar envo
RI
Indicador de llamada
Tierra de seales
De estos terminales, los que se utilizan con ms frecuencia son: RD, TD y SG; es decir:
recepcin de datos, transmisin de datos y tierra de seales. Debemos recordar que en
el equipo de comunicacin, el tipo de conector es hembra y el terminal 2 corresponde al
de transmisin de datos y el 3 al de recepcin de datos.
358
INICIO
359
INICIO
Utilizando tu PC en modo
Hyper Terminal
Al acceder al Hyper Terminal, debers hacer la configuracin. Aparecer la ventana
que est a la izquierda, en ella podrs escoger algn icono y colocar un nombre como por
ejemplo Puerto Serial 1.
Luego tendrs que hacer clic en Aceptar.
Despus
aparecer la ventana que est a la derecha, en la cual podrs seleccionar el puerto
serial que utilizars.
Al hacer esto, aparecer un cuadro para configurar el puerto serial, en el cual debers
seleccionar los parmetros adecuados para la comunicacin con tu microcontrolador.
360
INICIO
INICIO
Conexin RS-485
La interfaz RS-485 utiliza seales de transmisin en modo diferencial, de esta manera
hay dos seales de voltaje que indican su valor por su diferencia de potencial relativa.
Las salidas del RS-485 pueden ser tres estados, lo cual permite la conexin de varios
dispositivos para transmitir o recibir con el mismo par de seales. Los dispositivos se
configuran en un arreglo de un maestro y varios esclavos, y la transmisin puede
hacerse mediante un par de cables o dos pares de cables. La figura muestra el esquema
de conexin en una transmisin con dos pares de cables en donde las lneas son
conectadas a varios dispositivos.
362
INICIO
Implementacin RS-485
El software para la interfaz RS-485 puede ser significativamente ms complejo que el
de la interfaz RS-232. Se requiere un protocolo de comunicacin para arbitrar el bus,
y no exista colisin de datos al tratar de transmitir dos dispositivos a la vez.
Los buses RS-485 se suelen implementar con un maestro y varios esclavos. El
maestro es el nico dispositivo que inicia la comunicacin en el bus, para as evitar
problemas de colisiones. Esta comunicacin se comienza al enviar una direccin y un
comando, entonces el esclavo que est siendo seleccionado responder. Cada esclavo
deber tener una direccin diferente, y debe entender el formato de los datos que se
le envan. Adicionalmente cada dispositivo debe controlar la habilitacin de la seal de
salida en su transceiver.
Debido a que en el bus se conectan varios dispositivos esclavos, el USART debe utilizar
el modo de deteccin de direcciones, al habilitar el bit ADDEN del registro RCSTA.
Esto permitir que en una transmisin, los esclavos no seleccionados previamente
ignoren los bits de datos recibidos. Si en una transmisin, el maestro coloca en 1 el
bit ADDEN, se indica que se est transmitiendo una direccin a ellos. En el momento de
detectar el bit ADDEN, cada esclavo har la comparacin de la direccin recibida con
la que ellos tienen establecidas, y en el caso de coincidir, ese esclavo sabr que los
datos y comandos siguientes correspondern a l. Esto reducir y facilitar el software
de comunicacin entre varios dispositivos conectados en un mismo par de lneas.
Para ms detalles, debers conocer los formatos de cada protocolo, para que puedas
programar el USART en tu PIC. Algunos de los protocolos industriales que utilizan la
interfaz RS485 son: el ASCII ANSI X3 28-2.5-A4, el BSAP y el MODBUS, entre
otros.
363
INICIO
Transmisin Sncrona en
modo maestro
La transmisin sncrona con el USART se realiza en modo Half Duplex, es decir, la
transmisin y la recepcin no ocurren al mismo tiempo. Al transmitir un dato, la
recepcin se inhibe y viceversa, ya que stas se hacen por una misma lnea. La otra
lnea es utilizada para sincronizar los datos, es decir, saldrn los niveles del oscilador si
el transmisor es maestro o los recibir si es un dispositivo esclavo. La ventaja de la
transmisin sncrona, es que sta es ms sencilla y no requiere de una lgica complicada.
Para configurar el mdulo USART en la comunicacin serial sncrona en modo maestro
se colocarn en 1 los bits SYNC (modo sncrono) y CSRC (oscilador interno) del registro
TXSTA. Al habilitar el bit SPEN del registro RCSTA, se configuran los terminales
RC6/TX/CK como el que produce la seal de sincronizacin o reloj, y el terminal
RC7/RX/DT se utilizar como la lnea que enva y recibe datos.
La transmisin serial sncrona ocurre de manera similar a la asncrona.
La gran
diferencia est en que la seal del oscilador de sincronizacin, la cual es producida por
el generador de baudios, se transmite simultneamente con la seal de datos.
Para configurar el mdulo USART para la transmisin sncrona en modo maestro, se
deber hacer pasos similares para la configuracin en modo asncrono.
La nica
diferecncia ser que hay que hacer 1 los bits SYNC y CSRC del registro TXSTA.
En la siguiente pgina se muestran los bits involucrados en la transmisin serial sncrona
en modo maestro y las formas de ondas.
364
INICIO
365
INICIO
Comunicacin Sncrona en
modo esclavo
La transmisin sncrona en modo esclavo se diferencia de la del modo maestro en
que, en modo esclavo el oscilador que produce la sincronizacin de datos es externo al
dispositivo. Para especificar que el dispositivo trabaja en modo esclavo, se deber
colocar el bit CSRC = 0, el cual est en el registro TXSTA.
En el caso de la recepcin sncrona en modo esclavo, se siguen los mismos pasos que
en modo maestro.
Debido a que la sincronizacin en modo esclavo es externa, el dispositivo podr
trabajar en modo reposo. En este caso habr diferencias en la configuracin con
respecto al modo maestro.
366
INICIO
367
INICIO
Programa de configuracin
del USART en modo sncrono
;
STATUS,RP0
MOVLW
BAUDIOS
MOVWF
SPBRG
MOVLW
0xB0
MOVWF
TXTA
BSF
PIE1,TXIE
BSF
PIE1,RCIE
BCF STATUS,RP0
MOVLW
0x90
MOVWF
RCSTA
368
INICIO
Actividades
Ya hemos visto el funcionamiento del puerto universal sincrnico-asincrnico (USART).
En principio, te habamos mencionado la importancia de este puerto para realizar la
comunicacin con otros equipos, entre ellos, el computador.
La actividad que se propone, es la de que hagas un programa y montes un circuito que
sea capaz de leer una seal analgica, la convierta a digital y la enve al puerto RS-232
de tu computadora. Claro est, que debers utilizar una interfaz que convierta la seal
de 0 a 5V que maneja tu microcontrolador, en la de 12V a -12V que se emplea en el
estndar RS-232-C. Para ello, te proponemos que emplees el dispositivo de la figura
anexa, o uno similar. Por otro lado, debers adquirir un cable para la conexin RS-232,
el cual podrs comprar en una tienda de electrnica o computacin.
-12V
+12V
RC6/TX
del PIC
SN75155
Recepcin
RS232C
369
Transmisin
RS232C
RC7/RX
del PIC
INICIO
Direccin
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor en
POR y BOR
Otros
Resets
07h
PORTC
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
xxxx xxxx
uuuu uuuu
87h
TRISC
1111 1111
1111 1111
81h, 181h
OPTION_REG
1111 1111
1111 1111
15h
CCPR1L
xxxx xxxx
uuuu uuuu
16h
CCPR1H
xxxx xxxx
uuuu uuuu
17h
CCP1CON
--00 0000
--00 0000
1Bh
CCPR2L
xxxx xxxx
uuuu uuuu
1Ch
CCPR2H
xxxx xxxx
uuuu uuuu
1Dh
CCP2CON
18h
RCSTA
---
INTDG
---
TOCS
CCP1X
TOSE
CCP1Y
PSA
CCP1M3
PS2
CCP1M2
PS1
CCP1M1
PS0
CCP1M0
---
CCP2X
CCP2Y
CCP2M3
CCP2M2
CCP2M1
CCP2M0
--00 0000
--00 0000
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x
0000 000x
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
xxxx xxxx
uuuu uuuu
98h
TXTA
19h
TXREG
99h
SPBRG
1Ah
RCREG
13h
SSPBUF
14h
SSPCON
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
0000 0000
0000 0000
91h
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000
0000 0000
93h
SSPADD
0000 0000
0000 0000
94h
SSPSTAT
0000 0000
0000 0000
CKE
D/A
370
UA
R/W
BF
INICIO
RD6
RD5
RD4
RD3
RD2
RD1
RD0
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
E/S
DIGITAL
Bit 7 PSP
Bit 6 PSP
Bit 5 PSP
Bit 4 PSP
Bit 3 PSP
Bit 2 PSP
Bit 1 PSP
Bit 0 PSP
371
INICIO
372
INICIO
373
INICIO
374
INICIO
Registros asociados al
Puerto Paralelo
La ventaja de utilizar al puerto paralelo como elemento controlado por otro dispositivo
externo, es que nos permite hacer transferencias de datos de un dispositivo a otro de
manera ms rpida e independiente, y para ello se utilizaran las interrupciones.
En la siguiente tabla se encuentran los bits asociados al puerto paralelo.
375
INICIO
Direccin
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor en
POR y BOR
Otros
Resets
08h
PORTD
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
xxxx xxxx
uuuu uuuu
88h
TRISD
1111 1111
1111 1111
89h
TRISE
0000 -111
0000 -111
OBF
IBOV
376
PSP
MODE
Registro de
Configuracin de PORTE
INICIO
El Puerto E
RE1/WR#/AN6
RE0/RD#/AN5
E/S DIGITAL
E/S DIGITAL
E/S DIGITAL
Entrada Analgica
7
Entrada Analgica
6
Entrada Analgica
5
Seleccin de Chip en
el modo PSP (CS)
Escritura en el modo
PSP (WR)
Lectura en el modo
PSP (RD)
Registro
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
89h
TRISE
IBF
OBF
IBOV
PSP
MODE
---
377
Bit 2
Bit 1
Bit 0
Configuracin de las
Entradas/Salida Digitales
Valor en POR
y BOR
Otros
Resets
0000 -111
0000 -111
INICIO
Actividades
378
INICIO
B12
B11
B10
B9
B8
B7
B6
B5
B4
B3
B2
B1
B0
CP1
CP0
Debug
WRT
CP0
LVP
BODEN
CP1
CP0
PWRTE#
WDTE
FOSC1
FOSC0
Los bits FOSC0, FOSC1, WDTE y PWRTE# se configuran de la misma manera que en
los PIC16F84A y PIC16C54 (repasar). CP1 y CP0 se utilizan para proteger secciones de
la memoria de programa, y stas dependen de los modelos del PIC que se va a utilizar.
Para ms detalles, vase la tabla de la pgina siguiente.
BODEN.
Habilitacin de inicializacin por cada de tensin. 1 Habilitada, 0
Deshabiltada.
LVP.
funciona
WRT.
Habilitacin para la escritura de la memoria de programa FLASH. 1 Se podr
escribir en la parte no protegida de la FLASH, 0 No se permitir la escritura.
Debug.
Modo de depuracin del circuito. 1 Desactivado. RB7 y RB6 actuarn como
lneas
de E/S. 0 Activado. RB7 y RB6 actan en modo de depuracin. La depuracin
se podr hacer desde el MPLAB.
379
INICIO
Proteccin de la memoria de
programa de los PIC16F87X
Modelo PIC
CP1
CP0
Direccin
inicial de
proteccin
Direccin final
de proteccin
PIC16F870/871/872
TODO
PROTEGIDO
PIC16F873/874
0000H
0FFFH
PIC16F873/874
0800H
0FFFH
PIC16F873/874
0F00H
0FFFH
PIC16F876/877
0000H
1FFFH
PIC16F876/877
1000H
1FFFH
PIC16F876/877
1F00H
1FFFH
NO
PROTEGIDO
380
INICIO
Conclusin
Hemos hablado acerca de lo que puedes hacer con los microcontroladores PIC y has visto
la descripcin de algunos de ellos, desde el ms bsico, el PIC16C54, hasta los de la gama
media de la serie PIC16F87X. Entre ellos podrs considerar sus potencialidades a la hora
de hacer algn diseo.
Has aprendido las instrucciones del lenguaje ensamblador y la forma en que puedes
desarrollar programas y grabarlos para realizar varias aplicaciones.
Has visto cmo trabajan los mdulos de circuitos incluidos en los diferentes
microcontroladores y cmo acceder a sus registros de configuracin. Pudiste observar
tambin la importancia de estos mdulos para el desarrollo de interfaces con el mundo
exterior.
En el anexo 5 te presentamos algunos circuitos, notas de aplicacin y direcciones de
Internet, los cuales te ayudarn a ampliar los conocimientos sobre los microcontroladores
PIC.
Tu estudio siguiente lo podrs hacer en los microcontroladores PIC18FXXX, lenguaje C, y
los procesadores de seal dsPIC o TMS320.
Finalmente, te deseamos el mejor de los xitos, y si encuentras alguna sugerencia para
mejorar y promocionar este material, podrs escribir un correo electrnico a la direccin:
calvarezluz@cantv.net
INICIO
ANEXOS
ANEXO 1. GLOSARIO
ANEXO 2. EXPLICACIN DETALLADA DE LAS INSTRUCCIONES
ANEXO 3. DIRECTIVAS DEL LENGUAJE ENSAMBLADOR
ANEXO 4. REGISTROS Y BITS DE FUNCIONES ESPECIALES
ANEXO 5. INTERFACES Y PROYECTOS CON
MICROCONTROLADORES PIC
ANEXO 6. ACTUALIZACIN DEL PICSTART PLUS
ANEXO 7. GRABACIN DE UN PROGRAMA EN LOS PIC16F87X
INICIO
GL
OS
AR
I
ANEXO1: GLOSARIO
383
INICIO
SMBOLOS
<>
Los valores que estn encerrados en estos smbolos, indican bits que
estn asignados a un registro.
El valor que est debajo de una lnea continua, indica que est
negado
o invertido lgicamente.
384
INICIO
Acceso:
Actuador:
A/DC:
ADD:
Analgico:
AND:
385
INICIO
Aritmtica:
ASCII:
Fabricante de semiconductores.
386
INICIO
B (b):
Bajo consumo:
Bsica:
Booleano:
Boole:
387
base
INICIO
Borrado:
BSAP:
Bus:
Byte:
388
INICIO
C:
CAN:
Es muy utilizado
Call:
Capacitor:
Condensador elctrico.
Carry o C:
Cero:
Cext:
Valor nulo.
Condensador externo.
Chip:
Circuito integrado.
Ciclo:
CLEAR:
389
INICIO
CLK:
CMOS:
trabajo
CLKOUT:
Contador:
Control:
CPU:
390
INICIO
D/AC:
Dallas:
Fabricante de Semiconductores
Dato:
DC:
Decimal Carry:
391
INICIO
Direccin:
Disparador de
Schmitt:
Elemento que incorpora a su entrada un detector de
DRT:
392
INICIO
EEPROM:
Ejecucin:
programa.
Embedded:
Emulador:
393
INICIO
Entrada:
Entrada-Salida:
EPROM:
y luego
EXOR:
INICIO
y
F:
datos.
FIFO:
y el
Flash:
FOSC:
FSR:
Gama:
Grupo.
GOTO:
395
INICIO
e
Handbook:
Harvard:
Hitachi:
Hz:
I2C I2C:
I/O:
Entrada/Salida.
396
INICIO
Intel:
Interfaz:
IOR:
rutina.
397
INICIO
y
K:
K:
LCD:
Lectura:
Leer:
Literal:
Lgica:
LSB:
398
INICIO
MCLR:
MCS:
Micro-Computer System.
con microcomputador e interfaces.
MCU:
Media:
Este
399
INICIO
400
INICIO
National
Semiconductor:
NEC:
Nibbles:
Agrupacin de 4 bits.
NMOS:
NOP:
nSeg:
segundo.
401
INICIO
OPTION:
OR:
Oscilador:
estable.
OSC1/CLKIN:
OSC2/CLKOUT:
OTP:
402
INICIO
PA:
Puerto A (PORTA).
Paralelo:
PB:
Puerto B. (PORTB).
PC:
grupo
PD:
Perro Guardin:
Philips:
INICIO
PIC:
POR:
PORT:
Programa:
INICIO
PROM:
PS:
Puerto:
Puerto Serial:
Pull up:
PWM:
405
INICIO
RA0 RA4:
RAM:
RB0 RB7:
RC:
el
Registro:
Reloj:
del tiempo.
Reset:
406
INICIO
Resonante:
RET, RETURN:
REXT:
RISC:
Resistencia externa.
Conjunto reducido de instrucciones (Reduced Instruction Set).
Se utiliza en microprocesadores de alta velocidad.
Rodar:
ROM:
Rotacin:
Rutina:
407
INICIO
Salida:
Salto:
Sensor:
elctrica.
Serial:
Se aplica a los datos que entran o salen uno por uno o bit por
bit en una sola lnea de transmisin.
408
INICIO
Sincrnico:
Sleep:
Stack:
STATUS:
SUB:
Subrutina:
SWAP:
INICIO
Tecnologa
Dgital:
Temporizador:
Terminal:
Texas
Fabricante estadounidense de semiconductores. Son muy
Instruments: conocidos los DSPs que fabrica esta compaa.
Tiempo
de espera:
Timer:
TMRO:
TO:
410
INICIO
TOCKI:
de no
TOCS:
TOSE:
Toshiba:
Transferencia:
Tres estados:
TRIS:
411
INICIO
y
USART:
VDD:
Verify
Specification: Verificacin de especificacin.
VSS:
Vpp:
Tensin de programacin
412
INICIO
a
W:
Watchdog:
WDT:
cuando
XOR:
Z:
Zero:
413
INICIO
Anexo 2:
EXPLICACIN DETALLADA
DE LAS INSTRUCCIONES
414
INICIO
Descripcin
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
f,d
f,d
f
f,d
f,d
f,d
Suma W con f
1
AND de W con f
Borra f
1
Borra W
Complementa f
1
Decremento f
1
Decrementa f, salta si es 0
0001
11df ffff
C, DC, Z
1
0001
01df ffff
0000 011f ffff
Z
1
0000 0100 0000
0010 01df ffff
Z
0000 11df ffff
Z
1(2) 0010 11df ffff
INCF
INCFSZ
f,d
f,d
Incremento f
1
Incremento f, salta si es 0
0010
1(2)
IORWF
MOVF
MOVWF
NOP
RLF
2,4
RRF
2,4
SUBWF
f,d
f,d
f
f,d
OR inclusivo de W con f
1
0001 00df ffff
Mueve f
1
0010 00df ffff
Mueve W a f
1
0000 001f ffff
No operacin
1
0000 0000 0000
Rotacin izqu. a travs del Carry
1
0011
f,d
f,d
Resta W de f
0000
10df ffff
SWAPF
f,d
Intercambia nibles de f
0011
10df ffff
XORWF
f,d
OR exclusivo de W con f
0001
10df
415
10df ffff
0011 11df ffff
0011
1,2,4
2,4
2,4
2,4
2,4
2,4
2,4
2,4
1,4
01df ffff
00df ffff
ffff
C
C
C,DC,Z
1,2,4
2,4
2,4
INICIO
Descripcin
Borra bit de f
1
Pone un 1 a bit de f
1
Salta si bit de f es 0 1(2)
f,b
Salta si bit de f es 1
Bits de
STATUS
afectados
Cdigo de Operacin
Ciclos
Msb Lsb
0100
bbbf
ffff
0101
bbbf
ffff
0110
bbbf
ffff
1(2) 0111
bbbf
ffff
kkkk
Notas
2,4
2,4
CALL
K
CLRWDT
Llamar a subrutina
2
1001
kkkk
kkkk
K
Borra temporizador WDT
1
0000
0000
GOTO
Salto incondicional
AND de K con W
1110
101k
kkkk
OR inclusivo de k con W
MOVLW
OPTION
RETLW
K
K
SLEEP
0000
0000
0011
TRIS
0000
0000
0fff
1111
kkkk
EXOR DE k con W
416
1100
1
2
Z
0100
1
TOPD
kkkk
kkkk
IORLW
XORLW
kkkk
1101
kkkk
0000
1000
kkkk
kkkk
0000
kkkk
kkkk
0010
kkkk
TO, PD
3
Z
INICIO
Cdigo de Operacin
Ciclos
Msb Lsb
Descripcin
Bits de
STATUS
afectados
Notas
f,d
f,d
Suma W con f
AND de W con f
f
f,d
f,d
f,d
Borra f
1
Borra W
Complementa f
1
Decremento f
1
Decrementa f, salta si es 0
f,d
f,d
Incremento f
1
Incremento f, salta si es 0
f,d
f,d
f
f,d
OR inclusivo de W con f
1
00 0001 00df ffff
Mueve f
1
00 0010 00df ffff
Z
Mueve W a f
1
00 0000 001f ffff
No operacin
1
00 0000 0000 0000
Rotacin izq. a travs del Carry 1
00 0011 01df ffff
f,d
f,d
Resta W de f
SWAPF f,d
Intercambia nibles de f
00 0011
10df ffff
XORWF f,d
OR exclusivo de W con f
00 0001
10df ffff
417
00 0011
1,2,4
Z
Z
Z
2,4
Z
Z
2,4
2,4
2,4
1,4
C
00df ffff
C,DC,Z 1,2,4
2,4
Z
2,4
INICIO
Bits de
STATUS
afectados
Cdigo de Operacin
Ciclos
Msb Lsb
Descripcin
Borra bit de f
1
01 00bb bfff
ffff
Pone un 1 a bit de f
1
01 01bb bfff
ffff
Salta si bit de f es 0 1(2) 01 10bb bfff ffff
f,b
Salta si bit de f es 1 1(2) 01 11bb bfff ffff
1,2
1,2
3
Notas
ANDLW
CALL
K
K
AND de K con W
Llamar a subrutina
GOTO
Salto incondicional
Suma K con W
11 111x
kkkk
kkkk
1
2
11 1001
10 0kkk
kkkk
kkkk
kkkk
kkkk
10 1kkk
OR inclusivo de k con W
MOVLW
RETRE RETLW
Retorno de interrupcin 2
00 0000
K
Retornar, asignar valor k a W 2
SLEEP
00 0000
0110 0011
SUBLW
11 110k
kkkk
XORLW
EXOR de k con W
11 1010
418
11 1000
11 00xx
kkkk
IORLW
kkkk
C,DC,Z
kkkk
kkkk kkkk
kkkk
0000 1001
11 01xx
kkkk
kkkk
kkkk
kkkk
kkkk
TO, PD
C,DC,Z
Z
INICIO
ADDLW
Suma valor literal con W
Nota: Esta instruccin no est incluida en los PIC de la gama bsica
Cdigo Ensamblador:
(Etiqueta) ADDLW
Operadores:
0 K 255
Operacin:
C, DC, Z
Ejemplo:
ADDLW 0 x 15
Antes de la Instruccin
W = 0x10
Despus de la Instruccin
W = 0x25
419
INICIO
ADDWF
Suma W y f
Cdigo Ensamblador:
Operadores:
Ejemplo:
ADDWF FSR, 0
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Despus de la Instruccin
W = 0xD9
FSR = 0xC2
420
INICIO
ANDLW
Cdigo Ensamblador:
(Etiqueta) ANDLW k
Operadores:
0 K 255
Operacin:
Ejemplo:
ANDLW 0x5F
Antes de la Instruccin
W = 0xA3
Despus de la Instruccin
W = 0x03
421
INICIO
ANDWF
AND W con f
Cdigo Ensamblador:
Operadores:
Ejemplo:
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Despus de la Instruccin
W = 0x17
FSR = 0x02
ANDWF FSR, 1
422
INICIO
BCF
Cdigo Ensamblador:
Operadores:
Borra bit en f
Operacin:
0 (f<b>)
Ninguno
Ejemplo:
BCF FLAG_REG, 7
Antes de la Instruccin
FLAG_REG = =0xC7
Despus de la Instruccin
FLAG_REG = 0x47
423
INICIO
BSF
Cdigo Ensamblador:
Operadores:
Establece en 1 bit en f
Operacin:
1 (f<b>)
Ninguno
Ejemplo:
BSF FLAG_REG, 7
Antes de la Instruccin
FLAG_REG = =0x0A
Despus de la Instruccin
FLAG_REG = 0x8A
424
INICIO
BTFSC
Prueba bit en
salta si es cero
f,
Cdigo Ensamblador:
Operadores:
Ejemplo:
AQUBTFSC
FLAG, 1
FALSO
GOTO
COD_PROCESO
CIERTO
Antes de la Instruccin
PC = direccin (AQU)
Despus de la Instruccin
Si FLAG<1> = 0,
PC = direccin (CIERTO); Ejecucin en dos ciclos
Si FLAG<1> = 1,
PC = direccin (FALSO); Ejecucin en un ciclo
425
INICIO
BTFSS
Cdigo Ensamblador:
Operadores:
Ejemplo:
AQUBTFSS
FLAG, 1
FALSO
GOTO
COD_PROCESO
CIERTO
Antes de la Instruccin
PC = direccin (AQU)
Despus de la Instruccin
Si FLAG<1> = 0,
PC = direccin (FALSO); Ejecucin en un ciclo
Si FLAG<1> = 1,
PC = direccin (CIERTO); Ejecucin en dos ciclos
426
INICIO
CALL
Llamar
a subrutina
Cdigo Ensamblador:
Operadores:
Operacin:
(Etiqueta) CALL K
0 K 255
(PC) +1 Tope de la pila (Stack);
K PC<7:0>;
(STATUS <6:5>) PC <10:9>;
0 PC <8>
Bits de estado que se afectan:
Ninguno
Descripcin:
Llama a subrutina. Primero la direccin de
retorno (PC+1) se coloca en la pila (Stack).
Los bits 8 de K se colocan en los bits
<7:0> del PC. Los bits <10:9> del PC toman
los valores de los bits <6:5> del STATUS.
El bit 8 del PC es colocado en 0. Esta
instruccin dura dos ciclos.
Ejemplo:
AQU
CALL ALLA
Antes de la Instruccin
PC = direccin (AQU)
Despus de la Instruccin
PC = direccin (ALLA)
TOS = direccin (AQU + 1)
427
INICIO
CLRF
Borra f
Cdigo Ensamblador:
Operadores:
(Etiqueta) CLRF f
0 f 31 (Gama bsica)
0 f 127 (Gama media)
Operacin:
00h (f);
1 Z
Ejemplo:
CLRF FLAG_REG
Antes de la Instruccin
FLAG_REG = =0x5A
Despus de la Instruccin
FLAG_REG = 0x00
z = 1
428
INICIO
CLRW
Borra W
Cdigo Ensamblador:
(Etiqueta) CLRW
Operadores:
Ninguno
Operacin:
00h (W);
1 Z
Ejemplo:
CLRW
Antes de la Instruccin
W = 0x5A
Despus de la Instruccin
W = 0x00
z = 1
429
INICIO
CLRWDT
Borra temporizador
perro guardin (WDT)
Cdigo Ensamblador:
Operadores:
Operacin:
(Etiqueta) CLRWDT
Ninguno
00h WDT;
0 Escalamiento WDT (si es asignado
a ste);
1 TO;
1 PD
Bits de estado que se afectan:
TO, PD
Descripcin:
Borra el registro WDT y tambin al
escalamiento, si ste es asignado al
WDT y no al temporizador Timer0.
Los bits de estado TO y PD se ponen en 1
Ejemplo:
CLRWDT
Antes de la Instruccin
Contador WDT = ?
Despus de la Instruccin
Contador WDT = 0x00
Escalamiento de WDT = 0
TO = 1
PD = 1
430
INICIO
COMF
Complementa f
f
Complementa
Cdigo Ensamblador:
Operadores:
Ejemplo:
COMF REG1, 0
Antes de la Instruccin
REG1 = 0x13
Despus de la Instruccin
REG1 = 0x13
W = 0xEC
431
INICIO
DECF
Decremento de
de f
f
Decremento
Cdigo Ensamblador:
Operadores:
Ejemplo:
DECF CNT, 1
Antes de la Instruccin
CNT = 0x01
Z = 0
Despus de la Instruccin
CNT = 0x00
Z = 1
432
INICIO
DECFSZ
Decremento de f,
salta si es 0
Cdigo Ensamblador:
(Etiqueta) DECFSZ f,d
Operadores:
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d 0,1
Operacin:
(f) - 1 d; salta si el resultado = 0
Bits de estado que se afectan: Ninguno
Descripcin:
Decrementa el contenido del registro f.
Si d es 0, el resultado se coloca en W,
si d es 1, el resultado se coloca en f.
Si el resultado es 0, entones se salta la siguiente
instruccin, la cual se haba preparado para ejecutar,
pero se descartta y se ejecuta un NOP, lo cual
hace que la instruccin dure dos ciclos.
Si el resultado es diferente de cero, en un ciclo, y luego
entonces la instruccin actual se ejecuta
se ejecuta la siguiente instruccin.
Ejemplo:
AQUIDECFSZ CNT, 1
GOTO LAZO
CONTI
Antes de la Instruccin
PC = direccin (AQU)
Despus de la Instruccin
CNT = CNT - 1;
Si CNT = 0,
PC = direccin (CONTI); Ejecucin en dos ciclos
Si CNT 0,
PC = direccin (AQU+1); Ejecucin en un ciclo
433
INICIO
GOTO
Salto Incondicional
Incondicional
Salto
Cdigo Ensamblador:
(Etiqueta) GOTO k
Operadores gama bsica:
0 k 512
Operadores gama media:
0 k 2047
Operacin gama bsica:
k PC <8:0>
(STATUS <6:5> PC <10:9>
Operacin gama media:
k PC <10:0>
(PCLATCH <4:3>) PC <12:11>
Bits de estado que se afectan:
Ninguno
Descripcin:
Salto incondicional. Los 9 bits de k se
colocan en los bits <8:0> del PC. Los
bits <10:9> del PC toman los valores de
los bits <6:5> del registro STATUS.
Esta instruccin dura dos ciclos
Ejemplo:
GOTO ALLA
Despus de la Instruccin
PC = direccin (ALLA)
434
INICIO
INCF
Incremento de
de f
f
Incremento
Cdigo Ensamblador:
Operadores:
Ejemplo:
INCF CNT, 1
Antes de la Instruccin
CNT = 0xFF
Z = 0
Despus de la Instruccin
CNT = 0x00
Z = 1
435
INICIO
INCFSZ
Incremento de f
salta si es 0
Cdigo Ensamblador:
(Etiqueta) INCFSZ f,d
Operadores:
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d 0,1
Operacin:
(f) + 1 (dest), salta si el resultado = 0
Bits de estado afectados: Ninguno
Descripcin:
Incrementa el contenido del registro f.
Si d es 0, el resultado se coloca en W,
si d es 1, el resultado se coloca en f.
Si el resultado es 0, entones se salta la siguiente
instruccin, la cual se haba preparado para ejecutar,
pero se descarta
y se ejecuta un NOP, lo cual hace
que la instruccin dure dos ciclos. Si
el resultado es
diferente de cero, entonces la instruccin actual se
ejecuta en un ciclo, y luego se ejecuta la siguiente
instruccin.
Ejemplo:
AQUIINCFSZ CNT, 1
GOTO LAZO
CONTI
Antes de la Instruccin
PC = direccin (AQU)
Despus de la Instruccin
CNT = CNT - 1;
Si CNT = 0,
PC = direccin (CONTI); Ejecucin en dos ciclos
Si CNT 0,
PC = direccin (AQU+1); Ejecucin en un ciclo
436
INICIO
OR Inclusivo
Inclusivo de
de
OR
valor literal
literal con
con W
W
valor
IORLW
Cdigo Ensamblador:
(Etiqueta) IORLW k
Operadores:
0 K 255
Operacin:
(W).OR.(K) (W);
Ejemplo:
IORLWF 0x35
Antes de la Instruccin
W = 0x9A
Despus de la Instruccin
W = 0xBF
Z = 0
437
INICIO
OR Inclusivo de W
con f
IORWF
Cdigo Ensamblador:
Operadores:
Ejemplo:
IORWF RESULT, 0
Antes de la Instruccin
RESULT = 0x13
W = 0x91
Despus de la Instruccin
RESULT = 0x13
W = 0xBF
Z = 0
438
INICIO
MOVF Mueve f
Cdigo Ensamblador:
Operadores:
Ejemplo:
MOVF FSR, 0
Despus de la Instruccin
W = Valor en el registro FSR
439
INICIO
MOVLW
Cdigo Ensamblador:
(Etiqueta) MOVLW k
Operadores:
0 K 255
Operacin:
K (W);
Ninguno
Se carga el valor de k en el
registro W.
Ejemplo:
MOVLW 0x5A
Despus de la Instruccin
W = 0x5A
440
INICIO
MOVWF
Mueve W a f
Cdigo Ensamblador:
Operadores:
(Etiqueta) MOVWF f
0 f 31 (Gama bsica)
0 f 127 (Gama media)
Operacin:
(W) (f)
Bits de estado que se afectan:
Ninguno
Descripcin:
Mueve el dato desde W a f
Ejemplo:
MOVWF TEMP_REG
Antes de la Instruccin
TEMP_REG = 0xFF
W = 0x4F
Despus de la Instruccin
TEMP_REG = 0x4F
W = 0x4F
441
INICIO
NOP
No operacin
Cdigo Ensamblador:
(Etiqueta) NOP
Operadores:
Ninguno
Operacin:
No operacin
NO
Ninguno
No hay operacin.
Simplemente se ejecuta un ciclo,
sin afectar nada.
Ejemplo:
NOP
442
INICIO
OPTION
Ejemplo:
OPTION
Antes de la Instruccin
W = 0x07
Despus de la Instruccin
OPTION = 0x07
443
INICIO
RETFIE
Retorno de Interrupcin
Ejemplo:
RETFIE
Despus de la Instruccin
PIC = TOS
GIE = 1
444
INICIO
RETURN
Retorno de Interrupcin
(Etiqueta) RETURN
Operadores:
Ninguno)
Operacin:
TOS PC
Ninguno
Ejemplo:
RETURN
Despus de la Instruccin
PC = TOS
445
INICIO
RETLW
RETLW
Retorno con
con valor
valor literal
literal en
en W
W
Retorno
Cdigo Ensamblador:
(Etiqueta) RETLW K
Operadores:
0 K 255
Operacin:
K (W)
TOS PC
Bits de estado afectados: Ninguno
Descripcin:
El registro W se carga con el valor del literal k. El
contador de programa PC se carga con el tope de la
pila (STACK,
direccin de retorno). Esta instruccin
es til para convertir valores por
medio de una tabla
de equivalencia, vase ejemplo. Esta instruccin dura
dos ciclos.
Ejemplo:
CALL TABLA
;W contiene tabla de valores de la
;conversin. Despus de ejecutar la
;rutina, W tendr el valor convertido
TABLA
ADDWF
RETLW
k0
RETLW
k1
RETLW
kn
Antes de la Instruccin
W = 0x07
Despus de la Instruccin
W = valor de k7
PCL ;W = desplazamiento
;Comienza tabla
;Final de la tabla
446
INICIO
RLF
RLF
Rodar f
f aa la
la Izquierda
Izquierda aa
Rodar
travs del
del Carry
Carry
travs
Cdigo Ensamblador:
Operadores:
(Etiqueta) RLF f, d
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d [0,1]
Operacin:
Ver descripcin abajo
Bits de estado que se afectan:
C
Descripcin:
Los bits de f son rodeados (desplazados)
en un bit hacia la izquierda, pasando por el
bit Carry. El bit 0 de f, forma el valor
anterior del bit 7 de f.
Si d es 0, el resultado se coloca en W,
si d es 1, el resultado se coloca en f.
Ejemplo:
RLF REG1, 0
Antes de la Instruccin
REG1 = 1110 0110
C = 0
Despus de la Instruccin
REG1 = 1110 0110
W = 1100 1100
C = 1
447
INICIO
RRF
RRF
Rodar f a la Derecha a
travs del Carry
Cdigo Ensamblador:
Operadores:
(Etiqueta) RRF f, d
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d [0,1]
Operacin:
Ver descripcin abajo
Bits de estado que se afectan:
C
Descripcin:
Los bits de f son rodeados (desplazados)
en un bit hacia la derecha, pasando por el
bit Carry. El bit 7 de f, toma el valor
anterior del bit Carry, y el bit Carry
toma el valor anterior del bit 0 de f
Si d es 0, el resultado se coloca en W,
si d es 1, el resultado se coloca en f.
Ejemplo:
RRF REG1, 0
Antes de la Instruccin
REG1 = 1110 0110
C = 0
Despus de la Instruccin
REG1 = 1110 0110
W = 0111 0011
C = 0
448
INICIO
SLEEP
Cdigo Ensamblador:
(Etiqueta) SLEEP
Operadores:
Ninguno
Operacin:
00h WDT
0 Escalamiento del WDT;
1 TO
0 PD
TO, PD
Ejemplo:
SLEEP
449
INICIO
SUBLW
W = 2
C = ?
Despus de la Instruccin
W = 0
C = 1; el resultado es 0
W = 3
C = ?
Despus de la Instruccin
W = FF
C = 0; el resultado es negativo
450
INICIO
SUBWF
Resta W de f
Cdigo Ensamblador:
Operadores:
(Etiqueta) SUBWF f, d
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d [0,1]
Operacin:
(f) - (W) (dest)
Bits de estado que se afectan:
C, DC, Z
Descripcin:
Se resta el contenido de W con el del
registro f (en complemento a 2).
Si d es 0, el resultado se coloca en W
Si d es 1, el resultado se coloca en f
Ejemplo 1:
SUBWF REG, 1
Antes de la Instruccin
REG1 = 3, W = 2, C = ?
Despus de la Instruccin
REG1 = 1, W = 2, C = 1; el resultado es positivo
REG1 = 2, W = 2, C = ?
Despus de la Instruccin
REG1 = 0, W = 2, C = 1; el resultado es 0
REG1 = 1, W = 2, C = ?
Despus de la Instruccin
REG1 = FF, W = 2, C = 1; el resultado es negativo
451
INICIO
SWAPF
Intercambio de Nibles in f
Cdigo Ensamblador:
Operadores:
(Etiqueta) SWAPF f, d
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d [0,1]
Operacin:
(f<3:0>) (dest<7:4>)
(f<7:4>) (dest<3:0>)
Bits de estado que se afectan:
Ninguno
Descripcin:
Los nibles (grupo de 4 bits) superiores e
inferiores de f son intercambiados
Si d es 0, el resultado se coloca en W
Si d es 1, el resultado se coloca en f.
Ejemplo:
SWAPF REG1, 0
Antes de la Instruccin
REG1 = 0xA5
Despus de la Instruccin
REG1 = 0xA5
W = 0x5A
452
INICIO
TRIS
(Etiqueta) TRIS f
Operadores:
f = 5, 6 7
Operacin:
Ninguno
Ejemplo:
TRIS PORTA
Antes de la Instruccin
W = 0xA5
Despus de la Instruccin
TRISA = 0xA5
453
INICIO
Cdigo Ensamblador:
(Etiqueta) XORLW K
Operadores:
0 K 255
Operacin:
(W).XOR.K (W)
Bits de estado que se afectan:
Z
Descripcin:
Se ejecuta la operacin lgica OR
Exclusivo entre el contenido W y el
valor literal k. El resultado se
guarda en W.
Ejemplo:
XORLW 0xAF
Antes de la Instruccin
W = 0xB5
Despus de la Instruccin
W = 0x1a
454
INICIO
XORWF
OR Exclusivo de W con f
Cdigo Ensamblador:
Operadores:
(Etiqueta) XORWF f, d
0 f 31 (Gama bsica)
0 f 127 (Gama media)
d [0,1]
Operacin:
(W).XOR.(f) (dest)
Bits de estado que se afectan:
Z
Descripcin:
Se ejecuta la operacin lgica OR
Exclusivo del contenido con el contenido
del registro f.
Si d es 0, el resultado se coloca en W
Si d es 1, el resultado se coloca en f.
Ejemplo:
XORWF REG1, 0
Antes de la Instruccin
REG = 0xAF (B10101111)
W = 0xB5 (B10110101)
Despus de la Instruccin
REG = 0x1A (B00011010)
W = 0xB5 (B10110101)
455
INICIO
ANEXO 3
DIRECTIVAS DEL
LENGUAJE ENSAMBLADOR
456
INICIO
GENERALIDADES
El lenguaje ensamblador provee una plataforma para desarrollar los cdigos
de los programas en los microcontroladores. En este anexo se expondr
una explicacin acerca de las opciones de comandos y las directivas que
ofrece este lenguaje.
En el momento en el que te dispones a ensamblar un programa editado, en
el MPLAB tendrs acceso a una ventana, tal como la que se muestra en la
siguiente pgina. All podrs establecer una serie de comandos de opcin
para que tengas la posibilidad de generar o no diferentes archivos que
provendrn de tu archivo editado o archivo fuente, el cual deber tener
un nombre y la extensin .asm. Por ejemplo, si el archivo que editaste
tiene como nombre miprog.asm, entonces podrs generar los siguientes
archivos:
INICIO
458
INICIO
Por defecto
Descripcin
/a
INHX8M
/c
On
/d
Ninguno
/e
On
/l
On
/m
On
/o
On
/p
Ninguno
/q
Off
/r
Hexadecimal
/t
/w
/x
Off
INICIO
Habilita/Deshabilita
459
la generacin de la tabla de referencia
INICIO
Directiva
Descripcin
Sintaxis
Ejemplo
_ _BADRAM
_ _badram <exp>
_ _badram 87-89,91
CBLOCK
cblock[<exp>]
<etiq> <,etiq>
endc
cblock 0x20
nomb1, nomb2...
endc
_ _CONFIG
_ _config<exp>
_ _config HFFFF
CONSTANT
constant <etiq>
constant long=125
DATA
data 1, 2, externa
DB
<etiq> db <exp>
db t, 0xd, e, 3
DE
<etiq> de <exp>
de miprog, 0
#DEFINE
#define<nomb>
[<tex>]
#define
DT
Define tabla
<etiq> dt <exp>
dt
val1, val2
DW
<etiq> dw <exp>
dw
ELSE
else
else
ENDC
dw
end
461
long
20
frio
end
INICIO
Directiva
Descripcin
Sintaxis
Ejemplo
ENDC
endc
endc
;ver CBLOCK
ENDIF
endif
endif
;ver IF
ENDM
endm
endm
;ver MACRO
ENDW
endw
endw
;ver WHILE
EQU
ERROR
error <texto>
ERRORLEVEL
errorlevel
0|1|2<+|-><num>
errorlevel 1, -212
EXITM
exitm
exitm
EXPAND
expand
expand
FILL
Llena memoria
fill 0x100, 5
_ _IDLOCS
Especifica localizaciones ID
_ _idlocs <exp>
idlocs 1234
462
;ver MACRO
INICIO
Directiva
IF
ELSE
ENDIF
IFDEF
IFNDEF
Descripcin
Sintaxis
Ejemplo
if <exp>
<instruc>
<else <exp>>
<instruc>
endif
ifdef <etiq>
<instruc>
endif
ifndef cierto
dw no_cierto
endif
#INCLUDE
include <arch>
include p16f84.inc
LIST
list |<lista>|
list p=16c71,r=dec
LOCAL
local <etiq>
local
MACRO
ENDM
<etiq> macro
<instruc>
endm
_ _MAXRAM
_ _maxram<exp>
_ _maxram 0x0bf
MESSG
messg <text>
messg error 1
NOEXPAND
noexpand
noexpand
463
INICIO
Directiva
Descripcin
Sintaxis
Ejemplo
NOLIST
nolist
nolist
ORG
org
PAGE
page
page
PROCESSOR
processor<tipo>
processor 16f84
RADIX
radix<base num>
RES
Reserva memoria
<etiq>res <num>
menres
SET
<label> set<exp>
long
set
SPACE
space <exp>
space
SUBTITLE
subtitle <texto>
subtitle
TITLE
title <texto>
title
#UNDEFINE
#undefine <etiq>
#undefine long
VARIABLE
variable
<etiq>=>exp>
variable grablong=64
constant parclong=512
WHILE
while <exp>
while i<contador
i+=1
endw
ENDW
464
50
;ver p2-18
res
64
0x12;
lazo
comienzo
INICIO
ANEXO 4
REGISTROS Y BITS DE FUNCIONES ESPECIALES
465
INICIO
PIC16C54 y 56
MEMORIA DE DATOS DE LOS
PIC16C54 Y 56
00h
01h
02h
03h
INDF(1)
TMRO
PCL
05h
STATUS
FSR
PORTA
06h
PORTB
04h
07h
0Fh
10h
REGISTROS
DE
PROPSITOS
GENERALES
1Fh
466
INICIO
PIC16C55
MEMORIA DE DATOS DEL
PIC16C55
INDF(1)
00h
01h
02h
03h
TMRO
PCL
STATUS
FSR
PORTA
04h
05h
06h
PORTB
PORTC
07h
0Fh
10h
1Fh
REGISTROS
DE
PROPSITOS
GENERALES
467
INICIO
PIC16C57
FSR<6:5>
Direccin
de registro00h
01h
02h
03h
04h
05h
06h
07h
08h
0Fh
00
INDF(1)
TMRO
PCL
STATUS
FSR
PORTA
PORTB
PORTC
REGISTROS
DE
PROPSITOS
GENERALES
10h REGISTROS
DE
PROPSITOS
GENERALES
1Fh
Banco 0
01
10
20h
40h
11
60h
2Fh
4Fh
50h
30h REGISTROS
DE
PROPSITOS
GENERALES
5Fh
3Fh
Banco 1
468
6Fh
REGISTROS 70h
DE
PROPSITOS
GENERALES
7Fh
Banco 2
REGISTROS
DE
PROPSITOS
GENERALES
Banco 3
INICIO
PIC16C58
FSR<6:5>
Direccin
de registro00h
01h
02h
03h
04h
05h
06h
07h
0Fh
00
INDF(1)
TMRO
PCL
STATUS
FSR
PORTA
PORTB
REGISTROS
DE
PROPSITOS
GENERALES
10h REGISTROS
DE
PROPSITOS
GENERALES
1Fh
Banco 0
01
10
20h
40h
11
60h
2Fh
4Fh
50h
30h REGISTROS
DE
PROPSITOS
GENERALES
5Fh
3Fh
Banco 1
469
6Fh
REGISTROS 70h
DE
PROPSITOS
GENERALES
7Fh
Banco 2
REGISTROS
DE
PROPSITOS
GENERALES
Banco 3
INICIO
Registros de funciones
especiales y bits de los PIC16C5X
Valor despus Valor despus
TOCS
TOSE PSA
PS2
PS1
PS0
de encender
WDT y MCLR
N/A
OPTION
00h
INDF
01h
TMRO
02h
PCL
03h
STATUS PA2
04H
FSR
05h
PORTA
RA3
RA2
RA1
RA0
06H
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
07H
PORTC
RC7
RC6
RC5
RC4
RC3
RC2
RC1
xxxx xxxx
PA0
TO
PD
DC
uuuu uuuu
470
uuuu uuuu
0001 1xxx
1xxx xxxx
RC0
INICIO
PIC16F84
Banco 0
471
Banco 1
INICIO
472
INICIO
BANCO 0 PIC16F87X
473
INICIO
BANCO 1 PIC16F87X
474
INICIO
BANCOS 2 y 3 PIC16F87X
475
INICIO
ANEXO 5
INTERFACES Y PROYECTOS CON
MICROCONTROLADORES PIC
476
INICIO
Algunas Interfaces
En las siguientes figuras se mostrarn algunos circuitos que podrs emplear como
interfaces de entrada y salida, para que ellos acten con los microcontroladores. En
s, no se dan detalles del funcionamiento; sin embargo, con tus conocimientos de
electrnica, esperamos que sepas interpretar cmo trabajan.
El hecho de que estas interfaces se presenten aqu, de ninguna manera significa que
sean las nicas soluciones para poder conectar tu microcontrolador al mundo exterior.
Simplemente los presentamos, para darte una idea de cmo convertir seales de 0 a
5v, las cuales generan los microcontroladores, en rdenes que pueden manejar
elementos que trabajen a tensiones diferentes.
Por otro lado, tambin podrs
observar cmo seales de tensiones diferentes a la de los niveles lgicos, puedan ser
adaptadas para que la lean los microcontroladores.
En la siguiente parte, se presenta una lista de proyectos propuestos, y al lado se
presenta el nmero de nota de aplicacin que puedes consultar para que los puedas
desarrollar. Las notas de aplicacin fueron obtenidas del sitio www.microchip.com,
por lo tanto las encontrars en ingls. Otros sitios web que podrs consultar, los
podrs acceder mediante algn motor de bsqueda al colocar palabras claves, tales
como:
microcontroladores, pic, proyectos, entre otras. (p.e. en
www.google.com). De todas formas, al final de este anexo te presentamos alguanas
direcciones en espaol que t podrs acceder donde se describen algunos proyectos
en espaol.
477
INICIO
Encendido de un diodo
emisor de luz (LED)
Terminal
del Puerto
Terminal
del Puerto
Encendido con un 1 lgico
478
INICIO
Lectura de interruptores
o pulsadores
4 Resistencias de 4,7K
5V
18 17 16 15 14 13 12 11 10
PIC16C54
1 2 3 4 5
Vss
PIC
16F84A
6 7 8 9
5V
479
INICIO
Control de la Lnea
de Corriente Alterna
Rel
NC
C
NA
0 a 5V
480
INICIO
Control de la Lnea de
Corriente Alterna 1
0 a 5V
0 a 5V
481
INICIO
Control de la Lnea de
Corriente Alterna 2
0 a 5V
482
INICIO
Control de la Lnea de
Corriente Alterna 3
0 a 5V
483
INICIO
Detector de Cruces
por Cero
0 a 5V
484
0 a 5V
INICIO
Encendido de un Indicador de 7
Segmentos nodo Comn (Display)
Segmento a
Segmento b
Segmento c
0 a 5V
Segmento d
Segmento e
Segmento f
Segmento g
485
INICIO
Encendido de un Indicador 7
Segmentos de varios dgitos
Dgito 0
0 a 5V
Dgito 1
Dgito 2
Dgito 3
Segmento a
Segmento b
Segmento c
Segmento d
0 a 5V
Segmento e
Segmento f
Segmento g
486
INICIO
MATRIZ DE LEDS
Valores
de cada
Columna
0 a 5V
Seleccin de
columna
0 a 5V
487
INICIO
Lectura de un teclado
matricial
R1
10k
Ra0
Ra1
0 a 5V
Ra2
Entradas Ra1
R2
10k
R4
10k
R3
10k
S1
S2
S3
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15
S16
S4
Rb0
Rb1
0 a 5V
Salidas
Rb2
Rb3
488
INICIO
489
INICIO
Interruptor Analgico
0 a 5V
490
INICIO
Notas de Aplicacin
PIC16C5X y PIC16F84
AN712 Detector Autobaudio RS-232 para dispositivos PIC16C5X.
AN619 Interfaces para un PIC16C5X con las memorias 93XX76 y 93XX86.
AN657 Decodificador de un control remoto Infrarrojo con un PIC16C5X.
AN526 Rutinas de utilidad matemtica para los PIC16C5x/PIC16Cxx.
AN541 Utilizacin de un PIC16C5x como un perifrico inteligente IIC.
AN530 Interfaz para un PIC16C5X con la EEPROM serial 93CX6.
AN563 Utilizacin de los microcontroladores PIC16C5x como manejadores de LCD.
AN592 Contador de frecuencia con un PIC16C5x.
AN515 Comunicacin con un bus IIC por medio de un PIC16C5X.
TB050 Lectura de varios puntos de temperatura con sensores TC74 y un PIC16C5x.
AN558 Uso de los dispositivos 24XX65 y 24XX32 con los cdigos del PIC16C54.
AN567 Interfaz para un PIC16C54 con una EEPROM serial 24LCXXB.
AN590 Diseo de un reloj con pantalla de leds e interruptores con el PIC16C54.
AN648 Interfaz del microcontrolador PIC16C54 con una EEPROM serial SPI.
AN577 Resultados EMI del PIC16C54A.
AN661 Decodificador Hopping para un codificador KeeLoq por medio de un PIC16C56
AN715 Medida de sincronizacin usando un PIC16F84A y un ADXL202.
AN689 Asistente de ingeniero por medio de un PIC16F84A.
491
INICIO
Notas de Aplicacin
PIC16F87X
AN686 Circuitos Supervisores.
AN246 Manejo de las entradas analgicas de un Convertidor SAR A/D.
AN236 Automatizacin del hogar X-10 usando el PIC16F877A.
AN826 Conceptos para el oscilador de cristal en un rfPIC y un PICmicro.
TB052 Monitorizacin de temperatura multizona.
TB051 Medicin de temperatura.
AN670 Conversin coma flotante a ASCII.
AN777 Multitarea para el PIC16F877 con el Salvo RTOS.
AN732 Implementacin de un cargador boot para el PIC16F87X.
AN693 Entendiendo las especificaciones de un convertidor A/D.
AN656 Programador para calibracin de parmetros.
AN582 Reloj de tiempo real de baja potencia.
TB028 Tcnica para calcular el da de la semana.
TB033 Uso del PIC16F877 para desarrollar cdigos del PIC16CXXX.
AN709 Consideraciones de diseo a nivel de sistema.
TB026 Clculo de chequeo de la memoria de programa con el PIC16F87X.
TB025 Carga de archivos HEX al PIC16F87X.
TB029 Manejador complementario de LEDs.
AN690 Autodeteccin de memoria de IC.
492
INICIO
Notas de Aplicacin
PIC16F87X
TB004 Calibracin automtica del tiempo de espera del WDT.
TB008 Tcnicas para fuentes de alimentacin sin transformador.
AN597 Implementacin a frecuencias ultrasnicas.
AN587 Interfaz de un microcontrolador PIC a un mdulo LCD.
AN607 Detector de fallas de la alimentacin.
AN660 Rutinas de coma flotante.
AN595 Mejora de la Susceptibilidad de una aplicacin.
AN591 Bus de escritorio de la Apple.
AN594 Uso de los mdulos CCP.
AN655 Conversin D/A por medio de un PWM y una red R-2R.
AN667 Cargador inteligente de bateras con interfaz SMBus.
AN617 Rutinas de coma flotante.
AN893 Control de un motor DC con escobillas por medio del PIC16F684.
AN892 Monitor de seguridad contra falla e interruptor de frecuencia con un PIC16F684.
AN889 Control VF de motores de induccin trifsicos por medio del PIC16F7X7.
AN880 Referencia rpida de cdigos de conversin entre un 8051 y un PIC.
AN879 Uso de un PIC de bajo consumo para un mdulo reloj despertador.
AN258 Programador de microcontroladores con interfaz USB de bajo costo.
AN774 Comunicacin asncrona con el mdulo USART.
AN212 Sensor inteligente de nodo CAN utilizando el MCP2510 y el PIC16F876.
493
INICIO
Notas de Aplicacin
Otros PIC
494
INICIO
Notas de Aplicacin
Otros PIC
AN734 Utilizaci{on del mdulo SSP en modo esclavo para la comunicacin I2C.
AN216 Controlador de convertidor DC/DC con un microcontrolador PIC.
AN214 Compatibilidad de un transductor inteligente IEEE 1451.2 con un PIC.
AN731 Incrustacin de un microcontrolador PIC en el Internet.
AN730 Chequeo y generacin CRC.
TB016 Implementacin de un ICSP con un PIC16F8X.
TB013 Implementacin de un ICSP con un PIC16CXXX.
AN585 Sistema operativo en tiempo real para un PIC16/17.
AN724 Utilizacin de un PIC para conectar a Internet va PPP.
AN656 Uso de parmetros de calibracin para la programacin serial en los PIC.
AN703 Conexin de un PIC con el convertidor serial de 12 bits MCP320X.
AN580 Utilizacin del temporizador 1 en modo de reloj asncrono.
AN578 Uso del mdulo SSP en el ambiente multimaestro IIC.
AN579 Utilizacin del puerto paralelo de 8 bits.
AN714 Implementacin de sistema de seguridad inalmbrico con Keeloq y un PIC.
AN716 Migracin de diseos desde el PIC16C74A/74B hacia el PIC18C442
AN719 Interfaz del convertidor analgico a digital MCP3201 con un microcontrolador PIC.
TB028 Tcnica para calcular el da de la semana.
AN701 Eliminador de batera en modo de conmutacin basado en un PIC16C72A.
AN700 Convertidor Delta-Sigma por medio de un mdulo de comparacin analgica.
495
INICIO
Notas de Aplicacin
Otros PIC
PICREF-3 Medidor de vatios hora.
PICREF-2 Cargador de bateras inteligente.
PICREF-5 Cargador de bateras nivel 3 del SMBus para el PIC16C73A.
TB020 Emulacin del PIC12C67X con el PIC16C72.
AN672 Decodificador de cdigo Hopping con PIC del la gama media.
TB004 Calibracin automtica del perodo de espera del temporizador WDT.
TB008 Fuente de alimentacin sin transformadores.
AN668 Interfaz de un PIC16C92x a una EEPROM serial SPI.
AN514 Tcnicas de interrupcin por Software.
AN654 El PWM, una solucin de software mediante los PIC16CXXX.
TB010 Un convertidor A/D de 4 canales de 8bits a un PIC17C4X.
AN546 Utilizacin del Convertidor Analgico a Digital.
AN597 Implementacin en el rango ultrasnico.
AN615 Diseo de un reloj econmico mediante tcnicas de baja potencia.
AN511 Reemplazo de PLD.
AN589 Desarrollo de un programador basado en un PC para el PIC16C84.
TB011 Utilizacin de la SRAM con un PIC16CXX.
AN588 Gua de diseo de osciladores para los PIC16/17.
AN607 Determinacin de fallas de encendido.
AN663 Decodificador sencillo de cdigo Hopping con Keeloq.
496
INICIO
Notas de Aplicacin
Otros PIC
AN529 Manejador de LED y teclado 4x4 por muestreo.
AN606 Utilizacin de diseos de baja potencia con PIC16/17.
AN566 Utilizacin del las interrupciones del puerto B como interrupciones externas.
AN576 Tcnicas para deshabilitar interrupciones globales.
AN616 Procesamiento digital de seales con el PIC16C74.
AN662 Decodificador de Cdigo Hopping con KeeLoq por medio de aprendizaje seguro.
Fact 2 Convertidor A/D del PIC16C7X.
AN552 Implementacin de un despertador con teclado.
AN520 Comparaciones entre microcontroladores de 8 bits.
AN556 Implementacin de una tabla de lectura.
AN522 Consideraciones durante el encendido.
AN595 Mejoramiento de la susceptibilidad en una aplicacin a ESD.
AN649 Caracterssticas del reloj del PIC16C924.
AN531 Posicionador remoto inteligente.
AN575 Rutinas de coma flotante compatibles con la norma IEEE 754.
AN658 Fundamentos de los LCD con los PIC16C92X.
AN613 Uso de las EEPROMs seriales de la serie 93 con el puerto SPI.
AN513 Conversin Analgica a Digital.
AN600 Control de flujo de aire con lgica difusa.
AN527 Software administrador de la pila (Stack).
497
INICIO
Notas de Aplicacin
Otros PIC
AN528 Implementacin de un despertador con teclado.
AN557 Voltmetro digital de cuatro canales con teclado y pantalla.
AN560 Uso de las EEPROM seriales 93LC56 y 93LC66.
AN535 Lgica a utilizar con EEPROM seriales.
AN655 Conversin D/A por medio del PWM y una red R-2R para generar ondas seno y
DTMFL.
AN643 Modulacin de Cdigo de Pulso Diferencial Adaptable.
AN647 Interfaz entre un PIC16C64/74 con una EEPROM Serial.
Fact 3 Cuidado y alimentacin del PIC16C74.
AN584 Soporte de PICMASTER en Microsoft Windows(TM) DDE.
AN521 Intefaz con lneas de potencia AC.
AN554 Implementacin de Software del bus of IC maestro.
AN611 Medicin de Resistencia y Capacitancia cou un PIC 16C622.
AN667 Cargador de batera inteligente con la interfaz SMBus.
AN555 Implementacin de Software para el puerto serial asncrono.
AN519 Desarrollo de un ratn serial.
Fact 1 Gua de diseo de osciladores para los PIC.
498
INICIO
http://www.comunidadelectronicos.com/sitios2.htm
http://www.siste.com.ar/enlacesarchivos/Micros.htm
http://www.sagitron.es
http://www.todorobot.com.ar
http://www.todopic.com.ar/
http://robotia.com.ar/rb/links/links.htm
http://www.abcdatos.com/tutoriales/electronicayelectricidad/electronica/microcon
troladorespic.html
http://perso.wanadoo.es/juanramon.villodas/favorite.htm
http://www.micropic.arrakis.es/marcos.htm
http://www.miguelo.com.ar/mchip/index.html
http://www.conket.com/modules.php?name=Topics
http://www.geocities.com/micramtechnologies/seteando.htm
http://www.hackemate.com.ar/mirrors/karpoff/manuales/topcite/archivos/hitechP
IC.htm
http://boards1.melodysoft.com/app?ID=creatronica.microcontroladores&DOC=1
21
http://www.geocities.com/alva_cesar/rutas.htm
499
INICIO
ANEXO 6
ACTUALIZACIN DEL PICSTART PLUS
500
INICIO
INICIO
INICIO
503
INICIO
ANEXO 7
GRABACIN DE UN PROGRAMA EN LOS PIC16F87X
504
INICIO
Grabacin de un programa
en un PIC16F87X
La grabacin de un microcontrolador PIC16F87X se realiza en forma serial, y para ello
se puede hacer aplicando una tensin baja al terminal MCLR#/Vpp (5V) o con una
tensin alta aplicada a ese terminal (13V 5%). Para programar en ambos casos se
utilizan la lnea RB6/PGC para colocar los pulsos de sincronizacin o seal de reloj, y la
lnea RB7/PGD para colocar los bits datos en serie. En el caso de optarse por la
programacin de tensin baja, entonces se deber colocar el terminal RB3/PGM en
nivel alto.
A continuacin te presentamos los planos y las instrucciones para que hagas un
programador de los PIC16F84 y los de la serie PIC16F87X. Los programas para este
programador los podrs bajar en Internet en la direccin:
http://www.todorobot.com.ar.
505
INICIO
506
INICIO
El PicProg
Descripcin:
PicProg
Programador para PIC 16F8xx
(Versin 2.0)
(c) TodoRobot - 2002
El PicProg estpreparado para programar los siguientes modelos de la familia de
Microchip:
16F84, 16F870, 16F871, 16F872, 16F873, 16F874, 16F876, 16F877.
El PicProg le permite Programar, Verificar y Borrar todos los modelos anteriormente
detallados.
El archivo Hexadecimal (.hex) a grabar debe ser formato Intel INHX8M. ste es el
formato estndar generado por la herramienta de desarrollo MPLAB que puede
descargarse gratis en el sitio de Microchip.
Para ir al sitio web donde est el software de instalacin del PicProg haz clic aqu.
507
INICIO
Borrar
Esta funcin es solamente necesaria cuando el PIC ha sido programado con cdigo de
proteccin (CP). En estos caso la nica forma de regrabar el micro es efectuando un
borrado general. Est funcin borra la memoria de programa y la de datos.
508
INICIO
INICIO
Algunas sugerencias
IMPORTANTE: Antes de insertar o extraer un micro del zcalo de programacin, se
debe tener la precaucin de retirar la alimentacin del programador, debido a que no se
ha previsto ningn circuito de aislamiento y podra resultar daado el chip o el puerto
paralelo de la PC. Asimismo es aconsejable no alimentar el programador hasta tanto el
programa PicProg no haya sido ejecutado y se encuentre activo en pantalla.
http://www.todorobot.com.ar
510
INICIO