SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
eman ta zabal zazu




                     ARQUITECTURA

                          Hay dos cosas infinitas: el Universo
                          y la estupidez humana. Y del
                          Universo no estoy seguro.
                          Albert Einstein




                             Sainz de Murieta Mangado, Joseba Andoni
                             Departamento de Ingeniería de Sistemas y Automática
eman ta zabal zazu
                                           2.- MICROCONTROLADORES PIC
                                           2.-
                                     - GAMA MEDIA: ARQUITECTURA -

                     Características más relevantes:
                        – Su procesador es tipo RISC
                        – Tiene una arquitectura HARVARD
                        – Su procesador es segmentado, "pipe-line".
                        – El formato de las instrucciones es ortogonal
                        – Todas las instrucciones tienen la misma longitud (14 bits)
                        – La arquitectura está basada en banco de registros




                                                                                       2
eman ta zabal zazu
                                                2.- MICROCONTROLADORES PIC
                                                2.-
                                         - GAMA MEDIA: ARQUITECTURA -

                     Procesador tipo RISC:
                     Las CPU´s atendiendo al tipo de instrucciones que utilizan pueden clasificarse en:


                          CISC: (Complex Instruction Set Computer) Computadores de juego de
                            instrucciones complejo, que disponen de un repertorio de instrucciones
                            elevado (unas 80), algunas de ellas muy sofisticadas y potentes, pero
                            que como contrapartida requieren muchos ciclos de máquina para
                            ejecutar las instrucciones complejas.


                          RISC: (Reduced Instruction Set Computer) Computadores de juego de
                            instrucciones reducido, en los que el repertorio de instrucciones es muy
                            reducido (en nuestro caso 35), las instrucciones son muy simples y
                            suelen ejecutarse en un ciclo máquina. Además los RISC deben tener una
                            estructura pipeline y ejecutar todas las instrucciones a la misma
                            velocidad.


                          SISC:(Specific Instruction Set Computer) Computadores de juego de
                            instrucciones específico.


                                                                                                          3
eman ta zabal zazu
                                              2.- MICROCONTROLADORES PIC
                                              2.-
                                        - GAMA MEDIA: ARQUITECTURA -

                     Arquitectura Harvard
                     La CPU está conectado a dos memorias por medio de dos buses separados.
                     Una de las memorias contiene solamente las instrucciones del programa, y es
                     llamada Memoria de Programa.
                     La otra memoria solo almacena los datos y es llamada Memoria de Datos.




                     Los microcontroladores PIC tienen una memoria de datos de 8 bits, y una
                     memoria de programa que, según el modelo, puede ser de 12 bits, 14 bits y 16
                     bits, siendo en los de gama media de 14 bits.



                                                                                                    4
eman ta zabal zazu
                                                       2.- MICROCONTROLADORES PIC
                                                       2.-
                                             - GAMA MEDIA: ARQUITECTURA -

                     Procesador segmentado "pipe-line":
                     Quiere decir que aplica la técnica de segmentación que permite al procesador
                     realizar simultáneamente la ejecución de una instrucción y la búsqueda de código
                     de la siguiente. De esta manera, se puede ejecutar una instrucción en un ciclo.
                     (Cada ciclo de instrucción son cuatro ciclos de reloj).




                      Ejemplo:            Búsqueda 1    Ejecuta 1
                      1. MOVLW 55h                     Búsqueda 2    Ejecuta2
                      2 .MOVWF PORTB                                Búsqueda 3    Ejecuta 3
                      3. CALL SUB_1                                              Busqueda 4        Salir
                      4. BSF PORTA,BIT3                                                       Busqueda SUB_1   Ejecuta SUB_1




                                                                                                                               5
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                        - GAMA MEDIA: ARQUITECTURA -

                     Arquitectura Ortogonal:
                     Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como
                     fuente o destino.



                     Arquitectura basada en banco de registros:
                     Implica que todos los elementos del sistema, es decir, temporizadores, puertos
                     de entrada/salida, posiciones de memoria, etc, están implementados físicamente
                     como registros.



                      En la figura se muestra como la
                      ALU (Unidad Aritmético-Lógica)
                      efectúa sus operaciones con dos
                      operandos, uno que proviene del
                      registro W (Work o Acumulador),
                      y el otro que se encuentra en
                      cualquier otro registro o del
                      propio código de instrucción.


                                                                                                       6
eman ta zabal zazu
                                         2.- MICROCONTROLADORES PIC
                                         2.-
                                    - GAMA MEDIA: ARQUITECTURA -

                     Arquitectura basada en banco de registros: Ejemplo




                                                                          7
eman ta zabal zazu
                                             2.- MICROCONTROLADORES PIC
                                             2.-
                                       - GAMA MEDIA: ARQUITECTURA -

                     Diagrama de Bloques:

                     En este esquema se
                     muestra la organización
                     interna del núcleo de los
                     microcontroladores PIC de
                     gama media.




                                                                          8
eman ta zabal zazu
                                                  2.- MICROCONTROLADORES PIC
                                                  2.-
                                            - GAMA MEDIA: ARQUITECTURA -

                     PIC16F84:

                     • 1K de memoria de programa (flash)               • 15 registros hardware especiales
                     • 68 bytes de memoria de datos (RAM)              • stack de 8 niveles
                     • 64 bytes de memoria de datos (EEPROM)           • 4 fuentes de interrupción
                     • Juego de 35 instrucciones (RISC)                • 13 pines de E/S
                     • Instrucciones de 14 bits                        • 1 temporizador/contador de 8 bits
                     • Datos de 8 bits.                                • Watchdog




                                                                                                             9
eman ta zabal zazu
                                        2.- MICROCONTROLADORES PIC
                                        2.-
                                   - GAMA MEDIA: ARQUITECTURA -

                     Diagrama de Bloques del PIC16F84:




                                                                     10
eman ta zabal zazu
                                                  2.- MICROCONTROLADORES PIC
                                                  2.-
                                           - GAMA MEDIA: ARQUITECTURA -

                     Patillaje (Pinout) del PIC16F84:

                                                                                                       5
                                                                                    RA0-RA4

                                                                 PORTA - Puerto de Entrada/Salida (I/O Port)
                                                               TOCK1 – Entrada del contador temporizador TMR0


                                                                                                      8
                                                                                    RB0-RB7

                                                                 PORTB - Puerto de Entrada/Salida (I/O Port)
                                                                     INT – Entrada de interrupción externa


                      VSS y VDD Es la alimentación, que puede ser de 2V a 6V.
                                     VDD es el terminal positivo.

                                                         MCLR Es el Reset del microcontrolador (Master Clear)

                     OSC1/CLKIN OSC2/CLKOUT Son los terminales para la conexión del oscilador externo
                                            que proporciona la frecuencia de trabajo o frecuencia del
                                            reloj principal.

                                                                                                                11
eman ta zabal zazu
                                        2.- MICROCONTROLADORES PIC
                                        2.-
                                   - GAMA MEDIA: ARQUITECTURA -

                     Diagrama de Bloques del PIC16F873:




                                                                     12
eman ta zabal zazu
                                                 2.- MICROCONTROLADORES PIC
                                                 2.-
                                          - GAMA MEDIA: ARQUITECTURA -


                     Oscilador:
                     El circuito oscilador interno se emplea para generar el reloj del dispositivo. Este reloj
                     es el que se emplea para ejecutar las instrucciones y hacer funcionar a los diversos
                     periféricos.
                     Cada cuatro ciclos de reloj, se genera un ciclo de instrucción.
                     Existen hasta ocho modos de configurar el oscilador. Esta configuración se realizará
                     mediante los bits de configuración.
                     Existen dos modos que permiten direccionar la salida del oscilador interno
                     (CLKOUT) hacia uno de los pines de salida.
                     Los modos del oscilador son:
                                 LP: Cristal de baja frecuencia
                                 XT: Cristal / Resonador
                                 HS: Cristal / Resonador de alta frecuencia
                                 RC: Célula R-C externa (con CLKOUT)
                                 EXTRC: Célula R-C externa
                                 EXTRC: Célula R-C externa con CLKOUT
                                 INTRC: Célula R-C interna de 4MHz
                                 INTRC: Célula R-C interna de 4MHz con CLKOUT


                                                                                                                 13
eman ta zabal zazu
                                                 2.- MICROCONTROLADORES PIC
                                                 2.-
                                        - GAMA MEDIA: ARQUITECTURA -


                     Oscilador: Cristal / Resonador Cerámico
                     En los modos XT, LP o HS se conecta un cristal o un resonador cerámico a los pines
                     OSC1/CLKIN y OSC2/CLKOUT para establecer la frecuencia de reloj de trabajo.

                                                                          CRISTAL OSCILADOR




                            RESONADOR CERÁMICO




                                                                                                          14
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                        - GAMA MEDIA: ARQUITECTURA -


                     Oscilador: Entrada de reloj externa
                     En los modos XT, LP o HS se puede emplear una señal de reloj externa para
                     gobernar el funcionamiento del oscilador interno.




                     Oscilador: Célula R-C
                     En aplicaciones insensibles al tiempo puede emplearse una solución económica para
                     establecer la frecuencia de reloj mediante el empleo de una célula R-C.
                     La frecuencia del oscilador vendrá determinada por la tensión de alimentación, el
                     valor de la resistencia, el valor del condensador y la temperatura de trabajo.




                                                                            3kΩ≤ REXT ≥100kΩ
                                                                               CEXT>20pF




                                                                                                         15
eman ta zabal zazu
                                                       2.- MICROCONTROLADORES PIC
                                                       2.-
                                              - GAMA MEDIA: ARQUITECTURA -


                     Oscilador: Célula R-C interna
                     El oscilador R-C interno (no en todos los dispositivos de la gama media)
                     proporciona una señal de reloj fija de 4MHz a Vdd=5V y 25ºC.
                     Se emplea el registro OSCCAL para sintonizar la frecuencia del oscilador interno.




                     Bit 7:4 CAL3:CAL0. Bits de calibración del oscilador RC interno
                             0000= Frecuencia más baja del rango
                             ...
                             1111= Frecuencia más alta del rango

                     Bit 3   CALFST: Bit de compensación (offset) del rango de osc.
                             1= Incrementa la frecuencia del oscilador en el rango CAL3:CAL0
                             0= No se aplica compensación

                     Bit 2   CALFST: Bit de compensación (offset) del rango de osc.
                             1= Decrementa la frecuencia del oscilador en el rango CAL3:CAL0
                             0= No se aplica compensación

                     Bit 1:0 No implementados


                                                                                                         16
eman ta zabal zazu
                                                   2.- MICROCONTROLADORES PIC
                                                   2.-
                                            - GAMA MEDIA: ARQUITECTURA -


                       La CPU y la ALU:




                     La CPU puede considerarse
                     como el cerebro del dispositivo.
                     En las instrucciones aritméticas
                     y lógicas, emplea la Unidad
                     Aritmético Lógica (ALU) para
                     llevar a cabo la instrucción.




                      La ALU realiza la operación entre el contenido del acumulador (8 bits) y o bien
                      un literal contenido en la instrucción o bien el contenido de un registro de
                      memoria.
                      Dependiendo de la instrucción ejecutada la ALU puede afectar a alguno de los
                      bits del registro STATUS.

                                                                                                        17
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                        - GAMA MEDIA: ARQUITECTURA -


                     Organización de la memoria:


                     Existen dos bloques principales de memoria:
                               La memoria de programa
                               La memoria de datos
                     Cada uno de estos bloques dispone de su propio
                     bus (arquitectura Harvard) de forma que el
                     acceso a ambos bloques puede tener lugar
                     durante el mismo ciclo de oscilador.




                                                                            18
eman ta zabal zazu
                                        2.- MICROCONTROLADORES PIC
                                        2.-
                                   - GAMA MEDIA: ARQUITECTURA -

                     Memoria de Datos y de Programa del PIC16F84:




                     Memoria de
                      Programa
                                                                     Memoria de
                                                                       Datos




                                                                              19
eman ta zabal zazu
                                                        2.- MICROCONTROLADORES PIC
                                                        2.-
                                                 - GAMA MEDIA: ARQUITECTURA -


                     Memoria de Programa:


                                                                  210=1024=1K
                                                                  213=8192=8K
                                                                                                               PIC16F84


                                                         Los PIC de gama media disponen de un contador de programa
                                                         de 13 bits capaz de direccionar un espacio de memoria de 8K x
                                                         14.
                                                         La anchura del bus de la memoria de programa es de 14-bits.
                                                         Esta es la longitud de una instrucción y dado que en estos
                                                         microcontroladores todas las instrucciones son de palabra
                                                         simple, el espacio disponible es de 8K de instrucciones.
                                                         La memoria de programa se encuentra dividida en cuatro
                                                         páginas de 2K-words cada una de ellas.
                                PIC16F84
                                                         Para moverse entre páginas de memoria será necesario
                     1024 posiciones X 14 bits           modificar los bits altos del PC lo cual se realizará escribiendo el
                                                         valor deseado en un SFR llamado PCLATH (Program Counter
                      00 0000 0000               000H
                                                         Latch High).
                                                         En una ejecución de programa secuencial, será el propio PC el
                      11 1111 1111               3FFH
                                                         encargado de saltar de página sin necesitar de la intervención
                                                         del usuario.
                                                                                                                           20
eman ta zabal zazu
                                                 2.- MICROCONTROLADORES PIC
                                                 2.-
                                          - GAMA MEDIA: ARQUITECTURA -


                      Memoria de Programa:



                     El Vector de Reset (Reset Vector):
                     En todos los dispositivos, un RESET fuerza el
                     contador de programa a la dirección 0h.
                     Además, el RESET del dispositivo borrará el contenido
                     del registro PCLATCH direccionándose el dispositivo a
                     la primera de las páginas de memoria de programa.




                     El Vector de Interrupción (Interrupt Vector):
                     Cuando el microcontrolador reconoce una interrupción, el contador de programa se
                     fuerza a la dirección 0004h.
                     El registro PCLATH no se ve modificado por lo que la rutina de servicio de
                     interrupción, antes de realizar el salto a la dirección deseada, deberá modificar este
                     registro en caso de ser necesario, restaurándolo al regresar de la interrupción.

                                                                                                          21
eman ta zabal zazu
                                                               2.- MICROCONTROLADORES PIC
                                                               2.-
                                                          - GAMA MEDIA: ARQUITECTURA -

                          Memoria de Programa:                                   Este es el motor que hace que el programa avance, y
                                                                                 que después de ejecutarse una instrucción, vaya a la
                                                                                 siguiente, o a la que la instrucción anterior indica

                                      000H              Vector Reset                        PC (Contador de Programa)
                                                                                   13
                     Apunta al principio del
                     programa después de                                                                                 13
                         encenderse o
                          resetearse

                                                                                                                Nivel 1
                                     004H          Vector Interrupción
                                                                                        Pila
                                                                                        LIFO

                                                                                                                Nivel 8

                                                                               Cuando a través de una instrucción, ejecutamos un
                                                                               subproceso o subrutina, el contador de programa (PC)
                                                                               dejará de contar en su curso habitual e irá a la posición
                                                                               de memoria de programa donde empieza esta
                                                                               subrutina; en el primer nivel de la pila se almacenará
                                                                               esta llamada, hasta que se acaben de ejecutar las
                                      3FFH
                                                                               instrucciones que contiene, momento en el cual se
                                                                               recogerá y seguirá con las instrucciones normales a
                            Las instrucciones son de 14 bits      14           partir de la llamada.


                                      RI (Registro de Instrucciones)
                                                                                                                                       22
eman ta zabal zazu
                                                  2.- MICROCONTROLADORES PIC
                                                  2.-
                                           - GAMA MEDIA: ARQUITECTURA -


                      Memoria de Programa:
                     El Contador de Programa (Program Counter (PC)):
                     El contador de programa especifica la dirección de la
                     instrucción a ejecutar.
                     Tiene una longitud de 13 bits.
                     El byte bajo se denomina: registro PCL y es de
                     lectura/escritura.
                     El byte alto se denomina : registro PCH y no se puede leer
                     ni escribir directamente sino que hay que hacerlo a través
                     del registro PCLATH


                                Caso 1: Instrucción con el PCL como destino




                                                                                  23
eman ta zabal zazu
                                                   2.- MICROCONTROLADORES PIC
                                                   2.-
                                            - GAMA MEDIA: ARQUITECTURA -


                      Memoria de Programa:
                     Paginación de la memoria de programa:
                     Algunos de los microcontroladores de la gama media, poseen una
                     memoria de programa superior a 2K-words, pero las instrucciones
                     CALL y GOTO solamente tienen un rango de 11 bits, es decir, solo
                     tienen capacidad de direccionar saltos dentro de una página de
                     2K-words.
                     Para solucionar esto se emplean los bits 4 y 3 del PCLATH de
                     forma que permiten direccionar la página de memoria deseada.
                     Es decir, antes de ejecutar una instrucción CALL o GOTO, el
                     usuario debe asegurarse de que estos bits del PCLATH están
                     direccionando la página deseada.
                     Al regresar de la subrutina, no es necesario manipular el PCLATH
                     ya que son recuperados del STACK los 13 bits del contador de
                     programa.


                                                                           Ejemplo:
                                                                           Llamada desde la página 0 a una
                                                                           subrutina situada en la página 1.



                                                                                                           24
eman ta zabal zazu
                                                 2.- MICROCONTROLADORES PIC
                                                 2.-
                                           - GAMA MEDIA: ARQUITECTURA -


                     Memoria de Programa:
                     El Contador de Programa (Program Counter (PC)):

                      Caso 2: Instrucción GOTO




                      Caso 3: Instrucción CALL




                      Caso 4: Instrucción RETURN, RETFIE O RETLW




                                                                              25
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                        - GAMA MEDIA: ARQUITECTURA -


                     Memoria de Datos:
                     La memoria de datos se puede dividir en:
                              Registros RAM de propósito general (GPR)
                              Registros de Función Especial (Special Function Registers (SFR))

                     Registros:
                     Cada una de las posiciones de memoria de datos, de longitud 8-bits, se denomina
                     registro.
                     A cada registro se puede hace referencia bien por su dirección de memoria o bien
                     por un identificador específico para cada uno de ellos.


                             General Purpose Registers (GPR):
                             Es el área de memoria donde se guardan y manipulan los datos necesarios
                             para las operaciones del microcontrolador.
                             Special Function Registers (SFR):
                             Es el área de memoria donde se guardan y manipulan los datos que
                             configuran y controlan el funcionamiento del microcontrolador.

                                                                                                        26
eman ta zabal zazu
                                         2.- MICROCONTROLADORES PIC
                                         2.-
                                    - GAMA MEDIA: ARQUITECTURA -


                     Memoria de Datos:
                                                                      16F873
                            16F84




                                                                               27
eman ta zabal zazu
                                              2.- MICROCONTROLADORES PIC
                                              2.-
                                        - GAMA MEDIA: ARQUITECTURA -

                     Memoria de Datos:
                     La memoria de datos se encuentra dividida en diferentes bancos, siendo necesario
                     manipular una serie de bits de control del registro STATUS para conmutar entre
                     estos bancos de memoria.
                             16F84

                                                  Dos bancos de datos o páginas de 128 registros de 8 bits
                                                  cada uno.
                                                  El PIC16F84 usa:
                                                        Los 80 primeros de la página “0” (00h al 4Fh)
                                                        Los 12 primeros de la página “1” (80h al 8Bh)
                                                  Los primeros 12 registros de ambas páginas son específicos
                                                  (SFR) y los 68 restantes, solo en la página 0 son de
                                                  propósito general (GPR).




                                                 La memoria RAM así como algunos registros especiales
                                                 son los mismos en los dos bancos del mapa de memoria
                                                 del PIC. La anchura de los registros en la memoria es de
                                                 8 bis.

                                                                                                               28
eman ta zabal zazu
                                                          2.- MICROCONTROLADORES PIC
                                                          2.-
                                                - GAMA MEDIA: ARQUITECTURA -

                     16F873                                     R/W-0     R/W-0    R/W-0     R-1        R-1     R/W-X   R/W-X   R/W-X

                     Registro STATUS                             IRP      RP1      RP0       TO         PD       Z      DC       C
                                                                 Bit 7    Bit 6     Bit 5    Bit 4      Bit 3   Bit 2   Bit 1   Bit 0

                     Bit 7   IRP: Register Bank Select Bit (Para direccionamiento indirecto)
                             1= Banco 2,3 (100h - 1FFh)
                             0= Banco 0.1 (000h - 0FFh)
                     Bit 6-5 RP1:RP0: Register Bank Select Bit (Para direccionamiento directo)
                             11= Banco 3 (180h – 1FFh)
                             10= Banco 2 (100h – 17Fh)
                             01= Banco 1 (080h – 0FFh)
                             00= Banco 0 (000h – 07Fh)
                             Cada banco es de 128 bytes
                     Bit 4   TO: Time-out Bit
                             1= Después del encendido, la instrucción CLRWDT o la instrucción SLEEP
                             0= Se ha rebosado el WDT
                     Bit 3   PD: Power-down Bit
                             1= Después del encendido o la instrucción CLRWDT
                             0= Después de ejecutar la instrucción SLEEP
                     Bit 2   Z: Zero Bit
                             1= El resultado de una operación aritmética o lógica es cero
                             0= El resultado de una operación aritmética o lógica es distinto de cero
                     Bit 1   DC: Digit Carry Bit (ADDWF, ADDLW, SUBLW, SUBWF)
                             1= Existe carry del cuarto bit de bajo orden del resultado
                             0= No existe carry del cuarto bit de bajo orden del resultado
                     Bit 0   C: Carry Bit (ADDWF, ADDLW, SUBLW, SUBWF)
                             1= Existe carry del bit más significativo del resultado
                             0= No existe carry del bit más significativo del resultado
                                                                                                                                     29
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                        - GAMA MEDIA: ARQUITECTURA -

                     Memoria de Datos:
                     Para mover un valor de un registro a otro registro, se ha de pasar a través del
                     acumulador (W), por lo que los movimientos de datos de un registro a otro
                     requerirán de dos ciclos de instrucción.

                     Direccionamiento:
                     A la memoria de datos se puede acceder de forma directa o indirecta.
                     Direccionamiento directo:
                     Requiere el empleo de los bits RP1:RP0 del registro STATUS.




                                                                            Ej.: bsf 03 , 0x05

                                                                                                       30
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                         - GAMA MEDIA: ARQUITECTURA -

                     Memoria de Datos:
                     Direccionamiento indirecto:
                     Requiere del empleo del registro FSR (File Select Register) y del bit IRP (Indirect
                     Register Pointer) del registro STATUS.




                                                                            Ejemplo     para     borrar   las
                                                                            direcciones de la RAM 20h – 2Fh




                                                                                                                31
eman ta zabal zazu
                                                                   2.- MICROCONTROLADORES PIC
                                                                   2.-
                                                        - GAMA MEDIA: ARQUITECTURA -

                         Ejemplo1:
                     ;Ejemplo
                     ;
                     ;Sumar dos números, A y B, de 16 bits cada uno.
                     ;

                                    List            p=16F84        ;Tipo de procesador
                                    include         "P16F84.INC"   ;Definiciones de registros internos

                     Dato_A_L       equ             0x10           ;Define la posición del dato A (bajo)
                     Dato_A_H       equ             0x11           ;Define la posición del dato A (alto)
                     Dato_B_L       equ             0x12           ;Define la posición del dato B (bajo)
                     Dato_B_H       equ             0x13           ;Define la posición del dato B (alto)
                     Resultado_L    equ             0x14           ;Define la posición del resultado (bajo)
                     Resultado_H    equ             0x15           ;Define la posición del resultado (alto)

                                    org             0x00           ;Vector de Reset
                                    goto            Inicio

                                    org             0x05           ;Salva el vector de interrupción

                     Inicio         movf            Dato_A_L,W     ;Carga menos peso del dato A
                                    addwf           Dato_B_L,W     ;Suma menos peso del dato B
                                    movwf           Resultado_L    ;Almacena el resultado
                                    movf            Dato_A_H,W     ;Carga más peso del dato A
                                    btfsc           STATUS,C       ;Hubo acarreo anterior ??
                                    addlw           1              ;Si, suma 1 al acumulador
                                    addwf           Dato_B_H,W     ;Suma más peso del dato B
                                    movwf           Resultado_H    ;Guarda el resultado

                     Stop           nop                            ;Poner breakpoint de parada
                                    nop

                                    end                            ;Fin del programa fuente


                                                                                                              32
eman ta zabal zazu
                                                                  2.- MICROCONTROLADORES PIC
                                                                  2.-
                                                              - GAMA MEDIA: ARQUITECTURA -

                      Ejemplo1: El fichero de cabecera p16f84.inc

                     W                 EQU       H'0000'            ;----- INTCON Bits ----------------
                     F                 EQU       H'0001'
                                                                    GIE              EQU      H'0007'
                     ;----- Register Files-----------------         EEIE             EQU      H'0006'
                                                                    T0IE             EQU      H'0005'
                     INDF              EQU       H'0000'            INTE             EQU      H'0004'
                     TMR0              EQU       H'0001'            RBIE             EQU      H'0003'
                     PCL               EQU       H'0002'            T0IF             EQU      H'0002'
                     STATUS            EQU       H'0003'            INTF             EQU      H'0001'
                     FSR               EQU       H'0004'            RBIF             EQU      H'0000'
                     PORTA             EQU       H'0005'
                     PORTB             EQU       H'0006'            ;----- OPTION_REG Bits ----------
                     EEDATA            EQU       H'0008'
                     EEADR             EQU       H'0009'            NOT_RBPU         EQU      H'0007'
                     PCLATH            EQU       H'000A'            INTEDG           EQU      H'0006'
                     INTCON            EQU       H'000B'            T0CS             EQU      H'0005'
                                                                    T0SE             EQU      H'0004'
                     OPTION_REG        EQU       H'0081'            PSA              EQU      H'0003'
                     TRISA             EQU       H'0085'            PS2              EQU      H'0002'
                     TRISB             EQU       H'0086'            PS1              EQU      H'0001'
                     EECON1            EQU       H'0088'            PS0              EQU      H'0000'
                     EECON2            EQU       H'0089'
                                                                    ;----- EECON1 Bits -----------------
                     ;----- STATUS Bits -----------------
                                                                    EEIF             EQU      H'0004'
                     IRP               EQU       H'0007'            WRERR            EQU      H'0003'
                     RP1               EQU       H'0006'            WREN             EQU      H'0002'
                     RP0               EQU       H'0005'            WR               EQU      H'0001'
                     NOT_TO            EQU       H'0004'            RD               EQU      H'0000'
                     NOT_PD            EQU       H'0003'
                     Z                 EQU       H'0002'
                     DC                EQU       H'0001'
                     C                  EQU      H'0000'

                                                                                                           33
eman ta zabal zazu
                                                         2.- MICROCONTROLADORES PIC
                                                         2.-
                                              - GAMA MEDIA: ARQUITECTURA -

                     Ejemplo2:
                     Un tanque de fuel con capacidad de 255 litros dispone de un sensor que transmite al
                     microcontrolador la capacidad remanente y la guarda en el byte FUEL.
                     Se desea escribir una rutina que active el bit 0 del byte ALARMA cuando el nivel del tanque sea
                     menor o igual a 20 litros y que active el bit 1 de este mismo byte cuando el nivel sea menor o
                     igual a 5 litros.




                             FUEL                 0x0C                                     LEER FUEL
                             ALARMA               0x0D
                                                                                      NO                 SI
                                                                                           FUEL<20



                                                                             ALARMA<0>=0               ALARMA<0>=1


                                                                                      NO                 SI
                                                                                            FUEL<5
                     C   Z

                     1   0   Resultado positivo
                                                                             ALARMA<1>=0               ALARMA<1>=1
                     1   1   Resultado cero
                                                     SOLO EN LA RESTA
                     0   0   Resultado negativo
                                                                                                                       34
eman ta zabal zazu
                                                    2.- MICROCONTROLADORES PIC
                                                    2.-
                                          - GAMA MEDIA: ARQUITECTURA -

                      Ejemplo2:


                              List       p=16F84                     ;Tipo de procesador                         NOTA
                              include    "P16F84.INC"                ;Definiciones de registros internos
                                                                                                           Mirar bien como se
                     Fuel     equ        0x0C           ;Define la posición del nivel de llenado            modifica el bit C
                     Alarma   equ        0x0D           ;Define la posición del byte de alarmas                del registro
                                                                                                            STATUS con las
                              constant   Nivel_1=.5                                                         instrucciones de
                              constant   Nivel_2=.20                                                          suma y resta.

                              org        0x00          ;Vector de Reset
                              goto       Inicio
                              org        0x05          ;Salva el vector de interrupción
                     Inicio   movf       Fuel,W        ;Carga el nivel del Fuel
                              sublw      Nivel_2       ;Resta Nivel_2-(W)
                              btfss      STATUS,C      ;Mira el signo del resultado en el bit de carry
                              goto       else1
                     if1      bsf        Alarma,0      ;Si C=1 W<=20 enciendo el bit
                              goto       cont1
                     else1    bcf        Alarma,0      ;Si C=0 W>20 apago el bit
                     cont1    movf       Fuel,W        ;Carga el nivel del Fuel
                              sublw      Nivel_1       ;Resta Nivel_2-(W)
                              btfss      STATUS,C      ;Mira el signo del resultado en el bit de carry
                              goto       else2
                     if2      bsf        Alarma,1      ;Si C=1 W<=5 enciendo el bit
                              goto       cont2
                     else2    bcf        Alarma,1       ;Si C=0 W>5 apago el bit
                     cont2    goto       Inicio
                              end                      ;Fin del programa fuente
                                                                                                                                35
eman ta zabal zazu
                                                2.- MICROCONTROLADORES PIC
                                                2.-
                                         - GAMA MEDIA: ARQUITECTURA -

                     Memoria de Datos EEPROM:
                     Compuesta por una serie de registros de 8bits cada uno (64 registros en el 16F84
                     del 00h al 3Fh).
                     Está situada en un bloque distinto y aislado de la de programa.
                     Este tipo de memoria permite 1 millón de ciclos de escritura y es capaz de guardar
                     la información más de 40 años, sin necesidad de ningún recurso externo.
                     No se puede acceder directamente a estos registros, sino que hay que emplear
                     registros especiales específicos (EEDATA, EEADR, EECON1, EECON2).

                                                        EEDATA
                                                        Contiene los 8 bits a leer o escribir en la EEPROM

                                                        EEADR
                                                        Contiene los dirección de la EEPROM a la que se
                                                        quiere acceder.

                                                        EECON1
                                                        Contiene los bits de control.

                                                        EECON2
                                                        Habilita la lectura o escritura en la EEPROM

                                                                                                             36
eman ta zabal zazu
                                                 2.- MICROCONTROLADORES PIC
                                                 2.-
                                        - GAMA MEDIA: INTERRUPCIONES -

                     Interrupciones:
                     Los MicroPIC de la gama media, reconocen distintas fuentes de interrupción.
                     Normalmente, cada uno de los periféricos integrados en el dispositivo puede ser
                     fuente de una o varias interrupciones.
                     Las fuentes de interrupción más usuales son:
                           •   Interrupción externa a través del pin de interrupción (INT)
                           •   Overflow del TMR0, TMR1 o TMR2
                           •   Cambio en los pines RB7:RB4 del puerto B          Una interrupción es un
                                                                                 proceso asíncrono en el
                           •   Cambio en un comparador
                                                                                 cual el microprocesador
                           •   Puerto paralelo                                   detiene la ejecución de
                           •   USART: Recepción y Transmisión                       un programa para
                                                                                   atender una petición
                           •   Conversión Analógico/Digital completada            especial solicitada por
                           •   LCD                                                 el propio programa o
                                                                                 por un dispositivo físico
                           •   EEPROM completa
                                                                                        conectado al
                           •   CCP                                                   microprocesador
                           •   SSP                                                     externamente.

                                                                                                             37
eman ta zabal zazu
                                               2.- MICROCONTROLADORES PIC
                                               2.-
                                       - GAMA MEDIA: INTERRUPCIONES -

                     Interrupciones:
                     Para poder hacer uso de las interrupciones es necesario activar el bit GIE (Global
                     Interrupt Enable) del registro INTCON. De esta forma se habilitan todas las
                     interrupciones no enmascaradas.
                     Además, es necesario habilitar individualmente cada uno de los periféricos que
                     queramos usar como fuente de interrupción mediante su correspondiente bit de
                     habilitación (ENABLE).
                     Cuando un determinado periférico provoque una interrupción, lo hará poniendo a
                     "1" su bit de FLAG, el cual será necesario volver a poner a "0" por software antes
                     de regresar al programa principal.
                     Cuando se dispara una interrupción programada, el microcontrolador responde de la
                     siguiente forma:
                           • Se pone a cero el bit GIE. (Impidiendo así que una segunda
                             interrupción interrumpa a la primera)
                           • La CPU termina de ejecutar la instrucción en curso.
                           • Guarda la posición de retorno en el STACK.
                           • El Program Counter apunta al vector de interrupción (0x04)

                                                                                                          38
eman ta zabal zazu
                          2.- MICROCONTROLADORES PIC
                          2.-
                     - GAMA MEDIA: INTERRUPCIONES -




                                                       39
eman ta zabal zazu
                                                  2.- MICROCONTROLADORES PIC
                                                  2.-
                                        - GAMA MEDIA: INTERRUPCIONES -

                     Interrupciones:
                     Para gestionar las interrupciones, será necesario usar, como mínimo un registro de
                     control que recogerá los bits de flag de las interrupciones internas del dispositivo.
                     Este registro se denomina:
                               INTCON (Interrupt Control Register)


                     Además, si el dispositivo reconoce interrupciones asociadas a periféricos, será
                     necesario emplear otros registros de control destinados a habilitar o deshabilitar las
                     interrupciones y a guardar los bits de flag.
                     Dependiendo del dispositivo, estos registros son:
                               PIE1 (Peripheral Interrupt Enable Register 1)
                               PIR1 (Peripheral Interrupt Flag Register 1)
                               PIE2 (Peripheral Interrupt Enable Register 1)
                               PIR2 (Peripheral Interrupt Flag Register 1)




                                                                                                              40
eman ta zabal zazu
                                                         2.- MICROCONTROLADORES PIC
                                                         2.-
                                              - GAMA MEDIA: INTERRUPCIONES -

                     16F873                                     R/W-0    R/W-0        R/W-0   R/W-0   R/W-0   R/W-0   R/W-0   R/W-0

                     Registro INTCON                            GIE      PEIE     TOIE        INTE RBIE       TOIF    INTF    RBIF
                                                                Bit 7     Bit 6       Bit 5   Bit 4   Bit 3   Bit 2   Bit 1   Bit 0

                     Bit 7   GIE: Global Interrupt Enable Bit
                             1= Habilita todas las interrupciones no enmascaradas
                             0= Deshabilita todas las interrupciones
                     Bit 6   PEIE: Peripheral Interrupt Enable Bit                    (EEIE en el 16F84)
                             1= Habilita todas las interrupciones no enmascaradas de periféricos
                             0= Deshabilita todas las interrupciones de periféricos
                     Bit 5   TOIE: TMR0 Overflow Interrupt Enable Bit
                             1= Habilita la interrupción de overflow del timer 0
                             0= Deshabilita la interrupción de overflow del timer 0
                     Bit 4   INTE: INT External Interrupt Enable Bit
                             1= Habilita la interrupción externa del pin INT
                             0= Deshabilita la interrupción externa del pin INT
                     Bit 3   RBIE: RB Port Change Interrupt Enable Bit
                             1= Habilita la interrupción por cambio de nivel en el puerto B
                             0= Deshabilita la interrupción por cambio de nivel en el puerto B
                     Bit 2   TOIF: Overflow Interrupt Flag Bit
                             1= Ha habido overflow del TMR0 (Debe borrarse por software)
                             0= No hay overflow del TMR0
                     Bit 1   INTF: INT External Interrupt Flag Bit
                             1= Se ha producido una interrupción externa en el pin INT (Debe borrarse por software)
                             0= No hay interrupción externa.
                     Bit 0   RBIF: RB Port Change Interrupt Flag Bit
                             1= Al menos uno de los bits RB7:RB4 ha cambiado de estado (Debe borrarse por software)
                             0= Ninguno de los bits RB7:RB4 ha cambiado de estado
                                                                                                                                  41
eman ta zabal zazu
                                                         2.- MICROCONTROLADORES PIC
                                                         2.-
                                              - GAMA MEDIA: INTERRUPCIONES -

                     16F873                                     R/W-0     R/W-0    R/W-0     R/W-0      R/W-0     R/W-0     R/W-0     R/W-0

                     Registro PIE1 (8Ch)                       PSPIE ADIE RCIE               TXIE SSPIE CCP1IE TMR2IE TMR1IE
                                                                 Bit 7    Bit 6     Bit 5    Bit 4       Bit 3     Bit 2    Bit 1     Bit 0

                     Bit 7   PSPIE: Parallel Slave Port Read/Write Interrupt Enable Bit
                             1= Habilita la interrupción de lectura/escritura del PSP
                             0= Deshabilita la interrupción de lectura/escritura del PSP
                     Bit 6   ADIE: A/D Converter Interrupt Enable Bit
                                                                                                                  NOTA
                             1= Habilita la interrupción del convertidor A/D
                             0= Deshabilita la interrupción del convertidor A/D                       El bit PEIE (INTCON<6>) debe
                     Bit 5   RCIE: USART Receive Interrupt Enable Bit                                 estar puesto a ‘1’ para habilitar
                             1= Habilita la interrupción de recepción de la USART                    las interrupciones de periféricos
                             0= Deshabilita la interrupción de recepción de la USART
                     Bit 4   TXIE: USART Transmit Interrupt Enable Bit
                             1= Habilita la interrupción de transmisión de la USART
                             0= Deshabilita la interrupción de transmisión de la USART
                     Bit 3   SSPIE: Synchronous Serial Port Interrupt Enable Bit
                             1= Habilita la interrupción del SSP
                             0= Deshabilita la interrupción del SSP
                     Bit 2   CCP1IE: Capture/Compare/PWM Module Interrupt Enable Bit
                             1= Habilita la interrupción del CCP1
                             0= Deshabilita la interrupción del CCP1
                     Bit 1   TMR2IE: TMR2 to PR2 (Period Register) Interrupt Enable Bit
                             1= Habilita la interrupción de alcance del PR2 por el TMR2
                             0= Deshabilita la interrupción de alcance del PR2 por el TMR2
                     Bit 0   TMR1IE: TMR1 Overflow Interrupt Enable Bit
                             1= Habilita la interrupción de overflow del TMR1
                             0= Deshabilita la interrupción de overflow del TMR1
                                                                                                                                          42
eman ta zabal zazu
                                                        2.- MICROCONTROLADORES PIC
                                                        2.-
                                              - GAMA MEDIA: INTERRUPCIONES -

                     16F873                                    R/W-0    R/W-0      R-0      R-0    R/W-0   R/W-0    R/W-0   R/W-0

                     Registro PIR1 (0Ch)                      PSPIF ADIF          RCIF     TXIF SSPIF CCP1IF TMR2IF TMR1IF
                                                               Bit 7    Bit 6     Bit 5    Bit 4   Bit 3   Bit 2    Bit 1   Bit 0

                     Bit 7   PSPIF: Parallel Slave Port Read/Write Interrupt Flag Bit
                             1= Ha tenido lugar una operación de lectura o de escritura
                             0= No ha tenido lugar ninguna operación de lectura o de escritura
                     Bit 6   ADIF: A/D Converter Interrupt Flag Bit
                                                                                                               NOTA
                             1= Se ha completado una conversión A/D
                             0= La conversión A/D no se ha completado                                El bit PSPIF (PIR1<7>) está
                     Bit 5   RCIF: USART Receive Interrupt Flag Bit                                reservado en los PIC16F873/876
                             1= El buffer de recepción de la USART está lleno                      y debe mantenerse siempre a 0.
                             0= El buffer de recepción de la USART está vacío
                     Bit 4   TXIF: USART Transmit Interrupt Flag Bit
                             1= El buffer de transmisión de la USART está vacío
                             0= El buffer de transmisión de la USART está lleno
                     Bit 3   SSPIF: Synchronous Serial Port Interrupt Flag
                             1= Ha tenido lugar una condición de interrupción del SSP
                             0= No ha tenido lugar una condición de interrupción del SSP
                     Bit 2   CCP1IF: Capture/Compare/PWM Module Interrupt Flag Bit
                             1= Se ha producido una captura del TIMER 1 o se ha alcanzado una comparación (No se usa en PWM)
                             0= No se ha producido una captura del TIMER 1 o no se ha alcanzado una comparación (No se usa en PWM)
                     Bit 1   TMR2IF: TMR2 to PR2 (Period Register) Match Interrupt Flag Bit
                             1= Ha ocurrido una coincidencia entre el PR2 y el TMR2.
                             0= No ha ocurrido una coincidencia entre el PR2 y el TMR2.
                     Bit 0   TMR1IF: TMR1 Overflow Interrupt Flag Bit
                             1= Se ha producido un desbordamiento del TIMER1
                             0= No se ha producido un desbordamiento del TIMER1
                                                                                                                                    43
eman ta zabal zazu
                                                          2.- MICROCONTROLADORES PIC
                                                          2.-
                                               - GAMA MEDIA: INTERRUPCIONES -

                     16F873                                       U-0     R/W-0      U-0     R/W-0   R/W-0   U-0     U-0      R/W-0

                     Registro PIE2 (8Dh)                           -      Res.        -      EEIE BCLIE       -       -      CCP2IE

                                                                 Bit 7     Bit 6     Bit 5   Bit 4   Bit 3   Bit 2   Bit 1    Bit 0


                     Bit 7   Uninplemented.

                     Bit 6   Reserved: Debe mantenerse siempre a 0

                     Bit 5   Uninplemented.

                     Bit 4   EEIE: EEPROM Write Operation Interrrupt Enable
                             1= Habilita la interrupción de escritura en la EEPROM
                             0= Deshabilita la interrupción de escritura en la EEPROM

                     Bit 3   BCLIE: Bus Collision Interrupt Enable
                             1= Habilita la interrupción por colisión en el bus
                             0= Deshabilita la interrupción por colisión en el bus

                     Bit 2   Uninplemented

                     Bit 1   Uninplemented

                     Bit 0   CCP2IE: CCP2 Interrupt Enable Bit
                             1= Habilita la interrupción del CCP2
                             0= Deshabilita la interrupción del CCP2
                                                                                                                                  44
eman ta zabal zazu
                                                       2.- MICROCONTROLADORES PIC
                                                       2.-
                                             - GAMA MEDIA: INTERRUPCIONES -

                     16F873                                    U-0    R/W-0      U-0     R/W-0   R/W-0    U-0      U-0     R/W-0

                     Registro PIR2 (0Dh)                        -     Res.        -      EEIF BCLIF        -       -      CCP2IF

                                                              Bit 7    Bit 6     Bit 5   Bit 4   Bit 3   Bit 2    Bit 1    Bit 0


                     Bit 7   Uninplemented.
                     Bit 6   Reserved: Debe mantenerse siempre a 0
                     Bit 5   Uninplemented.
                     Bit 4   EEIF: EEPROM Write Operation Interrrupt Flag Bit
                             1= La operación de escritura en la EEPROM se ha completado
                             0= La operación de escritura en la EEPROM no se ha completado

                     Bit 3   BCLIF: Bus Collision Interrupt Flag Bit
                             1= Se ha producido una colisión de bus en el módulo SSP configurado en modo I2C maestro
                             0= Se ha producido una colisión de bus

                     Bit 2   Uninplemented
                     Bit 1   Uninplemented
                     Bit 0   CCP2IE: CCP2 Interrupt Enable Bit
                             Modo Capture
                             1= Se ha producido una captura del TIMER1
                             0= No se ha producido una captura del TIMER1
                             Modo Compare
                             1= Se ha producido una coincidencia del TIMER1
                             0= No se ha producido una coincidencia del TIMER1
                             Modo PWM: No se utiliza
                                                                                                                               45
eman ta zabal zazu
                                                 2.- MICROCONTROLADORES PIC
                                                 2.-
                                        - GAMA MEDIA: INTERRUPCIONES -

                     Interrupt Latency (Latencia de Interrupción):
                     La latencia de interrupción se define como el tiempo que transcurre desde que se
                     produce el evento que dispara la interrupción (=se pone a uno el bit de flag de
                     interrupción correspondiente) hasta que la instrucción de la dirección 0004h
                     comienza su ejecución.
                     Para las interrupciones síncronas (internas) es de 3 ciclos de instrucción.
                     Para las interrupciones asíncronas (externas:INT, PORTB) es de entre 3 y 3,75
                     ciclos de instrucción, dependiendo el tiempo exacto del instante en que se haya
                     producido la interrupción.




                                                                                                        46
eman ta zabal zazu
                                                  2.- MICROCONTROLADORES PIC
                                                  2.-
                                          - GAMA MEDIA: INTERRUPCIONES -

                     Las interrupciones externas
                     La interrupción externa a través del pin 6 (RB0/INT) se activa por flanco.


                               INTDEG (OPTION<6>)=1          Flanco Ascendente
                               INTDEG (OPTION<6>)=0          Flanco Descendente


                     Cuando aparece un flanco válido en el pin INT, el bit INTF (INTCON<1>) se pone a ‘1’.
                     Esta interrupción puede habilitarse o deshabilitarse mediante el bit INTE (INTCON<4>)
                     El bit INTF debe borrarse por software en la rutina de servicio de la interrupción.
                     La aparición de una interrupción externa puede producir la salida del microcontrolador
                     del modo SLEEP.




                                                                                                           47
eman ta zabal zazu
                                                2.- MICROCONTROLADORES PIC
                                                2.-
                                        - GAMA MEDIA: INTERRUPCIONES -

                     Copia del contexto ante una interrupción:


                     Cuando se produce una interrupción, el microcontrolador guarda en el STACK la
                     dirección de retorno del programa.


                     Generalmente, es necesario también hacer una copia de los valores de los registros
                     clave como por ejemplo el acumulador (W) o el registro STATUS. Esta copia se deberá
                     implementar por software.


                     A esta acción de guardar información se la conoce normalmente como PUSH mientras
                     que a la acción de recuperar la información guardada se la denomina POP.


                     Estos no son mnemónicos de instrucciones sino acciones conceptuales y se realizan
                     programando una secuencia de instrucciones o realizando segmentos de código
                     almacenados como macros.




                                                                                                      48
eman ta zabal zazu
                                                         2.- MICROCONTROLADORES PIC
                                                         2.-
                                                - GAMA MEDIA: INTERRUPCIONES -

                      Copia del contexto ante una interrupción:
                                  LIST P=16F84
                                  include <p16f84.inc>
                     WBuffer      equ 0x0c
                     StatBuffer   equ 0x0d
                     push         macro
                                  movwf WBuffer          ;guarda el acumulador
                                  swapf WBuffer, F       ;intercambia los nibbles
                                  swapf STATUS,W         ;obtiene el STATUS alterado
                                  movwf StatBuffer       ;lo guarda en StatBuffer
                                  endm
                     pop          macro
                                  swapf StatBuffer,W     ;restablece el registro STATUS
                                  movwf STATUS           ;/
                                  swapf WBuffer,W        ;restablece el acumulador           Es necesario emplear la instrucción
                                  endm                                                       SWAPF ya que ésta no modifica
                                  org 0x00                                                   ninguno de los flag del registro
                                  goto Inicio            ;salta el vector de interrupción    STATUS.
                                  org 0x04
                                  push                                                       Si empleáramos la instrucción MOVF se
                                  call rsi               ;llama a la rutina de servicio      modificaría el flag Z del registro
                                  pop                                                        STATUS.
                                  retfie

                     Inicio       ........
                                  movlw b’11111000’      ;Máscara para habilitar todas las
                                  movwf INTCON           ;interrupciones del reg. INTCON
                                  ........
                     bucle        ........
                                  ........
                                  goto bucle             ;Bucle del programa principal
                                                                                                                                49
eman ta zabal zazu
                                                       2.- MICROCONTROLADORES PIC
                                                       2.-
                                              - GAMA MEDIA: INTERRUPCIONES -

                      Copia del contexto ante una interrupción (cont.):
                      Si se encuentran habilitadas varias interrupciones, será necesario testear el registro INTCON para
                      saber cual de las posibles interrupciones ha sido la que ha provocado la ruptura de la ejecución
                      cíclica del programa principal.

                      Una vez identificada la interrupción, se ejecutará la subrutina correspondiente reactivando el flag
                      de interrupción antes de regresar.

                     rsi        btfsc INTCON,RBIF       ;Testea la interrupción RB4:RB7
                                call rsi_rb
                                btfsc INTCON,INTF       ;Testea la interrupción externa INT
                                call rsi_int
                                btfsc INTCON,T0IF       ;Testea la interrupción del timer 0
                                call rsi_tmr0
                                return

                     rsi_rb     ...............
                                ...............
                                bcf INTCON, RBIF        ;Restaura el flag de la interrupción
                                return
                     rsi_int    ...............
                                ...............
                                bcf INTCON, INTF        ;Restaura el flag de la interrupción
                                return
                     rsi_tmr0   ...............
                                ...............
                                bcf INTCON, T0IF        ;Restaura el flag de la interrupción
                                return
                                                                                                                            50
eman ta zabal zazu




                     ARQUITECTURA

                          Hay dos cosas infinitas: el Universo
                          y la estupidez humana. Y del
                          Universo no estoy seguro.
                          Albert Einstein




                             Sainz de Murieta Mangado, Joseba Andoni
                             Departamento de Ingeniería de Sistemas y Automática

Mais conteúdo relacionado

Mais procurados

Microprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itnMicroprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itnddarioooo
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladorestecautind
 
Arquitecturas RISC - CISC
Arquitecturas RISC - CISCArquitecturas RISC - CISC
Arquitecturas RISC - CISCEdwin Belduma
 
El microprocesador angelruiz
El microprocesador angelruizEl microprocesador angelruiz
El microprocesador angelruizAngel Ruiz
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1ddarioooo
 
Introducción a los Microprocesadores y Microcontroladores
Introducción a los Microprocesadores y MicrocontroladoresIntroducción a los Microprocesadores y Microcontroladores
Introducción a los Microprocesadores y MicrocontroladoresRuderocker Billy
 
Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Edwin Belduma
 
Microprocesador
MicroprocesadorMicroprocesador
Microprocesadorander1692
 

Mais procurados (17)

Microprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itnMicroprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itn
 
Risc Cisc
Risc   CiscRisc   Cisc
Risc Cisc
 
Procesadores Risc
Procesadores RiscProcesadores Risc
Procesadores Risc
 
Computadores RISC
Computadores RISCComputadores RISC
Computadores RISC
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladores
 
Arquitecturas RISC - CISC
Arquitecturas RISC - CISCArquitecturas RISC - CISC
Arquitecturas RISC - CISC
 
Procesadores
ProcesadoresProcesadores
Procesadores
 
Risc y Cisc
Risc y CiscRisc y Cisc
Risc y Cisc
 
El microprocesador angelruiz
El microprocesador angelruizEl microprocesador angelruiz
El microprocesador angelruiz
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1
 
Micropro
MicroproMicropro
Micropro
 
Introducción a los Microprocesadores y Microcontroladores
Introducción a los Microprocesadores y MicrocontroladoresIntroducción a los Microprocesadores y Microcontroladores
Introducción a los Microprocesadores y Microcontroladores
 
Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Arquitecturas RICS-CISC
Arquitecturas RICS-CISC
 
4 Microprocesadores
4 Microprocesadores4 Microprocesadores
4 Microprocesadores
 
El microprocesador 1
El microprocesador 1El microprocesador 1
El microprocesador 1
 
Arquitectura Computacional - Intel Galileo
Arquitectura Computacional - Intel GalileoArquitectura Computacional - Intel Galileo
Arquitectura Computacional - Intel Galileo
 
Microprocesador
MicroprocesadorMicroprocesador
Microprocesador
 

Semelhante a Tema 2 Arquitectur Aberria

Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacionUNACH
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacionUNACH
 
Microcomputadoras
MicrocomputadorasMicrocomputadoras
MicrocomputadorasUNACH
 
Electronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHElectronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHUNACH
 
135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-pptCarlos Martir
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PICSohar Carr
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1Luis Zurita
 
Ts11 tiltepec isaac _alvarez_cruz
Ts11 tiltepec isaac _alvarez_cruzTs11 tiltepec isaac _alvarez_cruz
Ts11 tiltepec isaac _alvarez_cruzIsaak Alvarez Krux
 
Instituto tecologico de tuxtla gutierez
Instituto tecologico de tuxtla  gutierezInstituto tecologico de tuxtla  gutierez
Instituto tecologico de tuxtla gutierezIsaak Alvarez Krux
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladoresguest70ea50
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladoresceiv
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladoresceiv
 
Introducción al PIC18F4550.pptx
Introducción al PIC18F4550.pptxIntroducción al PIC18F4550.pptx
Introducción al PIC18F4550.pptxsamuel686733
 
Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referenciaRuderocker Billy
 

Semelhante a Tema 2 Arquitectur Aberria (20)

Introducción
IntroducciónIntroducción
Introducción
 
MICROCONTROLADORES.ppt
MICROCONTROLADORES.pptMICROCONTROLADORES.ppt
MICROCONTROLADORES.ppt
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Microcomputadoras
MicrocomputadorasMicrocomputadoras
Microcomputadoras
 
Electronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHElectronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACH
 
135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt
 
Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
Micro1.ppt
Micro1.pptMicro1.ppt
Micro1.ppt
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
Ts11 tiltepec isaac _alvarez_cruz
Ts11 tiltepec isaac _alvarez_cruzTs11 tiltepec isaac _alvarez_cruz
Ts11 tiltepec isaac _alvarez_cruz
 
Instituto tecologico de tuxtla gutierez
Instituto tecologico de tuxtla  gutierezInstituto tecologico de tuxtla  gutierez
Instituto tecologico de tuxtla gutierez
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Introducción al PIC18F4550.pptx
Introducción al PIC18F4550.pptxIntroducción al PIC18F4550.pptx
Introducción al PIC18F4550.pptx
 
Microprocesador
MicroprocesadorMicroprocesador
Microprocesador
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 

Tema 2 Arquitectur Aberria

  • 1. eman ta zabal zazu ARQUITECTURA Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro. Albert Einstein Sainz de Murieta Mangado, Joseba Andoni Departamento de Ingeniería de Sistemas y Automática
  • 2. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Características más relevantes: – Su procesador es tipo RISC – Tiene una arquitectura HARVARD – Su procesador es segmentado, "pipe-line". – El formato de las instrucciones es ortogonal – Todas las instrucciones tienen la misma longitud (14 bits) – La arquitectura está basada en banco de registros 2
  • 3. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Procesador tipo RISC: Las CPU´s atendiendo al tipo de instrucciones que utilizan pueden clasificarse en: CISC: (Complex Instruction Set Computer) Computadores de juego de instrucciones complejo, que disponen de un repertorio de instrucciones elevado (unas 80), algunas de ellas muy sofisticadas y potentes, pero que como contrapartida requieren muchos ciclos de máquina para ejecutar las instrucciones complejas. RISC: (Reduced Instruction Set Computer) Computadores de juego de instrucciones reducido, en los que el repertorio de instrucciones es muy reducido (en nuestro caso 35), las instrucciones son muy simples y suelen ejecutarse en un ciclo máquina. Además los RISC deben tener una estructura pipeline y ejecutar todas las instrucciones a la misma velocidad. SISC:(Specific Instruction Set Computer) Computadores de juego de instrucciones específico. 3
  • 4. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Arquitectura Harvard La CPU está conectado a dos memorias por medio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos. Los microcontroladores PIC tienen una memoria de datos de 8 bits, y una memoria de programa que, según el modelo, puede ser de 12 bits, 14 bits y 16 bits, siendo en los de gama media de 14 bits. 4
  • 5. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Procesador segmentado "pipe-line": Quiere decir que aplica la técnica de segmentación que permite al procesador realizar simultáneamente la ejecución de una instrucción y la búsqueda de código de la siguiente. De esta manera, se puede ejecutar una instrucción en un ciclo. (Cada ciclo de instrucción son cuatro ciclos de reloj). Ejemplo: Búsqueda 1 Ejecuta 1 1. MOVLW 55h Búsqueda 2 Ejecuta2 2 .MOVWF PORTB Búsqueda 3 Ejecuta 3 3. CALL SUB_1 Busqueda 4 Salir 4. BSF PORTA,BIT3 Busqueda SUB_1 Ejecuta SUB_1 5
  • 6. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Arquitectura Ortogonal: Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino. Arquitectura basada en banco de registros: Implica que todos los elementos del sistema, es decir, temporizadores, puertos de entrada/salida, posiciones de memoria, etc, están implementados físicamente como registros. En la figura se muestra como la ALU (Unidad Aritmético-Lógica) efectúa sus operaciones con dos operandos, uno que proviene del registro W (Work o Acumulador), y el otro que se encuentra en cualquier otro registro o del propio código de instrucción. 6
  • 7. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Arquitectura basada en banco de registros: Ejemplo 7
  • 8. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Diagrama de Bloques: En este esquema se muestra la organización interna del núcleo de los microcontroladores PIC de gama media. 8
  • 9. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - PIC16F84: • 1K de memoria de programa (flash) • 15 registros hardware especiales • 68 bytes de memoria de datos (RAM) • stack de 8 niveles • 64 bytes de memoria de datos (EEPROM) • 4 fuentes de interrupción • Juego de 35 instrucciones (RISC) • 13 pines de E/S • Instrucciones de 14 bits • 1 temporizador/contador de 8 bits • Datos de 8 bits. • Watchdog 9
  • 10. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Diagrama de Bloques del PIC16F84: 10
  • 11. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Patillaje (Pinout) del PIC16F84: 5 RA0-RA4 PORTA - Puerto de Entrada/Salida (I/O Port) TOCK1 – Entrada del contador temporizador TMR0 8 RB0-RB7 PORTB - Puerto de Entrada/Salida (I/O Port) INT – Entrada de interrupción externa VSS y VDD Es la alimentación, que puede ser de 2V a 6V. VDD es el terminal positivo. MCLR Es el Reset del microcontrolador (Master Clear) OSC1/CLKIN OSC2/CLKOUT Son los terminales para la conexión del oscilador externo que proporciona la frecuencia de trabajo o frecuencia del reloj principal. 11
  • 12. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Diagrama de Bloques del PIC16F873: 12
  • 13. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Oscilador: El circuito oscilador interno se emplea para generar el reloj del dispositivo. Este reloj es el que se emplea para ejecutar las instrucciones y hacer funcionar a los diversos periféricos. Cada cuatro ciclos de reloj, se genera un ciclo de instrucción. Existen hasta ocho modos de configurar el oscilador. Esta configuración se realizará mediante los bits de configuración. Existen dos modos que permiten direccionar la salida del oscilador interno (CLKOUT) hacia uno de los pines de salida. Los modos del oscilador son: LP: Cristal de baja frecuencia XT: Cristal / Resonador HS: Cristal / Resonador de alta frecuencia RC: Célula R-C externa (con CLKOUT) EXTRC: Célula R-C externa EXTRC: Célula R-C externa con CLKOUT INTRC: Célula R-C interna de 4MHz INTRC: Célula R-C interna de 4MHz con CLKOUT 13
  • 14. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Oscilador: Cristal / Resonador Cerámico En los modos XT, LP o HS se conecta un cristal o un resonador cerámico a los pines OSC1/CLKIN y OSC2/CLKOUT para establecer la frecuencia de reloj de trabajo. CRISTAL OSCILADOR RESONADOR CERÁMICO 14
  • 15. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Oscilador: Entrada de reloj externa En los modos XT, LP o HS se puede emplear una señal de reloj externa para gobernar el funcionamiento del oscilador interno. Oscilador: Célula R-C En aplicaciones insensibles al tiempo puede emplearse una solución económica para establecer la frecuencia de reloj mediante el empleo de una célula R-C. La frecuencia del oscilador vendrá determinada por la tensión de alimentación, el valor de la resistencia, el valor del condensador y la temperatura de trabajo. 3kΩ≤ REXT ≥100kΩ CEXT>20pF 15
  • 16. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Oscilador: Célula R-C interna El oscilador R-C interno (no en todos los dispositivos de la gama media) proporciona una señal de reloj fija de 4MHz a Vdd=5V y 25ºC. Se emplea el registro OSCCAL para sintonizar la frecuencia del oscilador interno. Bit 7:4 CAL3:CAL0. Bits de calibración del oscilador RC interno 0000= Frecuencia más baja del rango ... 1111= Frecuencia más alta del rango Bit 3 CALFST: Bit de compensación (offset) del rango de osc. 1= Incrementa la frecuencia del oscilador en el rango CAL3:CAL0 0= No se aplica compensación Bit 2 CALFST: Bit de compensación (offset) del rango de osc. 1= Decrementa la frecuencia del oscilador en el rango CAL3:CAL0 0= No se aplica compensación Bit 1:0 No implementados 16
  • 17. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - La CPU y la ALU: La CPU puede considerarse como el cerebro del dispositivo. En las instrucciones aritméticas y lógicas, emplea la Unidad Aritmético Lógica (ALU) para llevar a cabo la instrucción. La ALU realiza la operación entre el contenido del acumulador (8 bits) y o bien un literal contenido en la instrucción o bien el contenido de un registro de memoria. Dependiendo de la instrucción ejecutada la ALU puede afectar a alguno de los bits del registro STATUS. 17
  • 18. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Organización de la memoria: Existen dos bloques principales de memoria: La memoria de programa La memoria de datos Cada uno de estos bloques dispone de su propio bus (arquitectura Harvard) de forma que el acceso a ambos bloques puede tener lugar durante el mismo ciclo de oscilador. 18
  • 19. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos y de Programa del PIC16F84: Memoria de Programa Memoria de Datos 19
  • 20. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Programa: 210=1024=1K 213=8192=8K PIC16F84 Los PIC de gama media disponen de un contador de programa de 13 bits capaz de direccionar un espacio de memoria de 8K x 14. La anchura del bus de la memoria de programa es de 14-bits. Esta es la longitud de una instrucción y dado que en estos microcontroladores todas las instrucciones son de palabra simple, el espacio disponible es de 8K de instrucciones. La memoria de programa se encuentra dividida en cuatro páginas de 2K-words cada una de ellas. PIC16F84 Para moverse entre páginas de memoria será necesario 1024 posiciones X 14 bits modificar los bits altos del PC lo cual se realizará escribiendo el valor deseado en un SFR llamado PCLATH (Program Counter 00 0000 0000 000H Latch High). En una ejecución de programa secuencial, será el propio PC el 11 1111 1111 3FFH encargado de saltar de página sin necesitar de la intervención del usuario. 20
  • 21. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Programa: El Vector de Reset (Reset Vector): En todos los dispositivos, un RESET fuerza el contador de programa a la dirección 0h. Además, el RESET del dispositivo borrará el contenido del registro PCLATCH direccionándose el dispositivo a la primera de las páginas de memoria de programa. El Vector de Interrupción (Interrupt Vector): Cuando el microcontrolador reconoce una interrupción, el contador de programa se fuerza a la dirección 0004h. El registro PCLATH no se ve modificado por lo que la rutina de servicio de interrupción, antes de realizar el salto a la dirección deseada, deberá modificar este registro en caso de ser necesario, restaurándolo al regresar de la interrupción. 21
  • 22. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Programa: Este es el motor que hace que el programa avance, y que después de ejecutarse una instrucción, vaya a la siguiente, o a la que la instrucción anterior indica 000H Vector Reset PC (Contador de Programa) 13 Apunta al principio del programa después de 13 encenderse o resetearse Nivel 1 004H Vector Interrupción Pila LIFO Nivel 8 Cuando a través de una instrucción, ejecutamos un subproceso o subrutina, el contador de programa (PC) dejará de contar en su curso habitual e irá a la posición de memoria de programa donde empieza esta subrutina; en el primer nivel de la pila se almacenará esta llamada, hasta que se acaben de ejecutar las 3FFH instrucciones que contiene, momento en el cual se recogerá y seguirá con las instrucciones normales a Las instrucciones son de 14 bits 14 partir de la llamada. RI (Registro de Instrucciones) 22
  • 23. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Programa: El Contador de Programa (Program Counter (PC)): El contador de programa especifica la dirección de la instrucción a ejecutar. Tiene una longitud de 13 bits. El byte bajo se denomina: registro PCL y es de lectura/escritura. El byte alto se denomina : registro PCH y no se puede leer ni escribir directamente sino que hay que hacerlo a través del registro PCLATH Caso 1: Instrucción con el PCL como destino 23
  • 24. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Programa: Paginación de la memoria de programa: Algunos de los microcontroladores de la gama media, poseen una memoria de programa superior a 2K-words, pero las instrucciones CALL y GOTO solamente tienen un rango de 11 bits, es decir, solo tienen capacidad de direccionar saltos dentro de una página de 2K-words. Para solucionar esto se emplean los bits 4 y 3 del PCLATH de forma que permiten direccionar la página de memoria deseada. Es decir, antes de ejecutar una instrucción CALL o GOTO, el usuario debe asegurarse de que estos bits del PCLATH están direccionando la página deseada. Al regresar de la subrutina, no es necesario manipular el PCLATH ya que son recuperados del STACK los 13 bits del contador de programa. Ejemplo: Llamada desde la página 0 a una subrutina situada en la página 1. 24
  • 25. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Programa: El Contador de Programa (Program Counter (PC)): Caso 2: Instrucción GOTO Caso 3: Instrucción CALL Caso 4: Instrucción RETURN, RETFIE O RETLW 25
  • 26. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos: La memoria de datos se puede dividir en: Registros RAM de propósito general (GPR) Registros de Función Especial (Special Function Registers (SFR)) Registros: Cada una de las posiciones de memoria de datos, de longitud 8-bits, se denomina registro. A cada registro se puede hace referencia bien por su dirección de memoria o bien por un identificador específico para cada uno de ellos. General Purpose Registers (GPR): Es el área de memoria donde se guardan y manipulan los datos necesarios para las operaciones del microcontrolador. Special Function Registers (SFR): Es el área de memoria donde se guardan y manipulan los datos que configuran y controlan el funcionamiento del microcontrolador. 26
  • 27. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos: 16F873 16F84 27
  • 28. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos: La memoria de datos se encuentra dividida en diferentes bancos, siendo necesario manipular una serie de bits de control del registro STATUS para conmutar entre estos bancos de memoria. 16F84 Dos bancos de datos o páginas de 128 registros de 8 bits cada uno. El PIC16F84 usa: Los 80 primeros de la página “0” (00h al 4Fh) Los 12 primeros de la página “1” (80h al 8Bh) Los primeros 12 registros de ambas páginas son específicos (SFR) y los 68 restantes, solo en la página 0 son de propósito general (GPR). La memoria RAM así como algunos registros especiales son los mismos en los dos bancos del mapa de memoria del PIC. La anchura de los registros en la memoria es de 8 bis. 28
  • 29. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - 16F873 R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-X R/W-X R/W-X Registro STATUS IRP RP1 RP0 TO PD Z DC C Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 IRP: Register Bank Select Bit (Para direccionamiento indirecto) 1= Banco 2,3 (100h - 1FFh) 0= Banco 0.1 (000h - 0FFh) Bit 6-5 RP1:RP0: Register Bank Select Bit (Para direccionamiento directo) 11= Banco 3 (180h – 1FFh) 10= Banco 2 (100h – 17Fh) 01= Banco 1 (080h – 0FFh) 00= Banco 0 (000h – 07Fh) Cada banco es de 128 bytes Bit 4 TO: Time-out Bit 1= Después del encendido, la instrucción CLRWDT o la instrucción SLEEP 0= Se ha rebosado el WDT Bit 3 PD: Power-down Bit 1= Después del encendido o la instrucción CLRWDT 0= Después de ejecutar la instrucción SLEEP Bit 2 Z: Zero Bit 1= El resultado de una operación aritmética o lógica es cero 0= El resultado de una operación aritmética o lógica es distinto de cero Bit 1 DC: Digit Carry Bit (ADDWF, ADDLW, SUBLW, SUBWF) 1= Existe carry del cuarto bit de bajo orden del resultado 0= No existe carry del cuarto bit de bajo orden del resultado Bit 0 C: Carry Bit (ADDWF, ADDLW, SUBLW, SUBWF) 1= Existe carry del bit más significativo del resultado 0= No existe carry del bit más significativo del resultado 29
  • 30. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos: Para mover un valor de un registro a otro registro, se ha de pasar a través del acumulador (W), por lo que los movimientos de datos de un registro a otro requerirán de dos ciclos de instrucción. Direccionamiento: A la memoria de datos se puede acceder de forma directa o indirecta. Direccionamiento directo: Requiere el empleo de los bits RP1:RP0 del registro STATUS. Ej.: bsf 03 , 0x05 30
  • 31. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos: Direccionamiento indirecto: Requiere del empleo del registro FSR (File Select Register) y del bit IRP (Indirect Register Pointer) del registro STATUS. Ejemplo para borrar las direcciones de la RAM 20h – 2Fh 31
  • 32. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Ejemplo1: ;Ejemplo ; ;Sumar dos números, A y B, de 16 bits cada uno. ; List p=16F84 ;Tipo de procesador include "P16F84.INC" ;Definiciones de registros internos Dato_A_L equ 0x10 ;Define la posición del dato A (bajo) Dato_A_H equ 0x11 ;Define la posición del dato A (alto) Dato_B_L equ 0x12 ;Define la posición del dato B (bajo) Dato_B_H equ 0x13 ;Define la posición del dato B (alto) Resultado_L equ 0x14 ;Define la posición del resultado (bajo) Resultado_H equ 0x15 ;Define la posición del resultado (alto) org 0x00 ;Vector de Reset goto Inicio org 0x05 ;Salva el vector de interrupción Inicio movf Dato_A_L,W ;Carga menos peso del dato A addwf Dato_B_L,W ;Suma menos peso del dato B movwf Resultado_L ;Almacena el resultado movf Dato_A_H,W ;Carga más peso del dato A btfsc STATUS,C ;Hubo acarreo anterior ?? addlw 1 ;Si, suma 1 al acumulador addwf Dato_B_H,W ;Suma más peso del dato B movwf Resultado_H ;Guarda el resultado Stop nop ;Poner breakpoint de parada nop end ;Fin del programa fuente 32
  • 33. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Ejemplo1: El fichero de cabecera p16f84.inc W EQU H'0000' ;----- INTCON Bits ---------------- F EQU H'0001' GIE EQU H'0007' ;----- Register Files----------------- EEIE EQU H'0006' T0IE EQU H'0005' INDF EQU H'0000' INTE EQU H'0004' TMR0 EQU H'0001' RBIE EQU H'0003' PCL EQU H'0002' T0IF EQU H'0002' STATUS EQU H'0003' INTF EQU H'0001' FSR EQU H'0004' RBIF EQU H'0000' PORTA EQU H'0005' PORTB EQU H'0006' ;----- OPTION_REG Bits ---------- EEDATA EQU H'0008' EEADR EQU H'0009' NOT_RBPU EQU H'0007' PCLATH EQU H'000A' INTEDG EQU H'0006' INTCON EQU H'000B' T0CS EQU H'0005' T0SE EQU H'0004' OPTION_REG EQU H'0081' PSA EQU H'0003' TRISA EQU H'0085' PS2 EQU H'0002' TRISB EQU H'0086' PS1 EQU H'0001' EECON1 EQU H'0088' PS0 EQU H'0000' EECON2 EQU H'0089' ;----- EECON1 Bits ----------------- ;----- STATUS Bits ----------------- EEIF EQU H'0004' IRP EQU H'0007' WRERR EQU H'0003' RP1 EQU H'0006' WREN EQU H'0002' RP0 EQU H'0005' WR EQU H'0001' NOT_TO EQU H'0004' RD EQU H'0000' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' 33
  • 34. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Ejemplo2: Un tanque de fuel con capacidad de 255 litros dispone de un sensor que transmite al microcontrolador la capacidad remanente y la guarda en el byte FUEL. Se desea escribir una rutina que active el bit 0 del byte ALARMA cuando el nivel del tanque sea menor o igual a 20 litros y que active el bit 1 de este mismo byte cuando el nivel sea menor o igual a 5 litros. FUEL 0x0C LEER FUEL ALARMA 0x0D NO SI FUEL<20 ALARMA<0>=0 ALARMA<0>=1 NO SI FUEL<5 C Z 1 0 Resultado positivo ALARMA<1>=0 ALARMA<1>=1 1 1 Resultado cero SOLO EN LA RESTA 0 0 Resultado negativo 34
  • 35. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Ejemplo2: List p=16F84 ;Tipo de procesador NOTA include "P16F84.INC" ;Definiciones de registros internos Mirar bien como se Fuel equ 0x0C ;Define la posición del nivel de llenado modifica el bit C Alarma equ 0x0D ;Define la posición del byte de alarmas del registro STATUS con las constant Nivel_1=.5 instrucciones de constant Nivel_2=.20 suma y resta. org 0x00 ;Vector de Reset goto Inicio org 0x05 ;Salva el vector de interrupción Inicio movf Fuel,W ;Carga el nivel del Fuel sublw Nivel_2 ;Resta Nivel_2-(W) btfss STATUS,C ;Mira el signo del resultado en el bit de carry goto else1 if1 bsf Alarma,0 ;Si C=1 W<=20 enciendo el bit goto cont1 else1 bcf Alarma,0 ;Si C=0 W>20 apago el bit cont1 movf Fuel,W ;Carga el nivel del Fuel sublw Nivel_1 ;Resta Nivel_2-(W) btfss STATUS,C ;Mira el signo del resultado en el bit de carry goto else2 if2 bsf Alarma,1 ;Si C=1 W<=5 enciendo el bit goto cont2 else2 bcf Alarma,1 ;Si C=0 W>5 apago el bit cont2 goto Inicio end ;Fin del programa fuente 35
  • 36. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: ARQUITECTURA - Memoria de Datos EEPROM: Compuesta por una serie de registros de 8bits cada uno (64 registros en el 16F84 del 00h al 3Fh). Está situada en un bloque distinto y aislado de la de programa. Este tipo de memoria permite 1 millón de ciclos de escritura y es capaz de guardar la información más de 40 años, sin necesidad de ningún recurso externo. No se puede acceder directamente a estos registros, sino que hay que emplear registros especiales específicos (EEDATA, EEADR, EECON1, EECON2). EEDATA Contiene los 8 bits a leer o escribir en la EEPROM EEADR Contiene los dirección de la EEPROM a la que se quiere acceder. EECON1 Contiene los bits de control. EECON2 Habilita la lectura o escritura en la EEPROM 36
  • 37. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Interrupciones: Los MicroPIC de la gama media, reconocen distintas fuentes de interrupción. Normalmente, cada uno de los periféricos integrados en el dispositivo puede ser fuente de una o varias interrupciones. Las fuentes de interrupción más usuales son: • Interrupción externa a través del pin de interrupción (INT) • Overflow del TMR0, TMR1 o TMR2 • Cambio en los pines RB7:RB4 del puerto B Una interrupción es un proceso asíncrono en el • Cambio en un comparador cual el microprocesador • Puerto paralelo detiene la ejecución de • USART: Recepción y Transmisión un programa para atender una petición • Conversión Analógico/Digital completada especial solicitada por • LCD el propio programa o por un dispositivo físico • EEPROM completa conectado al • CCP microprocesador • SSP externamente. 37
  • 38. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Interrupciones: Para poder hacer uso de las interrupciones es necesario activar el bit GIE (Global Interrupt Enable) del registro INTCON. De esta forma se habilitan todas las interrupciones no enmascaradas. Además, es necesario habilitar individualmente cada uno de los periféricos que queramos usar como fuente de interrupción mediante su correspondiente bit de habilitación (ENABLE). Cuando un determinado periférico provoque una interrupción, lo hará poniendo a "1" su bit de FLAG, el cual será necesario volver a poner a "0" por software antes de regresar al programa principal. Cuando se dispara una interrupción programada, el microcontrolador responde de la siguiente forma: • Se pone a cero el bit GIE. (Impidiendo así que una segunda interrupción interrumpa a la primera) • La CPU termina de ejecutar la instrucción en curso. • Guarda la posición de retorno en el STACK. • El Program Counter apunta al vector de interrupción (0x04) 38
  • 39. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - 39
  • 40. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Interrupciones: Para gestionar las interrupciones, será necesario usar, como mínimo un registro de control que recogerá los bits de flag de las interrupciones internas del dispositivo. Este registro se denomina: INTCON (Interrupt Control Register) Además, si el dispositivo reconoce interrupciones asociadas a periféricos, será necesario emplear otros registros de control destinados a habilitar o deshabilitar las interrupciones y a guardar los bits de flag. Dependiendo del dispositivo, estos registros son: PIE1 (Peripheral Interrupt Enable Register 1) PIR1 (Peripheral Interrupt Flag Register 1) PIE2 (Peripheral Interrupt Enable Register 1) PIR2 (Peripheral Interrupt Flag Register 1) 40
  • 41. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - 16F873 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 Registro INTCON GIE PEIE TOIE INTE RBIE TOIF INTF RBIF Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 GIE: Global Interrupt Enable Bit 1= Habilita todas las interrupciones no enmascaradas 0= Deshabilita todas las interrupciones Bit 6 PEIE: Peripheral Interrupt Enable Bit (EEIE en el 16F84) 1= Habilita todas las interrupciones no enmascaradas de periféricos 0= Deshabilita todas las interrupciones de periféricos Bit 5 TOIE: TMR0 Overflow Interrupt Enable Bit 1= Habilita la interrupción de overflow del timer 0 0= Deshabilita la interrupción de overflow del timer 0 Bit 4 INTE: INT External Interrupt Enable Bit 1= Habilita la interrupción externa del pin INT 0= Deshabilita la interrupción externa del pin INT Bit 3 RBIE: RB Port Change Interrupt Enable Bit 1= Habilita la interrupción por cambio de nivel en el puerto B 0= Deshabilita la interrupción por cambio de nivel en el puerto B Bit 2 TOIF: Overflow Interrupt Flag Bit 1= Ha habido overflow del TMR0 (Debe borrarse por software) 0= No hay overflow del TMR0 Bit 1 INTF: INT External Interrupt Flag Bit 1= Se ha producido una interrupción externa en el pin INT (Debe borrarse por software) 0= No hay interrupción externa. Bit 0 RBIF: RB Port Change Interrupt Flag Bit 1= Al menos uno de los bits RB7:RB4 ha cambiado de estado (Debe borrarse por software) 0= Ninguno de los bits RB7:RB4 ha cambiado de estado 41
  • 42. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - 16F873 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 Registro PIE1 (8Ch) PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 PSPIE: Parallel Slave Port Read/Write Interrupt Enable Bit 1= Habilita la interrupción de lectura/escritura del PSP 0= Deshabilita la interrupción de lectura/escritura del PSP Bit 6 ADIE: A/D Converter Interrupt Enable Bit NOTA 1= Habilita la interrupción del convertidor A/D 0= Deshabilita la interrupción del convertidor A/D El bit PEIE (INTCON<6>) debe Bit 5 RCIE: USART Receive Interrupt Enable Bit estar puesto a ‘1’ para habilitar 1= Habilita la interrupción de recepción de la USART las interrupciones de periféricos 0= Deshabilita la interrupción de recepción de la USART Bit 4 TXIE: USART Transmit Interrupt Enable Bit 1= Habilita la interrupción de transmisión de la USART 0= Deshabilita la interrupción de transmisión de la USART Bit 3 SSPIE: Synchronous Serial Port Interrupt Enable Bit 1= Habilita la interrupción del SSP 0= Deshabilita la interrupción del SSP Bit 2 CCP1IE: Capture/Compare/PWM Module Interrupt Enable Bit 1= Habilita la interrupción del CCP1 0= Deshabilita la interrupción del CCP1 Bit 1 TMR2IE: TMR2 to PR2 (Period Register) Interrupt Enable Bit 1= Habilita la interrupción de alcance del PR2 por el TMR2 0= Deshabilita la interrupción de alcance del PR2 por el TMR2 Bit 0 TMR1IE: TMR1 Overflow Interrupt Enable Bit 1= Habilita la interrupción de overflow del TMR1 0= Deshabilita la interrupción de overflow del TMR1 42
  • 43. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - 16F873 R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 Registro PIR1 (0Ch) PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 PSPIF: Parallel Slave Port Read/Write Interrupt Flag Bit 1= Ha tenido lugar una operación de lectura o de escritura 0= No ha tenido lugar ninguna operación de lectura o de escritura Bit 6 ADIF: A/D Converter Interrupt Flag Bit NOTA 1= Se ha completado una conversión A/D 0= La conversión A/D no se ha completado El bit PSPIF (PIR1<7>) está Bit 5 RCIF: USART Receive Interrupt Flag Bit reservado en los PIC16F873/876 1= El buffer de recepción de la USART está lleno y debe mantenerse siempre a 0. 0= El buffer de recepción de la USART está vacío Bit 4 TXIF: USART Transmit Interrupt Flag Bit 1= El buffer de transmisión de la USART está vacío 0= El buffer de transmisión de la USART está lleno Bit 3 SSPIF: Synchronous Serial Port Interrupt Flag 1= Ha tenido lugar una condición de interrupción del SSP 0= No ha tenido lugar una condición de interrupción del SSP Bit 2 CCP1IF: Capture/Compare/PWM Module Interrupt Flag Bit 1= Se ha producido una captura del TIMER 1 o se ha alcanzado una comparación (No se usa en PWM) 0= No se ha producido una captura del TIMER 1 o no se ha alcanzado una comparación (No se usa en PWM) Bit 1 TMR2IF: TMR2 to PR2 (Period Register) Match Interrupt Flag Bit 1= Ha ocurrido una coincidencia entre el PR2 y el TMR2. 0= No ha ocurrido una coincidencia entre el PR2 y el TMR2. Bit 0 TMR1IF: TMR1 Overflow Interrupt Flag Bit 1= Se ha producido un desbordamiento del TIMER1 0= No se ha producido un desbordamiento del TIMER1 43
  • 44. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - 16F873 U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 Registro PIE2 (8Dh) - Res. - EEIE BCLIE - - CCP2IE Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Uninplemented. Bit 6 Reserved: Debe mantenerse siempre a 0 Bit 5 Uninplemented. Bit 4 EEIE: EEPROM Write Operation Interrrupt Enable 1= Habilita la interrupción de escritura en la EEPROM 0= Deshabilita la interrupción de escritura en la EEPROM Bit 3 BCLIE: Bus Collision Interrupt Enable 1= Habilita la interrupción por colisión en el bus 0= Deshabilita la interrupción por colisión en el bus Bit 2 Uninplemented Bit 1 Uninplemented Bit 0 CCP2IE: CCP2 Interrupt Enable Bit 1= Habilita la interrupción del CCP2 0= Deshabilita la interrupción del CCP2 44
  • 45. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - 16F873 U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 Registro PIR2 (0Dh) - Res. - EEIF BCLIF - - CCP2IF Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Uninplemented. Bit 6 Reserved: Debe mantenerse siempre a 0 Bit 5 Uninplemented. Bit 4 EEIF: EEPROM Write Operation Interrrupt Flag Bit 1= La operación de escritura en la EEPROM se ha completado 0= La operación de escritura en la EEPROM no se ha completado Bit 3 BCLIF: Bus Collision Interrupt Flag Bit 1= Se ha producido una colisión de bus en el módulo SSP configurado en modo I2C maestro 0= Se ha producido una colisión de bus Bit 2 Uninplemented Bit 1 Uninplemented Bit 0 CCP2IE: CCP2 Interrupt Enable Bit Modo Capture 1= Se ha producido una captura del TIMER1 0= No se ha producido una captura del TIMER1 Modo Compare 1= Se ha producido una coincidencia del TIMER1 0= No se ha producido una coincidencia del TIMER1 Modo PWM: No se utiliza 45
  • 46. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Interrupt Latency (Latencia de Interrupción): La latencia de interrupción se define como el tiempo que transcurre desde que se produce el evento que dispara la interrupción (=se pone a uno el bit de flag de interrupción correspondiente) hasta que la instrucción de la dirección 0004h comienza su ejecución. Para las interrupciones síncronas (internas) es de 3 ciclos de instrucción. Para las interrupciones asíncronas (externas:INT, PORTB) es de entre 3 y 3,75 ciclos de instrucción, dependiendo el tiempo exacto del instante en que se haya producido la interrupción. 46
  • 47. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Las interrupciones externas La interrupción externa a través del pin 6 (RB0/INT) se activa por flanco. INTDEG (OPTION<6>)=1 Flanco Ascendente INTDEG (OPTION<6>)=0 Flanco Descendente Cuando aparece un flanco válido en el pin INT, el bit INTF (INTCON<1>) se pone a ‘1’. Esta interrupción puede habilitarse o deshabilitarse mediante el bit INTE (INTCON<4>) El bit INTF debe borrarse por software en la rutina de servicio de la interrupción. La aparición de una interrupción externa puede producir la salida del microcontrolador del modo SLEEP. 47
  • 48. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Copia del contexto ante una interrupción: Cuando se produce una interrupción, el microcontrolador guarda en el STACK la dirección de retorno del programa. Generalmente, es necesario también hacer una copia de los valores de los registros clave como por ejemplo el acumulador (W) o el registro STATUS. Esta copia se deberá implementar por software. A esta acción de guardar información se la conoce normalmente como PUSH mientras que a la acción de recuperar la información guardada se la denomina POP. Estos no son mnemónicos de instrucciones sino acciones conceptuales y se realizan programando una secuencia de instrucciones o realizando segmentos de código almacenados como macros. 48
  • 49. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Copia del contexto ante una interrupción: LIST P=16F84 include <p16f84.inc> WBuffer equ 0x0c StatBuffer equ 0x0d push macro movwf WBuffer ;guarda el acumulador swapf WBuffer, F ;intercambia los nibbles swapf STATUS,W ;obtiene el STATUS alterado movwf StatBuffer ;lo guarda en StatBuffer endm pop macro swapf StatBuffer,W ;restablece el registro STATUS movwf STATUS ;/ swapf WBuffer,W ;restablece el acumulador Es necesario emplear la instrucción endm SWAPF ya que ésta no modifica org 0x00 ninguno de los flag del registro goto Inicio ;salta el vector de interrupción STATUS. org 0x04 push Si empleáramos la instrucción MOVF se call rsi ;llama a la rutina de servicio modificaría el flag Z del registro pop STATUS. retfie Inicio ........ movlw b’11111000’ ;Máscara para habilitar todas las movwf INTCON ;interrupciones del reg. INTCON ........ bucle ........ ........ goto bucle ;Bucle del programa principal 49
  • 50. eman ta zabal zazu 2.- MICROCONTROLADORES PIC 2.- - GAMA MEDIA: INTERRUPCIONES - Copia del contexto ante una interrupción (cont.): Si se encuentran habilitadas varias interrupciones, será necesario testear el registro INTCON para saber cual de las posibles interrupciones ha sido la que ha provocado la ruptura de la ejecución cíclica del programa principal. Una vez identificada la interrupción, se ejecutará la subrutina correspondiente reactivando el flag de interrupción antes de regresar. rsi btfsc INTCON,RBIF ;Testea la interrupción RB4:RB7 call rsi_rb btfsc INTCON,INTF ;Testea la interrupción externa INT call rsi_int btfsc INTCON,T0IF ;Testea la interrupción del timer 0 call rsi_tmr0 return rsi_rb ............... ............... bcf INTCON, RBIF ;Restaura el flag de la interrupción return rsi_int ............... ............... bcf INTCON, INTF ;Restaura el flag de la interrupción return rsi_tmr0 ............... ............... bcf INTCON, T0IF ;Restaura el flag de la interrupción return 50
  • 51. eman ta zabal zazu ARQUITECTURA Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro. Albert Einstein Sainz de Murieta Mangado, Joseba Andoni Departamento de Ingeniería de Sistemas y Automática