SlideShare una empresa de Scribd logo
1 de 197
Descargar para leer sin conexión
LOS PIC DE LA GAMA MEDIA.
ARQUITECTURA Y TÉCNICAS DE
PROGRAMACIÓN.
Santiago Salamanca Miño
David Arroyo Muñoz
Octubre de 2003
Este libro es el resultado del Proyecto Fin de Carrera realizado por el alumno David
Arroyo 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
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
I
ÍNDICE GENERAL
1 Introducción a los Microcontroladores......................................................................1
1.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............................................................................................11
2.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
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
II
4.2 Interrupciones. ........................................................................................ 63
4.2.1 Registros de control........................................................ 65
4.2.1.1 Registro INTCON......................................... 65
4.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. ......................................................................... 77
4.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 I2
C. .................................................................... 117
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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......................................133
5 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...................................................158
5.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
Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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. ................................................. 169
5.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.................................. 174
5.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 I2
C........................................................................................ 187
A.1 Introducción......................................................................................... 187
A.2 Inicialización y fin de transferencia de datos....................................... 187
A.3 Direccionamiento de dispositivos en I2
C............................................. 188
A.4 Reconocimiento de transferencia......................................................... 189
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 que
rebosa. 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 bajo
costo, 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 el
acceso 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 otras
dos 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) EPROM
CR Standard (4.5-6.0 V) ROM
F 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 las
anteriores, 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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
Memoria
de
programa
Cápsulas
Máxima
frecuencia
de
trabajo
EPROM
EEROM
Memoria
de
datos
(bytes)
EEPROM
de
datos
(bytes)
Módulos
de
temporización
Módulos
CCP
Puertos
serie
Puerto
Paralelo
Convertidor
A/D
de
8
bits
Comparadores
Tensión
interna
de
referencia
Fuentes
de
interrupción
Patillas
de
E/S
Rango
de
voltaje
(voltios)
Detector
de
fallo
en
V
DD
“Brown-out”
Pines
DIP
Pines
PLCC
Pines
QFP
PIC16C61 20 1K --- 36 --- TMR0 -- --- -- -- -- -- 3 13
3,0-
6,0
--- 18 18 --
PIC16C62 20 2K --- 128 ---
TMR0,TMR1
,TMR2
2 SPI/I2
C/SCI -- -- -- -- 10 22
2,5-
6,0
--- 28 28 --
PIC16C63 20 4K --- 192 ---
TMR0,TMR1
,TMR2
2 SPI/I2
C/SCI --- -- -- -- 10 22
3,0-
6,0
--- 28 28 --
PIC16C64 20 2K --- 128 ---
TMR0,TMR1
,TMR2
1 SPI/I2
C Si -- -- -- 8 33
3,0-
6,0
--- 40 44 44
PIC16C65 20 4K --- 192 ---
TMR0,TMR1
,TMR2
2 SPI/I2
C/SCI Si -- -- -- 11 33
3,0-
6,0
--- 40 44 44
PIC16C620 20 512 --- 80 --- TMR0 -- ---- -- -- 2 Si 4 13
3,0-
6,0
Si 18 18 20
PIC16C621 20 1K --- 80 --- TMR0 -- ---- -- -- 2 Si 4 13
3,0-
6,0
Si 18 18 20
PIC16C622 20 2K --- 128 --- TMR0 -- ---- -- -- 2 Si 4 13
3,0-
6,0
Si 18 18 20
PIC16C71 20 1K --- 36 --- TMR0 -- ---- -- 4ch -- -- 4 13
3,0-
6,0
--- 18 18 --
PIC16C73 20 4K --- 192 ---
TMR0,TMR1
,TMR2
2 SPI/I2
C/SCI -- 5ch -- -- 11 22
3,0-
6,0
--- 28 28 --
PIC16C74 20 4K --- 192 ---
TMR0,TMR1
,TMR2
2 SPI/I2
C/SCI Si 8ch -- -- 12 33
3,0-
6,0
--- 40 44 44
PIC16C76 20 8K --- 368 ---
TMR0,TMR1
,TMR2
2 SPI/I2
C/SCI -- 5ch -- -- 11 22
2,5-
6,0
Si 28 28 --
PIC16C84 20 -- 1K 36 64 TMR0 -- ---- -- -- -- -- 4 13
3,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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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.
Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 I2
C.
RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie
en el modo I2
C.
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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 se
accede 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 Gama
Media.
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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 del
dispositivo.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 implementados
estos 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 <11:12>), los cuales son implementados físicamente
en la memoria de datos en el registro PCLATCH <4:3>. 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
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 realizar
esta 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 <12:8> 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
<4:3>. Si se hace un GOTO a una dirección que está en una página distinta,
primero hay que modificar estos bits del PCLATH.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 rutinas
de 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 nuevo
valor 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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’.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 la
direcció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 W
MOVWF FSR ; Carga valor de W en FSR
SIGUIENTE CLRF INDF ; Borra la posición de memoria que marca FSR
INCF FSR,1 ; Incrementa valor del FSR
BTFSS 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’.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 el
direccionamiento 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 Down
1 = 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 de
configuració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 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
Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el
divisor al WDT.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 distintos
aspectos 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<1:0>: 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 = Activado
0 = Desactivado.
bit 1-0 FOSC1-FOSC0: Selección del tipo de oscilador.
11 = Oscilador RC.
10 = Oscilador HS
01 = Oscilador XT
00 = Oscilador LP
512 1k 2k
11 Off Off Off
10 Off Off ½ alta On
01 Off ½ alta On ¾ alta On
00 On On On
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 Y
FOSC0 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ón
FOSC1:FOSC0
Modo
OSC
Ganancia de los
inversores internos
Comentarios
11 RC −
Solución más barata (sólo requiere una resistencia y
un condensador). Máxima variación del tiempo
base.
Modo del dispositivo por defecto
10 HS Ganancia alta
Cristal de cuarzo para aplicaciones de alta
frecuencia. Es el modo que más potencia consume
de los tres cristales.
01 XT Ganancia media
Cristal de cuarzo para un rango de frecuencias
estándar.
00 LP Ganancia baja
Cristal de cuarzo para aplicaciones de baja
frecuencia. Es el modo que menos potencia
consume de los tres cristales.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
23
TABLA 2.2 Selección del modo de oscilación con FOSC2:FOSC0.
Bits de
configuración
FOSC2:FOSC0
Modo
OSC
Ganancia de
los
inversores
internos
Comentarios
111
EXTRC con
CLKOUT
−
Red RC externa sacando la señal de oscilación por la
patilla CLKOUT. Solución barata. Máxima variación
en el tiempo base. Modo del dispositivo por defecto
110 EXTRC −
Red RC externa. Barata solución. Máxima variación
en el tiempo base. La señal de oscilación no sale al
exterior.
101
INTRC con
CLKOUT
−
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 al
exterior. Solución más barata. Oscilador de 4MHz.
011 − − Reservado
10 HS Ganancia alta
Cristal de cuarzo para aplicaciones de alta frecuencia.
Es el modo que más potencia consume de los tres
cristales.
01 XT
Ganancia
media
Cristal de cuarzo para un rango de frecuencias
estándar.
00 LP
Ganancia
baja
Cristal de cuarzo para aplicaciones de baja frecuencia.
Es el modo que menos potencia consume de los tres
cristales.
La diferencia entre los tres últimos viene dada por la ganancia de los inversores internos, que
son 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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, RS, es necesaria para cristales de alta tecnología.
2: La resistencia de realimentación, RF, 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, REXT y de CEXT (figura 2.5). El fabricante recomienda que REXT
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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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, RS 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 de
RESET:
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).
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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-UP
CONFIGURACIÓN
DEL OSCILADOR
Habilitado Deshabilitado
BROWN-OUT
RESET
WAKE-UP
DESDE 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 VDD crezca de
forma 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ún
el caso.
Figura 2.9 Secuencia de Time-out en subida de alimentación.MCLR conectado a VDD.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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).
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 debe
estar 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 del
transistor.
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 se
corta cuando VDD baja de cierto nivel tal como:
V
7
.
0
R2
R1
R1
VDD =
+
•
2: El circuito de Brown-out Reset interno debe de estar deshabilitado cuando
se use esta configuración.
3: Los valores de las resistencias dependen de las características del
transistor.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
32
Debido a que existen distintas fuentes de reset, es necesario en determinadas ocasiones, saber
que tipo de reset se ha producido. Esto se hace consultando los bits POR y BOR del registro
PCON, 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.
Registro
Power-On Reset
Brown-Out Reset
MCLR durante:
-funcionamiento normal
-SLEEP
WDT Reset
Wake-up desde SLEEP
mediante:
-Interrupciones
-Temporizador del WDT
ADCAPL 0000 0000 0000 0000 uuuu uuuu
ADCAPH 0000 0000 0000 0000 uuuu uuuu
ADCON0 0000 00-0 0000 00-0 uuuu uu-u
ADCON ---- -000 ---- -000 ---- -uuu
ADRES xxxx xxxx uuuu uuuu uuuu uuuu
ADTMRL 0000 0000 0000 0000 uuuu uuuu
ADMRH 0000 0000 0000 0000 uuuu uuuu
CCP1CON --00 0000 --00 0000 --uu uuuu
CCP2CON 0000 0000 0000 0000 uuuu uuuu
CCPR1L xxxx xxxx uuuu uuuu uuuu uuuu
CCPR1H xxxx xxxx uuuu uuuu uuuu uuuu
CCPR2L xxxx xxxx uuuu uuuu uuuu uuuu
CCPR2H xxxx xxxx uuuu uuuu uuuu uuuu
CMCON 00-- 0000 00—0000 uu-- uuuu
EEADR xxxx xxxx uuuu uuuu uuuu uuuu
EECON1 ---0 x000 ---0 q000 ---0 uuuu
EECON2 - - -
EEDATA xxxx xxxx uuuu uuuu uuuu uuuu
FSR xxxx xxxx uuuu uuuu uuuu uuuu
GPIO --xx xxxx --uu uuuu --uu uuuu
I2CADD 0000 0000 0000 0000 uuuu uuuu
I2CBUF xxxx xxxx uuuu uuuu uuuu uuuu
I2CCON 0000 0000 0000 0000 uuuu uuuu
I2CSTAT --00 0000 --00 0000 --uu uuuu
INDF - - -
INTCON 0000 000x 0000 000u uuuu uuuu
LCDCON 00-0 0000 00-0 0000 uu-u uuuu
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
33
Registro
Power-On Reset
Brown-Out Reset
MCLR durante:
-funcionamiento normal
-SLEEP
WDT Reset
Wake-up desde SLEEP
mediante:
-Interrupciones
-Temporizador del WDT
LCDD00 a LCDD15 xxxx xxxx uuuu uuuu uuuu uuuu
LCDPS ---- 0000 ---- 0000 ----uuuu
LCDPS 1111 1111 1111 1111 uuuu uuuu
OPTION_REG 1111 1111 1111 1111 uuuu uuuu
OSCCAL 0111 00-- uuuu uu-- uuuu uu--
PCL 0000 0000 0000 0000 PC+1(2)
PCLATH ---0 0000 ---0 0000 ---u uuuu
PCON ---- --0u ---- --uu ---- --uu
PIE1 0000 0000 0000 0000 uuuu uuuu
PIE2 ---- ---0 ---- ---0 ---- ---u
PIR1 0000 0000 0000 0000 uuuu uuuu
PIR2 ---- ---0 ---- ---0 ---- ---u
PORTA --xx xxxx --uu uuuu --uu uuuu
PORTB xxxx xxxx uuuu uuuu uuuu uuuu
PORTC xxxx xxxx uuuu uuuu uuuu uuuu
PORTD xxxx xxxx uuuu uuuu uuuu uuuu
PORTE ---- -xxx ---- -uuu ---- -uuu
POTF 0000 0000 0000 0000 uuuu uuuu
PORTG 0000 0000 0000 0000 uuuu uuuu
PR2 1111 1111 1111 1111 1111 1111
PREFA 0000 0000 0000 0000 uuuu uuuu
PREFB 0000 0000 0000 0000 uuuu uuuu
RCSTA 0000 --00x 0000 --00x uuuu –uuu
RCREG 0000 0000 0000 0000 uuuu uuuu
SLPCON 0011 1111 0011 1111 uuuu uuuu
SPBRG 0000 0000 0000 0000 uuuu uuuu
SSPBUF xxxx xxxx uuuu uuuu uuuu uuuu
SSPCON 0000 0000 0000 0000 uuuu uuuu
SSPADD 0000 0000 0000 0000 uuuu uuuu
SSPSTAT 0000 0000 0000 0000 uuuu uuuu
STATUS 0001 1xxx 000q quuu uuuq quuu
T1CON --00 0000 --uu uuuu --uu uuuu
T2CON -000 0000 -000 0000 -uuu uuuu
TMR0 xxxx xxxx uuuu uuuu uuuu uuuu
TMR1L xxxx xxxx uuuu uuuu uuuu uuuu
TMR1H xxxx xxxx uuuu uuuu uuuu uuuu
TMR2 0000 0000 0000 0000 uuuu uuuu
TRIS --11 1111 --11 1111 --uu uuuu
TRISA --11 1111 --11 1111 --uu uuuu
TRISB 1111 1111 1111 1111 uuuu uuuu
TRISC 1111 1111 1111 1111 uuuu uuuu
TRISE 0000 –111 0000 –111 uuuu –uuu
TRISF 1111 1111 1111 1111 uuuu uuuu
TRISG 1111 1111 1111 1111 uuuu uuuu
TXREG 0000 0000 0000 0000 uuuu uuuu
TXSTA 0000 –010 0000 –010 uuuu –uuu
VRCON 000- 0000 000- 0000 uuu- uuuu
W xxxx xxxx uuuu uuuu uuuu uuuu
Legenda: u = valor anterior x = desconocido – = no implementado q = depende de las condiciones
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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án
o 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 flanco
de 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 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
Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el
divisor 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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 hace
como 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<n> 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.
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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).
Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David 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.
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 Industriales
David 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.
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 Industriales
David 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 únicamente
dos 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 es
leí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.
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 Industriales
David 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 TOSC4
TOSC5
Buscar 1 Ejecutar 1
1. MOVLW 55h
2. MOVWF PORTB Buscar 2 Ejecutar 2
Buscar 3 Ejecutar 3
3. CALL SUB_1
4. 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.
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 Industriales
David 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 0
Có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.
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 Industriales
David 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)
d
Selecció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 Programa
GIE 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.
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 Industriales
David 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 la
instrucción
Nemónicos,
Operandos
Descripción Ciclos
MSb LSb
Bits de
Estado
afectados
ADDWF f, d Suma W y f 1 00 0111 dfff ffff C, DC, Z
ANDWF f, d Y lógica entre W y f 1 00 0101 dfff ffff Z
CLRF f Borra el registro f 1 00 0001 1fff ffff Z
CLRW - Borra el registro W 1 00 0001 0xxx xxxx Z
COMF f, d Complementa f 1 00 1001 dfff ffff Z
DECF 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 ffff
INCF f, d Incrementa f 1 00 1010 dfff ffff Z
INCFSZ f, d Incrementa f y salta si es 0 1 (2) 00 1111 dfff ffff
IORWF f, d O lógica entre W y f 1 00 0100 dfff ffff Z
MOVF f, d Mueve f 1 00 1000 dfff ffff Z
MOVWF f Mueve W a f 1 00 0000 lfff ffff
NOP - No hace nada 1 00 0000 0xx0 0000
RLF f, d Rota f a la izquierda 1 00 1101 dfff ffff C
RRF f, d Rota f a la derecha 1 00 1100 dfff ffff C
SUBWF f, d Resta W de f 1 00 0010 dfff ffff C, DC, Z
SWAPF f, d Intercambia los bytes de f 1 00 1110 dfff ffff
XORWF 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 ffff
BSF f, b Pone a 1 el bit b del registro f 1 01 01bb bfff ffff
BTFSC f, b Testea el bit, y salta si es 0 1 (2) 01 10bb bfff ffff
BTFSS 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, Z
ANDLW k Y lógica entre k y W 1 11 1001 kkkk kkkk Z
CALL k Salto a subrutina 2 10 0kkk kkkk kkkk
CLRWDT - Pone a cero el WDT 1 00 0000 0110 0100 TO , PD
GOTO k Salto incondicional 2 10 1kkk kkkk kkkk
IORLW k O lógica entre k y W 1 11 1000 kkkk kkkk Z
MOVLW k Mueve el literal k a W 1 11 00xx kkkk kkkk
RETFIE - Retorno de interrupción 2 00 0000 0000 1001
RETLW k Retorno con k en W 2 11 01xx kkkk kkkk
RETURN - Retorno de subrutina 2 00 0000 0000 1000
SLEEP - Modo de reposo 1 00 0000 0110 0011 TO , PD
SUBLW k 1 11 110x kkkk kkkk C, DC, Z
XORLW k O exclusiva entre k y W 1 11 1010 kkkk kkkk Z
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
45
3.4.1 Descripción detallada de las instrucciones por orden alfabético.
ADDLW Suma Literal con el W
Sintaxis: [etiqueta] ADDLW k
Operandos: 0 ≤ k ≤ 255
Operación: (W) + k → W
Flags afectados: C, DC, Z
Código OP: 11 111x kkkk kkkk
Descripción: El contenido del registro W se suma con los ocho bits del literal
“k”, almacenando el resultado en W.
Ejemplo ADDLW 0X15
Antes de la instrucción W = 0x10
Después de la instrucción W= 0x25
ADDWF Suma W y el registro f
Sintaxis: [etiqueta] ADDWF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (W) + (f) → dest
Flags afectados: C, DC, Z
Código OP: 00 0111 dfff ffff
Descripción: Suma el contenido del registro W y el registro “f”. Si “d” es 0,
el resultado se almacena en el registro W, mientras que si es 1
se almacena en el registro “f”.
Ejemplo: ADDWF FSR, 0
Antes de la instrucción W = 0x17
FSR = 0xC2
Después de la instrucción W = 0xD9
FSR = 0xC2
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
46
ANDLW Y lógica entre Literal y W
Sintaxis: [etiqueta] ANDLW k
Operandos: 0 ≤ k ≤ 255
Operación: (W) AND (k) → W
Flags afectados: Z
Código OP: 11 1001 kkkk kkkk
Descripción: Realiza la operación lógica AND entre el registro W y los ocho
bits del literal “k”. El resultado se almacena en el registro W.
Ejemplo: ANDLW 0x5F
Antes de la instrucción W = 0xA3 ;0101 1111 (0x5F)
Después de la instrucción W = 0x03 ;1010 0011 (0xA3)
;0000 0011 (0x03)
ANDWF Y lógica entre W y f
Sintaxis: [etiqueta] ANDWF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (W) AND (f) → dest
Flags afectados: Z
Código OP: 00 0101 dfff ffff
Descripción: Realiza la operación lógica AND entre W y el registro “f”. Si
“d” es 0, el resultado se almacena en el registro W, mientras
que si es 1 se almacena en el registro “f”.
Ejemplo: ANDWF FSR, 1
Antes de la instrucción W = 0x17 ;0001 0111 (0x17)
FSR = 0xC2 ;1100 0010 (0xC2)
Después de la instrucción W = 0x17 ;0000 0010 (0x02)
FSR = 0x02
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
47
BCF Borra un bit
Sintaxis: [etiqueta] BCF f, b
Operandos: 0 ≤ f ≤ 127
0 ≤ b ≤ 7
Operación: 0 → f<b>
Flags afectados: Ninguno
Código OP: 01 00bb bfff ffff
Descripción: Borra el bit “b” del registro “f”.
Ejemplo: BCF FLAG_REG, 7
Antes de la instrucción FLAG_REG = 0xC7 ;1100 0111
Después de la instrucción FLAG_REG = 0x47 ;0100 0111
BSF Pone a 1 un bit
Sintaxis: [etiqueta] BSF f, b
Operandos: 0 ≤ f ≤ 127
0 ≤ b ≤ 7
Operación: 1 → f<b>
Flags afectados: Ninguno
Código OP: 01 01bb bfff ffff
Descripción: Pone a 1 el bit “b” del registro “f”.
Ejemplo: BSF FLAG_REG, 7
Antes de la instrucción FLAG_REG = 0x0A ;0000 1010
Después de la instrucción FLAG_REG = 0x8A ;1000 1010
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
48
BTFSC Testeo de bit y salto si es 0
Sintaxis: [etiqueta] BTFSC f, b
Operandos: 0 ≤ f ≤ 127
0 ≤ b ≤ 7
Operación: Salta si (f<b>) = 0
Flags afectados: Ninguno
Código OP: 01 10bb bfff ffff
Descripción: Si el bit “b” del registro “f” es 0, se salta una instrucción y se
continua con la ejecución.
Ejemplo: AQUÍ BTFSC FLAG, 4
FALSO GOTO REPETIR
VERDAD ..........
..................................
Antes de la instrucción PC = dirección de AQUÍ
Después de la instrucción Si FLAG, 4 =0
PC = dirección de VERDAD
Si FLAG, 4 = 1
PC = dirección de FALSO
BTFSS Testeo de bit y salto si es 1
Sintaxis: [etiqueta] BTFSS f, b
Operandos: 0 ≤ f ≤ 127
0 ≤ b ≤ 7
Operación: Salta si (f<b>) = 1
Flags afectados: Ninguno
Código OP: 01 11bb bfff ffff
Descripción: Si el bit “b” del registro “f” es 1, se salta una instrucción y se
continua con la ejecución.
Ejemplo: AQUÍ BTFSS FLAG, 4
FALSO GOTO REPETIR
VERDAD ..........
..................................
Antes de la instrucción PC = dirección de AQUÍ
Después de la instrucción Si FLAG, 4 =1
PC = dirección de VERDAD
Si FLAG, 4 = 0
PC = dirección de FALSO
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
49
CALL Salto a subrutina
Sintaxis: [etiqueta] CALL k
Operandos: 0 ≤ k ≤ 2047
Operación: (PC) + 1 → TOS,
k → PC<10:0>,
(PCLATCH<4:3>) → PC<12:11>
Flags afectados: Ninguno
Código OP: 10 0kkk kkkk kkkk
Descripción: Salto a subrutina. Primero se guardan en la pila los 13 bits de
la dirección de retorno (PC + 1). Después se carga en el PC los
11 bits del inmediato “k”, los dos bits más significativos los
proporciona el PCLATCH<4:3>. CALL tarda dos ciclos de
instrucción en ejecutarse.
Ejemplo: PROGRAMA CALL SUBRUTINA
Antes de la instrucción PC =dirección de PROGRAMA
Después de la instrucción TOS = dirección de PROGRAMA + 1
PC = dirección de SUBRUTINA
CLRF Borra un registro f
Sintaxis: [etiqueta] CLRF f
Operandos: 0 ≤ f ≤ 127
Operación: 00h → f
1 → Z
Flags afectados: Z
Código OP: 00 0001 1fff ffff
Descripción: Se borra el contenido del registro “f” y el flag Z de estado se
activa.
Ejemplo: CLRF FLAG_REG
Antes de la instrucción FLAG_REG = 0x5A
Después de la instrucción FLAG_REG = 0x00
Z = 1
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
50
CLRW Borra el registro W
Sintaxis: [etiqueta] CLRW
Operandos: Ninguno
Operación: 00h → W
1 → Z
Flags afectados: Z
Código OP: 00 0001 1xxx xxxx
Descripción: Se borra el contenido del registro W y el flag Z de estado se
activa.
Ejemplo: CLRW
Antes de la instrucción W = 0x5A
Después de la instrucción W = 0x00
Z = 1
CLRWDT Borra el “Watchdog”
Sintaxis: [etiqueta] CLRWDT
Operandos: Ninguno
Operación: 00h → WDT
0 → predivisor del WDT
1 → TO
1 → PD
Flags afectados: TO , PD
Código OP: 00 0000 0110 01000
Descripción: Se borra el contenido tanto del “Watchdog” como de su
predivisor. Los bits TO y PD del Registro de Estado se ponen
a 1.
Ejemplo: CLRWDT
Antes de la instrucción Temporizador WDT = x
Predivisor WDT = 1:128
Después de la instrucción Temporizador WDT = 0x00
Registro predivisor WDT = 0
TO = 1
PD = 1
Predivisor WDT = 1:128
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
51
COMF Complementa el registro f
Sintaxis: [etiqueta] COMF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f ) → dest
Flags afectados: Z
Código OP: 00 1001 dfff ffff
Descripción: Complementa el contenido del registro “f”. Si “d” es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro “f”.
Ejemplo: COMF REG1, 0
Antes de la instrucción REG1 = 0x13
Después de la instrucción REG1 = 0x13
W = 0xEC
DECF Decrementa el registro f
Sintaxis: [etiqueta] DECF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f) - 1 → dest
Flags afectados: Z
Código OP: 00 0011 dfff ffff
Descripción: Decrementa el contenido del registro “f”. Si “d” es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro “f”.
Ejemplo: DECF CONT, 1
Antes de la instrucción CONT= 0x01
Z = 0
Después de la instrucción CONT= 0x00
Z = 1
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
52
DECFSZ Decrementa el registro f y salta si es 0
Sintaxis: [etiqueta] DECFSC f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f) – 1 → dest; salta si el resultado es 0
Flags afectados: Ninguno
Código OP: 00 1011 dfff ffff
Descripción: Decrementa el contenido del registro “f”. Si “d” es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro “f”. Si el resultado es 0, se salta la
siguiente instrucción y se continua con la ejecución.
Ejemplo: RESTA DECFSZ CONT, 1
GOTO LAZO
CONTINUAR ...........
..............................................
Antes de la instrucción PC = dirección de RESTA
CONT= 0x01
Después de la instrucción CONT= 0x00
PC = dirección de CONTINUAR
GOTO Salto Incondicional
Sintaxis: [etiqueta] GOTO k
Operandos: 0 ≤ k ≤ 2047
Operación: k → PC<10:0>
PCLATCH<4:3> → PC<12:11>
Flags afectados: Ninguno
Código OP: 10 1kkk kkkk kkkk
Descripción: Salto incondicional. Se carga en el PC<10:0> los 11 bits del
inmediato “k”. Los dos bits restantes los proporciona el
PCLATCH<4:3>. GOTO tarda dos ciclos de instrucción en
ejecutarse.
Ejemplo: GOTO SALTO
Después de la instrucción PC = dirección SALTO
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
53
INCF Incrementa el registro f
Sintaxis: [etiqueta] INCF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f) + 1 → dest
Flags afectados: Z
Código OP: 00 1010 dfff ffff
Descripción: Incrementa el contenido del registro “f”. Si “d” es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro “f”.
Ejemplo: INCF CONT, 1
Antes de la instrucción CONT= 0xFF
Z = 0
Después de la instrucción CONT= 0x00
Z = 1
INCFSZ Incrementa el registro f y salta si es 0
Sintaxis: [etiqueta] INCFSC f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f) + 1 → dest; salta si el resultado es 0
Flags afectados: Ninguno
Código OP: 00 1111 dfff ffff
Descripción: Incrementa el contenido del registro “f”. Si “d” es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro “f”. Si el resultado es 0, se salta la
siguiente instrucción y se continua con la ejecución.
Ejemplo: SUMA INCFSZ CONT, 1
GOTO LAZO
CONTINUAR ...........
..............................................
Antes de la instrucción PC = dirección de RESTA
CONT= 0xFF
Después de la instrucción CONT= 0x00
PC = dirección de CONTINUAR
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
54
IORLW O lógica entre Literal y W
Sintaxis: [etiqueta] IORLW k
Operandos: 0 ≤ k ≤ 255
Operación: (W) OR (k) → W
Flags afectados: Z
Código OP: 11 1000 kkkk kkkk
Descripción: Realiza la operación lógica OR entre el registro W y los ocho
bits del literal “k”. El resultado se almacena en el registro W.
Ejemplo: ANDLW 0x35
Antes de la instrucción W = 0x9A
Después de la instrucción W = 0xBF
Z = 0
IORWF O lógica entre W y f
Sintaxis: [etiqueta] IORWF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (W) OR (f) → dest
Flags afectados: Z
Código OP: 00 0100 dfff ffff
Descripción: Realiza la operación lógica OR entre W y el registro “f”. Si
“d” es 0, el resultado se almacena en el registro W, mientras
que si es 1 se almacena en el registro “f”.
Ejemplo: IORWF REG, 0
Antes de la instrucción REG = 0x13
W = 0x91
Después de la instrucción REG = 0x13
W = 0x93
Z = 0
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
55
MOVLW Mueve un Literal a W
Sintaxis: [etiqueta] MOVLW k
Operandos: 0 ≤ k ≤ 255
Operación: k → W
Flags afectados: Ninguno
Código OP: 11 00xx kkkk kkkk
Descripción: El registro W se carga con el valor de los ocho bits del literal
“k”.
Ejemplo: MOVLW 0x5A
Después de la instrucción W = 0x5A
MOVF Mover a f
Sintaxis: [etiqueta] MOVF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f) → dest
Flags afectados: Z
Código OP: 00 1000 dfff ffff
Descripción: El contenido del registro “f” se mueve al destino. Si “d” es 0,
el resultado se almacena en el registro W, mientras que si es 1
se almacena en el registro “f”.
Ejemplo: MOVF FSR, 0
Antes de la instrucción W = 0x00
FSR = 0xC2
Después de la instrucción W = 0xC2
Z = 0
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
56
MOVWF Mueve W al registro f
Sintaxis: [etiqueta] MOVWF f
Operandos: 0 ≤ f ≤ 127
Operación: (W) → f
Flags afectados: Ninguno
Código OP: 00 0000 1fff ffff
Descripción: Mueve el contenido del registro W al registro “f”.
Ejemplo: MOVWF OPTION_REG
Antes de la instrucción OPTION_REG = 0xFF
W = 0x4F
Después de la instrucción OPTION_REG = 0x4F
W = 0x4F
NOP No operar
Sintaxis: [etiqueta] NOP
Operandos: Ninguno
Operación: No realiza ninguna operación
Flags afectados: Ninguno
Código OP: 00 000 0xx0 0000
Descripción: No realiza ninguna operación.
Ejemplo: ETIQUETA NOP
Antes de la instrucción PC = dirección de ETIQUETA
Después de la instrucción PC = dirección de ETIQUETA + 1
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
57
RETFIE Retorno de rutina de interrupción
Sintaxis: [etiqueta] RETFIE
Operandos: Ninguno
Operación: TOS → PC
1 → GIE
Flags afectados: Ninguno
Código OP: 00 0000 0000 1001
Descripción: Retorno de una rutina de interrupción. Los 13 bits de la
dirección de retorno los carga en el PC desde la pila. El bit
GIE (INTCON<7>) se pone automáticamente a 1, habilitando
nuevas interrupciones. Requiere dos ciclos de instrucción para
su ejecución.
Ejemplo: RETFIE
Después de la instrucción PC = TOS
GIE = 1
RETLW Retorno de subrutina con Literal en el W
Sintaxis: [etiqueta] RETLW k
Operandos: 0 ≤ k ≤ 255
Operación: k → W
TOS → PC
Flags afectados: Ninguno
Código OP: 11 01xx kkkk kkkk
Descripción: El registro W se carga con los ocho bits del literal “k”. El PC
toma los 13 bits de la dirección de retorno del nivel superior de
la pila. Requiere dos ciclos de instrucción para su ejecución.
Ejemplo: PROGRAMA CALL TABLA
.................
.................
TABLA ADDWF PC
RETLW k0
RETLW k1
...........................
RETLW kn
Antes de la instrucción W = 0x07
Después de la instrucción W = valor de k7
PC= TOS = dirección de PROGRAMA +1
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
58
RETURN Retorno de subrutina
Sintaxis: [etiqueta] RETURN
Operandos: Ninguno
Operación: TOS → PC
Flags afectados: Ninguno
Código OP: 00 0000 0000 1000
Descripción: Retorno de una subrutina de interrupción. Los 13 bits de la
dirección de retorno los carga en el PC desde la pila. Requiere
dos ciclos de instrucción para su ejecución.
Ejemplo: FIN RETURN
Después de la instrucción PC = TOS
RLF Rota f a la izquierda a través del Carry
Sintaxis: [etiqueta] RLF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: Rotación a la izquierda de f.
Flags afectados: C
Código OP: 00 1101 dfff ffff
Descripción: El contenido del registro “f” se rota una posición a la izquierda
a través del flag de carry. Si “d” es 0, el resultado se almacena
en el registro W, mientras que si es 1 se almacena en el
registro “f”.
Ejemplo: RLF REG1, 0
Antes de la instrucción REG1 = 1110 0110
C = 0
Después de la instrucción REG1 = 1110 0110
W = 1100 1100
C = 1
Registro f
C
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
59
RRF Rota f a la derecha a través del Carry
Sintaxis: [etiqueta] RRF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: Rotación a la derecha de f.
Flags afectados: C
Código OP: 00 1100 dfff ffff
Descripción: El contenido del registro “f” se rota una posición a la derecha a
través del flag de carry. Si “d” es 0, el resultado se almacena
en el registro W, mientras que si es 1 se almacena en el
registro “f”.
Ejemplo: RLF REG1, 0
Antes de la instrucción REG1 = 1110 0110
C = 0
Después de la instrucción REG1 = 1110 0110
W = 0111 0011
C = 0
SLEEP Modo de reposo
Sintaxis: [etiqueta] SLEEP
Operandos: Ninguno
Operación: 00h → WDT
0 → predivisor del WDT
1 → TO
0 → PD
Flags afectados: TO , PD
Código OP: 00 0000 0110 0011
Descripción: El bit TO se pone a 1, y el bit PD del registro de Estado se
pone a 0. Además también se pone a cero el predivisor del
predivisor del WDT. El procesador entra en el modo SLEEP o
de reposo, dejando el oscilador principal de funcionar.
Ejemplo: SLEEP
Registro f
C
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
60
SUBLW Resta W de un Literal
Sintaxis: [etiqueta] SUBLW k
Operandos: 0 ≤ k ≤ 255
Operación: k – (W) → W
Flags afectados: C, DC, Z
Código OP: 11 110x kkkk kkkk
Descripción: El registro W se resta (mediante complemento a 2) de los ocho
bits del literal “k”. El resultado es almacenado en el registro
W.
Ejemplo: SUBLW 0x02
Antes de la instrucción W = 0x01
C =x
Z = x
Después de la instrucción W = 0x01
C = 1 ;el resultado es positivo
Z = 0
SUBWF Resta W del registro f
Sintaxis: [etiqueta] SUBWF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f) - (W) → dest
Flags afectados: C, DC, Z
Código OP: 00 0010 dfff ffff
Descripción: El registro W se resta (mediante complemento a 2) del registro
“f”. Si “d” es 0, el resultado se almacena en el registro W,
mientras que si es 1 se almacena en el registro “f”.
Ejemplo: SUBWF REG1, 1
Antes de la instrucción REG1 =3
W = 2
C = x
Z = x
Después de la instrucción REG1 = 1
W = 2
C = 1 ;el resultado es positivo
Z = 0
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
61
SWAPF Intercambio de los Nibbles del registro f
Sintaxis: [etiqueta] SWAPF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (f<3:0>) → dest<7:4>
(f<7:4>) → dest<3:0>
Flags afectados: Ninguno
Código OP: 00 1110 dfff ffff
Descripción: Los cuatro bits más significativos y menos significativos del
registro “f”, son intercambiados entre si. Si “d” es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro “f”.
Ejemplo: SWAPF REG1, 0
Antes de la instrucción REG1 = 0xA5
Después de la instrucción REG1 = 0xA5
W = 0x5A
XORLW O exclusiva entre un Literal y W
Sintaxis: [etiqueta] XORLW k
Operandos: 0 ≤ k ≤ 255
Operación: (W) XOR (k) → W
Flags afectados: Z
Código OP: 11 1010 kkkk kkkk
Descripción: Realiza la operación lógica O exclusiva entre el registro W y
los ocho bits del literal “k”. El resultado es almacenado en el
registro W.
Ejemplo: XORLW 0xAF ;1010 1111 (0xAF)
Antes de la instrucción W = 0xB5 ;1011 1010 (0xB5)
Después de la instrucción W = 0x1A ;--------------- ---------
Z = 0 ;0001 1010 (0x1A)
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 Industriales
David Arroyo Muñoz Universidad de Extremadura
62
XORWF O exclusiva entre W y el registro f
Sintaxis: [etiqueta] XORWF f, d
Operandos: 0 ≤ f ≤ 127
d є [0, 1]
Operación: (W) XOR (f) → dest
Flags afectados: Z
Código OP: 00 0110 dfff ffff
Descripción: Realiza la operación lógica O exclusiva entre el registro W y el
registro “f”. Si “d” es 0, el resultado se almacena en el registro
W, mientras que si es 1 se almacena en el registro “f”.
Ejemplo: XORWF REG, 1
Antes de la instrucción REG = 0xAF ;1010 1111 (0xAF)
W = 0xB5 ;1011 1010 (0xB5)
Después de la instrucción REG = 0x1A ;--------------- ---------
W = 0xB5 ;0001 1010 (0x1A)
Microcontroladores PIC de la Gama Media. 4. Los Periféricos de los PIC de la Gama Media.
Santiago Salamanca Miño Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
63
Capítulo 4. Los Periféricos de los PIC de la Gama Media
4.1 Introducción.
En este capítulo se tratará el estudio de los distintos periféricos de los PIC de la Gama Media.
Una de las ventajas que tienen los PIC es la gran cantidad de periféricos asociados a los
modelos que hay. Estos periféricos sirven para interactuar con el exterior a través de una
circuitería externa adecuada.
4.2 Interrupciones.
Existen fundamentalmente dos métodos de E/S:
• E/S controlada por programa, en la cual se testea de forma continua mediante un
bucle el estado de los elementos externos o periféricos, actuando en
correspondencia a los valores obtenidos.
• E/S controlada por interrupciones. En este caso el elemento externo o periférico
le indica al microcontrolador cuando está preparado, pudiendo mientras realizar
otras tareas. Cuando se produce la interrupción el microcontrolador atiende al
periférico que la ha producido y luego continua con la tarea que estaba haciendo
anteriormente.
Este último método es el más potente para realizar operaciones de E/S, y los PIC de la Gama
Media permiten la posibilidad de usarlo. A diferencia de otros sistemas, estas interrupciones
no están vectorizadas.
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores
Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores

Más contenido relacionado

La actualidad más candente

HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...Enrique Catala Bañuls
 
Black berry torch 9800
Black berry torch 9800Black berry torch 9800
Black berry torch 9800catalan21
 
Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1Oscar Plá
 
Tutorial computación básica ii
Tutorial computación básica iiTutorial computación básica ii
Tutorial computación básica iidanielitaguzman
 
Introduccion a la informatica apliacda
Introduccion a la informatica apliacdaIntroduccion a la informatica apliacda
Introduccion a la informatica apliacdaAllen Chaves Medina
 
Ecosys m2030dn ...535dn_og_es
Ecosys m2030dn ...535dn_og_esEcosys m2030dn ...535dn_og_es
Ecosys m2030dn ...535dn_og_esleon7412
 
Eterboard
EterboardEterboard
EterboardMexalit
 
ABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdf
ABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdfABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdf
ABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdfAnonymouseAI4eNUb64
 

La actualidad más candente (13)

Balanza 920i
Balanza 920iBalanza 920i
Balanza 920i
 
Mallas de tierra
Mallas de tierraMallas de tierra
Mallas de tierra
 
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
 
Black berry torch 9800
Black berry torch 9800Black berry torch 9800
Black berry torch 9800
 
Manual Zelio logic
Manual Zelio logicManual Zelio logic
Manual Zelio logic
 
Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1
 
Zelio logic 2_quick_ start
Zelio logic 2_quick_ startZelio logic 2_quick_ start
Zelio logic 2_quick_ start
 
Tutorial computación básica ii
Tutorial computación básica iiTutorial computación básica ii
Tutorial computación básica ii
 
Introduccion a la informatica apliacda
Introduccion a la informatica apliacdaIntroduccion a la informatica apliacda
Introduccion a la informatica apliacda
 
Ecosys m2030dn ...535dn_og_es
Ecosys m2030dn ...535dn_og_esEcosys m2030dn ...535dn_og_es
Ecosys m2030dn ...535dn_og_es
 
Eterboard
EterboardEterboard
Eterboard
 
ABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdf
ABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdfABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdf
ABASTECIMIENTOS-DE-AGUA-TEORIA-Y-DISENO-SIMON-AROCHA-R..pdf
 
Guia de usuario lexmark t520
Guia de usuario lexmark t520Guia de usuario lexmark t520
Guia de usuario lexmark t520
 

Similar a Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores

Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos GM Lamo
 
Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701
Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701
Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701Pluk Fimia
 
Solucion problemas sist electrico freightliner
Solucion problemas sist electrico freightlinerSolucion problemas sist electrico freightliner
Solucion problemas sist electrico freightlinerVictor Rivas
 
Introducción a la programación en c
Introducción a la programación en cIntroducción a la programación en c
Introducción a la programación en cvictdiazm
 
Seminario del Operador
Seminario del Operador Seminario del Operador
Seminario del Operador xpcmarkos
 
1246876145manualprogramacióNcastellano 050906
1246876145manualprogramacióNcastellano 0509061246876145manualprogramacióNcastellano 050906
1246876145manualprogramacióNcastellano 050906Alfmaro
 
Tutorial multisim 11 en español
Tutorial multisim 11 en españolTutorial multisim 11 en español
Tutorial multisim 11 en españolJorge Cassia
 
D7024 install 0603_sp
D7024 install 0603_spD7024 install 0603_sp
D7024 install 0603_spRichard Deza
 
M. uso calderas condensacion natur - Servicio Tecnico Fagor
M.  uso calderas condensacion natur - Servicio Tecnico FagorM.  uso calderas condensacion natur - Servicio Tecnico Fagor
M. uso calderas condensacion natur - Servicio Tecnico Fagorserviciotecnicofagor
 
Manual de-usuario-prog.-esp
Manual de-usuario-prog.-espManual de-usuario-prog.-esp
Manual de-usuario-prog.-espFernando Aguilar
 
Español zelio logic_2_-_manual_do_usuario
Español zelio logic_2_-_manual_do_usuarioEspañol zelio logic_2_-_manual_do_usuario
Español zelio logic_2_-_manual_do_usuariocmduran
 

Similar a Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores (20)

Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 
Pic gama-media
Pic gama-mediaPic gama-media
Pic gama-media
 
Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701
Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701
Mi 2292 power_quality_analyser_plus_ang_ver_3.1__20_750_701
 
Solucion problemas sist electrico freightliner
Solucion problemas sist electrico freightlinerSolucion problemas sist electrico freightliner
Solucion problemas sist electrico freightliner
 
Introducción a la programación en C
Introducción a la programación en CIntroducción a la programación en C
Introducción a la programación en C
 
Introducción a la programación en c
Introducción a la programación en cIntroducción a la programación en c
Introducción a la programación en c
 
Seminario del Operador
Seminario del Operador Seminario del Operador
Seminario del Operador
 
1246876145manualprogramacióNcastellano 050906
1246876145manualprogramacióNcastellano 0509061246876145manualprogramacióNcastellano 050906
1246876145manualprogramacióNcastellano 050906
 
Manual impacta espanhol
Manual impacta espanholManual impacta espanhol
Manual impacta espanhol
 
Manual 1832 1864 dsc
Manual 1832 1864 dscManual 1832 1864 dsc
Manual 1832 1864 dsc
 
Tutorial multisim 11 en español
Tutorial multisim 11 en españolTutorial multisim 11 en español
Tutorial multisim 11 en español
 
CIRCUITOS.pdf
CIRCUITOS.pdfCIRCUITOS.pdf
CIRCUITOS.pdf
 
syc.pdf
syc.pdfsyc.pdf
syc.pdf
 
Dsc hs2016 32-64-128-manual
Dsc hs2016 32-64-128-manualDsc hs2016 32-64-128-manual
Dsc hs2016 32-64-128-manual
 
D7024 install 0603_sp
D7024 install 0603_spD7024 install 0603_sp
D7024 install 0603_sp
 
M. uso calderas condensacion natur - Servicio Tecnico Fagor
M.  uso calderas condensacion natur - Servicio Tecnico FagorM.  uso calderas condensacion natur - Servicio Tecnico Fagor
M. uso calderas condensacion natur - Servicio Tecnico Fagor
 
Manual de-usuario-prog.-esp
Manual de-usuario-prog.-espManual de-usuario-prog.-esp
Manual de-usuario-prog.-esp
 
Español zelio logic_2_-_manual_do_usuario
Español zelio logic_2_-_manual_do_usuarioEspañol zelio logic_2_-_manual_do_usuario
Español zelio logic_2_-_manual_do_usuario
 
Zelio
ZelioZelio
Zelio
 
Pic
PicPic
Pic
 

Más de SANTIAGO PABLO ALBERTO

Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaSANTIAGO PABLO ALBERTO
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez SANTIAGO PABLO ALBERTO
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio PereiraSANTIAGO PABLO ALBERTO
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...SANTIAGO PABLO ALBERTO
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1SANTIAGO PABLO ALBERTO
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTSANTIAGO PABLO ALBERTO
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...SANTIAGO PABLO ALBERTO
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...SANTIAGO PABLO ALBERTO
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...SANTIAGO PABLO ALBERTO
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...SANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...SANTIAGO PABLO ALBERTO
 

Más de SANTIAGO PABLO ALBERTO (20)

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
 
Fisica I
Fisica IFisica I
Fisica I
 
Quimica.pdf
Quimica.pdfQuimica.pdf
Quimica.pdf
 
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
 

Último

Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfMIGUELANGELCONDORIMA4
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 

Último (20)

Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 

Microcontroladores: los PIC de la gama media, arquitectura y técnica de programación de microcontroladores

  • 1. LOS PIC DE LA GAMA MEDIA. ARQUITECTURA Y TÉCNICAS DE PROGRAMACIÓN. Santiago Salamanca Miño David Arroyo Muñoz Octubre de 2003
  • 2. Este libro es el resultado del Proyecto Fin de Carrera realizado por el alumno David Arroyo 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
  • 3. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. Santiago Salamanca Miño Escuela de Ingenierías Industriales David Arroyo Muñoz Universidad de Extremadura I ÍNDICE GENERAL 1 Introducción a los Microcontroladores......................................................................1 1.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............................................................................................11 2.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
  • 4. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. Santiago Salamanca Miño Escuela de Ingenierías Industriales David Arroyo Muñoz Universidad de Extremadura II 4.2 Interrupciones. ........................................................................................ 63 4.2.1 Registros de control........................................................ 65 4.2.1.1 Registro INTCON......................................... 65 4.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. ......................................................................... 77 4.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 I2 C. .................................................................... 117
  • 5. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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......................................133 5 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...................................................158 5.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
  • 6. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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. ................................................. 169 5.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.................................. 174 5.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 I2 C........................................................................................ 187 A.1 Introducción......................................................................................... 187 A.2 Inicialización y fin de transferencia de datos....................................... 187 A.3 Direccionamiento de dispositivos en I2 C............................................. 188 A.4 Reconocimiento de transferencia......................................................... 189
  • 7. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 que rebosa. 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.
  • 9. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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.
  • 10. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 bajo costo, 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 el acceso 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.
  • 11. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 otras dos 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) EPROM CR Standard (4.5-6.0 V) ROM F 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.
  • 12. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 las anteriores, 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.
  • 13. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 Memoria de programa Cápsulas Máxima frecuencia de trabajo EPROM EEROM Memoria de datos (bytes) EEPROM de datos (bytes) Módulos de temporización Módulos CCP Puertos serie Puerto Paralelo Convertidor A/D de 8 bits Comparadores Tensión interna de referencia Fuentes de interrupción Patillas de E/S Rango de voltaje (voltios) Detector de fallo en V DD “Brown-out” Pines DIP Pines PLCC Pines QFP PIC16C61 20 1K --- 36 --- TMR0 -- --- -- -- -- -- 3 13 3,0- 6,0 --- 18 18 -- PIC16C62 20 2K --- 128 --- TMR0,TMR1 ,TMR2 2 SPI/I2 C/SCI -- -- -- -- 10 22 2,5- 6,0 --- 28 28 -- PIC16C63 20 4K --- 192 --- TMR0,TMR1 ,TMR2 2 SPI/I2 C/SCI --- -- -- -- 10 22 3,0- 6,0 --- 28 28 -- PIC16C64 20 2K --- 128 --- TMR0,TMR1 ,TMR2 1 SPI/I2 C Si -- -- -- 8 33 3,0- 6,0 --- 40 44 44 PIC16C65 20 4K --- 192 --- TMR0,TMR1 ,TMR2 2 SPI/I2 C/SCI Si -- -- -- 11 33 3,0- 6,0 --- 40 44 44 PIC16C620 20 512 --- 80 --- TMR0 -- ---- -- -- 2 Si 4 13 3,0- 6,0 Si 18 18 20 PIC16C621 20 1K --- 80 --- TMR0 -- ---- -- -- 2 Si 4 13 3,0- 6,0 Si 18 18 20 PIC16C622 20 2K --- 128 --- TMR0 -- ---- -- -- 2 Si 4 13 3,0- 6,0 Si 18 18 20 PIC16C71 20 1K --- 36 --- TMR0 -- ---- -- 4ch -- -- 4 13 3,0- 6,0 --- 18 18 -- PIC16C73 20 4K --- 192 --- TMR0,TMR1 ,TMR2 2 SPI/I2 C/SCI -- 5ch -- -- 11 22 3,0- 6,0 --- 28 28 -- PIC16C74 20 4K --- 192 --- TMR0,TMR1 ,TMR2 2 SPI/I2 C/SCI Si 8ch -- -- 12 33 3,0- 6,0 --- 40 44 44 PIC16C76 20 8K --- 368 --- TMR0,TMR1 ,TMR2 2 SPI/I2 C/SCI -- 5ch -- -- 11 22 2,5- 6,0 Si 28 28 -- PIC16C84 20 -- 1K 36 64 TMR0 -- ---- -- -- -- -- 4 13 3,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.
  • 14. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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.
  • 15. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 I2 C. RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie en el modo I2 C. 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.
  • 16.
  • 17. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 se accede 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 Gama Media. 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.
  • 18. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 del dispositivo.
  • 19. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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.
  • 20. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 implementados estos 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 <11:12>), los cuales son implementados físicamente en la memoria de datos en el registro PCLATCH <4:3>. 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
  • 21. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 realizar esta 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 <12:8> 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 <4:3>. Si se hace un GOTO a una dirección que está en una página distinta, primero hay que modificar estos bits del PCLATH.
  • 22. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 rutinas de 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 nuevo valor 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.
  • 23. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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’.
  • 24. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 la direcció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 W MOVWF FSR ; Carga valor de W en FSR SIGUIENTE CLRF INDF ; Borra la posición de memoria que marca FSR INCF FSR,1 ; Incrementa valor del FSR BTFSS 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’.
  • 25. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 el direccionamiento 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 Down 1 = 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.
  • 26. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 de configuració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 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 Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el divisor al WDT.
  • 27. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 distintos aspectos 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<1:0>: 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 = Activado 0 = Desactivado. bit 1-0 FOSC1-FOSC0: Selección del tipo de oscilador. 11 = Oscilador RC. 10 = Oscilador HS 01 = Oscilador XT 00 = Oscilador LP 512 1k 2k 11 Off Off Off 10 Off Off ½ alta On 01 Off ½ alta On ¾ alta On 00 On On On
  • 28. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 Y FOSC0 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ón FOSC1:FOSC0 Modo OSC Ganancia de los inversores internos Comentarios 11 RC − Solución más barata (sólo requiere una resistencia y un condensador). Máxima variación del tiempo base. Modo del dispositivo por defecto 10 HS Ganancia alta Cristal de cuarzo para aplicaciones de alta frecuencia. Es el modo que más potencia consume de los tres cristales. 01 XT Ganancia media Cristal de cuarzo para un rango de frecuencias estándar. 00 LP Ganancia baja Cristal de cuarzo para aplicaciones de baja frecuencia. Es el modo que menos potencia consume de los tres cristales.
  • 29. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David Arroyo Muñoz Universidad de Extremadura 23 TABLA 2.2 Selección del modo de oscilación con FOSC2:FOSC0. Bits de configuración FOSC2:FOSC0 Modo OSC Ganancia de los inversores internos Comentarios 111 EXTRC con CLKOUT − Red RC externa sacando la señal de oscilación por la patilla CLKOUT. Solución barata. Máxima variación en el tiempo base. Modo del dispositivo por defecto 110 EXTRC − Red RC externa. Barata solución. Máxima variación en el tiempo base. La señal de oscilación no sale al exterior. 101 INTRC con CLKOUT − 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 al exterior. Solución más barata. Oscilador de 4MHz. 011 − − Reservado 10 HS Ganancia alta Cristal de cuarzo para aplicaciones de alta frecuencia. Es el modo que más potencia consume de los tres cristales. 01 XT Ganancia media Cristal de cuarzo para un rango de frecuencias estándar. 00 LP Ganancia baja Cristal de cuarzo para aplicaciones de baja frecuencia. Es el modo que menos potencia consume de los tres cristales. La diferencia entre los tres últimos viene dada por la ganancia de los inversores internos, que son 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.
  • 30. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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, RS, es necesaria para cristales de alta tecnología. 2: La resistencia de realimentación, RF, 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, REXT y de CEXT (figura 2.5). El fabricante recomienda que REXT 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.
  • 31. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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, RS 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.
  • 32. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 de RESET: 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).
  • 33. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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-UP CONFIGURACIÓN DEL OSCILADOR Habilitado Deshabilitado BROWN-OUT RESET WAKE-UP DESDE 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.
  • 34. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 VDD crezca de forma 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ún el caso. Figura 2.9 Secuencia de Time-out en subida de alimentación.MCLR conectado a VDD.
  • 35. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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).
  • 36. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 debe estar 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.
  • 37. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 del transistor. 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 se corta cuando VDD baja de cierto nivel tal como: V 7 . 0 R2 R1 R1 VDD = + • 2: El circuito de Brown-out Reset interno debe de estar deshabilitado cuando se use esta configuración. 3: Los valores de las resistencias dependen de las características del transistor.
  • 38. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David Arroyo Muñoz Universidad de Extremadura 32 Debido a que existen distintas fuentes de reset, es necesario en determinadas ocasiones, saber que tipo de reset se ha producido. Esto se hace consultando los bits POR y BOR del registro PCON, 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. Registro Power-On Reset Brown-Out Reset MCLR durante: -funcionamiento normal -SLEEP WDT Reset Wake-up desde SLEEP mediante: -Interrupciones -Temporizador del WDT ADCAPL 0000 0000 0000 0000 uuuu uuuu ADCAPH 0000 0000 0000 0000 uuuu uuuu ADCON0 0000 00-0 0000 00-0 uuuu uu-u ADCON ---- -000 ---- -000 ---- -uuu ADRES xxxx xxxx uuuu uuuu uuuu uuuu ADTMRL 0000 0000 0000 0000 uuuu uuuu ADMRH 0000 0000 0000 0000 uuuu uuuu CCP1CON --00 0000 --00 0000 --uu uuuu CCP2CON 0000 0000 0000 0000 uuuu uuuu CCPR1L xxxx xxxx uuuu uuuu uuuu uuuu CCPR1H xxxx xxxx uuuu uuuu uuuu uuuu CCPR2L xxxx xxxx uuuu uuuu uuuu uuuu CCPR2H xxxx xxxx uuuu uuuu uuuu uuuu CMCON 00-- 0000 00—0000 uu-- uuuu EEADR xxxx xxxx uuuu uuuu uuuu uuuu EECON1 ---0 x000 ---0 q000 ---0 uuuu EECON2 - - - EEDATA xxxx xxxx uuuu uuuu uuuu uuuu FSR xxxx xxxx uuuu uuuu uuuu uuuu GPIO --xx xxxx --uu uuuu --uu uuuu I2CADD 0000 0000 0000 0000 uuuu uuuu I2CBUF xxxx xxxx uuuu uuuu uuuu uuuu I2CCON 0000 0000 0000 0000 uuuu uuuu I2CSTAT --00 0000 --00 0000 --uu uuuu INDF - - - INTCON 0000 000x 0000 000u uuuu uuuu LCDCON 00-0 0000 00-0 0000 uu-u uuuu
  • 39. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David Arroyo Muñoz Universidad de Extremadura 33 Registro Power-On Reset Brown-Out Reset MCLR durante: -funcionamiento normal -SLEEP WDT Reset Wake-up desde SLEEP mediante: -Interrupciones -Temporizador del WDT LCDD00 a LCDD15 xxxx xxxx uuuu uuuu uuuu uuuu LCDPS ---- 0000 ---- 0000 ----uuuu LCDPS 1111 1111 1111 1111 uuuu uuuu OPTION_REG 1111 1111 1111 1111 uuuu uuuu OSCCAL 0111 00-- uuuu uu-- uuuu uu-- PCL 0000 0000 0000 0000 PC+1(2) PCLATH ---0 0000 ---0 0000 ---u uuuu PCON ---- --0u ---- --uu ---- --uu PIE1 0000 0000 0000 0000 uuuu uuuu PIE2 ---- ---0 ---- ---0 ---- ---u PIR1 0000 0000 0000 0000 uuuu uuuu PIR2 ---- ---0 ---- ---0 ---- ---u PORTA --xx xxxx --uu uuuu --uu uuuu PORTB xxxx xxxx uuuu uuuu uuuu uuuu PORTC xxxx xxxx uuuu uuuu uuuu uuuu PORTD xxxx xxxx uuuu uuuu uuuu uuuu PORTE ---- -xxx ---- -uuu ---- -uuu POTF 0000 0000 0000 0000 uuuu uuuu PORTG 0000 0000 0000 0000 uuuu uuuu PR2 1111 1111 1111 1111 1111 1111 PREFA 0000 0000 0000 0000 uuuu uuuu PREFB 0000 0000 0000 0000 uuuu uuuu RCSTA 0000 --00x 0000 --00x uuuu –uuu RCREG 0000 0000 0000 0000 uuuu uuuu SLPCON 0011 1111 0011 1111 uuuu uuuu SPBRG 0000 0000 0000 0000 uuuu uuuu SSPBUF xxxx xxxx uuuu uuuu uuuu uuuu SSPCON 0000 0000 0000 0000 uuuu uuuu SSPADD 0000 0000 0000 0000 uuuu uuuu SSPSTAT 0000 0000 0000 0000 uuuu uuuu STATUS 0001 1xxx 000q quuu uuuq quuu T1CON --00 0000 --uu uuuu --uu uuuu T2CON -000 0000 -000 0000 -uuu uuuu TMR0 xxxx xxxx uuuu uuuu uuuu uuuu TMR1L xxxx xxxx uuuu uuuu uuuu uuuu TMR1H xxxx xxxx uuuu uuuu uuuu uuuu TMR2 0000 0000 0000 0000 uuuu uuuu TRIS --11 1111 --11 1111 --uu uuuu TRISA --11 1111 --11 1111 --uu uuuu TRISB 1111 1111 1111 1111 uuuu uuuu TRISC 1111 1111 1111 1111 uuuu uuuu TRISE 0000 –111 0000 –111 uuuu –uuu TRISF 1111 1111 1111 1111 uuuu uuuu TRISG 1111 1111 1111 1111 uuuu uuuu TXREG 0000 0000 0000 0000 uuuu uuuu TXSTA 0000 –010 0000 –010 uuuu –uuu VRCON 000- 0000 000- 0000 uuu- uuuu W xxxx xxxx uuuu uuuu uuuu uuuu Legenda: u = valor anterior x = desconocido – = no implementado q = depende de las condiciones
  • 40. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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án o 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 flanco de 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.
  • 41. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 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 Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el divisor 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.
  • 42. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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 hace como 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<n> 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.
  • 43. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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).
  • 44. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media Santiago Salamanca Miño Escuela de Ingenierías Industriales David 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.
  • 45. 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 Industriales David 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.
  • 46. 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 Industriales David 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 únicamente dos 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 es leí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.
  • 47. 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 Industriales David 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 TOSC4 TOSC5 Buscar 1 Ejecutar 1 1. MOVLW 55h 2. MOVWF PORTB Buscar 2 Ejecutar 2 Buscar 3 Ejecutar 3 3. CALL SUB_1 4. 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.
  • 48. 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 Industriales David 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 0 Có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.
  • 49. 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 Industriales David 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) d Selecció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 Programa GIE 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.
  • 50. 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 Industriales David 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 la instrucción Nemónicos, Operandos Descripción Ciclos MSb LSb Bits de Estado afectados ADDWF f, d Suma W y f 1 00 0111 dfff ffff C, DC, Z ANDWF f, d Y lógica entre W y f 1 00 0101 dfff ffff Z CLRF f Borra el registro f 1 00 0001 1fff ffff Z CLRW - Borra el registro W 1 00 0001 0xxx xxxx Z COMF f, d Complementa f 1 00 1001 dfff ffff Z DECF 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 ffff INCF f, d Incrementa f 1 00 1010 dfff ffff Z INCFSZ f, d Incrementa f y salta si es 0 1 (2) 00 1111 dfff ffff IORWF f, d O lógica entre W y f 1 00 0100 dfff ffff Z MOVF f, d Mueve f 1 00 1000 dfff ffff Z MOVWF f Mueve W a f 1 00 0000 lfff ffff NOP - No hace nada 1 00 0000 0xx0 0000 RLF f, d Rota f a la izquierda 1 00 1101 dfff ffff C RRF f, d Rota f a la derecha 1 00 1100 dfff ffff C SUBWF f, d Resta W de f 1 00 0010 dfff ffff C, DC, Z SWAPF f, d Intercambia los bytes de f 1 00 1110 dfff ffff XORWF 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 ffff BSF f, b Pone a 1 el bit b del registro f 1 01 01bb bfff ffff BTFSC f, b Testea el bit, y salta si es 0 1 (2) 01 10bb bfff ffff BTFSS 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, Z ANDLW k Y lógica entre k y W 1 11 1001 kkkk kkkk Z CALL k Salto a subrutina 2 10 0kkk kkkk kkkk CLRWDT - Pone a cero el WDT 1 00 0000 0110 0100 TO , PD GOTO k Salto incondicional 2 10 1kkk kkkk kkkk IORLW k O lógica entre k y W 1 11 1000 kkkk kkkk Z MOVLW k Mueve el literal k a W 1 11 00xx kkkk kkkk RETFIE - Retorno de interrupción 2 00 0000 0000 1001 RETLW k Retorno con k en W 2 11 01xx kkkk kkkk RETURN - Retorno de subrutina 2 00 0000 0000 1000 SLEEP - Modo de reposo 1 00 0000 0110 0011 TO , PD SUBLW k 1 11 110x kkkk kkkk C, DC, Z XORLW k O exclusiva entre k y W 1 11 1010 kkkk kkkk Z
  • 51. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 45 3.4.1 Descripción detallada de las instrucciones por orden alfabético. ADDLW Suma Literal con el W Sintaxis: [etiqueta] ADDLW k Operandos: 0 ≤ k ≤ 255 Operación: (W) + k → W Flags afectados: C, DC, Z Código OP: 11 111x kkkk kkkk Descripción: El contenido del registro W se suma con los ocho bits del literal “k”, almacenando el resultado en W. Ejemplo ADDLW 0X15 Antes de la instrucción W = 0x10 Después de la instrucción W= 0x25 ADDWF Suma W y el registro f Sintaxis: [etiqueta] ADDWF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (W) + (f) → dest Flags afectados: C, DC, Z Código OP: 00 0111 dfff ffff Descripción: Suma el contenido del registro W y el registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: ADDWF FSR, 0 Antes de la instrucción W = 0x17 FSR = 0xC2 Después de la instrucción W = 0xD9 FSR = 0xC2
  • 52. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 46 ANDLW Y lógica entre Literal y W Sintaxis: [etiqueta] ANDLW k Operandos: 0 ≤ k ≤ 255 Operación: (W) AND (k) → W Flags afectados: Z Código OP: 11 1001 kkkk kkkk Descripción: Realiza la operación lógica AND entre el registro W y los ocho bits del literal “k”. El resultado se almacena en el registro W. Ejemplo: ANDLW 0x5F Antes de la instrucción W = 0xA3 ;0101 1111 (0x5F) Después de la instrucción W = 0x03 ;1010 0011 (0xA3) ;0000 0011 (0x03) ANDWF Y lógica entre W y f Sintaxis: [etiqueta] ANDWF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (W) AND (f) → dest Flags afectados: Z Código OP: 00 0101 dfff ffff Descripción: Realiza la operación lógica AND entre W y el registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: ANDWF FSR, 1 Antes de la instrucción W = 0x17 ;0001 0111 (0x17) FSR = 0xC2 ;1100 0010 (0xC2) Después de la instrucción W = 0x17 ;0000 0010 (0x02) FSR = 0x02
  • 53. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 47 BCF Borra un bit Sintaxis: [etiqueta] BCF f, b Operandos: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Operación: 0 → f<b> Flags afectados: Ninguno Código OP: 01 00bb bfff ffff Descripción: Borra el bit “b” del registro “f”. Ejemplo: BCF FLAG_REG, 7 Antes de la instrucción FLAG_REG = 0xC7 ;1100 0111 Después de la instrucción FLAG_REG = 0x47 ;0100 0111 BSF Pone a 1 un bit Sintaxis: [etiqueta] BSF f, b Operandos: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Operación: 1 → f<b> Flags afectados: Ninguno Código OP: 01 01bb bfff ffff Descripción: Pone a 1 el bit “b” del registro “f”. Ejemplo: BSF FLAG_REG, 7 Antes de la instrucción FLAG_REG = 0x0A ;0000 1010 Después de la instrucción FLAG_REG = 0x8A ;1000 1010
  • 54. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 48 BTFSC Testeo de bit y salto si es 0 Sintaxis: [etiqueta] BTFSC f, b Operandos: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Operación: Salta si (f<b>) = 0 Flags afectados: Ninguno Código OP: 01 10bb bfff ffff Descripción: Si el bit “b” del registro “f” es 0, se salta una instrucción y se continua con la ejecución. Ejemplo: AQUÍ BTFSC FLAG, 4 FALSO GOTO REPETIR VERDAD .......... .................................. Antes de la instrucción PC = dirección de AQUÍ Después de la instrucción Si FLAG, 4 =0 PC = dirección de VERDAD Si FLAG, 4 = 1 PC = dirección de FALSO BTFSS Testeo de bit y salto si es 1 Sintaxis: [etiqueta] BTFSS f, b Operandos: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Operación: Salta si (f<b>) = 1 Flags afectados: Ninguno Código OP: 01 11bb bfff ffff Descripción: Si el bit “b” del registro “f” es 1, se salta una instrucción y se continua con la ejecución. Ejemplo: AQUÍ BTFSS FLAG, 4 FALSO GOTO REPETIR VERDAD .......... .................................. Antes de la instrucción PC = dirección de AQUÍ Después de la instrucción Si FLAG, 4 =1 PC = dirección de VERDAD Si FLAG, 4 = 0 PC = dirección de FALSO
  • 55. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 49 CALL Salto a subrutina Sintaxis: [etiqueta] CALL k Operandos: 0 ≤ k ≤ 2047 Operación: (PC) + 1 → TOS, k → PC<10:0>, (PCLATCH<4:3>) → PC<12:11> Flags afectados: Ninguno Código OP: 10 0kkk kkkk kkkk Descripción: Salto a subrutina. Primero se guardan en la pila los 13 bits de la dirección de retorno (PC + 1). Después se carga en el PC los 11 bits del inmediato “k”, los dos bits más significativos los proporciona el PCLATCH<4:3>. CALL tarda dos ciclos de instrucción en ejecutarse. Ejemplo: PROGRAMA CALL SUBRUTINA Antes de la instrucción PC =dirección de PROGRAMA Después de la instrucción TOS = dirección de PROGRAMA + 1 PC = dirección de SUBRUTINA CLRF Borra un registro f Sintaxis: [etiqueta] CLRF f Operandos: 0 ≤ f ≤ 127 Operación: 00h → f 1 → Z Flags afectados: Z Código OP: 00 0001 1fff ffff Descripción: Se borra el contenido del registro “f” y el flag Z de estado se activa. Ejemplo: CLRF FLAG_REG Antes de la instrucción FLAG_REG = 0x5A Después de la instrucción FLAG_REG = 0x00 Z = 1
  • 56. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 50 CLRW Borra el registro W Sintaxis: [etiqueta] CLRW Operandos: Ninguno Operación: 00h → W 1 → Z Flags afectados: Z Código OP: 00 0001 1xxx xxxx Descripción: Se borra el contenido del registro W y el flag Z de estado se activa. Ejemplo: CLRW Antes de la instrucción W = 0x5A Después de la instrucción W = 0x00 Z = 1 CLRWDT Borra el “Watchdog” Sintaxis: [etiqueta] CLRWDT Operandos: Ninguno Operación: 00h → WDT 0 → predivisor del WDT 1 → TO 1 → PD Flags afectados: TO , PD Código OP: 00 0000 0110 01000 Descripción: Se borra el contenido tanto del “Watchdog” como de su predivisor. Los bits TO y PD del Registro de Estado se ponen a 1. Ejemplo: CLRWDT Antes de la instrucción Temporizador WDT = x Predivisor WDT = 1:128 Después de la instrucción Temporizador WDT = 0x00 Registro predivisor WDT = 0 TO = 1 PD = 1 Predivisor WDT = 1:128
  • 57. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 51 COMF Complementa el registro f Sintaxis: [etiqueta] COMF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f ) → dest Flags afectados: Z Código OP: 00 1001 dfff ffff Descripción: Complementa el contenido del registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: COMF REG1, 0 Antes de la instrucción REG1 = 0x13 Después de la instrucción REG1 = 0x13 W = 0xEC DECF Decrementa el registro f Sintaxis: [etiqueta] DECF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f) - 1 → dest Flags afectados: Z Código OP: 00 0011 dfff ffff Descripción: Decrementa el contenido del registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: DECF CONT, 1 Antes de la instrucción CONT= 0x01 Z = 0 Después de la instrucción CONT= 0x00 Z = 1
  • 58. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 52 DECFSZ Decrementa el registro f y salta si es 0 Sintaxis: [etiqueta] DECFSC f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f) – 1 → dest; salta si el resultado es 0 Flags afectados: Ninguno Código OP: 00 1011 dfff ffff Descripción: Decrementa el contenido del registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Si el resultado es 0, se salta la siguiente instrucción y se continua con la ejecución. Ejemplo: RESTA DECFSZ CONT, 1 GOTO LAZO CONTINUAR ........... .............................................. Antes de la instrucción PC = dirección de RESTA CONT= 0x01 Después de la instrucción CONT= 0x00 PC = dirección de CONTINUAR GOTO Salto Incondicional Sintaxis: [etiqueta] GOTO k Operandos: 0 ≤ k ≤ 2047 Operación: k → PC<10:0> PCLATCH<4:3> → PC<12:11> Flags afectados: Ninguno Código OP: 10 1kkk kkkk kkkk Descripción: Salto incondicional. Se carga en el PC<10:0> los 11 bits del inmediato “k”. Los dos bits restantes los proporciona el PCLATCH<4:3>. GOTO tarda dos ciclos de instrucción en ejecutarse. Ejemplo: GOTO SALTO Después de la instrucción PC = dirección SALTO
  • 59. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 53 INCF Incrementa el registro f Sintaxis: [etiqueta] INCF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f) + 1 → dest Flags afectados: Z Código OP: 00 1010 dfff ffff Descripción: Incrementa el contenido del registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: INCF CONT, 1 Antes de la instrucción CONT= 0xFF Z = 0 Después de la instrucción CONT= 0x00 Z = 1 INCFSZ Incrementa el registro f y salta si es 0 Sintaxis: [etiqueta] INCFSC f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f) + 1 → dest; salta si el resultado es 0 Flags afectados: Ninguno Código OP: 00 1111 dfff ffff Descripción: Incrementa el contenido del registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Si el resultado es 0, se salta la siguiente instrucción y se continua con la ejecución. Ejemplo: SUMA INCFSZ CONT, 1 GOTO LAZO CONTINUAR ........... .............................................. Antes de la instrucción PC = dirección de RESTA CONT= 0xFF Después de la instrucción CONT= 0x00 PC = dirección de CONTINUAR
  • 60. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 54 IORLW O lógica entre Literal y W Sintaxis: [etiqueta] IORLW k Operandos: 0 ≤ k ≤ 255 Operación: (W) OR (k) → W Flags afectados: Z Código OP: 11 1000 kkkk kkkk Descripción: Realiza la operación lógica OR entre el registro W y los ocho bits del literal “k”. El resultado se almacena en el registro W. Ejemplo: ANDLW 0x35 Antes de la instrucción W = 0x9A Después de la instrucción W = 0xBF Z = 0 IORWF O lógica entre W y f Sintaxis: [etiqueta] IORWF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (W) OR (f) → dest Flags afectados: Z Código OP: 00 0100 dfff ffff Descripción: Realiza la operación lógica OR entre W y el registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: IORWF REG, 0 Antes de la instrucción REG = 0x13 W = 0x91 Después de la instrucción REG = 0x13 W = 0x93 Z = 0
  • 61. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 55 MOVLW Mueve un Literal a W Sintaxis: [etiqueta] MOVLW k Operandos: 0 ≤ k ≤ 255 Operación: k → W Flags afectados: Ninguno Código OP: 11 00xx kkkk kkkk Descripción: El registro W se carga con el valor de los ocho bits del literal “k”. Ejemplo: MOVLW 0x5A Después de la instrucción W = 0x5A MOVF Mover a f Sintaxis: [etiqueta] MOVF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f) → dest Flags afectados: Z Código OP: 00 1000 dfff ffff Descripción: El contenido del registro “f” se mueve al destino. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: MOVF FSR, 0 Antes de la instrucción W = 0x00 FSR = 0xC2 Después de la instrucción W = 0xC2 Z = 0
  • 62. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 56 MOVWF Mueve W al registro f Sintaxis: [etiqueta] MOVWF f Operandos: 0 ≤ f ≤ 127 Operación: (W) → f Flags afectados: Ninguno Código OP: 00 0000 1fff ffff Descripción: Mueve el contenido del registro W al registro “f”. Ejemplo: MOVWF OPTION_REG Antes de la instrucción OPTION_REG = 0xFF W = 0x4F Después de la instrucción OPTION_REG = 0x4F W = 0x4F NOP No operar Sintaxis: [etiqueta] NOP Operandos: Ninguno Operación: No realiza ninguna operación Flags afectados: Ninguno Código OP: 00 000 0xx0 0000 Descripción: No realiza ninguna operación. Ejemplo: ETIQUETA NOP Antes de la instrucción PC = dirección de ETIQUETA Después de la instrucción PC = dirección de ETIQUETA + 1
  • 63. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 57 RETFIE Retorno de rutina de interrupción Sintaxis: [etiqueta] RETFIE Operandos: Ninguno Operación: TOS → PC 1 → GIE Flags afectados: Ninguno Código OP: 00 0000 0000 1001 Descripción: Retorno de una rutina de interrupción. Los 13 bits de la dirección de retorno los carga en el PC desde la pila. El bit GIE (INTCON<7>) se pone automáticamente a 1, habilitando nuevas interrupciones. Requiere dos ciclos de instrucción para su ejecución. Ejemplo: RETFIE Después de la instrucción PC = TOS GIE = 1 RETLW Retorno de subrutina con Literal en el W Sintaxis: [etiqueta] RETLW k Operandos: 0 ≤ k ≤ 255 Operación: k → W TOS → PC Flags afectados: Ninguno Código OP: 11 01xx kkkk kkkk Descripción: El registro W se carga con los ocho bits del literal “k”. El PC toma los 13 bits de la dirección de retorno del nivel superior de la pila. Requiere dos ciclos de instrucción para su ejecución. Ejemplo: PROGRAMA CALL TABLA ................. ................. TABLA ADDWF PC RETLW k0 RETLW k1 ........................... RETLW kn Antes de la instrucción W = 0x07 Después de la instrucción W = valor de k7 PC= TOS = dirección de PROGRAMA +1
  • 64. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 58 RETURN Retorno de subrutina Sintaxis: [etiqueta] RETURN Operandos: Ninguno Operación: TOS → PC Flags afectados: Ninguno Código OP: 00 0000 0000 1000 Descripción: Retorno de una subrutina de interrupción. Los 13 bits de la dirección de retorno los carga en el PC desde la pila. Requiere dos ciclos de instrucción para su ejecución. Ejemplo: FIN RETURN Después de la instrucción PC = TOS RLF Rota f a la izquierda a través del Carry Sintaxis: [etiqueta] RLF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: Rotación a la izquierda de f. Flags afectados: C Código OP: 00 1101 dfff ffff Descripción: El contenido del registro “f” se rota una posición a la izquierda a través del flag de carry. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: RLF REG1, 0 Antes de la instrucción REG1 = 1110 0110 C = 0 Después de la instrucción REG1 = 1110 0110 W = 1100 1100 C = 1 Registro f C
  • 65. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 59 RRF Rota f a la derecha a través del Carry Sintaxis: [etiqueta] RRF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: Rotación a la derecha de f. Flags afectados: C Código OP: 00 1100 dfff ffff Descripción: El contenido del registro “f” se rota una posición a la derecha a través del flag de carry. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: RLF REG1, 0 Antes de la instrucción REG1 = 1110 0110 C = 0 Después de la instrucción REG1 = 1110 0110 W = 0111 0011 C = 0 SLEEP Modo de reposo Sintaxis: [etiqueta] SLEEP Operandos: Ninguno Operación: 00h → WDT 0 → predivisor del WDT 1 → TO 0 → PD Flags afectados: TO , PD Código OP: 00 0000 0110 0011 Descripción: El bit TO se pone a 1, y el bit PD del registro de Estado se pone a 0. Además también se pone a cero el predivisor del predivisor del WDT. El procesador entra en el modo SLEEP o de reposo, dejando el oscilador principal de funcionar. Ejemplo: SLEEP Registro f C
  • 66. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 60 SUBLW Resta W de un Literal Sintaxis: [etiqueta] SUBLW k Operandos: 0 ≤ k ≤ 255 Operación: k – (W) → W Flags afectados: C, DC, Z Código OP: 11 110x kkkk kkkk Descripción: El registro W se resta (mediante complemento a 2) de los ocho bits del literal “k”. El resultado es almacenado en el registro W. Ejemplo: SUBLW 0x02 Antes de la instrucción W = 0x01 C =x Z = x Después de la instrucción W = 0x01 C = 1 ;el resultado es positivo Z = 0 SUBWF Resta W del registro f Sintaxis: [etiqueta] SUBWF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f) - (W) → dest Flags afectados: C, DC, Z Código OP: 00 0010 dfff ffff Descripción: El registro W se resta (mediante complemento a 2) del registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: SUBWF REG1, 1 Antes de la instrucción REG1 =3 W = 2 C = x Z = x Después de la instrucción REG1 = 1 W = 2 C = 1 ;el resultado es positivo Z = 0
  • 67. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 61 SWAPF Intercambio de los Nibbles del registro f Sintaxis: [etiqueta] SWAPF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (f<3:0>) → dest<7:4> (f<7:4>) → dest<3:0> Flags afectados: Ninguno Código OP: 00 1110 dfff ffff Descripción: Los cuatro bits más significativos y menos significativos del registro “f”, son intercambiados entre si. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: SWAPF REG1, 0 Antes de la instrucción REG1 = 0xA5 Después de la instrucción REG1 = 0xA5 W = 0x5A XORLW O exclusiva entre un Literal y W Sintaxis: [etiqueta] XORLW k Operandos: 0 ≤ k ≤ 255 Operación: (W) XOR (k) → W Flags afectados: Z Código OP: 11 1010 kkkk kkkk Descripción: Realiza la operación lógica O exclusiva entre el registro W y los ocho bits del literal “k”. El resultado es almacenado en el registro W. Ejemplo: XORLW 0xAF ;1010 1111 (0xAF) Antes de la instrucción W = 0xB5 ;1011 1010 (0xB5) Después de la instrucción W = 0x1A ;--------------- --------- Z = 0 ;0001 1010 (0x1A)
  • 68. 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 Industriales David Arroyo Muñoz Universidad de Extremadura 62 XORWF O exclusiva entre W y el registro f Sintaxis: [etiqueta] XORWF f, d Operandos: 0 ≤ f ≤ 127 d є [0, 1] Operación: (W) XOR (f) → dest Flags afectados: Z Código OP: 00 0110 dfff ffff Descripción: Realiza la operación lógica O exclusiva entre el registro W y el registro “f”. Si “d” es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro “f”. Ejemplo: XORWF REG, 1 Antes de la instrucción REG = 0xAF ;1010 1111 (0xAF) W = 0xB5 ;1011 1010 (0xB5) Después de la instrucción REG = 0x1A ;--------------- --------- W = 0xB5 ;0001 1010 (0x1A)
  • 69. Microcontroladores PIC de la Gama Media. 4. Los Periféricos de los PIC de la Gama Media. Santiago Salamanca Miño Escuela de Ingenierías Industriales David Arroyo Muñoz Universidad de Extremadura 63 Capítulo 4. Los Periféricos de los PIC de la Gama Media 4.1 Introducción. En este capítulo se tratará el estudio de los distintos periféricos de los PIC de la Gama Media. Una de las ventajas que tienen los PIC es la gran cantidad de periféricos asociados a los modelos que hay. Estos periféricos sirven para interactuar con el exterior a través de una circuitería externa adecuada. 4.2 Interrupciones. Existen fundamentalmente dos métodos de E/S: • E/S controlada por programa, en la cual se testea de forma continua mediante un bucle el estado de los elementos externos o periféricos, actuando en correspondencia a los valores obtenidos. • E/S controlada por interrupciones. En este caso el elemento externo o periférico le indica al microcontrolador cuando está preparado, pudiendo mientras realizar otras tareas. Cuando se produce la interrupción el microcontrolador atiende al periférico que la ha producido y luego continua con la tarea que estaba haciendo anteriormente. Este último método es el más potente para realizar operaciones de E/S, y los PIC de la Gama Media permiten la posibilidad de usarlo. A diferencia de otros sistemas, estas interrupciones no están vectorizadas.