José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores.

Slides:



Advertisements
Presentaciones similares
Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Advertisements

Bases de la programación de un PLC
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
Microprocesadores Componentes básicos..
A REA DE TECNOLOGIA ELECTRONICA U NIVERSIDAD DE O VIEDO LECCION 5 – ARQUITECTURA INTERNA DE LOS PIC - 1F.F. LINERA ARQUITECTURA BASICA. CARACTERISTICA.
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
Diseño de Circuitos Lógicos Secuenciales1
Alumno: Roy R. Mercado Núñez
FAMILIA DE LÓGICA PROGRAMABLE EMBEBIDA ALTERA FLEX 10K.
Integrantes: Moyolehuani Tatéi Temai
RESUMEN: Softmicro de 8 bits Xilinx
El nivel de la Microprogramación
Arquitectura de Conjunto de Instrucciones (ISA)
Composición Interna de un Procesador
COMPONENTES FISICOS Y LÓGICOS DE LA PC
Microcontroladores PIC
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
Arquitectura del Computador
ISA (Instruction Set Architecture)
TRADUCTOR DE UN PROGRAMA
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MICRO Y MACRO ARQUITECTURA
Microcontroladores PIC16F84A.
Unidad 2: Organización del CPU
EXAMEN CORTO SOBRE FLIP-FLOPS
Secciones y Segmentos STARTUP
Respaldando la información
José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores.
Arquitectura del 8086/8088 TEEL 4011
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Overview Sistemas Computacionales
José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores.
Asignación de Espacio No Contiguo
Cap. 12 Microprocesadores (Conferencia 3) TEEL 4011 Prof. Jaime José Laracuente-Díaz Referencia: Floyd.
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Fundamentos de Programación Resolución de Problemas con Computadoras y Herramientas de Programación.
UNIDAD VI: CIRCUITOS LÓGICOS SECUENCIALES
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Lenguaje Ensamblador Pic 16F84A.
José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores.
Microcomputadores Prof: Tatiana Marín R.. Lenguaje máquina = lenguaje binario InstrucciónLenguaje máquina (binario)OP ( hex)Nemónico Restar F0SUB.

Arquitectura de Von Neumann
MICROCONTROLADORES COMPATIBLES CON 8XC51
“Organización y Arquitectura de Computadores” William Stallings
Microprocesadores II PIC16C5X Ing. Nelwi Báez.
Real Colegio San José S.A.S Programación - BASIC.
Capítulo 4 CPU y la memoria.
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
NOCIONES BÁSICAS COMPUTO II
Unidad 7 Escritorio de Windows.
PROGRAMACIÓN ESTRUCTURADA LOS DIAGRAMAS DE ESTADO
RESUMEN: Softmicro de 8 bits Xilinx
INTERRUPCIONES – ABRAZO MORTAL
INTRODUCCIÒN MICROCONTROLADORES
PICmicro GAMA MEDIA: PIC16F84 [I]
ESTADO Registro de ESTADO más utilizado  Es el registro más utilizado.  Ocupa la dirección 03 H tanto del Banco 0 como el Banco 1 de la Memoria de Datos.
José Alvarado – Cristian Anzola
Curso: Fundamentos de Computación
Arquitectura de Computadores
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
Máquinas de estado con VHDL
El microprocesador y su arquitectura
Arquitectura de Computadores Clases Interrupciones de software y hardware IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica.
 Software  Humanware  Hardware Conformado por.
CONIMEIRA XVI Bootloaders para microcontroladores PIC de Microchip Presentan: Ing. Ricardo Guadrón Tec. Juan José Guevara Escuela Especializada en Ingeniería.
Arquitectura de Computadores Clase 6 Ciclo y Conjunto de Instrucciones IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Unidad de Control Ubicación: Es uno de los tres bloques funcionales principales en los que se divide una unidad central de procesamiento (CPU). Realizar.
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
Transcripción de la presentación:

José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores

PIC 16F877-Arquitectura Este MCU es ampliamente usado como un dispositivo avanzado en la enseñanza ya que posee una variado complemento de interfaces: entrada análoga, puerto serial, puerto esclavo, entre otros mas un buen rango de temporizadores en hardware

El PIC 16F877 es una elección adecuada para el aprendizaje sobre microcontroladores, debido a que su lenguaje de programación es relativamente simple, en comparación con un microprocesador tal como el Pentium INTEL, el cual es usado en los computadores tipo PC. Este tiene un set de instrucciones poderoso pero complejo para poder soportar operaciones multimedia avanzadas

PIC 16F877 Pin out Este chip puede ser obtenido en diferentes formatos de encapsulado y la versión tipo DIP es recomendada para la construcción de prototipos La mayoria de los pines son I/O estructurados en 5 puertos: A(5), B(8), C(8), D(8), y E(3), dando un total de 32 pines I/O

Estos pueden operar como simples pines I/O digitales, pero la mayoría tiene mas de una función, y el modo de operación de cada uno es seleccionado inicializando varios registros de control dentro del chip Observe en particular, que los puertos A y E son entradas analogas por omisión (...by default...) al alimentar el chip o con Reset, así ellos tienen que ser configurados si operación I/O digital es requerida El puerto B es usado para bajar el programa a la ROM FLASH del chip (RB6 y RB7) y RB0 y RB4..RB7 pueden generar una INT

El puerto C da acceso a los temporizadores (en adelante TIMERs) y puerto serial El puerto D puede ser usado como un puerto esclavo, con el puerto E proveyendo los pines de control para este efecto El chip puede operar realmente con una tensión algo menor de 2 Volts para trabajo con batería autónoma y ahorro de power Un circuito de CLK de baja frecuencia usando solo un capacitor y un resistor para establecer la frecuencia puede ser conectado a CLKIN

O un circuito oscilador con XTAL puede ser conectado a través de CLKIN y CLKOUT MCLR es la entrada de RESET; cuando es 0 la MCU se detiene y se restablece cuando MCLR es 1. Esta entrada se debe afianzar en alto permitiendo al chip ejecutar si un circuito de reset externo no está conectado, pero usualmente es una buena idea incorporar un botón reset manual en todas las aplicaciones incluidas aquellas mas triviales.

Diagrama de bloque PIC 16F877 La memoria de programa principal es una Flash ROM la cual almacena una lista de instrucciones de 14 bits. Estas son alimentadas a la unidad de control y usadas para modificar el archivo de registros de la RAM Los registros incluyen registros especiales de control, los registros de puerto y un set de registros de propósito general los cuales pueden ser usados para almacenar datos temporalmente Un registro de trabajo separado, W, es usado junto a la ALU para procesar datos Varios módulos especiales de periféricos proveen de un rango de opciones I/O

Hay 512 direcciones RAM en el archivo de registros: 0..1FF, los cuales están organizados en 4 bancos (0..3), cada banco contiene 128 direcciones Se selecciona por omisión (seleccionado al POWER-UP) el banco 0. Banco 0: es numerado 00..7F Banco 1: 80..FF Banco 2: F Banco 3: FF Los bancos contienen registros especiales de funciones (SFRs), los cuales tienen un propósito dedicado, y los registros de propósito general (GPRs). Los registros del archivo son mapeados en la figura 2-3 de la hoja de datos

Los SFRs pueden ser mostrados en el diagrama de bloques como separados de los GPRs pero ellos están de hecho en el mismo bloque lógico y direccionados del mismo modo Deduciendo los SFRs desde el numero total de localizaciones de RAM y admitiendo que algunos registros se repiten en mas de un banco, esto resulta en 368 bytes de registros de datos GPR

Prueba de hwr Es usual definir el hwr sobre el cual se pueden mostrar las operaciones de un programa PIC. Inicialmente un diagrama de bloque es usado para esquematizar el diseño de hwr, como el que se muestra a continuación. El símbolo esquemático para la MCU es mostrado indicando los pines a ser usados Para el programa de prueba simplemente se necesitan entradas que conmuten entre 0V y 5V y una indicación lógica en las salidas

Bosquejo de Hwr – diagrama de bloques

Conexiones MCU 16F877

Una aplicación simple RB0..RB7: el puerto B actúa como un contador binario de 8 bit RD0: un CLEAR por un push-button RD1: un COUNT por un push-button

Aplicación simple: una secuencia binaria en la salida PORT B, archivo de diseño *.DSN, creado usando ISIS captura de esquemáticos)

Fuente *.ASM creado usando un editor de texto no-formateado y un archivo de listado *.LST (próxima ppt) creado usando Assembler MPASM PROCESSOR 16F877 MOVLW00 TRIS06 CLRF06 againINCF06 GOTOagain

MPASM Released BIN1.ASM :09:41 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE PROCESSOR 16F MOVLW 00 Warning[224]: Use of this instruction is not recommended TRIS CLRF 06 Message[305]: Using default destination of 1 (file) A again INCF GOTO again END

MPASM Released BIN1.ASM :09:41 PAGE 2 SYMBOL TABLE LABEL VALUE __16F again MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXX All other memory blocks unused. Program Memory Words Used: 5 Program Memory Words Free: 8187 Errors : 0 Warnings : 1 reported, 0 suppressed Messages : 1 reported, 0 suppressed

Archivo Código de máquina creado usando Assembler MPASM : FA :0A A03281E : FF

Programa El ‘877 tiene 8k de memoria de programa Así puede almacenar un máximo de 1024x8=8192 instrucciones de 14-bit Por omisión, la carga y la ejecución empiezan desde la dirección cero Ejemplo de instrucción: Código fuente:MOVLW 05A Código HEX:305A Código binario: (16 bits) Instrucción:11 00xx kkkk kkkk (14 bits) La instrucción significa W  5A

En el set de instrucciones de la hoja de datos (Tabla 13-2)se observa que los primeros 4 bits (1100) conforman el código de instrucción (Op-Code), los próximos 2 bits nom son usados (xx, aparece como 00 en el código binario) y los últimos 8 bits conforman el valor literal (5A) El literal está representado como kkkk kkkk ya que puede tener cualquier valor en el rango (00..FF) El formato de las otras instrucciones depende principalmente del número de bits requeridos para el operando

El número de bits del op-code puede variar entre 3 y todos los 14, dependiendo del número de bits necesarios para el operando Esto es diferente de un procesador convencional, tal como el Pentium, donde el op-code y el operando son cada uno creados como un número entero de bytes La instrucción del PIC es más compacta como se observa en el conjunto de instrucciones mismo, para mayor velocidad de operación. Esto se define como RISC

Otro ejemplo con más detalles La aplicación nos genera un archivo de diseño *.DSN, creado usando captura de esquemático de ISIS Los otros archivos generados: *.ASM, *.LST, *.HEX

Cuando el botón RUN es presionado, un cero lógico es ingresado en RD1, y un incremento en la cuenta binaria es observada en los LEDs, donde LSB=RB0. Cuando es liberado, (RD1=1) la cuenta se detiene y es retenida. Cuando el botón de RESET (RD0) es presionado, la cuenta desplegada va a cero (“reseteada” a cero) La velocidad del reloj de la MCU puede ser ajustada en RV1, alrededor de 40kHz.

Otro ejemplo con mayor detalle

ASM ;Source File:BIN4.ASM ;Author:Date: ;Processor:PIC 16F877 ;Hardware: PIC Demo System ;Clock: RC = 100kHz ;Inputs: Port D: Push Buttons ;RD0, RD1 (active low) ;Outputs: Port B: LEDs (active high) ;WDTimer: Disabled ;PUTimer: Enabled ;Interrupts: Disabled ;Code Protect: Disabled ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

PROCESSOR 16F877; Define MCU type __CONFIG 0x3733; Set config fuses ; Register Label Equates PORTBEQU 06; Port B Data Register TRISBEQU86; Port B Direction Register PORTD EQU 08; Port D Data Register Timer EQU 20; GPR used as delay counter ; Input Bit Label Equates Inres EQU 0; 'Reset' input button = RD0 Inrun EQU 1; 'Run' input button = RD1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Initialise Port B (Port A defaults to inputs) BANKSELTRISB ; Select bank 1 MOVLW b' ' ; Port B Direction Code MOVWFTRISB ; Load the DDR code into F86 BANKSELPORTB ; Select bank 0 GOTOreset ; Jump to main loop

; 'delay' subroutine delayMOVWF Timer ; Copy W to timer register down DECFSZ Timer ; Decrement timer register GOTO down ; and repeat until zero RETURN; Jump back to main program

; Start main loop resetCLRFPORTB ; Clear Port B Data startBTFSSPORTD,Inres ; Test reset button GOTO reset ; and reset Port B if pressed BTFSC PORTD,Inrun ; Test run button GOTO start ; and repeat if n pressed INCF PORTB ; Increment output at Port B MOVLW 0FF ; Delay count literal CALLdelay; Jump to subroutine 'delay' GOTO start ; Repeat main loop always END ; Terminate source code

Programa Observe que dos tipos de etiquetas (label) son usados en el programa para representar números: identificadores de etiquetas son usados al principio del programa para declarar rótulos para el archivo de registros que serán usados en el programa Etiquetas que representan direcciones son puestas en la 1era. columna para marcar el destino de instrucciones GOTO y CALL

Palabra de configuración del chip La directiva de assembler _CONFIG establece aspectos relacionados con la operación del chip. Un área especial de la memoria de programa fuera del rango normal (2007h) almacena la palabra de configuración del chip. La función de cada bit se muestra en la tabla a continuación, junto con algunas configuraciones típicas. Mayores detalles en la sección 12 de la hoja de datos

Palabra de configuración `F877

Protección del código Por consideraciones comerciales o de seguridad se puede prevenir la lectura del código. Detalles en la sección 14 de la hoja de datos. CP1 protege deshabilita lectura WRT permite deshabilitar escritura desde dentro del programa mismo CPD protege escritura de la EEPROM de datos

ICD=Desarrollo (depuración) In-Circuit ICD permite que los programas sean bajados a la MCU después de que esta ha sido instalada en el circuito de aplicación Con ICD, el chip puede ser programado y reprogramado durante el desarrollo evitando daños mecánicos y eléctricos causados por la remoción del chip

Programación de bajo voltaje Normalmente cuando el chip es programado, un voltaje alto ( V) es aplicado al pin PGM (RB3). Para evitar la necesidad de aplicar este voltaje durante la programación in-circuit, un modo de programación de bajo voltaje es disponible, sin embargo, al usar esta opción RB3 pierde su disponibilidad como función I/O en la operación normal

Power-up Timer Cuando la fuente de poder es aplicada a una MCU programada, el inicio de la ejecución del programa debería de ser demorado hasta que la fuente y el reloj sean estables, de otra manera el programa puede no ejecutarse correctamente. Así el timer power-up puede habilitarse como un paso rutinario. Un reloj interno provee una demora de 72 mseg. Esto es seguido por una demora de partida del oscilador de 1024 ciclos de reloj antes de que la ejecución del programa comience.

BOREN Brown-out se refiere a una breve caída en el voltaje de polarización, causados por fluctuaciones del suministro u otra falla de la fuente la cual puede interrumpir la ejecución del programa Si BOREN es seteado, una falla de fuente de no mas de 100 uSeg causará que el dispositivo se mantenga en reset hasta que la alimentación se recupere y luego esperará que el timer power-up finalice, antes de reiniciar. El programa debe ser diseñado para recuperación automática

Watchdog timer Está diseñado para resetear automáticamente la MCU si hay una mal función del código, por un error en la lógica de programación Un oscilador interno separado y un contador generan automáticamente un reset cada 18 mseg, a menos que sea deshabilitado en la palabra de configuración Si WdT es habilitado, debería ser regularmente reseteado por una instrucción en el lazo del programa (CLRWDT) para prevenir el RESET. Si el programa se cuelga y la instrucción de reset del WdTno es ejecutada, la MCU reiniciará y (posiblemente) continuará correctamente dependiendo de la naturaleza de la falla

Oscilador RC Un reloj tipo RC (resistor-capacitor) es barato y feliz, requiere de solo dos componentes externos de bajo costo, operando con el circuito driver interno La constante de tiempo determina el periodo del reloj Un resistor variable puede ser usado para tener una frecuencia manualmente ajustable, aunque esto no es muy estable y preciso

Oscilador Xtal Permite gran precisión. Normalmente es conectado a través de los pines de clock con un par de pequeños capacitores (15 pF) Un valor conveniente es 4 MHz, esto da un tiempo para el ciclo de instrucción de 1 uSeg, lo que hace mas fácil los cálculos de temporización (cada instrucción consume 4 ciclos de reloj)

Configuración La configuración por omisión es 3FFF, lo cual significa que la protección de código está apagada, ICD deshabilitado, escritura de programa habilitada, programación de bajo voltaje habilitada, BOREN habilitada, temporizador power-up deshabilitado, WdT habilitado y oscilador RC habilitado Un seteo típico para un trabajo de desarrollo básico habilita ICD, habilita power-up timer, deshabilita WdtT, y usa oscilador tipo XT

Conjunto de instrucciones del PIC Set de instrucciones Una versión del conjunto de instrucciones del PIC, organizada en grupos funcionales se muestra en la tabla hipervinculada arriba. Consiste de 35 instrucciones separadas, algunas con destinos resultantes alternativos El destino por omisión para el resultado de una operación es el archivo de registros, pero el registro de trabajo W es algunas veces una opción. Cada instrucción es descrita en detalle en la hoja de datos de la MCU, sección 15

Tipos de instrucciones: MOVE MOVE: los contenidos de un registro son copiados a otro. No se puede mover directamente un byte desde un registro de archivo a otro, debe hacerse vía el registro W Para poner datos dentro del sistema desde el programa (un literal) se debe usar MOVLW para colocar el literal dentro de W inicialmente. Luego puede ser movido a otro registro según se requiera

La sintaxis no es simétrica, para mover un byte desde W a un registro de archivo, MOVWF es usado. Para mover en el otro sentido, MOVF F,W es usado donde F es cualquier dirección de un registro de archivo. Esto significa que MOVF F,F está también disponible. Esto puede parecer sin objeto, pero de hecho puede ser usado para verificar un registro sin alterarlo

Tipo Registro Las operaciones de registro afectan solamente a un simple registro y todas excepto CLRW operan sobre los registros de archivo CLEAR establece todos los bits a cero DECREMENT disminuye el valor en 1 INCREMENT aumenta el valor en 1 SWAP intercambia los nibbles superior e inferior COMPLEMENT invierte todos los bits

ROTATE mueve todos los bits a la izquierda o derecha incluyendo el flag de carry en este proceso CLEAR y SET de un bit opera sobre un bit seleccionado, donde el registro y el bit necesitan ser especificados en la instrucción

Tipo Aritmética&Lógica Adición y substracción: si el resultado genera un bit extra (p.ej FF + FF = 1FE) o requiere de una cifra de préstamo (borrow) (p.ej. 1FE – FF = FF), el flag de carry es usado Las operaciones lógicas son llevadas a cabo con pares de bits de los dos números

Tipo TEST, SKIP&JUMP Los saltos programados son iniciados usando un bit de test y un brinco condicional seguido por un GOTO o CALL El test bit puede ser realizado sobre cualquier bit de un registro de archivo. Este podría ser un bit de un puerto, para chequear si una entrada ha cambiado, o un bit de estado en un registro de control

BTFSC (Bit Test and Skip iF Clear) y BTFSS (Bit Test and Skip iF Set) son usados para verificar un bit y brincar a la próxima instrucción, o no, de acuerdo al estado del bit cotejado DECFSZ y INCFSZ representan un test usado frecuentemente El test del bit y el brinco pueden ser seguidos de una simple instrucción que involucre la condicionalidad, pero un GOTO y CALL permiten un bloque de código condicional Otra opción, que es usual al usar tablas de datos, es RETLW (Return wi Literal in W)

Tipo Control NOP: no realiza operación alguna y consume 4 ciclos de reloj (delay) SLEEP: detiene el programa, tal que puede ser reiniciado por una interrupción externa. También será usada al final de cualquier programa que no posea un lazo que lo devuelva hacia atrás continuamente, para prevenir que la ejecución del programa continúe sobre localizaciones de memoria no usadas. Las localizaciones no usadas contienen el código 3FFF, el cual es una instrucción valida (ADDLW FF). Si el programa no es detenido, continuará ejecutando repetidamente estas instrucciones y comenzará nuevamente cuando el PC de la vuelta a 0000

CLRWDT: significa limpie (ponga a cero)el temporizador perro de guardia. Si el programa se pega en un loop o se detiene por cualquier otra razón, será reiniciado automáticamente por el WdT. Para detener este evento cuando el programa está operando normalmente, el WdT debe ser reseteado a intervalos regulares menores a 10 mSeg dentro del loop del programa, usando CLRWDT

Instrucciones opcionales TRIS fue una instrucción originalmente creada para hacer la inicialización de los puertos simple. Selecciona el banco 1 de registros tal que los registros de dirección de datos TRIS (TRISA, TRISB, etc.) pueden ser cargados con un código de sentido de dirección. El fabricante no recomienda más el uso de esta instrucción, aunque aún es soportada por las versiones actuales de ensambladores para mantener una compatibilidad regresiva y es usual cuando se aprende con programas muy simples

La directiva al ensamblador BANKSEL puede ser usada en programas mas avanzados ya que otorga un acceso más flexible a los registros en los bancos 1, 2, 3 La otra opción es cambiar los bits de selección de banco en el registro de estado usando BSF y BCF OPTION: provee acceso al registro OPTION, es la otra instrucción que ya no es más recomendada. Puede ser reemplazada por BANKSEL para seleccionar el banco 1 el cual contiene el registro OPTION el que puede entonces ser accedido directamente

Ejecución del programa Instrucciones del PIC Registro IR, secuencia, op-code, decodificación PC sigue la pista de la ejecución del programa PC se limpia a cero al encender o resetear El registro PC es de 13 bits, lo que implica 8 K de memoria de programa El rango del registro PC

El registro PCL (SFR 02) contiene el byte bajo y este puede ser leído o escrito como cualquier otro registro del archivo El byte alto es solo accesible indirectamente vía PCLATH (SFR 0A)

Subrutinas Una etiqueta e usada al inicio de la subrutina Cuando la subrutina es llamada esta dirección destino es copiada dentro del PC Al mismo tiempo la dirección de retorno (PC + 1) es empujada dentro del stack El stack tiene 8 niveles y es LIFO

La subrutina finaliza con una instrucción RETURN que causa que el programa regrese a la posición original y continúe Esto es realizado sacando la dirección de retorno desde el stack y reemplazándola sobre el PC En los PIC el stack no es directamente accesible (ver figura próx ppt)

Interrupciones El stack también es usado cuando se procesa una INT La INT es efectivamente un CALL y RETURN el cual es iniciado por una señal externa de hwr que fuerza al procesador a saltar a una secuencia dedicada de instrucciones: la ISR Por ejemplo, la MCU puede ser seteada tal que cuando un temporizador de hwr finaliza su cuenta, el proceso requerido en ese momento es llamado vía una INT de Timer

Cuando una señal de INT es recibida se termina de ejecutar la instrucción actual y la dirección de la próxima instrucción (la dirección de retorno) es empujada dentro del stack La ISR finaliza con una instrucción RETFIE la cual causa que la dirección de retorno sea extraída desde el stack La ejecución del programa continúa entonces en la localización original Sin embargo, hay que tener en cuenta cualquier cambio en los registros que pueda haber sucedido en la ISR Si es necesario los registros deben ser salvados al comienzo de la ISR y restaurados al final, en algún conjunto de registros de archivo libres

Límites o fronteras de página Durante la ejecución normal de un programa la operación del PC es automática pero pueden surgir problemas potenciales cuando ocurre una bifurcación en el programa Las instrucciones de salto (CALL o GOTO) proveen solo de una dirección destino de 11 bits, tal que la memoria de programa es efectivamente dividida en 4 bloques de 2K, o PAGINAS (pages) Un salto a través de fronteras de páginas requiere de la modificación de los bits de selección de página por el programa usuario (PCLATH 4:3) Además, si los 8 bits del PCL son modificados directamente, como en el caso de una lectura de una tabla, debe tenerse cuidado si un salto está hecho desde un bloque de 256 bytes a otro Secciones 2.3 y 2.4 de la hoja de datos del 16F877 detallan como manejar estos problemas

Fin TUSistComp_Comp05 JEA/jea