51
Sainz de Murieta Mangado, Joseba Andoni Sainz de Murieta Mangado, Joseba Andoni Departamento de Ingeniería de Sistemas y Automática Departamento de Ingeniería de Sistemas y Automática ARQUITECTURA ARQUITECTURA eman ta zabal zazu Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro. Albert Einstein

Tema 2 Arquitectur Aberria

Embed Size (px)

DESCRIPTION

arquitectura del pic 16f84

Citation preview

Page 1: Tema 2 Arquitectur Aberria

Sainz de Murieta Mangado, Joseba AndoniSainz de Murieta Mangado, Joseba AndoniDepartamento de Ingeniería de Sistemas y AutomáticaDepartamento de Ingeniería de Sistemas y Automática

ARQUITECTURAARQUITECTURA

eman ta zabal zazu

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

Page 2: Tema 2 Arquitectur Aberria

eman ta zabal zazu

2

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

Page 3: Tema 2 Arquitectur Aberria

eman ta zabal zazu

3

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 4: Tema 2 Arquitectur Aberria

eman ta zabal zazu

4

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 5: Tema 2 Arquitectur Aberria

eman ta zabal zazu

5

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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 11. MOVLW 55h Búsqueda 2 Ejecuta22 .MOVWF PORTB Búsqueda 3 Ejecuta 33. CALL SUB_1 Busqueda 4 Salir4. BSF PORTA,BIT3 Busqueda SUB_1 Ejecuta SUB_1

Page 6: Tema 2 Arquitectur Aberria

eman ta zabal zazu

6

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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 de

l propio código de instrucción.

Page 7: Tema 2 Arquitectur Aberria

eman ta zabal zazu

7

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Arquitectura basada en banco de registros: Ejemplo

Page 8: Tema 2 Arquitectur Aberria

eman ta zabal zazu

8

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 9: Tema 2 Arquitectur Aberria

eman ta zabal zazu

9

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

PIC16F84:

• 1K de memoria de programa (flash)

• 68 bytes

de memoria de datos (RAM)

• 64 bytes

de memoria de datos (EEPROM)

• Juego de 35 instrucciones (RISC)

• Instrucciones de 14 bits

• Datos de 8 bits.

• 15 registros hardware especiales

• stack

de 8 niveles

• 4 fuentes de interrupción

• 13 pines de E/S

• 1 temporizador/contador de 8 bits

• Watchdog

Page 10: Tema 2 Arquitectur Aberria

eman ta zabal zazu

10

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Diagrama de Bloques del PIC16F84:

Page 11: Tema 2 Arquitectur Aberria

eman ta zabal zazu

11

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Patillaje (Pinout) del PIC16F84:

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.

RA0-RA45

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

RB0-RB78

PORTB -

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

Page 12: Tema 2 Arquitectur Aberria

eman ta zabal zazu

12

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Diagrama de Bloques del PIC16F873:

Page 13: Tema 2 Arquitectur Aberria

eman ta zabal zazu

13

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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 frecuenciaXT: Cristal / ResonadorHS: Cristal / Resonador de alta frecuenciaRC: Célula R-C externa (con CLKOUT)EXTRC: Célula R-C externaEXTRC: Célula R-C externa con CLKOUTINTRC: Célula R-C interna de 4MHzINTRC: Célula R-C interna de 4MHz con CLKOUT

Page 14: Tema 2 Arquitectur Aberria

eman ta zabal zazu

14

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

RESONADOR CERÁMICO

CRISTAL OSCILADOR

Page 15: Tema 2 Arquitectur Aberria

eman ta zabal zazu

15

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

Page 16: Tema 2 Arquitectur Aberria

eman ta zabal zazu

16

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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 interno0000= 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:CAL00= 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:CAL00= No se aplica compensación

Bit 1:0 No implementados

Page 17: Tema 2 Arquitectur Aberria

eman ta zabal zazu

17

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 18: Tema 2 Arquitectur Aberria

eman ta zabal zazu

18

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 19: Tema 2 Arquitectur Aberria

eman ta zabal zazu

19

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Memoria de Datos y de Programa del PIC16F84:

Memoria dePrograma Memoria de

Datos

Page 20: Tema 2 Arquitectur Aberria

eman ta zabal zazu

20

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Memoria de Programa:

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.

Para moverse entre páginas de memoria será necesario modificar los bits altos del PC lo cual se realizará escribiendo

el valor deseado en un SFR llamado PCLATH (Program

Counter

Latch

High).

En una ejecución de programa secuencial, será el propio PC el encargado de saltar de página sin necesitar de la intervención del usuario.

210=1024=1K

1024 posiciones X 14 bits

00 0000 0000 000H

11 1111 1111 3FFH

PIC16F84

213=8192=8K

Page 21: Tema 2 Arquitectur Aberria

eman ta zabal zazu

21

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 22: Tema 2 Arquitectur Aberria

eman ta zabal zazu

22

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Memoria de Programa:

PC (Contador 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

3FFH

004H

Vector Reset

Vector Interrupción

RI (Registro de Instrucciones)

14

13

Nivel 1

Nivel 8

13

PilaLIFO

Apunta al principio del programa después de

encenderse o resetearse

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

instrucciones que contiene, momento en el cual se recogerá y seguirá con las instrucciones normales a partir de la llamada.Las instrucciones son de 14 bits

Page 23: Tema 2 Arquitectur Aberria

eman ta zabal zazu

23

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

Page 24: Tema 2 Arquitectur Aberria

eman ta zabal zazu

24

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 25: Tema 2 Arquitectur Aberria

eman ta zabal zazu

25

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

Page 26: Tema 2 Arquitectur Aberria

eman ta zabal zazu

26

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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))

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.

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.

Page 27: Tema 2 Arquitectur Aberria

eman ta zabal zazu

27

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Memoria de Datos:

16F8416F873

Page 28: Tema 2 Arquitectur Aberria

eman ta zabal zazu

28

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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.

Page 29: Tema 2 Arquitectur Aberria

eman ta zabal zazu

29

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

IRP

Bit 7

R/W-0

RP1

Bit 6

R/W-0

RP0

Bit 5

R/W-0

TO

Bit 4

R-1

PD

Bit 3

R-1

Z

Bit 2

R/W-X

DC

Bit 1

R/W-X

C

Bit 0

R/W-X

Registro STATUS

Bit 4 TO: Time-out Bit1= Después del encendido, la instrucción CLRWDT o la instrucción

SLEEP0= Se ha rebosado el WDT

Bit 3 PD: Power-down

Bit1= Después del encendido o la instrucción CLRWDT 0= Después de ejecutar la instrucción SLEEP

Bit 2 Z: Zero

Bit1= El resultado de una operación aritmética o lógica es cero0= El resultado de una operación aritmética o lógica es distinto

de ceroBit 1 DC: Digit

Carry

Bit (ADDWF, ADDLW, SUBLW, SUBWF)1= Existe carry

del cuarto bit de bajo orden del resultado0= No existe carry

del cuarto bit de bajo orden del resultadoBit 0 C: Carry

Bit (ADDWF, ADDLW, SUBLW, SUBWF)1= Existe carry

del bit más significativo del resultado0= No existe carry

del bit más significativo del resultado

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

16F873

Page 30: Tema 2 Arquitectur Aberria

eman ta zabal zazu

30

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

Page 31: Tema 2 Arquitectur Aberria

eman ta zabal zazu

31

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

Page 32: Tema 2 Arquitectur Aberria

eman ta zabal zazu

32

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

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

List

p=16F84

;Tipo de procesadorinclude

"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 Resetgoto

Inicio

org

0x05

;Salva el vector de interrupción

Inicio

movf

Dato_A_L,W

;Carga menos peso del dato Aaddwf

Dato_B_L,W

;Suma menos peso del dato Bmovwf

Resultado_L

;Almacena el resultadomovf

Dato_A_H,W

;Carga más peso del dato Abtfsc

STATUS,C

;Hubo acarreo anterior ??addlw

1

;Si, suma 1 al acumuladoraddwf

Dato_B_H,W

;Suma más peso del dato Bmovwf

Resultado_H

;Guarda el resultado

Stop

nop

;Poner breakpoint

de paradanop

end

;Fin del programa fuente

Page 33: Tema 2 Arquitectur Aberria

eman ta zabal zazu

33

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Ejemplo1: El fichero de cabecera p16f84.inc

W

EQU H'0000'F

EQU H'0001'

;-----

Register

Files-----------------

INDF

EQU H'0000'TMR0

EQU H'0001'PCL

EQU H'0002'STATUS

EQU H'0003'FSR

EQU H'0004'PORTA

EQU H'0005'PORTB

EQU H'0006'EEDATA

EQU H'0008'EEADR

EQU H'0009'PCLATH

EQU H'000A'INTCON

EQU H'000B'

OPTION_REG

EQU H'0081'TRISA

EQU H'0085'TRISB

EQU H'0086'EECON1

EQU H'0088'EECON2

EQU H'0089'

;-----

STATUS Bits -----------------

IRP

EQU H'0007'RP1

EQU H'0006'RP0

EQU H'0005'NOT_TO

EQU H'0004'NOT_PD

EQU H'0003'Z

EQU H'0002'DC

EQU H'0001'C

EQU H'0000'

;-----

INTCON Bits ----------------

GIE

EQU H'0007'EEIE

EQU H'0006'T0IE

EQU H'0005'INTE

EQU H'0004'RBIE

EQU H'0003'T0IF

EQU H'0002'INTF

EQU H'0001'RBIF

EQU H'0000'

;-----

OPTION_REG Bits ----------

NOT_RBPU

EQU H'0007'INTEDG

EQU H'0006'T0CS

EQU H'0005'T0SE

EQU H'0004'PSA

EQU H'0003'PS2

EQU H'0002'PS1

EQU H'0001'PS0

EQU H'0000'

;-----

EECON1 Bits -----------------

EEIF

EQU H'0004'WRERR

EQU H'0003'WREN

EQU H'0002'WR

EQU H'0001'RD

EQU H'0000'

Page 34: Tema 2 Arquitectur Aberria

eman ta zabal zazu

34

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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

ALARMA 0x0DLEER FUEL

FUEL<20

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

FUEL<5

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

NO SI

NO SI

C Z

1 0 Resultado positivo

1 1 Resultado cero

0 0 Resultado negativoSOLO EN LA RESTA

Page 35: Tema 2 Arquitectur Aberria

eman ta zabal zazu

35

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA GAMA MEDIA: ARQUITECTURA --

Ejemplo2:

List

p=16F84

;Tipo de procesadorinclude

"P16F84.INC"

;Definiciones de registros internos

Fuel

equ

0x0C ;Define la posición del nivel de llenadoAlarma equ

0x0D ;Define la posición del byte de alarmas

constant

Nivel_1=.5constant

Nivel_2=.20

org

0x00

;Vector de Resetgoto

Inicioorg

0x05

;Salva el vector de interrupciónInicio

movf

Fuel,W

;Carga el nivel del Fuelsublw

Nivel_2

;Resta Nivel_2-(W)btfss

STATUS,C ;Mira el signo del resultado en el bit de carrygoto

else1if1 bsf

Alarma,0 ;Si C=1 W<=20 enciendo el bitgoto

cont1else1 bcf

Alarma,0 ;Si C=0 W>20 apago el bitcont1 movf

Fuel,W

;Carga el nivel del Fuelsublw

Nivel_1

;Resta Nivel_2-(W)btfss

STATUS,C

;Mira el signo del resultado en el bit

de carrygoto

else2if2 bsf

Alarma,1 ;Si C=1 W<=5 enciendo el bitgoto

cont2else2 bcf

Alarma,1 ;Si C=0 W>5 apago el bitcont2 goto

Inicioend

;Fin del programa fuente

NOTA

Mirar bien como se modifica el bit C

del registro STATUS con las instrucciones de suma y resta.

Page 36: Tema 2 Arquitectur Aberria

eman ta zabal zazu

36

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: ARQUITECTURA 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).

EEDATAContiene los 8 bits a leer o escribir en la EEPROM

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

EECON1Contiene los bits de control.

EECON2Habilita la lectura o escritura en la EEPROM

Page 37: Tema 2 Arquitectur Aberria

eman ta zabal zazu

37

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES 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

Cambio en un comparador

Puerto paralelo

USART: Recepción y Transmisión

Conversión Analógico/Digital completada

LCD

EEPROM completa

CCP

SSP

Una interrupción es un proceso asíncrono en el cual el microprocesador detiene la ejecución de

un programa para atender una petición

especial solicitada por el propio programa o

por un dispositivo físico conectado al

microprocesador externamente.

Page 38: Tema 2 Arquitectur Aberria

eman ta zabal zazu

38

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES 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)

Page 39: Tema 2 Arquitectur Aberria

eman ta zabal zazu

39

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

Page 40: Tema 2 Arquitectur Aberria

eman ta zabal zazu

40

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES 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)

Page 41: Tema 2 Arquitectur Aberria

eman ta zabal zazu

41

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

GIE

Bit 7

R/W-0

PEIE

Bit 6

R/W-0

TOIE

Bit 5

R/W-0

INTE

Bit 4

R/W-0

RBIE

Bit 3

R/W-0

TOIF

Bit 2

R/W-0

INTF

Bit 1

R/W-0

RBIF

Bit 0

R/W-0

Registro INTCON

Bit 5 TOIE: TMR0 Overflow

Interrupt

Enable

Bit1= Habilita la interrupción de overflow

del timer

00= Deshabilita la interrupción de overflow

del timer

0Bit 4 INTE: INT External

Interrupt

Enable

Bit1= Habilita la interrupción externa del pin INT0= Deshabilita la interrupción externa del pin INT

Bit 3 RBIE: RB Port

Change

Interrupt

Enable

Bit1= Habilita la interrupción por cambio de nivel en el puerto B0= Deshabilita la interrupción por cambio de nivel en el puerto B

Bit 2 TOIF: Overflow

Interrupt

Flag

Bit1= Ha habido overflow

del TMR0 (Debe borrarse por software)0= No hay overflow

del TMR0 Bit 1 INTF: INT External

Interrupt

Flag

Bit1= 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

Bit1= 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

Bit 7 GIE: Global Interrupt

Enable

Bit1= Habilita todas las interrupciones no enmascaradas0= Deshabilita todas las interrupciones

Bit 6 PEIE: Peripheral

Interrupt

Enable

Bit

(EEIE en el 16F84)1= Habilita todas las interrupciones no enmascaradas de periféricos0= Deshabilita todas las interrupciones de periféricos

16F873

Page 42: Tema 2 Arquitectur Aberria

eman ta zabal zazu

42

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

PSPIE

Bit 7

R/W-0

ADIE

Bit 6

R/W-0

RCIE

Bit 5

R/W-0

TXIE

Bit 4

R/W-0

SSPIE

Bit 3

R/W-0

CCP1IE

Bit 2

R/W-0

TMR2IE

Bit 1

R/W-0

TMR1IE

Bit 0

R/W-0

Registro PIE1 (8Ch)

Bit 5 RCIE: USART Receive

Interrupt

Enable

Bit1= Habilita la interrupción de recepción de la USART0= Deshabilita la interrupción de recepción de la USART

Bit 4 TXIE: USART Transmit

Interrupt

Enable

Bit1= 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

Bit1= Habilita la interrupción del SSP0= Deshabilita la interrupción del SSP

Bit 2 CCP1IE: Capture/Compare/PWM Module Interrupt

Enable

Bit1= Habilita la interrupción del CCP10= Deshabilita la interrupción del CCP1

Bit 1 TMR2IE: TMR2 to

PR2 (Period

Register) Interrupt

Enable

Bit1= Habilita la interrupción de alcance del PR2 por el TMR20= Deshabilita la interrupción de alcance del PR2 por el TMR2

Bit 0 TMR1IE: TMR1 Overflow

Interrupt

Enable

Bit1= Habilita la interrupción de overflow

del TMR10= Deshabilita la interrupción de overflow

del TMR1

Bit 7 PSPIE: Parallel

Slave

Port

Read/Write

Interrupt

Enable

Bit1= Habilita la interrupción de lectura/escritura del PSP0= Deshabilita la interrupción de lectura/escritura del PSP

Bit 6 ADIE: A/D Converter

Interrupt

Enable

Bit1= Habilita la interrupción del convertidor A/D0= Deshabilita la interrupción del convertidor A/D

16F873

El bit PEIE (INTCON<6>) debe estar puesto a ‘1’ para habilitar las interrupciones de periféricos

NOTA

Page 43: Tema 2 Arquitectur Aberria

eman ta zabal zazu

43

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

PSPIF

Bit 7

R/W-0

ADIF

Bit 6

R/W-0

RCIF

Bit 5

R-0

TXIF

Bit 4

R-0

SSPIF

Bit 3

R/W-0

CCP1IF

Bit 2

R/W-0

TMR2IF

Bit 1

R/W-0

TMR1IF

Bit 0

R/W-0

Registro PIR1 (0Ch)

Bit 5 RCIF: USART Receive

Interrupt

Flag

Bit1= El buffer de recepción de la USART está lleno0= El buffer de recepción de la USART está vacío

Bit 4 TXIF: USART Transmit

Interrupt

Flag

Bit1= 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

Flag1= Ha tenido lugar una condición de interrupción del SSP0= No ha tenido lugar una condición de interrupción del SSP

Bit 2 CCP1IF: Capture/Compare/PWM Module Interrupt

Flag

Bit1= 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

Bit1= 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

Bit1= Se ha producido un desbordamiento del TIMER10= No se ha producido un desbordamiento del TIMER1

Bit 7 PSPIF: Parallel

Slave

Port

Read/Write

Interrupt

Flag

Bit1= Ha tenido lugar una operación de lectura o de escritura0= No ha tenido lugar ninguna operación de lectura o de escritura

Bit 6 ADIF: A/D Converter

Interrupt

Flag

Bit1= Se ha completado una conversión A/D0= La conversión A/D no se ha completado

16F873

El bit PSPIF (PIR1<7>) está reservado en los PIC16F873/876 y debe mantenerse siempre a 0.

NOTA

Page 44: Tema 2 Arquitectur Aberria

eman ta zabal zazu

44

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

-

Bit 7

U-0

Res.

Bit 6

R/W-0

-

Bit 5

U-0

EEIE

Bit 4

R/W-0

BCLIE

Bit 3

R/W-0

-

Bit 2

U-0

-

Bit 1

U-0

CCP2IE

Bit 0

R/W-0

Registro PIE2 (8Dh)

Bit 5 Uninplemented.

Bit 4 EEIE: EEPROM Write

Operation

Interrrupt

Enable1= 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

Enable1= Habilita la interrupción por colisión en el bus0= Deshabilita la interrupción por colisión en el bus

Bit 2 Uninplemented

Bit 1 Uninplemented

Bit 0 CCP2IE: CCP2 Interrupt

Enable

Bit1= Habilita la interrupción del CCP20= Deshabilita la interrupción del CCP2

Bit 7 Uninplemented.

Bit 6 Reserved: Debe mantenerse siempre a 0

16F873

Page 45: Tema 2 Arquitectur Aberria

eman ta zabal zazu

45

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

-

Bit 7

U-0

Res.

Bit 6

R/W-0

-

Bit 5

U-0

EEIF

Bit 4

R/W-0

BCLIF

Bit 3

R/W-0

-

Bit 2

U-0

-

Bit 1

U-0

CCP2IF

Bit 0

R/W-0

Registro PIR2 (0Dh)

Bit 5 Uninplemented.

Bit 4 EEIF: EEPROM Write

Operation

Interrrupt

Flag

Bit1= 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

Bit1= Se ha producido una colisión de bus en el módulo SSP configurado en modo I2C maestro0= Se ha producido una colisión de bus

Bit 2 Uninplemented

Bit 1 Uninplemented

Bit 0 CCP2IE: CCP2 Interrupt

Enable

BitModo Capture1= Se ha producido una captura del TIMER10= No se ha producido una captura del TIMER1Modo Compare1= Se ha producido una coincidencia del TIMER10= No se ha producido una coincidencia del TIMER1Modo PWM: No se utiliza

Bit 7 Uninplemented.

Bit 6 Reserved: Debe mantenerse siempre a 0

16F873

Page 46: Tema 2 Arquitectur Aberria

eman ta zabal zazu

46

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES 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.

Page 47: Tema 2 Arquitectur Aberria

eman ta zabal zazu

47

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES 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.

Page 48: Tema 2 Arquitectur Aberria

eman ta zabal zazu

48

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES 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.

Page 49: Tema 2 Arquitectur Aberria

eman ta zabal zazu

49

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

Copia del contexto ante una interrupción:LIST P=16F84include <p16f84.inc>

WBuffer equ 0x0cStatBuffer equ 0x0dpush macro

movwf WBuffer ;guarda el acumuladorswapf WBuffer, F ;intercambia los nibblesswapf STATUS,W ;obtiene el STATUS alteradomovwf StatBuffer ;lo guarda en StatBufferendm

pop macroswapf StatBuffer,W ;restablece el registro STATUSmovwf STATUS ; /swapf WBuffer,W ;restablece el acumuladorendmorg 0x00goto Inicio ;salta el vector de interrupciónorg 0x04pushcall rsi ;llama a la rutina de serviciopopretfie

Inicio ........movlw b’11111000’ ;Máscara para habilitar todas las movwf INTCON ;interrupciones del reg. INTCON........

bucle ................goto bucle ;Bucle del programa principal

Es necesario emplear la instrucción SWAPF ya que ésta no modifica

ninguno de los flag

del registro

STATUS.

Si empleáramos la instrucción MOVF se modificaría el flag

Z del registro STATUS.

Page 50: Tema 2 Arquitectur Aberria

eman ta zabal zazu

50

2.2.--

MICROCONTROLADORES PICMICROCONTROLADORES PIC

--

GAMA MEDIA: INTERRUPCIONES GAMA MEDIA: INTERRUPCIONES --

Copia del contexto ante una interrupción (cont.):

rsi btfsc INTCON,RBIF ;Testea la interrupción RB4:RB7call rsi_rbbtfsc INTCON,INTF ;Testea la interrupción externa INTcall rsi_intbtfsc INTCON,T0IF ;Testea la interrupción del timer 0call rsi_tmr0return

rsi_rb ..............................bcf INTCON, RBIF ;Restaura el flag de la interrupciónreturn

rsi_int ..............................bcf INTCON, INTF ;Restaura el flag de la interrupciónreturn

rsi_tmr0 ..............................bcf INTCON, T0IF ;Restaura el flag de la interrupciónreturn

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.

Page 51: Tema 2 Arquitectur Aberria

Sainz de Murieta Mangado, Joseba AndoniSainz de Murieta Mangado, Joseba AndoniDepartamento de Ingeniería de Sistemas y AutomáticaDepartamento de Ingeniería de Sistemas y Automática

ARQUITECTURAARQUITECTURA

eman ta zabal zazu

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