los pic de gama media

197
LOS PIC DE LA GAMA MEDIA. ARQUITECTURA Y TÉCNICAS DE PROGRAMACIÓN. Santiago Salamanca Miño David Arroyo Muñoz Octubre de 2002

Upload: eltiooblongo

Post on 24-Nov-2015

30 views

Category:

Documents


5 download

TRANSCRIPT

  • LOS PIC DE LA GAMA MEDIA.

    ARQUITECTURA Y TCNICAS DE

    PROGRAMACIN.

    Santiago Salamanca Mio

    David Arroyo Muoz

    Octubre de 2002

  • Este libro es el resultado del Proyecto Fin de Carrera realizado por el alumno David

    Arroyo Muoz y dirigido por Santiago Salamanca Mio. Est basado en los apuntes de

    clase de la asignatura Informtica Industrial de la Titulacin de Ingeniero Tcnico

    Industrial, especialidad Electrnica Industrial, que se imparte en la Escuela de

    Ingenieras Industriales de la Universidad de Extremadura.

    Si encuentras alguna errata o quieres hacer algn comentario, puedes escribir al

    siguiente correo electrnico:

    [email protected]

  • Microcontroladores PIC de la Gama Media. NDICE GENERAL.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    I

    NDICE GENERAL

    1 Introduccin 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 Introduccin. ........................................................................................... 11

    2.2 Organizacin de la memoria. .................................................................. 13

    2.2.1 Organizacin de la memoria de programa. ..................... 13

    2.2.2 Organizacin 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 configuracin. ............................. 21

    2.3 Oscilador................................................................................................. 22

    2.4 Reset........................................................................................................ 26

    2.5 Temporizador y Perro Guardin. ............................................................ 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 Introduccin. ........................................................................................... 39

    3.2 Flujo de instrucciones. Segmentacin. ................................................... 40

    3.3 El formato de las instrucciones. .............................................................. 41

    3.4 Juego de instrucciones. ........................................................................... 43

    3.4.1 Descripcin detallada de las instrucciones

    por orden alfabtico. ....................................................... 45

    4 Los Perifricos de los PIC de la Gama Media. ......................................................... 63

    4.1 Introduccin. ........................................................................................... 63

  • Microcontroladores PIC de la Gama Media. NDICE GENERAL.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 interrupcin. .............................................. 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 Mdulos CCP.......................................................................................... 93

    4.6.1 Modo de captura. ............................................................ 94

    4.6.2 Modo de comparacin. ................................................... 96

    4.6.3 Modo PWM. ................................................................... 97

    4.7 Mdulo de Tensin de Referencia. ........................................................ 100

    4.8 Mdulo Comparador Analgico. ........................................................... 102

    4.9 Convertidor A/D. ................................................................................... 106

    4.10 Mdulos de comunicacin serie. ......................................................... 112

    4.10.1 Puerto Serie Sncrono (SSP). .......................................... 112

    4.10.1.1 Modo SPI. .................................................................... 115

    4.10.1.2 Modo I2C. .................................................................... 117

  • Microcontroladores PIC de la Gama Media. NDICE GENERAL.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    III

    4.10.2 USART. .......................................................................... 125

    4.10.2.1 Modo asncrono. ................................... 128

    4.10.2.2 Modo sncrono ...................................... 133

    5 Programacin con PIC. ............................................................................................ 137

    5.1 Introduccin. .......................................................................................... 137

    5.2 Directivas del ensamblador MPASM. ................................................... 137

    5.3 Creacin de programas. ......................................................................... 156

    5.3.1 Un solo cdigo fuente (ensamblador). ........................... 156

    5.3.2 Varios cdigos fuente (linkador). .................................. 157

    5.3.3 Utilizacin de libreras................................................... 158

    5.4 Estructuras bsicas de programacin. .................................................... 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 Cdigos de condicin..................................................... 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 ms complejas......................... 165

    5.5 Ejemplo de libreras: librera matemtica. ............................................. 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 Conversin de entero a flotante. .................. 168

  • Microcontroladores PIC de la Gama Media. NDICE GENERAL.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    IV

    5.5.1.4 Normalizacin.............................................. 168

    5.5.1.5 Conversin de flotante a entero. .................. 169

    5.5.1.6 Suma/Resta. ................................................. 169

    5.5.1.7 Multiplicacin.............................................. 169

    5.5.1.8 Divisin........................................................ 170

    5.5.2 Rutinas en coma fija. ..................................................... 171

    5.5.2.1 Multiplicacin.............................................. 171

    5.5.2.2 Divisin........................................................ 172

    5.5.3 Funciones matemticas en coma flotante. ..................... 173

    5.5.3.1 Funcin raz cuadrada.................................. 174

    5.5.3.2 Funciones exponenciales. ........................... 175

    5.5.3.3 Funciones logartmicas. ............................... 176

    5.5.3.4 Funcione trigonomtricas. ........................... 178

    5.5.3.5 Funcin potencia.......................................... 179

    5.5.3.6 Funcin parte entera por defecto. ................ 182

    5.5.3.7 Comparacin lgica en coma flotante. ........ 182

    5.5.3.8 Generador aleatorio de nmeros enteros. .... 183

    5.5.4 Conversin de coma flotante a ASCII. .......................... 183

    5.5.4.1 Conversin de coma flotante

    a ASCII en base 10. ..................................... 184

    5.5.4.2 Personalizacin de la rutina. ........................ 184

    5.5.4.3 Resumen. ..................................................... 185

    APNDICE A: Protocolo I2C........................................................................................ 187

    A.1 Introduccin ......................................................................................... 187

    A.2 Inicializacin y fin de transferencia de datos....................................... 187

    A.3 Direccionamiento de dispositivos en I2C............................................. 188

    A.4 Reconocimiento de transferencia......................................................... 189

  • Microcontroladores PIC de la Gama Media. 1. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    1

    Captulo 1. Introduccin a los microcontroladores.

    1.1 Qu es un microcontrolador?

    Hace unos aos, los sistemas de control se implementaban usando exclusivamente lgica de

    componentes, lo que haca que fuesen dispositivos de gran tamao y muy pesados. Para

    facilitar una velocidad ms alta y mejorar la eficiencia de estos dispositivos de control, se

    trat de reducir su tamao, apareciendo as los microprocesadores. Siguiendo con el proceso

    de miniaturizacin, el siguiente paso consisti en la fabricacin de un controlador que

    integrase todos sus componentes en un slo chip. A esto es a lo que se le conoce con el

    nombre de microcontrolador, un computador dentro de un slo chip.

    Las principales caractersticas 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 lneas de los buses de datos, direcciones y control al exterior, para la

    conexin de memorias, interfaces de E/S, etc.

    2. Son de propsito especfico, es decir, son programados para realizar una nica

    tarea, mientras que los microprocesadores son de propsito general.

    La historia de los microcontroladores surge desde dos vas 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. An 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. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    2

    Un microcontrolador, tpicamente 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 voltil (ROM, EEPROM, FLASH) donde se

    almacenan los programas y una voltil (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 lneas que comunican al microcontrolador

    con los perifricos externos.

    -Perro guardin o Watchdog.- Contador que resetea al microcontrolador cada vez que

    rebosa. Sirve para evitar fallos de funcionamiento, por lo que hay que

    inicializarlo peridicamente antes de que rebose.

    -Proteccin ante fallo de alimentacin o Browout.- Circuito que resetea al

    microcontrolador cuando la tensin de alimentacin baja de un cierto lmite.

    -Temporizadores.- Para controlar periodos de tiempo.

    -Convertidores A/D y D/A. (Analgico/Digital y Digital/Analgico)

    -Comparadores analgicos

    -Moduladores de anchura de impulsos.

    -Puertos de comunicacin.- Tanto serie como paralelo.

    -Control de interrupciones

    Debido a que los microcontroladores slo incluyen las caractersticas especficas para una

    tarea, su coste es relativamente bajo. Un microcontrolador tpico realiza funciones de

    manipulacin de instrucciones, posee E/S de accesos fciles y directos, y un proceso de

    interrupciones rpido y eficiente. Adems tambin reducen de manera notable los costes de

    diseo. Hay gran variedad de microcontroladores. Dependiendo de la potencia y

    caractersticas que se necesiten, se pueden elegir microcontroladores de 4, 8, 16 32 bits.

    Adems existen versiones especializadas que incluyen mdulos especiales para

    comunicaciones, teclados, procesamiento de seales, procesamiento de video, y otras tareas.

  • Microcontroladores PIC de la Gama Media. 1. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    3

    1.2 Aplicaciones

    El mercado de los microcontroladores est creciendo cada ao y parece no tener barreras. Los

    microcontroladores a menudo se encuentran en aplicaciones domsticas ( microondas,

    refrigeradores, televisin, equipos de msica), ordenadores con sus componentes (impresoras,

    mdems, lectores de discos), coches (ingeniera de control, diagnostico, control de

    climatizacin), control medioambiental (invernaderos, fabricas, casas), instrumentacin,

    aeronutica, y miles de usos ms. En muchos podemos encontrar ms de un microcontrolador.

    Los microcontroladores son muy usados en robtica, donde la comunicacin entre

    controladores es una gran ventaja. Esto hace posible muchas tareas especficas al distribuir un

    gran nmero de microcontroladores por todo el sistema. La comunicacin entre cada

    microcontrolador y uno central permitira procesar la informacin por un ordenador central, o

    transmitirlo a otros microcontroladores del sistema.

    Otro ejemplo de aplicacin de los microcontroladores, es la de utilizarlos para monitorizar y

    gravar parmetros medioambientales (temperatura, humedad, precipitaciones, etc.). Pequeo

    tamao, 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 diseos, permitiendo ms caractersticas a

    bajo coste.

    Los principales beneficios de esta simplicidad en el diseo son que los microcontroladores se

    implementan en chip muy pequeos, con pocos pines, y tienen un consumo de potencia muy

    bajo.

  • Microcontroladores PIC de la Gama Media. 1. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    4

    Los microcontroladores PIC ganaron popularidad rpidamente. Aparecan con frecuencia en

    revistas de ocio, y su uso era cada vez mayor en gran nmero de diseos. Debido a su bajo

    costo, pequeo tamao, y bajo consumo, estos microcontroladores pueden ahora ser usados en

    reas en las que previamente no habran sido apropiados (tal como circuitos lgicos).

    Las principales caractersticas 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.

    -Segmentacin de instrucciones.- Consiste en dividir la ejecucin de las

    instrucciones en varias fases, en el caso concreto de los PIC dos fases, de

    manera que se realizan simultneamente distintas fases de distintas

    instrucciones. As cada instruccin se ejecuta en un ciclo de instruccin (4

    ciclos de reloj), excepto las de salto que ocupan tantos ciclos de instruccin

    como necesite para calcular la direccin de salto.

    -Formato de instrucciones de longitud constante.- Permite optimizar la memoria de

    instrucciones y el diseo 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 fsicamente como registros.

    -Gran variedad de microcontroladores y muchas herramientas de soporte.

  • Microcontroladores PIC de la Gama Media. 1. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    5

    1.4 Las gamas de los PIC

    La forma de designacin de los PIC en general obedece a la siguiente estructura:

    PIC nn LLL xxx

    Siendo :

    nn un nmero propio de la gama del PIC.

    LLL cdigo de letras donde la primera indica la tensin de alimentacin 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 ALIMENTACIN 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 nmero 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 caracterstica es que son muy pequeos,

    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 nmero 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. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    6

    c) Gama Media (PIC16Cxxx): Es la gama ms 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 adems caractersticas 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 funcin de los recursos de

    que se dispongan.

    d) Gama Alta (PIC17Cxxx): Tienen unas caractersticas muy diferentes a las

    anteriores, ya que son microcontroladores de arquitectura abierta, es decir, que

    sacan sus buses al exterior.

    El nmero 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 mayora de las instrucciones son de 16 bits,

    aunque las hay tambin de 32 bits. El nmero total de instrucciones es de 76.

    Esta gama est diseada para aplicaciones de control. Todos ellos tienen

    convertidores A/D y, por ejemplo, estn 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 slo se hablar de los PIC de la Gama Media, siendo esta la ms

    variada y completa. En la tabla 1.2 se muestran las caractersticas que definen a cada modelo

    de los PIC de la Gama Media. Aparecen slo los ms significantes, ya que la variedad es muy

    amplia.

  • Microcontroladores PIC de la Gama Media. 1. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    7

    TABLA 1.2 Principales caractersticas de los PIC de la Gama Media. Reloj Memoria Perifricos Caractersticas

    Mem

    oria

    de

    prog

    ram

    a

    Cp

    sula

    s

    Mx

    ima

    frec

    uenc

    ia d

    e tra

    bajo

    EPR

    OM

    EER

    OM

    Mem

    oria

    de

    dato

    s (by

    tes)

    EEPR

    OM

    de

    dato

    s (by

    tes)

    Md

    ulos

    de

    tem

    poriz

    aci

    n

    Md

    ulos

    CC

    P

    Puer

    tos s

    erie

    Puer

    to P

    aral

    elo

    Con

    verti

    dor A

    /D d

    e 8

    bits

    Com

    para

    dore

    s

    Tens

    in

    inte

    rna

    de re

    fere

    ncia

    Fuen

    tes d

    e in

    terr

    upci

    n

    Patil

    las d

    e E/

    S

    Ran

    go d

    e vo

    ltaje

    (vol

    tios)

    Det

    ecto

    r de

    fallo

    en

    VD

    D

    Bro

    wn-

    out

    Pine

    s DIP

    Pine

    s PLC

    C

    Pine

    s QFP

    PIC16C61 20 1K --- 36 --- TMR0 -- --- -- -- -- -- 3 13 3,0-6,0 --- 18 18 --

    PIC16C62 20 2K --- 128 --- TMR0,TMR1,TMR2 2 SPI/I2C/SCI -- -- -- -- 10 22 2,5-6,0 --- 28 28 --

    PIC16C63 20 4K --- 192 --- TMR0,TMR1,TMR2 2 SPI/I2C/SCI --- -- -- -- 10 22 3,0-6,0 --- 28 28 --

    PIC16C64 20 2K --- 128 --- TMR0,TMR1,TMR2 1 SPI/I2C Si -- -- -- 8 33 3,0-6,0 --- 40 44 44

    PIC16C65 20 4K --- 192 --- TMR0,TMR1,TMR2 2 SPI/I2C/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/I2C/SCI -- 5ch -- -- 11 22 3,0-6,0 --- 28 28 --

    PIC16C74 20 4K --- 192 --- TMR0,TMR1,TMR2 2 SPI/I2C/SCI Si 8ch -- -- 12 33 3,0-6,0 --- 40 44 44

    PIC16C76 20 8K --- 368 --- TMR0,TMR1,TMR2 2 SPI/I2C/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 continuacin 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. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    8

    Figura 1.1 Principales diagramas de patillas.

    La descripcin de las funciones de las distintas patillas del microcontrolador son:

    RA0/AN0-RA2/AN2: Lneas de E/S digitales del Puerto A, o entradas analgicas.

    RA3/AN3/VREF: E/S digital, analgica o entrada externa de VREF.

    RA4/T0CKI: E/S digital o entrada de reloj externo para TMR0.

    RA5/AN4/SS : E/S digital, analgica o seleccin del puerto sncrono.

    RB0/INT-RB7: E/S digitales del Puerto B. RB0/INT puede actuar como entrada de

    interrupcin externa. RB4-Rb7 pueden provocar una interrupcin cuando cambian de

    estado.

    RC0/T1OSO/T1CKI: E/S digital del Puerto C. Conexin del oscilador externo para

    el temporizador TMR1 o entrada de reloj para el TMR1.

  • Microcontroladores PIC de la Gama Media. 1. Introduccin a los Microcontroladores

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    9

    RC1/T1OSI/CCP2: E/S digital. Conexin del oscilador externo para el TMR1 o

    salida del mdulo 2 de captura/comparacin.

    RC2/CCP1: E/S digital. Salida del mdulo 1 de captura/comparacin.

    RC3/SCK/SCL: E/S digital. E/S de reloj para el Puerto Serie Sncrono (SSP) en los

    mdulos SPI o I2C.

    RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie

    en el modo I2C.

    RC5/SDO: E/S digital. Salida de datos serie en el modo SPI.

    RC6/TX/CK: E/S digital. Transmisin serie asncrona. Entrada de reloj para

    comunicacin serie sncrona.

    RC7/RX/DT: E/S digital. Recepcin serie asncrona. Lnea de datos en la

    comunicacin serie sncrona.

    RD0/PSP0-RD7/PSP7: E/S digitales del Puerto D. Este puerto puede trabajar como

    puerto paralelo esclavo para interconexin con un bus de datos de 8 bits de otro

    microprocesador.

    RE0/ RD /AN5: E/S digital del Puerto E. Seal de lectura del puerto paralelo esclavo.

    Entrada analgica.

    RE1/ WR /AN6: E/S digital. Seal de escritura del puerto paralelo esclavo. Entrada

    analgica.

    RE2/CS /AN7: E/S digital. Seal de activacin del puerto paralelo esclavo. Entrada

    analgica.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    11

    Captulo 2. La Arquitectura de los PIC de la Gama Media.

    2.1 Introduccin

    Desde el punto de vista de la arquitectura, la caracterstica ms 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 instruccin 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.

    Adems de las caractersticas antes mencionadas, otras caractersticas que poseen los PIC de

    la Gama Media son:

    a) Memoria no voltil de programa de hasta 8K x 14 de tamao, direccionada por el

    contador de programa (PC) de 13 bits.

    b) Memoria RAM de datos de hasta 368 x 8 de tamao, direccionada por el cdigo de

    operacin o por el registro FSR y parte del registro STATUS.

    c) Unidad aritmtico-lgica de 8 bits con un registro acumulador de trabajo asociado

    tambin de 8 bits. Realiza operaciones aritmticas y lgicas 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 (C2). 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 caractersticas, habr que consultar las hojas de caractersticas. 3: Muchos de los pines de las puertas E/S de propsito general estn multiplexadas con una o ms

    funciones de los mdulos perifricos. La combinacin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 ningn dispositivo

    que los implemente todos. Adems se multiplexan con distintos elementos del

    sistema.

    g) Mdulos perifricos. Son la caracterstica que diferencia a los distintos

    microcontroladores. stos facilitan la comunicacin con el mundo exterior, tal

    como las E/S de propsito general, y tareas internas tal como puede ser la

    generacin de las distintas bases de tiempo. Los perifricos sobre los que se est

    hablando son; E/S de propsito general, hasta tres temporizadores, mdulo de

    captura, comparacin, y PWM (CCP), puerto serie sncrono (SSP), USART (SCI),

    mdulo para generacin de voltajes de referencia, mdulos comparadores

    analgicos, conversores analgico digital (A/D), mdulo para control de Display

    de cristal lquido (LCD) y puerto paralelo esclavo (PSP).

    h) Registros generales del sistema.

    2.2 Organizacin 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 Organizacin 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 palabras. El ancho de la memoria de

    programa va a ser la longitud de una instruccin que es de 14 bits, por lo se podrn almacenar

    hasta 8K instrucciones. De esta forma es fcil determinar si el dispositivo tiene suficiente

    memoria de programa para una aplicacin deseada.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    14

    Esta memoria de programa a su vez est dividida en cuatro pginas 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 Organizacin de la memoria de programa y la pila.

    Para realizar los saltos entre las pginas de la memoria de programa se utilizan los tres bits

    ms altos del contador de programa (PC ), los cuales son implementados fsicamente

    en la memoria de datos en el registro PCLATCH . Si el programa se ejecuta

    secuencialmente no es necesario modificarlo.

    Dentro de la memoria de programa existen dos direcciones reservadas:

    1. Vector de Reset .- En un dispositivo, un reset pone el contador de programa (PC)

    a cero. A esta direccin se la denomina Direccin del Vector de Reset, donde

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    15

    est la direccin de inicio para la ejecucin del programa. Cualquier reset borrar

    tambin el contenido del registro PCLATH, de modo que cuando se produzca un

    reset la direccin inicial a de estar localizada en la pgina 0 de la memoria de

    programa.

    2. Vector de Interrupcin .- Cuando una interrupcin es reconocida el PC es

    forzado a la direccin 0004h. A esto es a lo que se le llama Direccin del Vector

    de Interrupcin. Cuando el PC es forzado con la direccin del vector de

    interrupcin, el PCLATH no es modificado. Por eso mismo en la direccin del

    vector de interrupcin, el registro PCLATH debera ser escrito con el valor que

    especificar la localizacin deseada en la memoria de programa. Antes de realizar

    esta operacin, el PCLATH debera ser salvado para volverlo a restaurar al

    terminar el tratamiento de la rutina de interrupcin.

    El contador de programa (PC) es un registro que especifica la direccin de la instruccin que

    ha de ser ejecutada. El PC tiene un ancho de 13 bits, correspondiendo el byte ms bajo con el

    registro de lectura-escritura PCL, implementado en la memoria de datos, y el byte ms alto

    con el registro PCH. Este ltimo contiene slo los bits del PC y no se puede leer ni

    escribir directamente, sino que son cargados a travs 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, habra que modificarlos manualmente.

    2. Instruccin GOTO de salto incondicional: Carga desde el cdigo de operacin

    los 11 bits menos significativos. Los dos que quedan se cargan desde el PCLATH

    . Si se hace un GOTO a una direccin que est en una pgina 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    16

    3. Instruccin 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 interrupcin: 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 Organizacin 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 perifricos para controlar una operacin.

    b) Memoria de propsito 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 propsito general, est slo implementado fsicamente 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    17

    Figura 2.3 Organizacin de la memoria de datos.

    Nota 1: Los registros en negrita estn presentes en todos los dispositivos. 2: Puede que no todas las posiciones estn 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 direccin final se obtiene con:

    a. Los bits IRP1-IRP0 del registro de estado (STATUS), los cuales

    seleccionan el banco de memoria.

    b. Los 7 bits del cdigo de operacin, los cuales indican la posicin del dato

    dentro del banco.

    2. Direccionamiento indirecto: Con este tipo de direccionamiento lo que se da es la

    direccin donde se encuentra la direccin del dato. Para ello se usa el registro

    INDF. Al usar este registro (que no est implementado fsicamente), lo que se hace

    es acceder al registro de datos FSR de 8 bits. Los 7 bits con menos peso del FSR

    seleccionan la posicin 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 aplicacin

    de direccionamiento indirecto. El programa sera como el siguiente:

    BCF STATUS,IRP ; Seleccin 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 posicin 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 instruccin y salta.

    GOTO SIGUIENTE ; Vuelve a SIGUIENTE.

    Este programa ejemplo borrara la memoria de datos desde la posicin h20 hasta

    h2F.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 posicin.

    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 continuacin se muestra la funcin de cada bit del registro de estado.

    bit 7 IRP: Seleccin de bancos para el direccionamiento indirecto. 1 = Banco 2,3 (100h 1FFh) 0 = Banco 0,1 (00h FFh) bit 6:5 RP1:RP0: Seleccin 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 instruccin SLEEP". bit 2 Z: Bit de cero. 1 = El resultado de una operacin 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 comnmente con acarreo, sin

    embargo en la resta realizan la funcin de bit de signo (bit de Borrow ), indicando que el

    resultado es negativo si Borrow es 0, y positivo si es 1.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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

    configuracin del divisor de frecuencia del TMR0/WDT, de las interrupciones externas, del

    TMR0, y la configuracin 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 : Conexin 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 interrupcin. 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: Asignacin 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 Divisin del TMR0 Divisin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    21

    2.2.3.3 Palabra de configuracin.

    La Palabra de Configuracin est formada por 14 bits. Se utiliza para la seleccin de distintos

    aspectos de la configuracin del dispositivo segn las necesidades de la aplicacin. Su

    localizacin en la memoria de programa es la 2007h. Esta posicin no es accesible durante el

    modo de funcionamiento normal, por lo que estos registros debern ser configurados en la

    fase de programacin.

    CP1 CP0 CP1 CP0 CP1 CP0 - BODEN CP1 CP0 PWRTE WDTE FOSC1 FOSC0bit13 bit0

    bit 13-8 CP: Bits de proteccin de cdigo. 5-4: bit 7 No implementado: Su lectura es 1. bit 6 BODEN: Deteccin del Brown-Out (Fallo de alimentacin) 1 = deteccin activada. 0 = Deteccin desactivada. bit 3 PWRTE : Activacin del temporizador Power-Up 1 = Desactivado. 0 = Activado. bit 2 WDTE: Activacin del Watchdog (perro guardin) 1 = Activado 0 = Desactivado. bit 1-0 FOSC1-FOSC0: Seleccin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    22

    2.3 Oscilador.

    El circuito de oscilacin se utiliza para generar las seales de reloj en el sistema necesarias

    para la ejecucin de instrucciones y para el funcionamiento de los perifricos.

    Existen hasta ocho tipos de osciladores. Los distintos tipos permiten mayor flexibilidad del

    dispositivo segn 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 configuracin de un oscilador u otro se realiza mediante los bits FOSC2, FOSC1 Y

    FOSC0 de la palabra de configuracin. No todos los modelos poseen la posibilidad de

    configurar cualquier tipo de oscilador, en estos casos slo tienen los bit FOSC1 Y FOSC0 en

    la palabra de configuracin. Los valores de estos bits para la configuracin de los distintos

    osciladores son los que se pueden ver en las tablas 2.1 y 2.2.

    TABLA 2.1 Seleccin del modo de oscilacin con FOSC1:FOSC0. Bits de

    configuracin FOSC1:FOSC0

    Modo OSC

    Ganancia de los inversores internos Comentarios

    11 RC Solucin ms barata (slo requiere una resistencia y un condensador). Mxima variacin del tiempo base. Modo del dispositivo por defecto

    10 HS Ganancia alta Cristal de cuarzo para aplicaciones de alta frecuencia. Es el modo que ms potencia consume de los tres cristales.

    01 XT Ganancia media Cristal de cuarzo para un rango de frecuencias estndar.

    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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    23

    TABLA 2.2 Seleccin del modo de oscilacin con FOSC2:FOSC0.

    Bits de configuracin

    FOSC2:FOSC0

    Modo OSC

    Ganancia de los

    inversores internos

    Comentarios

    111 EXTRC con CLKOUT Red RC externa sacando la seal de oscilacin por la patilla CLKOUT. Solucin barata. Mxima variacin en el tiempo base. Modo del dispositivo por defecto

    110 EXTRC Red RC externa. Barata solucin. Mxima variacin en el tiempo base. La seal de oscilacin no sale al exterior.

    101 INTRC con CLKOUT Red RC interna sacando la seal de oscilacin por la patilla CLKOUT. Es la solucin ms barata. Oscilador de 4MHz.

    100 INTRC Red RC interna. La seal de oscilacin no sale al exterior. Solucin ms barata. Oscilador de 4MHz. 011 Reservado 10 HS Ganancia alta

    Cristal de cuarzo para aplicaciones de alta frecuencia. Es el modo que ms potencia consume de los tres cristales.

    01 XT Ganancia media Cristal de cuarzo para un rango de frecuencias estndar.

    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 opcin 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 conexin para resonadores de cristal o de cuarzo. En este

    caso se conectan a las patillas OSC1 y OSC2, usando esta ltima como realimentacin.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    24

    Figura 2.4 Operacin de osciladores en los modos HS, XT o LP. Nota 1: La resistencia en serie, RS, es necesaria para cristales de alta tecnologa.

    2: La resistencia de realimentacin, RF, vara entre 2 y 10 M. 3: Dependiendo del dispositivo, el buffer de la lgica interna puede estar tanto antes

    como despus del inversor.

    Para una red RC el modo de conexin utilizar nicamente la patilla OSC1. La frecuencia de

    oscilacin 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. Adems la frecuencia del oscilador/4 se obtiene a travs de la patilla OSC2, en caso de que est configurada en los

    modos EXTRC o INTRC con CLKOUT, se puede usar para sincronizacin de otras lgicas.

    Figura 2.5 Operacin en modo RC. Nota 1: Esta patilla tambin puede ser configurada como una E/S de propsito general.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    25

    Como un dispositivo incrementa su voltaje de alimentacin 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 seleccin del modo de

    oscilador, la composicin del circuito oscilador, y el ruido del sistema.

    En la figura 2.6 se muestra un ejemplo de StartUp. Se puede ver que la seal de oscilacin

    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 Caracterstica Start-Up de un oscilador.

    Siempre que se quiera grabar un PIC es necesario consultar las hojas de caractersticas para la

    configuracin del oscilador.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    26

    2.4 Reset

    La funcin del reset es la de dejar al sistema en un estado conocido. Existen varias fuentes de

    RESET:

    a) Power On Reset (POR).

    b) Activacin de MCLR durante funcionamiento normal.

    c) Activacin 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 lgica 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 temporizacin la tensin de

    alimentacin tendr un valor aceptable. Este temporizador se habilita mediante el

    bit PWRT de la palabra de configuracin. Para generar este retardo existe un

    circuito interno RC dedicado.

    b) Oscilador Start-Up Timer (OST): Este oscilador proporciona un retardo de 1024

    veces el periodo de oscilacin (desde OSC1) despus del retardo PWRT. De esta

    forma se asegura que el oscilador cristal o cermico es estable cuando el PIC

    empieza a funcionar. Este retardo slo 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    27

    Figura 2.7 Lgica 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 caractersticas que estn encerrados en cuadros no estn disponibles en todos los modelos,

    ver hoja de caractersticas del dispositivo. 3: En algunos modelos, este pin puede estar configurado como entrada de propsito general. 4: En los primeros microcontroladores PIC tenan la configuracin de modo que para PWRTE =1

    estuviera habilitado, mientras que el resto de los modelos, la configuracin estaba definida para PWRTE =0.

    A continuacin (tabla 2.3) se muestran los distintos retardos para las posibles situaciones en

    las que se puede ver el sistema.

    TABLA 2.3 Retardos tpicos segn las situaciones.

    TIEMPO DE POWER-UP CONFIGURACIN 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 250s.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    28

    El Power-on Reset consiste en la activacin del reset cuando se detecta la conexin de la

    alimentacin al dispositivo. Dos topologas 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 Topologas 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 seales segn

    el caso.

    Figura 2.9 Secuencia de Time-out en subida de alimentacin. MCLR conectado a VDD.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    29

    Figura 2.10 Secuencia de Time-out en subida de alimentacin. MCLR no conectado a VDD. (Caso1).

    Figura 2.11 Secuencia de Time-out en subida de alimentacin. MCLR no conectado a VDD.

    (Caso2).

    Figura 2.12 Secuencia de Time-out en subida de alimentacin. 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    30

    El Brown-out Reset consiste en producir un reset en el sistema cuando la tensin de

    alimentacin VDD cae por debajo de un determinado valor, especfico para cada PIC. Los que

    tengan implementados el BOR, tienen un parmetro (35), que es el tiempo mnimo que debe

    estar VDD por debajo de la tensin de reset, para que ste se produzca. Esto asegura que el

    elemento no continua la ejecucin del programa fuera de los rangos vlidos de operacin.

    Este tipo de reset se puede habilitar con el bit BODEN de la Palabra de Configuracin. Una

    vez que el nivel de la alimentacin 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 tensin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 configuracin. 2: Los valores de las resistencias dependen de las caractersticas del transistor.

    Figura 2.15 Circuito externo 2 de Brown-out.

    Nota 1: Este circuito de BOR es ms barato, pero menos exacto. El transistor Q1 se corta cuando VDD baja de cierto nivel tal como:

    V7.0R2R1

    R1 VDD =+ 2: El circuito de Brown-out Reset interno debe de estar deshabilitado cuando se use esta configuracin. 3: Los valores de las resistencias dependen de las caractersticas del transistor.

  • Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 inicializacin 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 000000 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    34

    2.5 Temporizador y Perro Guardin.

    En este apartado se tratar el funcionamiento del TMR0 en conjuncin con el Perro Guardin

    o Watchdog.

    El TMR0 en su forma general tiene las siguientes caractersticas:

    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 acte cuando aparezca un flanco

    de bajada o un flanco de subida.

    e) Se puede seleccionar que se produzca una interrupcin 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 guardin o Watchdog (WDT) es un temporizador con un oscilador RC,

    que no requiere ningn elemento externo, funcionando incluso cuando el oscilador principal

    del sistema no lo hace (modo de reposo).

    La habilitacin del perro guardin se realiza con el bit WDTE de la palabra de configuracin.

    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 ejecucin del programa.

    El periodo nominal del WDT es de 18 ms, que puede variar en funcin de la temperatura,

    VDD, etc. (habr que ver las caractersticas elctricas). Adems 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 acta

    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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    35

    La forma de programar el divisor es con el registro de opciones:

    bit 3 PSA: Asignacin 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 Divisin del TMR0 Divisin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    36

    Como se puede ver, para el TMR0, el divisor de frecuencia acta como un prescaler, es decir,

    primero divide la fuente de reloj y luego esta fuente dividida acta sobre el TMR0. Para el

    WDT, sin embargo, es al revs, primero cuenta y luego acta sobre la seal, es decir, lo hace

    como postscaler.

    Cuando tenemos habilitado el perro guardin, para que el sistema no se resetee, se ha de

    inicializar peridicamente el WDT. Esto se consigue con las instrucciones CLRWDT o

    SLEEP. Adems se recomienda por parte del fabricante, que antes de modificar el postscaler

    se debe ejecutar la instruccin 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 perifrico ms simple de todos los que aparecen en los PIC y

    nos servirn para leer o escribir valores digitales desde o hacia el exterior. En algunos puertos

    estos pines estn multiplexados con otras funciones alternativas (convertidores A/D, E/S

    serie, etc.). En el caso que lo tengamos para esa funcin, el pin no podr funcionar como E/S

    digital.

    Los pines de las puertas E/S pueden ser seleccionados de forma individual para que acten

    como pines de entrada o de salida, a travs de los registros TRIS, de tal forma que si

    TRISX es:

    0 => Pin n de la puerta X acta como salida.

    1 => Pin n de la puerta X acta como entrada.

    Cuando se produce un reset TRIS se pone a 1, configurando as las puertas como entradas y

    evitando que se active indebidamente algn 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    37

    La configuracin tpica para las puertas E/S se ve en la figura 2.17.

    Figura 2.17 Diagrama de bloques tpico 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 adems las lneas E/S mantienen su estado. Para acceder

    al modo de reposo se utiliza la instruccin SLEEP.

    Para obtener el mnimo consumo habra que desconectar los perifricos y las lneas E/S

    deberan 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    38

    3. Mediante cualquier interrupcin producida mientras el dispositivo est en el modo

    de reposo, tal como:

    a. Flanco en el pin RB0/INT.

    b. Cambio de estado en lneas de puerta.

    c. Comparadores.

    d. Conversores A/D.

    e. Overflow en TMR1.

    f. LCD.

    g. Interrupcin por puerto serie sncrono, SSP.

    h. Mdulos de captura.

    Al salir del modo de reposo se ejecuta la siguiente instruccin a SLEEP.

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    39

    Captulo 3. Juego de instrucciones de los PIC de la Gama

    Media.

    3.1 Introduccin.

    Las caractersticas 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 disearn

    memorias de un ancho igual al cdigo de operacin de las instrucciones, pudiendo

    acceder a su lectura en un solo ciclo. Adems el tamao de la memoria coincidir

    con el nmero 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) Segmentacin 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 simultneos a ambas memorias,

    podemos ejecutar las instrucciones en un nico ciclo de instruccin.

    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 fsicamente como registros.

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 simetra

    permite una programacin ms 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. Segmentacin.

    La entrada de reloj, se divide internamente por cuatro, obtenindose cuatro seales de reloj

    denominadas Q1, Q2, Q3 y Q4. Internamente, el PC se incrementa cada Q1, la instruccin es

    leda de la memoria de instrucciones y almacenada en el registro de instrucciones en Q4. Esa

    instruccin 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. Adems, estos ciclos

    son los que denominaremos periodos de oscilacin del PIC (Tosc).

    Figura 3.1 Flujo de instrucciones y reloj.

    Un ciclo de instruccin consiste precisamente en estos 4 ciclos de reloj Q1-Q4, y cada una de

    las fases de la instruccin ocupa un ciclo.

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    41

    Estas dos fases son:

    Fase de bsqueda (Fetch): Se incrementa en Q1 el PC, se lee y se lleva en Q4 a registro de instrucciones.

    Fase de ejecucin: 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 segmentacin, es decir, se ejecuta una instruccin por ciclo de

    instruccin, excepto las instrucciones de salto incondicional, ya que es en la fase de ejecucin

    donde se calcula la direccin destino. En este caso tarda dos ciclos de instruccin.

    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 Detencin

    Buscar SUB_1 Ejecutar SUB_1 Buscar SUB_1+1

    Figura 3.2 Segmentacin de instrucciones

    Existen adems las instrucciones de salto condicional, que pueden durar 1 2 ciclos en

    funcin del resultado (btfss, btfsc, decfsz y incfsz).

    3.3 El formato de las instrucciones.

    Las instrucciones de los PIC se pueden dividir en cuatro categoras:

    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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    42

    Todas ellas tienen un ancho de 14 bits (ancho de la memoria de programa), pero los campos

    varan entre ellos.

    Los formatos de los distintos tipos de instrucciones son:

    Instrucciones sobre registros orientadas a bytes. 13 8 7 6 0

    Cdigo de operacin 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 direccin del registro sobre el que se realiza la operacin. El resto de la direccin viene dada por los bits IRP1, IRP0 o IRP.

    Instrucciones sobre registros orientadas a bits. 13 10 9 7 6 0

    Cdigo de operacin b f

    b = 3 bits que indican la posicin dentro del registro del bit a modificar. f = 7 bits de la direccin del registro sobre el que se realiza la operacin.

    El resto de la direccin viene dada por los bits IRP1, IRP0 o IRP.

    Instrucciones con literales y de control. o General.

    13 8 7 0 Cdigo de operacin k (literal)

    k = literal (direccionamiento inmediato).

    o Instrucciones GOTO y CALL. 13 11 10 0

    Cdigo de operacin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 instruccin. Si usamos el registro de Estado como registro destino, los bits C, Z y DC

    obtendrn los valores propios del resultado de la operacin. Por ejemplo: clrf STATUS ; despus de su ejecucin STATUS = 00001000

    ; correspondiendo ese 1 con el bit Z.

    Todas las instrucciones que manipulan bit son instrucciones de tipo lectura-

    modificacin-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 descripcin detallada de cada una de las instrucciones de los PIC.

    TABLA 3.1 Descripcin de las abreviaturas utilizadas. Campo Descripcin

    f Direccin del registro (0x00 a 0x7F) w Registro de trabaja (acumulador) b Posicin de un bit de un registro (0 a 7) k Literal, dato inmediato o direccin de una etiqueta. x Valor indeterminado (0 1)

    d Seleccin 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 activacin global de interrupciones. WDT Perro guardin (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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    44

    La tabla 3.2 muestra un resumen de todas las instrucciones que componen el lenguaje de

    programacin 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

    instruccin Nemnicos, Operandos Descripcin 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 lgica 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 lgica 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 lgica 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 lgica 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 lgica 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 interrupcin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    45

    3.4.1 Descripcin detallada de las instrucciones por orden alfabtico.

    ADDLW Suma Literal con el W Sintaxis: [etiqueta] ADDLW k Operandos: 0 k 255 Operacin: (W) + k W Flags afectados: C, DC, Z Cdigo OP: 11 111x kkkk kkkk Descripcin: 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 instruccin W = 0x10 Despus de la instruccin W= 0x25

    ADDWF Suma W y el registro f Sintaxis: [etiqueta] ADDWF f, d Operandos: 0 f 127

    d [0, 1] Operacin: (W) + (f) dest Flags afectados: C, DC, Z Cdigo OP: 00 0111 dfff ffff Descripcin: 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 instruccin W = 0x17 FSR = 0xC2 Despus de la instruccin W = 0xD9 FSR = 0xC2

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    46

    ANDLW Y lgica entre Literal y W Sintaxis: [etiqueta] ANDLW k Operandos: 0 k 255 Operacin: (W) AND (k) W Flags afectados: Z Cdigo OP: 11 1001 kkkk kkkk Descripcin: Realiza la operacin lgica 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 instruccin W = 0xA3 ;0101 1111 (0x5F) Despus de la instruccin W = 0x03 ;1010 0011 (0xA3) ;0000 0011 (0x03)

    ANDWF Y lgica entre W y f Sintaxis: [etiqueta] ANDWF f, d Operandos: 0 f 127

    d [0, 1] Operacin: (W) AND (f) dest Flags afectados: Z Cdigo OP: 00 0101 dfff ffff Descripcin: Realiza la operacin lgica 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 instruccin W = 0x17 ;0001 0111 (0x17) FSR = 0xC2 ;1100 0010 (0xC2) Despus de la instruccin 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 Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    47

    BCF Borra un bit Sintaxis: [etiqueta] BCF f, b Operandos: 0 f 127

    0 b 7 Operacin: 0 f Flags afectados: Ninguno Cdigo OP: 01 00bb bfff ffff Descripcin: Borra el bit b del registro f. Ejemplo: BCF FLAG_REG, 7

    Antes de la instruccin FLAG_REG = 0xC7 ;1100 0111 Despus de la instruccin FLAG_REG = 0x47 ;0100 0111

    BSF Pone a 1 un bit Sintaxis: [etiqueta] BSF f, b Operandos: 0 f 127

    0 b 7 Operacin: 1 f Flags afectados: Ninguno Cdigo OP: 01 01bb bfff ffff Descripcin: Pone a 1 el bit b del registro f. Ejemplo: BSF FLAG_REG, 7

    Antes de la instruccin FLAG_REG = 0x0A ;0000 1010 Despus de la instruccin FLAG_REG = 0x8A ;1000 1010

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz 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 Operacin: Salta si (f) = 0 Flags afectados: Ninguno Cdigo OP: 01 10bb bfff ffff Descripcin: Si el bit b del registro f es 0, se salta una instruccin y se

    continua con la ejecucin. Ejemplo: AQU BTFSC FLAG, 4

    FALSO GOTO REPETIR VERDAD .......... .................................. Antes de la instruccin PC = direccin de AQU Despus de la instruccin Si FLAG, 4 =0 PC = direccin de VERDAD Si FLAG, 4 = 1 PC = direccin de FALSO

    BTFSS Testeo de bit y salto si es 1 Sintaxis: [etiqueta] BTFSS f, b Operandos: 0 f 127

    0 b 7 Operacin: Salta si (f) = 1 Flags afectados: Ninguno Cdigo OP: 01 11bb bfff ffff Descripcin: Si el bit b del registro f es 1, se salta una instruccin y se

    continua con la ejecucin. Ejemplo: AQU BTFSS FLAG, 4

    FALSO GOTO REPETIR VERDAD .......... .................................. Antes de la instruccin PC = direccin de AQU Despus de la instruccin Si FLAG, 4 =1 PC = direccin de VERDAD Si FLAG, 4 = 0 PC = direccin de FALSO

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    49

    CALL Salto a subrutina Sintaxis: [etiqueta] CALL k Operandos: 0 k 2047 Operacin: (PC) + 1 TOS,

    k PC, (PCLATCH) PC

    Flags afectados: Ninguno Cdigo OP: 10 0kkk kkkk kkkk Descripcin: Salto a subrutina. Primero se guardan en la pila los 13 bits de

    la direccin de retorno (PC + 1). Despus se carga en el PC los 11 bits del inmediato k, los dos bits ms significativos los proporciona el PCLATCH. CALL tarda dos ciclos de instruccin en ejecutarse.

    Ejemplo: PROGRAMA CALL SUBRUTINA Antes de la instruccin PC =direccin de PROGRAMA Despus de la instruccin TOS = direccin de PROGRAMA + 1 PC = direccin de SUBRUTINA

    CLRF Borra un registro f Sintaxis: [etiqueta] CLRF f Operandos: 0 f 127 Operacin: 00h f

    1 Z Flags afectados: Z Cdigo OP: 00 0001 1fff ffff Descripcin: Se borra el contenido del registro f y el flag Z de estado se

    activa. Ejemplo: CLRF FLAG_REG

    Antes de la instruccin FLAG_REG = 0x5A Despus de la instruccin FLAG_REG = 0x00 Z = 1

  • Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Mio Escuela de Ingenieras Industriales David Arroyo Muoz Universidad de Extremadura

    50

    CLRW Borra el registro W Sintaxis: [etiqueta] CLRW Operandos: Ninguno Operacin: 00h W

    1 Z Flags afectados: Z Cdigo OP: 00 0001 1xxx xxxx Descripcin: Se borra el contenido del registro W y el flag Z de estado se

    activa. Ejemplo: CLRW

    Antes de la instruccin W = 0x5A Despus de la instruccin W = 0x00 Z = 1

    CLRWDT Borra el Watchdog Sintaxis: [etiqueta] CLRWDT Operandos: Ninguno Operacin: 00h WDT

    0 predivisor del WDT 1 TO 1 PD

    Flags afectados: TO , PD Cdigo OP: 00 0000 0110 01000 Descripcin: Se borra el contenido tanto del Watchdog como de su

    predivisor. Los bits TO y PD del Registro de Estado se ponen a 1.