pic gama media - arquitectura y técnicas de programación
Post on 06-Jul-2018
227 Views
Preview:
TRANSCRIPT
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
1/197
LOS PIC DE LA GAMA MEDIA.
ARQUITECTURA Y TÉCNICAS DEPROGRAMACIÓN.
Santiago Salamanca MiñoDavid Arroyo Muñoz
Octubre de 2003
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
2/197
Este libro es el resultado del Proyecto Fin de Carrera realizado por el alumno DavidArroyo Muñoz y dirigido por Santiago Salamanca Miño. Está basado en los apuntes de
clase de la asignatura Informática Industrial de la Titulación de Ingeniero Técnico
Industrial, especialidad Electrónica Industrial, que se imparte en la Escuela de
Ingenierías Industriales de la Universidad de Extremadura.
Agradecemos la información suministrada por Jorge Jesús Pérez García para la
corrección de este documento.
Si encuentras alguna errata o quieres hacer algún comentario, puedes escribir al
siguiente correo electrónico:
ssalaman@unex.es
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
3/197
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
I
ÍNDICE GENERAL
1 Introducción a los Microcontroladores......................................................................11.1 ¿Qué es un microcontrolador? .................................................................1
1.2 Aplicaciones.............................................................................................3
1.3 Los microcontroladores PIC. ...................................................................3
1.4 Las Gamas de los PIC. ............................................................................. 5
1.5 Los PIC de la Gama Media......................................................................6
2 La Arquitectura de los PIC de la Gama Media......................................................... 11
2.1 Introducción. ........................................................................................... 112.2 Organización de la memoria...................................................................13
2.2.1 Organización de la memoria de programa......................13
2.2.2 Organización de la memoria de datos.............................16
2.2.3 Registros y recursos comunes.........................................19
2.2.3.1 Registro de Estado. .......................................19
2.2.3.2 Registro de Opciones. ...................................20
2.2.3.3 Palabra de configuración. ............................. 21
2.3 Oscilador................................................................................................. 22
2.4 Reset........................................................................................................26
2.5 Temporizador y Perro Guardián. ............................................................34
2.6 Puertas E/S.............................................................................................. 36
2.7 Modo de reposo o SLEEP....................................................................... 37
3 Juego de Instrucciones de los PIC de la Gama Media..............................................39
3.1 Introducción. ........................................................................................... 39
3.2 Flujo de instrucciones. Segmentación. ................................................... 40
3.3 El formato de las instrucciones............................................................... 41
3.4 Juego de instrucciones. ........................................................................... 43
3.4.1 Descripción detallada de las instrucciones
por orden alfabético. ....................................................... 45
4 Los Periféricos de los PIC de la Gama Media. ......................................................... 63
4.1 Introducción. ........................................................................................... 63
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
4/197
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
II
4.2 Interrupciones. ........................................................................................ 63
4.2.1 Registros de control. ....................................................... 65
4.2.1.1 Registro INTCON......................................... 654.2.1.2 Registros PIE. ............................................... 66
4.2.1.3 Registros PIR. ...............................................67
4.2.2 Fases de una interrupción. ..............................................70
4.3 Puertas de E/S......................................................................................... 72
4.3.1 Puerta A. ......................................................................... 73
4.3.2 Puerta B. ......................................................................... 75
4.3.3 Puerta C. ......................................................................... 774.3.4 Puerta D. ......................................................................... 78
4.3.5 Puerta E...........................................................................78
4.3.6 Puertas F y G. .................................................................79
4.3.7 Puerta GPIO.................................................................... 80
4.3.8 Operaciones sucesivas en un Puerto E/S. ....................... 81
4.4 Puerto Paralelo Esclavo. ......................................................................... 83
4.5 Temporizadores ...................................................................................... 86
4.5.1 TMR0.............................................................................. 86
4.5.2 TMR1.............................................................................. 90
4.5.3 TMR2.............................................................................. 92
4.6 Módulos CCP.......................................................................................... 93
4.6.1 Modo de captura. ............................................................ 94
4.6.2 Modo de comparación. ................................................... 96
4.6.3 Modo PWM. ................................................................... 97
4.7 Módulo de Tensión de Referencia......................................................... 100
4.8 Módulo Comparador Analógico. ........................................................... 102
4.9 Convertidor A/D. ................................................................................... 106
4.10 Módulos de comunicación serie. ......................................................... 112
4.10.1 Puerto Serie Síncrono (SSP)........................................... 112
4.10.1.1 Modo SPI. ....................................................................115
4.10.1.2 Modo I2C. .................................................................... 117
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
5/197
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
III
4.10.2 USART. .......................................................................... 125
4.10.2.1 Modo asíncrono. ...................................128
4.10.2.2 Modo síncrono......................................1335 Programación con PIC. ............................................................................................137
5.1 Introducción. ..........................................................................................137
5.2 Directivas del ensamblador MPASM.................................................... 137
5.3 Creación de programas. ......................................................................... 156
5.3.1 Un solo código fuente (ensamblador)............................ 156
5.3.2 Varios códigos fuente (linkador). .................................. 157
5.3.3 Utilización de librerías................................................... 1585.4 Estructuras básicas de programación..................................................... 160
5.4.1 Estructuras iterativas......................................................160
5.4.1.1 While............................................................160
5.4.1.2 Do while.......................................................161
5.4.1.3 For................................................................161
5.4.2 Estructuras condicionales. .............................................162
5.4.2.1 If...................................................................162
5.4.2.2 If ... else........................................................163
5.4.3 Códigos de condición.....................................................164
5.4.3.1 Igual. ............................................................164
5.4.3.2 Distinto.........................................................164
5.4.3.3 Mayor...........................................................164
5.4.3.4 Mayor o igual...............................................165
5.4.3.5 Menor...........................................................165
5.4.3.6 Menor o igual...............................................165
5.4.3.7 Condiciones más complejas.........................165
5.5 Ejemplo de librerías: librería matemática.............................................. 166
5.5.1 Rutinas de coma flotante................................................ 166
5.5.1.1 Manejo de excepciones................................168
5.5.1.2 Redondeo. .................................................... 168
5.5.1.3 Conversión de entero a flotante. ..................168
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
6/197
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
IV
5.5.1.4 Normalización.............................................. 168
5.5.1.5 Conversión de flotante a entero. .................. 169
5.5.1.6 Suma/Resta. ................................................. 1695.5.1.7 Multiplicación.............................................. 169
5.5.1.8 División........................................................ 170
5.5.2 Rutinas en coma fija. ..................................................... 171
5.5.2.1 Multiplicación.............................................. 171
5.5.2.2 División........................................................ 172
5.5.3 Funciones matemáticas en coma flotante. ..................... 173
5.5.3.1 Función raíz cuadrada.................................. 1745.5.3.2 Funciones exponenciales. ........................... 175
5.5.3.3 Funciones logarítmicas. ............................... 176
5.5.3.4 Funcione trigonométricas. ........................... 178
5.5.3.5 Función potencia.......................................... 179
5.5.3.6 Función parte entera por defecto. ................ 182
5.5.3.7 Comparación lógica en coma flotante. ........ 182
5.5.3.8 Generador aleatorio de números enteros. .... 183
5.5.4 Conversión de coma flotante a ASCII. .......................... 183
5.5.4.1 Conversión de coma flotante
a ASCII en base 10. ..................................... 184
5.5.4.2 Personalización de la rutina. ........................ 184
5.5.4.3 Resumen. ..................................................... 185
APÉNDICE A: Protocolo I2C........................................................................................ 187
A.1 Introducción......................................................................................... 187
A.2 Inicialización y fin de transferencia de datos....................................... 187
A.3 Direccionamiento de dispositivos en I2C............................................. 188
A.4 Reconocimiento de transferencia......................................................... 189
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
7/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
1
Capítulo 1. Introducción a los microcontroladores.
1.1 ¿Qué es un microcontrolador?
Hace unos años, los sistemas de control se implementaban usando exclusivamente lógica de
componentes, lo que hacía que fuesen dispositivos de gran tamaño y muy pesados. Para
facilitar una velocidad más alta y mejorar la eficiencia de estos dispositivos de control, se
trató de reducir su tamaño, apareciendo así los microprocesadores. Siguiendo con el proceso
de miniaturización, el siguiente paso consistió en la fabricación de un controlador que
integrase todos sus componentes en un sólo chip. A esto es a lo que se le conoce con el
nombre de microcontrolador , un computador dentro de un sólo chip.
Las principales características que diferencian a un microcontrolador de un microprocesador
son:1. Son sistemas cerrados, ya que contiene todos los elementos de un computador en
un solo chip, frente a los microprocesadores que son sistemas abiertos, ya que
sacan las líneas de los buses de datos, direcciones y control al exterior, para la
conexión de memorias, interfaces de E/S, etc.
2. Son de propósito específico, es decir, son programados para realizar una única
tarea, mientras que los microprocesadores son de propósito general.
La historia de los microcontroladores surge desde dos vías de desarrollo paralelas; una desde
Intel y otra desde Texas Instruments. Los primeros microcontroladores son el 4004 y 4040 de
Intel que dieron lugar al 8048, a su vez predecesor del 8051. Aún así el primer
microcontrolador fue el TMS1000 de Texas Instruments. Éste integraba un reloj, procesador,
ROM, RAM, y soportes de E/S en un solo chip.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
8/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
2
Un microcontrolador, típicamente consta de:
-CPU o procesador.- Es el cerebro del sistema que procesa todos los datos que viajan a
lo largo del bus.-Memorias.- Está formada por una no volátil (ROM, EEPROM, FLASH) donde se
almacenan los programas y una volátil (RAM) donde se almacenan los datos.
-Reloj principal.- Normalmente todos los microcontroladores tienen incorporados
circuitos osciladores para el funcionamiento de éstos.
-Puertos E/S (Entrada/Salida).- Soportan las líneas que comunican al microcontrolador
con los periféricos externos.
-Perro guardián o Watchdog.- Contador que resetea al microcontrolador cada vez querebosa. Sirve para evitar fallos de funcionamiento, por lo que hay que
inicializarlo periódicamente antes de que rebose.
-Protección ante fallo de alimentación o Browout.- Circuito que resetea al
microcontrolador cuando la tensión de alimentación baja de un cierto límite.
-Temporizadores.- Para controlar periodos de tiempo.
-Convertidores A/D y D/A. (Analógico/Digital y Digital/Analógico)
-Comparadores analógicos
-Moduladores de anchura de impulsos.
-Puertos de comunicación.- Tanto serie como paralelo.
-Control de interrupciones
Debido a que los microcontroladores sólo incluyen las características específicas para una
tarea, su coste es relativamente bajo. Un microcontrolador típico realiza funciones de
manipulación de instrucciones, posee E/S de accesos fáciles y directos, y un proceso de
interrupciones rápido y eficiente. Además también reducen de manera notable los costes de
diseño. Hay gran variedad de microcontroladores. Dependiendo de la potencia y
características que se necesiten, se pueden elegir microcontroladores de 4, 8, 16 ó 32 bits.
Además existen versiones especializadas que incluyen módulos especiales para
comunicaciones, teclados, procesamiento de señales, procesamiento de video, y otras tareas.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
9/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
3
1.2 Aplicaciones
El mercado de los microcontroladores está creciendo cada año y parece no tener barreras. Los
microcontroladores a menudo se encuentran en aplicaciones domésticas ( microondas,
refrigeradores, televisión, equipos de música), ordenadores con sus componentes (impresoras,
módems, lectores de discos), coches (ingeniería de control, diagnostico, control de
climatización), control medioambiental (invernaderos, fabricas, casas), instrumentación,
aeronáutica, y miles de usos más. En muchos podemos encontrar más de un microcontrolador.
Los microcontroladores son muy usados en robótica, donde la comunicación entre
controladores es una gran ventaja. Esto hace posible muchas tareas específicas al distribuir un
gran número de microcontroladores por todo el sistema. La comunicación entre cada
microcontrolador y uno central permitiría procesar la información por un ordenador central, o
transmitirlo a otros microcontroladores del sistema.
Otro ejemplo de aplicación de los microcontroladores, es la de utilizarlos para monitorizar y
gravar parámetros medioambientales (temperatura, humedad, precipitaciones, etc.). Pequeño
tamaño, bajo consumo de potencia, y flexibilidad hacen de este dispositivo ideal para este tipo
de aplicaciones.
1.3 Los microcontroladores PIC (Microchip)
Los microcontroladores PIC fueron los primeros microcontroladores RISC, es decir,
microcontroladores con un juego de instrucciones reducido. El hecho de ser procesadores de
tipo RISC generalmente implica simplicidad en los diseños, permitiendo más características a
bajo coste.
Los principales beneficios de esta simplicidad en el diseño son que los microcontroladores se
implementan en chip muy pequeños, con pocos pines, y tienen un consumo de potencia muy
bajo.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
10/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
4
Los microcontroladores PIC ganaron popularidad rápidamente. Aparecían con frecuencia en
revistas de ocio, y su uso era cada vez mayor en gran número de diseños. Debido a su bajocosto, pequeño tamaño, y bajo consumo, estos microcontroladores pueden ahora ser usados en
áreas en las que previamente no habrían sido apropiados (tal como circuitos lógicos).
Las principales características de los PIC son:
-Arquitectura Harvard.- Consiste en la existencia de dos memorias independientes,
una de datos y otra de instrucciones, con sus respectivos buses. Esto permite elacceso simultaneo al programa y los datos, y solapar algunas operaciones para
mejorar el proceso.
-Segmentación de instrucciones.- Consiste en dividir la ejecución de las
instrucciones en varias fases, en el caso concreto de los PIC dos fases, de
manera que se realizan simultáneamente distintas fases de distintas
instrucciones. Así cada instrucción se ejecuta en un ciclo de instrucción (4
ciclos de reloj), excepto las de salto que ocupan tantos ciclos de instrucción
como necesite para calcular la dirección de salto.
-Formato de instrucciones de longitud constante.- Permite optimizar la memoria de
instrucciones y el diseño de ensambladores y compiladores.
-RISC (computador de reducido juego de instrucciones)
-Instrucciones ortogonales.- Todas las instrucciones pueden manejar cualquier
elemento de la arquitectura como fuente o destino.
-Arquitectura basada en un banco de registros.- Todos los objetos del sistema se
encuentran implementados físicamente como registros.
-Gran variedad de microcontroladores y muchas herramientas de soporte.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
11/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
5
1.4 Las gamas de los PIC
La forma de designación de los PIC en general obedece a la siguiente estructura:
PIC nn LLL xxx
Siendo :
nn – un número propio de la gama del PIC.
LLL – código de letras donde la primera indica la tensión de alimentación y las otrasdos el tipo de memoria que utiliza. En la tabla 1.1 se puede ver las distintas
opciones que se pueden dar.
TABLA 1.1 Nomenclatura de los PIC.LETRAS ALIMENTACIÓN MEMORIA
C Standard (4.5-6.0 V) EPROMCR Standard (4.5-6.0 V) ROMF Standard (4.5-6.0 V) FLASH
LC Extendida (2.5-6.0 V) EPROM
LCR Extendida (2.5-6.0 V) ROM
LF Extendida (2.0-6.0 V) FLASH
xxx – número que indica el modelo.
Los PIC se clasifican en distintas gamas atendiendo a los recursos disponibles en cada uno de
ellos. Las gamas son:
a) Gama Enana (PIC12Cxxx): La principal característica es que son muy pequeños,
con encapsulados de 8 pines, y un juego de 33 instrucciones de 12 bits.
b) Gama Baja (PIC16C5xx): Los encapsulados son de 18, 20 ó 28 pines. Al igual
que en los anteriores el número de instrucciones es de 33 con un ancho de 12 bits.
La memoria de programa es de 512 palabras, 1K ó 2K, y la de datos está
comprendida entre 25 y 73 bytes. No permite interrupciones.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
12/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
6
c) Gama Media (PIC16Cxxx): Es la gama más variada y completa de los PIC, con
encapsulados desde 18 a 68 pines. Tiene un conjunto de 35 instrucciones de 14 bits de ancho. Permite además características importantes que no soportaban los
anteriores como son:
- Interrupciones
- Pila de 8 niveles que permite anidamiento de subrutinas.
Esta familia a su vez se puede dividir en subfamilias en función de los recursos de
que se dispongan.
d) Gama Alta (PIC17Cxxx): Tienen unas características muy diferentes a lasanteriores, ya que son microcontroladores de arquitectura abierta, es decir, que
sacan sus buses al exterior.
El número de instrucciones es de 58 con una anchura de 16 bits. Tienen
instrucciones vectorizadas.
e) Gama Mejorada (PIC18Cxxx): Es la última gama que ha salido. Tiene memoria
de programa de hasta 1M palabras. La mayoría de las instrucciones son de 16 bits,
aunque las hay también de 32 bits. El número total de instrucciones es de 76.
Esta gama está diseñada para aplicaciones de control. Todos ellos tienen
convertidores A/D y, por ejemplo, están en fase de desarrollo algunos modelos que
tienen interface para el bus CAN.
1.5 Los PIC de la gama media.
A lo largo de este proyecto sólo se hablará de los PIC de la Gama Media, siendo esta la más
variada y completa. En la tabla 1.2 se muestran las características que definen a cada modelo
de los PIC de la Gama Media. Aparecen sólo los más significantes, ya que la variedad es muy
amplia.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
13/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
7
TABLA 1.2 Principales características de los PIC de la Gama Media.Reloj Memoria Periféricos Características
M e m o r i a d e p r o g r a m a
C á p s u l a s
M á x i m a f r e c u e n c i a d e t r a b a j o
E P R O M
E E R O M
M e m o r i a d e d a t o s ( b y t e s )
E E P R O M
d e d a t o s ( b y t e s )
M ó d u l o s d e t e m p o r i z a c i ó n
M ó d u l o s C C P
P u e r t o s s e r i e
P u e r t o P a r a l e l o
C o n v e r t i d o r A / D d e 8 b i t s
C o m p a r a d o r e s
T e n s i ó n i n t e r n a d e r e f e r e n c i a
F u e n t e s d e i n t e r r u p c i ó n
P a t i l l a s d e E / S
R a n g o d e v o l t a j e ( v o l t i o s )
D
e t e c t o r d e f a l l o e n V
D D
“ B r o w n - o u t ”
P
i n e s D I P
P i n e s P L C C
P i n e s Q F P
PIC16C61 20 1K --- 36 --- TMR0 -- --- -- -- -- -- 3 133,0-6,0
--- 18 18 --
PIC16C62 20 2K --- 128 ---TMR0,TMR1
,TMR22 SPI/I2C/SCI -- -- -- -- 10 22
2,5-6,0
--- 28 28 --
PIC16C63 20 4K --- 192 ---TMR0,TMR1
,TMR22 SPI/I2C/SCI --- -- -- -- 10 22
3,0-6,0
--- 28 28 --
PIC16C64 20 2K --- 128 ---TMR0,TMR1
,TMR21 SPI/I2C Si -- -- -- 8 33
3,0-6,0
--- 40 44 44
PIC16C65 20 4K --- 192 ---TMR0,TMR1
,TMR22 SPI/I2C/SCI Si -- -- -- 11 33
3,0-6,0
--- 40 44 44
PIC16C620 20 512 --- 80 --- TMR0 -- ---- -- -- 2 Si 4 133,0-6,0
Si 18 18 20
PIC16C621 20 1K --- 80 --- TMR0 -- ---- -- -- 2 Si 4 133,0-6,0
Si 18 18 20
PIC16C622 20 2K --- 128 --- TMR0 -- ---- -- -- 2 Si 4 133,0-6,0
Si 18 18 20
PIC16C71 20 1K --- 36 --- TMR0 -- ---- -- 4ch -- -- 4 133,0-6,0
--- 18 18 --
PIC16C73 20 4K --- 192 ---TMR0,TMR1
,TMR22 SPI/I2C/SCI -- 5ch -- - - 11 22
3,0-6,0
--- 28 28 --
PIC16C74 20 4K --- 192 ---TMR0,TMR1
,TMR22 SPI/I2C/SCI Si 8ch -- -- 12 33
3,0-6,0
--- 40 44 44
PIC16C76 20 8K --- 368 ---TMR0,TMR1
,TMR22 SPI/I2C/SCI -- 5ch -- - - 11 22
2,5-6,0
Si 28 28 --
PIC16C84 20 -- 1K 36 64 TMR0 -- ---- -- -- -- -- 4 133,0-6,0
--- 18 18 --
A continuación en la figura 1.1 se muestran algunos de los encapsulados utilizados en los PIC
de la Gama Media. Como ya se ha dicho anteriormente, éstos van desde los 18 a 68 pines.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
14/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
8
Figura 1.1 Principales diagramas de patillas.
La descripción de las funciones de las distintas patillas del microcontrolador son:
RA0/AN0-RA2/AN2: Líneas de E/S digitales del Puerto A, o entradas analógicas.
RA3/AN3/VREF: E/S digital, analógica o entrada externa de VREF.
RA4/T0CKI: E/S digital o entrada de reloj externo para TMR0.
RA5/AN4/SS : E/S digital, analógica o selección del puerto síncrono.RB0/INT-RB7: E/S digitales del Puerto B. RB0/INT puede actuar como entrada de
interrupción externa. RB4-Rb7 pueden provocar una interrupción cuando cambian de
estado.
RC0/T1OSO/T1CKI: E/S digital del Puerto C. Conexión del oscilador externo para
el temporizador TMR1 o entrada de reloj para el TMR1.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
15/197
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
9
RC1/T1OSI/CCP2: E/S digital. Conexión del oscilador externo para el TMR1 o
salida del módulo 2 de captura/comparación.
RC2/CCP1: E/S digital. Salida del módulo 1 de captura/comparación.RC3/SCK/SCL: E/S digital. E/S de reloj para el Puerto Serie Síncrono (SSP) en los
módulos SPI o I2C.
RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie
en el modo I2C.
RC5/SDO: E/S digital. Salida de datos serie en el modo SPI.
RC6/TX/CK: E/S digital. Transmisión serie asíncrona. Entrada de reloj para
comunicación serie síncrona.RC7/RX/DT: E/S digital. Recepción serie asíncrona. Línea de datos en la
comunicación serie síncrona.
RD0/PSP0-RD7/PSP7: E/S digitales del Puerto D. Este puerto puede trabajar como
puerto paralelo esclavo para interconexión con un bus de datos de 8 bits de otro
microprocesador.
RE0/RD/AN5: E/S digital del Puerto E. Señal de lectura del puerto paralelo esclavo.
Entrada analógica.
RE1/ WR /AN6: E/S digital. Señal de escritura del puerto paralelo esclavo. Entrada
analógica.
RE2/CS /AN7: E/S digital. Señal de activación del puerto paralelo esclavo. Entrada
analógica.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
16/197
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
17/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
11
Capítulo 2. La Arquitectura de los PIC de la Gama Media.
2.1 Introducción
Desde el punto de vista de la arquitectura, la característica más importante de los PIC es que
utilizan la Harvard, frente a la Von Neumann que es la habitual.
La arquitectura Harvard tiene la memoria de programa y la memoria de datos separadas y seaccede a ellas mediante buses distintos. Esto mejora el ancho de banda sobre la tradicional
arquitectura secuencial, en la cual los programas y datos son buscados en la misma memoria,
utilizando el mismo bus. En la arquitectura Harvard mientras se accede a la memoria de
programa, sobre la memoria de datos se puede estar leyendo o escribiendo, lo que permite
ejecutar una instrucción a la vez que se busca la siguiente.
En la figura 2.1 se muestra el esquema de la arquitectura general de los PIC de la GamaMedia.
Además de las características antes mencionadas, otras características que poseen los PIC de
la Gama Media son:
a) Memoria no volátil de programa de hasta 8K x 14 de tamaño, direccionada por el
contador de programa (PC) de 13 bits.
b) Memoria RAM de datos de hasta 368 x 8 de tamaño, direccionada por el código de
operación o por el registro FSR y parte del registro STATUS.
c) Unidad aritmético-lógica de 8 bits con un registro acumulador de trabajo asociado
también de 8 bits. Realiza operaciones aritméticas y lógicas utilizando siempre
como operando el registro acumulador y otro dato perteneciente a cualquier
registro. Realiza operaciones de suma, resta y desplazamiento. Opera en
complemento a 2 (C’2). Dependiendo del resultado, afecta a algunos bits del
registro de estado.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
18/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
12
Figura 2.1 Diagrama de bloques general de los PIC de la gama media.
Nota 1: Los bits de mayor orden en el direccionamiento directo de la RAM se obtienen del Registro de Estado. 2: No todos los dispositivos tienen estas características, habrá que consultar las hojas de características.3: Muchos de los pines de las puertas E/S de propósito general están multiplexadas con una o más
funciones de los módulos periféricos. La combinación de las funciones multiplexadas dependen deldispositivo.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
19/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
13
d) Oscilador encargado de las generaciones de tiempo del sistema.
e) Circuitos controladores del RESET.
f) Puertos E/S. Existen hasta 7 puertos de E/S, aunque no existe ningún dispositivo
que los implemente todos. Además se multiplexan con distintos elementos del
sistema.
g) Módulos periféricos. Son la característica que diferencia a los distintos
microcontroladores. Éstos facilitan la comunicación con el mundo exterior, tal
como las E/S de propósito general, y tareas internas tal como puede ser la
generación de las distintas bases de tiempo. Los periféricos sobre los que se está
hablando son; E/S de propósito general, hasta tres temporizadores, módulo de
captura, comparación, y PWM (CCP), puerto serie síncrono (SSP), USART (SCI),
módulo para generación de voltajes de referencia, módulos comparadores
analógicos, conversores analógico digital (A/D), módulo para control de Display
de cristal líquido (LCD) y puerto paralelo esclavo (PSP).
h) Registros generales del sistema.
2.2 Organización de la memoria.
La memoria de los PIC está dividida en dos bloques; la memoria de programa y la memoria
de datos. Cada uno de los bloques tiene su propio bus, pudiendo tener acceso a ambos bloques
de memoria en el mismo ciclo de reloj.
2.2.1 Organización de la memoria de programa .
En los PIC de la gama media el contador de programa es de 13 bits, con lo que se puede
direccionar una capacidad de memoria de 8K x 14 bits. El ancho de la memoria de programa
va a ser la longitud de una instrucción que es de 14 bits, por lo se podrán almacenar hasta 8K
instrucciones. De esta forma es fácil determinar si el dispositivo tiene suficiente memoria de
programa para una aplicación deseada.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
20/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
14
Esta memoria de programa a su vez está dividida en cuatro páginas de 2K palabras cada una
(0h – 7FFh, 800h – FFFh, 1000h – 17FFh, y 1800h – 1FFFh). En la figura 2.2 se muestra el
mapa de memoria con la pila de 8 niveles. No todos los dispositivos tienen implementadosestos cuatro bancos.
Figura 2.2 Organización de la memoria de programa y la pila.
Para realizar los saltos entre las páginas de la memoria de programa se utilizan los dos bits
más altos del contador de programa (PC ), los cuales son implementados físicamente
en la memoria de datos en el registro PCLATCH . Si el programa se ejecuta
secuencialmente no es necesario modificarlo.
Dentro de la memoria de programa existen dos direcciones reservadas:
1. Vector de Reset .- En un dispositivo, un reset pone el contador de programa (PC)
a cero. A esta dirección se la denomina “Dirección del Vector de Reset”, donde
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
21/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
15
está la dirección de inicio para la ejecución del programa. Cualquier reset borrará
también el contenido del registro PCLATH, de modo que cuando se produzca un
reset la dirección inicial a de estar localizada en la página 0 de la memoria de programa.
2. Vector de Interrupción .- Cuando una interrupción es reconocida el PC es
forzado a la dirección 0004h. A esto es a lo que se le llama “Dirección del Vector
de Interrupción”. Cuando el PC es forzado con la dirección del vector de
interrupción, el PCLATH no es modificado. Por eso mismo en la dirección del
vector de interrupción, el registro PCLATH debería ser escrito con el valor que
especificará la localización deseada en la memoria de programa. Antes de realizaresta operación, el PCLATH debería ser salvado para volverlo a restaurar al
terminar el tratamiento de la rutina de interrupción.
El contador de programa (PC) es un registro que especifica la dirección de la instrucción que
ha de ser ejecutada. El PC tiene un ancho de 13 bits, correspondiendo el byte más bajo con el
registro de lectura-escritura PCL, implementado en la memoria de datos, y el byte más alto
con el registro PCH. Este último contiene sólo los bits del PC y no se puede leer ni
escribir directamente, sino que son cargados a través del PCLATH.
Existen varias instrucciones que modifican el flujo normal del sistema, y por tanto afectan al
PC. Estas instrucciones son:
1. Instrucciones de salto relativo: Son aquellas instrucciones que usan como
operando destino al PC. En estas instrucciones se cargan los 8 bits menos
significativos desde la UAL. El resto de los bits que coinciden con los del
PCLATH, habría que modificarlos manualmente.
2. Instrucción GOTO de salto incondicional: Carga desde el código de operación
los 11 bits menos significativos. Los dos que quedan se cargan desde el PCLATH
. Si se hace un GOTO a una dirección que está en una página distinta,
primero hay que modificar estos bits del PCLATH.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
22/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
16
3. Instrucción CALL de salto a subrutina: Es igual que la anterior con la diferencia
de que antes de modificar el PC, el valor que tuviese se lleva a la pila.
4. Instrucciones RETURN, RETLW y RETFIE de retornos de subrutinas y rutinasde tratamiento de interrupción: Cargan directamente en el PC el valor que se halla
guardado anteriormente en la pila. No es necesario modificar el PCLATH.
Los PIC de la Gama Media poseen una pila de 8 niveles con un ancho de 13 bits, la cual nos
permite guardar las direcciones de retorno a un programa, cuando en éste se produce un salto
a una subrutina. Esto nos da capacidad para anidar hasta 8 subrutinas producidas por
programa o mediante interrupciones. Si en la pila ya se han almacenado 8 valores, el nuevovalor se cargará sobre el primer nivel de la pila, de modo que puede dar problemas en el
funcionamiento de un programa.
2.2.2 Organización de la memoria de datos.
La memoria de datos (figura 2.3) está dividida en dos partes:
a) Memoria de registros especiales (FSR Memory): Está formada por aquellos
registros que son usados por la CPU y los periféricos para controlar una operación.
b) Memoria de propósito general: Está formada por la memoria que puede usar el
programador.
En ambos casos, está dividida hasta en 4 bancos de memoria de hasta 128 bytes, aunque
muchos de los modelos no traen implementados estos dos últimos bancos. En algunos
modelos de PIC la memoria de propósito general, está sólo implementado físicamente en el
banco0, estando el resto de los bancos mapeados en éste.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
23/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
17
Figura 2.3 Organización de la memoria de datos.
Nota 1: Los registros en negrita están presentes en todos los dispositivos.2: Puede que no todas las posiciones estén implementadas. Las localizaciones no implementadas se
leen como ‘0’.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
24/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
18
El modo de acceso a cada uno de los bancos dependerá del tipo de direccionamiento que se
use.
Estos tipos de direccionamiento son:
1. Direccionamiento directo: La dirección final se obtiene con:
a. Los bits RP1-RP0 del registro de estado (STATUS), los cuales seleccionan
el banco de memoria.
b. Los 7 bits del código de operación, los cuales indican la posición del dato
dentro del banco.
2. Direccionamiento indirecto: Con este tipo de direccionamiento lo que se da es ladirección donde se encuentra la dirección del dato. Para ello se usa el registro
INDF. Al usar este registro (que no está implementado físicamente), lo que se hace
es acceder al registro de datos FSR de 8 bits. Los 7 bits con menos peso del FSR
seleccionan la posición dentro del banco, y el bit de mayor peso junto con el bit
IRP del registro de estado, seleccionan el banco.
Un programa que borra una zona de memoria puede ser un ejemplo de aplicación
de direccionamiento indirecto. El programa sería como el siguiente:
BCF STATUS,IRP ; Selección del banco 0 de memoria.MOVLW 0X20 ; Mueve el valor 20h al registro WMOVWF FSR ; Carga valor de W en FSR
SIGUIENTE CLRF INDF ; Borra la posición de memoria que marca FSRINCF FSR,1 ; Incrementa valor del FSRBTFSS FSR,4 ; Test del bit 4 del FSR, si es 1, no ejecuta la
; siguiente instrucción y salta.GOTO SIGUIENTE ; Vuelve a SIGUIENTE.
……
Este programa ejemplo borraría la memoria de datos desde la posición h’20’ hasta
h’2F’.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
25/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
19
2.2.3 Registros y recursos comunes.
2.2.3.1 Registro de Estado.
Es un registro formado por 8 bits, que contiene el estado de la UAL, del RESET y selecciona
el banco de la memoria de datos sobre la que queremos trabajar.. Por esta última causa, el
registro de estado se encuentra en todos los bancos, y en la misma posición.
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 TO PD Z DC C
bit7 bit0
A continuación se muestra la función de cada bit del registro de estado.
bit 7 IRP: Selección de bancos para el direccionamiento indirecto.1 = Banco 2,3 (100h – 1FFh)0 = Banco 0,1 (00h – FFh)
bit 6:5 RP1:RP0: Selección del banco de la memoria de datos para eldireccionamiento directo.11 = Banco 3 (180h – 1FFh)10 = Banco 2 (100h – 17Fh)
01 = Banco 1 (80h – FFh)00 = Banco 0 (00h – 7Fh) bit 4 TO : Timer Out.
1 = Tras conectar Vdd o ejecutar “CLRWDT” o “SLEEP”.0 = Al rebasar el WDT
bit 3 PD : Power Down1 = Tras conectar Vdd o ejecutar “CLRWDT”.0 = Al ejecutar la instrucción “SLEEP".
bit 2 Z: Bit de cero.1 = El resultado de una operación es 0.0 = El resultado es distinto de 0.
bit 1 DC: Acarreo en el 4º bit de menos peso.1 = Acarreo en la suma y no en la resta.0 = Acarreo en la suma y no en la resta.
bit 0 C: Acarreo en el 8º bit.1 = Acarreo en la suma y no en la resta.0 = Acarreo en la suma y no en la resta.
Estos dos últimos bits, en la suma representan lo que se conoce comúnmente con acarreo, sin
embargo en la resta realizan la función de bit de signo (bit de Borrow ), indicando que el
resultado es negativo si Borrow es 0, y mayor o igual a 0 si es 1.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
26/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
20
2.2.3.2 Registro de Opciones.
El registro de opciones es un registro de lectura-escritura, que contiene los bits deconfiguración del divisor de frecuencia del TMR0/WDT, de las interrupciones externas, del
TMR0, y la configuración de las Puerta B con cargas Pull-Up.
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit7 bit0
bit 7 RBPU : Conexión de cargas Pull-Up para la Puerta B.
1 = Todas las cargas Pull-Up desconectadas.0 = Todas las cargas Pull-Up conectadas.
bit 6 INTEDG: Tipo de flanco para la interrupción.1 = RB0/INT sensible a flanco ascendente.0 = RB0/INT sensible a flanco descendente.
bit 5 T0CS: Fuente de reloj para el TMR0.1 = Pulsos introducidos por T0CKI (contador).0 = Pulsos de reloj interno Fosc/4 (temporizador).
bit 4 T0SE: Tipo de flanco activo del T0CKI.1 = Incremento del TMR0 cada flanco descendente.0 = Incremento del TMR0 cada flanco ascendente.
bit 3 PSA: Asignación del divisor de frecuencia.1 = Se le asigna al WDT.0 = Se le asigna al TMR0.
bit 2-0 PS2:PS0: Valor del divisor de frecuencia.
Valor División del TMR0 División del WDT000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8
100 1:32 1:16101 1:64 1:32110 1:128 1:64111 1:256 1:128
Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el
divisor al WDT.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
27/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
21
2.2.3.3 Palabra de configuración.
La Palabra de Configuración está formada por 14 bits. Se utiliza para la selección de distintosaspectos de la configuración del dispositivo según las necesidades de la aplicación. Su
localización en la memoria de programa es la 2007h. Esta posición no es accesible durante el
modo de funcionamiento normal, por lo que estos registros deberán ser configurados en la
fase de programación.
CP1 CP0 CP1 CP0 CP1 CP0 - BODEN CP1 CP0 PWRTE WDTE FOSC1 FOSC0
bit13 bit0
bit 13-8 CP: Bits de protección de código.5-4:
bit 7 No implementado: Su lectura es 1. bit 6 BODEN: Detección del “Brown-Out” (Fallo de alimentación)
1 = detección activada.0 = Detección desactivada.
bit 3 PWRTE : Activación del temporizador “Power-Up”1 = Desactivado.0 = Activado.
bit 2 WDTE: Activación del “Watchdog” (perro guardián)1 = Activado0 = Desactivado.
bit 1-0 FOSC1-FOSC0: Selección del tipo de oscilador.11 = Oscilador RC.
10 = Oscilador HS01 = Oscilador XT00 = Oscilador LP
512 1k 2k11 Off Off Off10 Off Off ½ alta On01 Off ½ alta On ¾ alta On00 On On On
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
28/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
22
2.3 Oscilador.
El circuito de oscilación se utiliza para generar las señales de reloj en el sistema necesarias para la ejecución de instrucciones y para el funcionamiento de los periféricos.
Existen hasta ocho tipos de osciladores. Los distintos tipos permiten mayor flexibilidad del
dispositivo según las necesidades, así los hay de muy bajo coste, como las redes RC, y otros
de bajo consumo como son los cristales de cuarzo del modo LP.
La configuración de un oscilador u otro se realiza mediante los bits FOSC2, FOSC1 YFOSC0 de la palabra de configuración. No todos los modelos poseen la posibilidad de
configurar cualquier tipo de oscilador, en estos casos sólo tienen los bit FOSC1 Y FOSC0 en
la palabra de configuración. Los valores de estos bits para la configuración de los distintos
osciladores son los que se pueden ver en las tablas 2.1 y 2.2.
TABLA 2.1 Selección del modo de oscilación con FOSC1:FOSC0.Bits de
configuraciónFOSC1:FOSC0
Modo
OSC
Ganancia de los
inversores internos Comentarios
11 RC −
Solución más barata (sólo requiere una resistencia yun condensador). Máxima variación del tiempo base.Modo del dispositivo por defecto
10 HS Ganancia altaCristal de cuarzo para aplicaciones de altafrecuencia. Es el modo que más potencia consumede los tres cristales.
01 XT Ganancia mediaCristal de cuarzo para un rango de frecuenciasestándar.
00 LP Ganancia bajaCristal de cuarzo para aplicaciones de bajafrecuencia. Es el modo que menos potencia
consume de los tres cristales.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
29/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
23
TABLA 2.2 Selección del modo de oscilación con FOSC2:FOSC0.
Bits de
configuraciónFOSC2:FOSC0
ModoOSC
Ganancia de
losinversoresinternos
Comentarios
111EXTRC conCLKOUT −
Red RC externa sacando la señal de oscilación por la patilla CLKOUT. Solución barata. Máxima variaciónen el tiempo base. Modo del dispositivo por defecto
110 EXTRC − Red RC externa. Barata solución. Máxima variaciónen el tiempo base. La señal de oscilación no sale alexterior.
101INTRC conCLKOUT −
Red RC interna sacando la señal de oscilación por la patilla CLKOUT. Es la solución más barata.Oscilador de 4MHz.
100 INTRC − Red RC interna. La señal de oscilación no sale alexterior. Solución más barata. Oscilador de 4MHz.
011 − − Reservado
10 HS Ganancia altaCristal de cuarzo para aplicaciones de alta frecuencia.Es el modo que más potencia consume de los trescristales.
01 XTGanancia
mediaCristal de cuarzo para un rango de frecuenciasestándar.
00 LPGanancia
baja
Cristal de cuarzo para aplicaciones de baja frecuencia.Es el modo que menos potencia consume de los trescristales.
La diferencia entre los tres últimos viene dada por la ganancia de los inversores internos, queson los que modifican la frecuencia. En general siempre se opta por la opción con menor
ganancia posible que cumpla las especificaciones. Esto implicará menores corrientes y con
ello menor consumo de potencia.
En la figura 2.4 se ve el modo de conexión para resonadores de cristal o de cuarzo. En este
caso se conectan a las patillas OSC1 y OSC2, usando esta última como realimentación.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
30/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
24
Figura 2.4 Operación de osciladores en los modos HS, XT o LP.
Nota 1: La resistencia en serie, R S, es necesaria para cristales de alta tecnología.2: La resistencia de realimentación, R F, varía entre 2 y 10 MΩ.3: Dependiendo del dispositivo, el buffer de la lógica interna puede estar tanto antes
como después del inversor.
Para una red RC el modo de conexión utilizará únicamente la patilla OSC1. La frecuencia de
oscilación dependerá de VDD, R EXT y de CEXT (figura 2.5). El fabricante recomienda que R EXT
tenga un valor de entre 3K Ω y 100K Ω y que CEXT sea mayor de 20pF. Además la frecuencia
del oscilador/4 se obtiene a través de la patilla OSC2, en caso de que esté configurada en los
modos EXTRC o INTRC con CLKOUT, se puede usar para sincronización de otras lógicas.
Figura 2.5 Operación en modo RC.
Nota 1: Esta patilla también puede ser configurada como una E/S de propósito general.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
31/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
25
Como un dispositivo incrementa su voltaje de alimentación desde 0 hasta VDD, el oscilador
tardará un tiempo en funcionar correctamente. Este tiempo de comienzo o Start-Up depende
de muchos factores:a) Para los osciladores RC depende del valor de la resistencia y condensador usado,
tiempo de subida de VDD, y temperatura del sistema.
b) Para los osciladores de cristales los factores que intervienen son la frecuencia del
cristal, los valores de la resistencia en serie, R S y de los condensadores C1 y C2, el
tiempo de subida de VDD, la temperatura del sistema, la selección del modo de
oscilador, la composición del circuito oscilador, y el ruido del sistema.
En la figura 2.6 se muestra un ejemplo de Start–Up. Se puede ver que la señal de oscilación
está centrada en VDD/2, siendo el valor pico a pico durante el arranque del oscilador bastante
bajo (menos del 50% de VDD).
Figura 2.6 Característica Start-Up de un oscilador.
Siempre que se quiera grabar un PIC es necesario consultar las hojas de características para la
configuración del oscilador.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
32/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
26
2.4 Reset
La función del reset es la de dejar al sistema en un estado conocido. Existen varias fuentes deRESET:
a) Power On Reset (POR).
b) Activación de MCLR durante funcionamiento normal.
c) Activación de MCLR en el modo de reposo
d) Desbordamiento del WDT durante funcionamiento normal.
e) Reset de Brown-Out (BOR).
f) Reset por error de paridad (PER).
La figura 2.7 se muestra un bloque simplificado de la lógica que gobierna el reset del sistema,
para un caso general.
En esta figura se puede ver una zona denominada OST/PWRT, que consiste en:
a) Power-up Timer (PWRT): Es un temporizador que proporciona un retardo de
72ms a partir de un reset de tipo POR o BOR, de tal forma que el PIC se mantiene
reseteado durante este tiempo, así al finalizar la temporización la tensión de
alimentación tendrá un valor aceptable. Este temporizador se habilita mediante el
bit PWRT de la palabra de configuración. Para generar este retardo existe un
circuito interno RC dedicado.
b) Oscillator Start-Up Timer (OST): Este oscilador proporciona un retardo de
1024 veces el periodo de oscilación (desde OSC1) después del retardo PWRT. De
esta forma se asegura que el oscilador cristal o cerámico es estable cuando el PIC
empieza a funcionar. Este retardo sólo funciona cuando el PIC se ha configurado
para usar un oscilador XT, HS o LP y el reset es tipo POR, BOR o de wake-up
desde el modo de reposo (sleep).
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
33/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
27
Figura 2.7 Lógica que gobierna el Reset de un sistema.
Nota 1: Este es un oscilador distinto al oscilador del pin CLKIN o al oscilador interno INTRC.2: Las características que están encerrados en cuadros no están disponibles en todos los modelos,
ver hoja de características del dispositivo.3: En algunos modelos, este pin puede estar configurado como entrada de propósito general.4: En los primeros microcontroladores PIC tenían la configuración de modo que para PWRTE =1
estuviera habilitado, mientras que el resto de los modelos, la configuración estaba definida para PWRTE =0.
A continuación (tabla 2.3) se muestran los distintos retardos para las posibles situaciones en
las que se puede ver el sistema.
TABLA 2.3 Retardos típicos según las situaciones.
TIEMPO DE POWER-UPCONFIGURACIÓNDEL OSCILADOR Habilitado Deshabilitado
BROWN-OUTRESET
WAKE-UPDESDE SLEEP
XT, HS, LP 72 ms + 1024TOSC 1024TOSC 72 ms + 1024TOSC 1024TOSC RC 72 ms ⎯ (1) 72 ms ⎯ (1)
Nota 1: Dispositivos con oscilador Interno/Externo RC tienen un retardo de 250µs.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
34/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
28
El Power-on Reset consiste en la activación del reset cuando se detecta la conexión de la
alimentación al dispositivo. Dos topologías para el circuito de POR se pueden ver en la figura
2.8, siendo la primera para el caso general y la segunda para el caso en que V DD crezca deforma lenta.
Nota 1: La resistencia es opcional.
Figura 2.8 Topologías para el circuito de POR.
En el segundo caso el diodo ayuda a la descarga del condensador cuando VDD disminuye su
valor.
Las siguientes figuras (2.9 – 2.12) muestran el comportamiento temporal de las señales segúnel caso.
Figura 2.9 Secuencia de Time-out en subida de alimentación.MCLR conectado a VDD.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
35/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
29
Figura 2.10 Secuencia de Time-out en subida de alimentación.MCLR no conectado a VDD.(Caso1).
Figura 2.11 Secuencia de Time-out en subida de alimentación.MCLR no conectado a VDD.(Caso2).
Figura 2.12 Secuencia de Time-out en subida de alimentación.MCLR conectado a VDD (tiempo de subida lento).
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
36/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
30
El Brown-out Reset consiste en producir un reset en el sistema cuando la tensión de
alimentación VDD cae por debajo de un determinado valor, específico para cada PIC. Los que
tengan implementados el BOR, tienen un parámetro (35), que es el tiempo mínimo que debeestar VDD por debajo de la tensión de reset, para que éste se produzca. Esto asegura que el
elemento no continua la ejecución del programa fuera de los rangos válidos de operación.
Este tipo de reset se puede habilitar con el bit BODEN de la Palabra de Configuración. Una
vez que el nivel de la alimentación se restablezca, hay un retardo de 72ms en desactivarse el
reset interno.
Algunas de las situaciones de Brown-Out Reset se muestran en la figura 2.13.
Figura 2.13 Situaciones de Brown-out Reset.
Posibles circuitos usados para un BOR, cuando el circuito no tiene internamente el detector
implementado, o cuando la tensión que venga configurada no nos interesa, se muestran en las
figuras 2.14 y 2.15.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
37/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
31
Figura 2.14 Circuito externo 1 de Brown-out.
Este circuito activará el reset cuando VDD esté por debajo de (Vz + 0.7V), donde Vz
es el voltaje Zener del diodo. Nota 1: El circuito de Brown-out Reset interno debe de estar deshabilitado
cuando se use esta configuración.2: Los valores de las resistencias dependen de las características deltransistor.
Figura 2.15 Circuito externo 2 de Brown-out.
Nota 1: Este circuito de BOR es más barato, pero menos exacto. El transistor Q1 secorta cuando VDD baja de cierto nivel tal como:
V7.0R2R1
R1 VDD =+•
2: El circuito de Brown-out Reset interno debe de estar deshabilitado cuandose use esta configuración.3: Los valores de las resistencias dependen de las características deltransistor.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
38/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
32
Debido a que existen distintas fuentes de reset, es necesario en determinadas ocasiones, saberque tipo de reset se ha producido. Esto se hace consultando los bits POR y BOR del registroPCON, y PD del Registro de Estado (tabla 2.4). La tabla 2.5 muestra la forma en que afecta
el Reset a los distintos registros.
TABLA 2.4 Bits de estado y su significado.POR BOR TO PD Tipo de Reset
0 x 1 1 Power-On Reset.
0 x 0 x Incorrecto, TO está a 1 en POR .0 x x 0 Incorrecto, PD está a 1 en POR .1 0 1 1 Brown-Out Reset.1 1 0 1 WDT Reset.1 1 0 0 WDT Wake-Up.
1 1 u u MCLR reset en funcionamiento normal.1 1 1 0 MCLR reset durante SLEEP.
Legenda: u: valor anterior. x: desconocido.
TABLA 2.5 Condiciones de inicialización de los registros especiales.
RegistroPower-On ResetBrown-Out Reset
MCLR durante:-funcionamiento normal
-SLEEPWDT Reset
Wake-up desde SLEEPmediante:-Interrupciones-Temporizador del WDT
ADCAPL 0000 0000 0000 0000 uuuu uuuuADCAPH 0000 0000 0000 0000 uuuu uuuu
ADCON0 0000 00-0 0000 00-0 uuuu uu-uADCON ---- -000 ---- -000 ---- -uuuADRES xxxx xxxx uuuu uuuu uuuu uuuuADTMRL 0000 0000 0000 0000 uuuu uuuuADMRH 0000 0000 0000 0000 uuuu uuuuCCP1CON --00 0000 --00 0000 --uu uuuuCCP2CON 0000 0000 0000 0000 uuuu uuuuCCPR1L xxxx xxxx uuuu uuuu uuuu uuuuCCPR1H xxxx xxxx uuuu uuuu uuuu uuuuCCPR2L xxxx xxxx uuuu uuuu uuuu uuuuCCPR2H xxxx xxxx uuuu uuuu uuuu uuuuCMCON 00-- 0000 00—0000 uu-- uuuuEEADR xxxx xxxx uuuu uuuu uuuu uuuu
EECON1 ---0 x000 ---0 q000 ---0 uuuuEECON2 - - -EEDATA xxxx xxxx uuuu uuuu uuuu uuuuFSR xxxx xxxx uuuu uuuu uuuu uuuuGPIO --xx xxxx --uu uuuu --uu uuuuI2CADD 0000 0000 0000 0000 uuuu uuuuI2CBUF xxxx xxxx uuuu uuuu uuuu uuuuI2CCON 0000 0000 0000 0000 uuuu uuuuI2CSTAT --00 0000 --00 0000 --uu uuuuINDF - - -INTCON 0000 000x 0000 000u uuuu uuuu
LCDCON 00-0 0000 00-0 0000 uu-u uuuu
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
39/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
33
RegistroPower-On ResetBrown-Out Reset
MCLR durante:-funcionamiento normal
-SLEEPWDT Reset
Wake-up desde SLEEPmediante:-Interrupciones-Temporizador del WDT
LCDD00 a LCDD15 xxxx xxxx uuuu uuuu uuuu uuuuLCDPS ---- 0000 ---- 0000 ----uuuuLCDPS 1111 1111 1111 1111 uuuu uuuuOPTION_REG 1111 1111 1111 1111 uuuu uuuuOSCCAL 0111 00-- uuuu uu-- uuuu uu--PCL 0000 0000 0000 0000 PC+1(2)
PCLATH ---0 0000 ---0 0000 ---u uuuuPCON ---- --0u ---- --uu ---- --uuPIE1 0000 0000 0000 0000 uuuu uuuuPIE2 ---- ---0 ---- ---0 ---- ---uPIR1 0000 0000 0000 0000 uuuu uuuuPIR2 ---- ---0 ---- ---0 ---- ---u
PORTA --xx xxxx --uu uuuu --uu uuuuPORTB xxxx xxxx uuuu uuuu uuuu uuuuPORTC xxxx xxxx uuuu uuuu uuuu uuuuPORTD xxxx xxxx uuuu uuuu uuuu uuuuPORTE ---- -xxx ---- -uuu ---- -uuuPOTF 0000 0000 0000 0000 uuuu uuuuPORTG 0000 0000 0000 0000 uuuu uuuuPR2 1111 1111 1111 1111 1111 1111PREFA 0000 0000 0000 0000 uuuu uuuuPREFB 0000 0000 0000 0000 uuuu uuuuRCSTA 0000 --00x 0000 --00x uuuu –uuuRCREG 0000 0000 0000 0000 uuuu uuuuSLPCON 0011 1111 0011 1111 uuuu uuuuSPBRG 0000 0000 0000 0000 uuuu uuuuSSPBUF xxxx xxxx uuuu uuuu uuuu uuuuSSPCON 0000 0000 0000 0000 uuuu uuuuSSPADD 0000 0000 0000 0000 uuuu uuuuSSPSTAT 0000 0000 0000 0000 uuuu uuuuSTATUS 0001 1xxx 000q quuu uuuq quuu
T1CON --00 0000 --uu uuuu --uu uuuuT2CON -000 0000 -000 0000 -uuu uuuuTMR0 xxxx xxxx uuuu uuuu uuuu uuuuTMR1L xxxx xxxx uuuu uuuu uuuu uuuuTMR1H xxxx xxxx uuuu uuuu uuuu uuuuTMR2 0000 0000 0000 0000 uuuu uuuu
TRIS --11 1111 --11 1111 --uu uuuuTRISA --11 1111 --11 1111 --uu uuuuTRISB 1111 1111 1111 1111 uuuu uuuuTRISC 1111 1111 1111 1111 uuuu uuuuTRISE 0000 –111 0000 –111 uuuu –uuuTRISF 1111 1111 1111 1111 uuuu uuuuTRISG 1111 1111 1111 1111 uuuu uuuuTXREG 0000 0000 0000 0000 uuuu uuuuTXSTA 0000 –010 0000 –010 uuuu –uuuVRCON 000- 0000 000- 0000 uuu- uuuuW xxxx xxxx uuuu uuuu uuuu uuuu
Legenda: u = valor anterior x = desconocido – = no implementado q = depende de las condiciones
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
40/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
34
2.5 Temporizador y Perro Guardián.
En este apartado se tratará el funcionamiento del TMR0 en conjunción con el Perro Guardiáno Watchdog.
El TMR0 en su forma general tiene las siguientes características:
a) Contador/Temporizador de 8 bits.
b) Permite su lectura y escritura.
c) La fuente de reloj se puede seleccionar, pudiendo ser externa (contador) o interna
(temporizador).
d) La fuente externa puede ser seleccionada para que actúe cuando aparezca un flancode bajada o un flanco de subida.
e) Se puede seleccionar que se produzca una interrupción cuando haya rebose, es
decir, pase de FFh a 00h.
f) Se le puede asignar un divisor de frecuencia de 8 bits programable.
Por otro lado el perro guardián o Watchdog (WDT) es un temporizador con un oscilador RC,
que no requiere ningún elemento externo, funcionando incluso cuando el oscilador principal
del sistema no lo hace (modo de reposo).
La habilitación del perro guardián se realiza con el bit WDTE de la palabra de configuración.
Si el WDT está funcionando, cuando éste rebose se producirá un reset del PIC. En caso de que
el PIC en el momento del rebose del WDT se encuentre en modo de reposo, lo que se
producirá es el “despertar” de éste, continuando la ejecución del programa.
El periodo nominal del WDT es de 18 ms, que puede variar en función de la temperatura,
VDD, etc. (habrá que ver las características eléctricas). Además si se quieren tiempos mayores
se le puede asignar el divisor de frecuencia que lo puede aumentar hasta 1:128.
Este divisor de frecuencia es el mismo que funcionará con el TMR0, con lo cual, o actúa
sobre el TMR0 o sobre el WDT, pero nunca puede hacerlo sobre los dos a la vez.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
41/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
35
La forma de programar el divisor es con el registro de opciones:
bit 3 PSA: Asignación del divisor de frecuencia.1 = Se le asigna al WDT.0 = Se le asigna al TMR0.
bit 2-0 PS2:PS0: Valor del divisor de frecuencia.Valor División del TMR0 División del WDT000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:16101 1:64 1:32
110 1:128 1:64111 1:256 1:128
Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna eldivisor al WDT.
En la figura 2.16 se puede ver el diagrama de bloques del funcionamiento del WDT y el
TMR0, con el divisor de frecuencias.
Figura 2.16 Diagrama de bloques del TMR0/WDT con el predivisor.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
42/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
36
Como se puede ver, para el TMR0, el divisor de frecuencia actúa como un prescaler, es decir,
primero divide la fuente de reloj y luego esta fuente dividida actúa sobre el TMR0. Para el
WDT, sin embargo, es al revés, primero cuenta y luego actúa sobre la señal, es decir, lo hacecomo postscaler.
Cuando tenemos habilitado el perro guardián, para que el sistema no se resetee, se ha de
inicializar periódicamente el WDT. Esto se consigue con las instrucciones CLRWDT o
SLEEP. Además se recomienda por parte del fabricante, que antes de modificar el postscaler
se debe ejecutar la instrucción CLRWDT, ya que si no, se puede producir el reset del PIC.
2.6 Puertas E/S.
Las puertas de E/S digital son el periférico más simple de todos los que aparecen en los PIC y
nos servirán para leer o escribir valores digitales desde o hacia el exterior. En algunos puertos
estos pines están multiplexados con otras funciones alternativas (convertidores A/D, E/S
serie, etc.). En el caso que lo tengamos para esa función, el pin no podrá funcionar como E/S
digital.
Los pines de las puertas E/S pueden ser seleccionados de forma individual para que actúen
como pines de entrada o de salida, a través de los registros TRIS, de tal forma que si
TRISX es:
0 => Pin n de la puerta X actúa como salida.
1 => Pin n de la puerta X actúa como entrada.
Cuando se produce un reset TRIS se pone a 1, configurando así las puertas como entradas y
evitando que se active indebidamente algún dispositivo externo que estuviera conectado al
PIC.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
43/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
37
La configuración típica para las puertas E/S se ve en la figura 2.17.
Figura 2.17 Diagrama de bloques típico de una puerta E/S.
2.7 Modo de reposo o SLEEP.
El modo de reposo o SLEEP, hace entrar al dispositivo en el estado de menor consumo de
potencia. En este modo deja de funcionar el oscilador principal, así como los temporizadores
del dispositivo, salvo el Watchdog, y además las líneas E/S mantienen su estado. Para acceder
al modo de reposo se utiliza la instrucción SLEEP.
Para obtener el mínimo consumo habría que desconectar los periféricos y las líneas E/S
deberían conectarse a VDD o VSS.
Las formas de salir del modo de reposo son:
1. Cualquier reset del dispositivo.
2. Rebose del Watchdog (si éste está activado).
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
44/197
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
38
3. Mediante cualquier interrupción producida mientras el dispositivo está en el modo
de reposo, tal como:
a. Flanco en el pin RB0/INT. b. Cambio de estado en líneas de puerta.
c. Comparadores.
d. Conversores A/D.
e. Overflow en TMR1.
f. LCD.
g. Interrupción por puerto serie síncrono, SSP.
h. Módulos de captura.
Al salir del modo de reposo se ejecuta la siguiente instrucción a SLEEP.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
45/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
39
Capítulo 3. Juego de instrucciones de los PIC de la Gama
Media.
3.1 Introducción.
Las características del juego de instrucciones vienen determinadas por el tipo de arquitectura
que tienen los PIC:• La arquitectura Harvard,
• Conjunto de instrucciones reducido (RISC).
Esto implica que:
a) Normalmente el bus de instrucciones es mayor que el de datos. De esta forma se
obtiene una mayor eficiencia adaptando los anchos de los buses a los
requerimientos de la arquitectura y, por tanto, se optimiza el funcionamiento. b) Las instrucciones son de una única palabra. Debido a lo anterior se diseñarán
memorias de un ancho igual al código de operación de las instrucciones, pudiendo
acceder a su lectura en un solo ciclo. Además el tamaño de la memoria coincidirá
con el número de instrucciones que podemos almacenar, a diferencia de la
arquitectura Von Neumann, en donde suele existir, de forma general, un ratio de
2:1 (siendo la memoria de 4Kbytes, aproximadamente 2Kbytes son instrucciones).
c) Segmentación de instrucciones. Esto consiste en ejecutar las instrucciones en
distintas fases, unas con acceso a memoria de instrucciones y otras con acceso a
memoria de datos. Al poder realizarse accesos simultáneos a ambas memorias,
podemos ejecutar las instrucciones en un único ciclo de instrucción.
d) El hecho de tener pocas instrucciones facilita el aprendizaje.
e) Arquitectura basada en registros. Todos los elementos de la arquitectura, incluido
el contador de programa (PC), se encuentran mapeados en la memoria de datos,
que a su vez está implementada físicamente como registros.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
46/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
40
f) Instrucciones ortogonales: Son aquellas que permiten trabajar con todos los
registros del sistema y con todos los direccionamientos existentes. Esta simetría
permite una programación más eficiente. En la gama media existen únicamentedos instrucciones no orientadas a registros, que son las instrucciones CLRWDT y
SLEEP.
3.2 Flujo de instrucciones. Segmentación.
La entrada de reloj, se divide internamente por cuatro, obteniéndose cuatro señales de reloj
denominadas Q1, Q2, Q3 y Q4. Internamente, el PC se incrementa cada Q1, la instrucción esleída de la memoria de instrucciones y almacenada en el registro de instrucciones en Q4. Esa
instrucción es decodificada y ejecutada durante los siguientes Q1-Q4.
El flujo de instrucciones y el reloj se muestran en las figuras 3.1 y 3.2. Además, estos ciclos
son los que denominaremos periodos de oscilación del PIC (Tosc).
Figura 3.1 Flujo de instrucciones y reloj.
Un ciclo de instrucción consiste precisamente en estos 4 ciclos de reloj Q1-Q4, y cada una de
las fases de la instrucción ocupa un ciclo.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
47/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
41
Estas dos fases son:
• Fase de búsqueda (Fetch): Se incrementa en Q1 el PC, se lee y se lleva en Q4 a
registro de instrucciones.• Fase de ejecución: En Q2 se lee la memoria de datos para los operandos y en Q4 se
almacena en la memoria de datos el resultado.
Debido a que en cada una de las fases se accede a una memoria, y que los accesos a memoria
pueden solaparse, aparece la segmentación, es decir, se ejecuta una instrucción por ciclo de
instrucción, excepto las instrucciones de salto incondicional, ya que es en la fase de ejecución
donde se calcula la dirección destino. En este caso tarda dos ciclos de instrucción.
TOSC0 TOSC1 TOSC2 TOSC3 TOSC4TOSC5
Buscar 1 Ejecutar 1 1. MOVLW 55h2. MOVWF PORTB Buscar 2 Ejecutar 2
Buscar 3 Ejecutar 3 3. CALL SUB_14. BSF PORTA,3 Buscar 4 Detención
… Buscar SUB_1 Ejecutar SUB_1 … Buscar SUB_1+1
Figura 3.2 Segmentación de instrucciones
Existen además las instrucciones de salto condicional, que pueden durar 1 ó 2 ciclos en
función del resultado (btfss, btfsc, decfsz y incfsz).
3.3 El formato de las instrucciones.
Las instrucciones de los PIC se pueden dividir en cuatro categorías:
• Instrucciones sobre registros orientadas a bytes.
• Instrucciones sobre registros orientadas a bits.
• Instrucciones para operaciones con literales.
• Instrucciones de control.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
48/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
42
Todas ellas tienen un ancho de 14 bits (ancho de la memoria de programa), pero los campos
varían entre ellos.
Los formatos de los distintos tipos de instrucciones son:
• Instrucciones sobre registros orientadas a bytes.
13 8 7 6 0
Código de operación d f
d = 0, resultado se almacena en el acumulador (w).d = 1, resultado se almacena sobre el propio registro.f = 7 bits de la dirección del registro sobre el que se realiza la operación.
El resto de la dirección viene dada por los bits RP1, RP0 o IRP.
• Instrucciones sobre registros orientadas a bits.
13 10 9 7 6 0
Código de operación b f
b = 3 bits que indican la posición dentro del registro del bit a modificar.f = 7 bits de la dirección del registro sobre el que se realiza la operación.
El resto de la dirección viene dada por los bits RP1, RP0 o IRP.
• Instrucciones con literales y de control.
o General.
13 8 7 0Código de operación k (literal)
k = literal (direccionamiento inmediato).
o Instrucciones GOTO y CALL.13 11 10 0
Código de operación k (literal)
k = 11 bits menos significativos del PC. El resto se obtiene del PCLATCH.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
49/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
43
3.4 Juego de instrucciones.
Primero hay que hacer algunas consideraciones:• Se puede usar cualquier registro especial como fuente o destino en una instrucción.
• Si usamos el registro de Estado como registro destino, los bits C, Z y DC
obtendrán los valores propios del resultado de la operación. Por ejemplo:
clrf STATUS ; después de su ejecución STATUS = 00001000; correspondiendo ese 1 con el bit Z.
• Todas las instrucciones que manipulan bit son instrucciones de tipo lectura-
modificación-escritura, es decir, primero se lee el registro, luego se opera y por
último se escribe el resultado. Esto hay que tenerlo en cuenta fundamentalmente
cuando se trabaja sobre las puertas y en éstas se cambian los bits del TRIS
asociadas a ellas.
En la tabla 3.1 se especifica el significado de las distintas abreviaturas que van a ser utilizadas
posteriormente para la descripción detallada de cada una de las instrucciones de los PIC.
TABLA 3.1 Descripción de las abreviaturas utilizadas.Campo Descripción
f Dirección del registro (0x00 a 0x7F)w Registro de trabaja (acumulador) b Posición de un bit de un registro (0 a 7)k Literal, dato inmediato o dirección de una etiqueta.x Valor indeterminado (0 ó 1)
dSelección el destino;d = 0; el resultado se almacena en W.d = 1; el resultado se almacena en el registro f.
dest Destino (registro W ó f)TOS Nivel superior de la Pila.PC Contador de Programa.PCLATCH Parte alta del Contador de ProgramaGIE Bit de activación global de interrupciones.WDT Perro guardián (Watchdog).
TO Bit “Time Out” del Registro de Estado.
PD Bit “Power Down” del Registro de Estado[ ] Opciones( ) Contenido→ Se asigna a< > Campo de bits de un registro.
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
50/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura
44
La tabla 3.2 muestra un resumen de todas las instrucciones que componen el lenguaje de
programación de los microcontroladores PIC de la Gama Media.
TABLA 3.2 Instrucciones de la Gama Media.INSTRUCCIONES SOBRE REGISTROS ORIENTADAS A BYTES
14 bits de la palabra de lainstrucción Nemónicos,
OperandosDescripción Ciclos
MSb LSb
Bits deEstado
afectadosADDWF f, d Suma W y f 1 00 0111 dfff ffff C, DC, ZANDWF f, d Y lógica entre W y f 1 00 0101 dfff ffff ZCLRF f Borra el registro f 1 00 0001 1fff ffff ZCLRW - Borra el registro W 1 00 0001 0xxx xxxx ZCOMF f, d Complementa f 1 00 1001 dfff ffff ZDECF f, d Decrementa f 1 00 0011 dfff ffff Z
DECFSZ f, d Decrementa f y salta si es 0 1 (2) 00 1011 dfff ffffINCF f, d Incrementa f 1 00 1010 dfff ffff ZINCFSZ f, d Incrementa f y salta si es 0 1 (2) 00 1111 dfff ffffIORWF f, d O lógica entre W y f 1 00 0100 dfff ffff ZMOVF f, d Mueve f 1 00 1000 dfff ffff ZMOVWF f Mueve W a f 1 00 0000 lfff ffff NOP - No hace nada 1 00 0000 0xx0 0000RLF f, d Rota f a la izquierda 1 00 1101 dfff ffff CRRF f, d Rota f a la derecha 1 00 1100 dfff ffff CSUBWF f, d Resta W de f 1 00 0010 dfff ffff C, DC, ZSWAPF f, d Intercambia los bytes de f 1 00 1110 dfff ffffXORWF f, d O lógica exclusiva de W y f 1 00 0110 dfff ffff Z
INSTRUCCIONES SOBRE REGISTROS ORIENTADAS A BITS
BCF f, b Borra el bit b del registro f 1 01 00bb bfff ffffBSF f, b Pone a 1 el bit b del registro f 1 01 01bb bfff ffffBTFSC f, b Testea el bit, y salta si es 0 1 (2) 01 10bb bfff ffffBTFSS f, b Testea el bit y salta si es 1 1 (2) 01 11bb bfff ffff
INSTRUCCIONES CON LITERALES Y DE CONTROL
ADDLW k Suma un literal con el W 1 11 111x kkkk kkkk C, DC, ZANDLW k Y lógica entre k y W 1 11 1001 kkkk kkkk ZCALL k Salto a subrutina 2 10 0kkk kkkk kkkkCLRWDT - Pone a cero el WDT 1 00 0000 0110 0100 TO , PD GOTO k Salto incondicional 2 10 1kkk kkkk kkkkIORLW k O lógica entre k y W 1 11 1000 kkkk kkkk ZMOVLW k Mueve el literal k a W 1 11 00xx kkkk kkkkRETFIE - Retorno de interrupción 2 00 0000 0000 1001
RETLW k Retorno con k en W 2 11 01xx kkkk kkkkRETURN - Retorno de subrutina 2 00 0000 0000 1000SLEEP - Modo de reposo 1 00 0000 0110 0011 TO , PD SUBLW k 1 11 110x kkkk kkkk C, DC, ZXORLW k O exclusiva entre k y W 1 11 1010 kkkk kkkk Z
-
8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación
51/197
Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.
Santiago Salamanca
top related