josé estay a / jea i semestre académico 2014 computadores (tu sistemas computacionales) elementos...

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

Upload: ramona-grego

Post on 22-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

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

José Estay A / jea I semestre académico 2014

Computadores(TU Sistemas

Computacionales)

Elementos de estructura de computadores

Page 2: 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

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

• 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

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

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

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

• 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

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

• 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

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

• 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.

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

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

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

• 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: 100..17F• Banco 3: 180..1FF• 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

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

• 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

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

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

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

Bosquejo de Hwr – diagrama de bloques

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

Conexiones MCU 16F877

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

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

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

Aplicación simple: una secuencia binaria en la salida PORT B, archivo de diseño *.DSN,

creado usando ISIS captura de esquemáticos)

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

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

MOVLW 00TRIS 06CLRF 06

again INCF 06GOTO again

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

MPASM 08.10 Released BIN1.ASM 4-18-2008 19:09:41 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXTVALUE

00001 PROCESSOR 16F877 00002 0000 3000 00003 MOVLW 00Warning[224]: Use of this instruction is not recommended.0001 0066 00004 TRIS 06 00005 0002 0186 00006 CLRF 06Message[305]: Using default destination of 1 (file).0003 0A86 00007 again INCF 060004 2803 00008 GOTO again 00009 00010 END

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

MPASM 08.10 Released BIN1.ASM 4-18-2008 19:09:41 PAGE 2

SYMBOL TABLE LABEL VALUE __16F877 00000001again 00000003MEMORY USAGE MAP ('X' = Used, '-' = Unused)0000 : XXXXX----------- ---------------- ----------------

----------------All other memory blocks unused.Program Memory Words Used: 5Program Memory Words Free: 8187Errors : 0Warnings : 1 reported, 0 suppressedMessages : 1 reported, 0 suppressed

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

Archivo Código de máquina creado usando Assembler MPASM

:020000040000FA

:0A000000003066008601860A03281E

:00000001FF

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

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: 0011 0000 0101 1010 (16 bits)

Instrucción: 11 00xx kkkk kkkk (14 bits)

La instrucción significa W5A

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

• 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 00000000..11111111 (00..FF)

• El formato de las otras instrucciones depende principalmente del número de bits requeridos para el operando

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

• 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

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

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

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

• 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.

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

Otro ejemplo con mayor detalle

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

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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

PROCESSOR 16F877 ; Define MCU type__CONFIG 0x3733 ; Set config fuses

; Register Label Equates.................................... PORTB EQU 06 ; Port B Data Register TRISB EQU 86 ; Port B Direction RegisterPORTD EQU 08 ; Port D Data RegisterTimer EQU 20 ; GPR used as delay counter

; Input Bit Label Equates ..................................

Inres EQU 0 ; 'Reset' input button = RD0Inrun EQU 1 ; 'Run' input button = RD1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

; Initialise Port B (Port A defaults to inputs).............

BANKSEL TRISB ; Select bank 1MOVLW b'00000000' ; Port B Direction

Code

MOVWF TRISB ; Load the DDR code into F86

BANKSEL PORTB ; Select bank 0

GOTO reset ; Jump to main loop

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

; 'delay' subroutine ........................................

delay MOVWF Timer ; Copy W to timer register

down DECFSZ Timer ; Decrement timer register

GOTO down ; and repeat until zero

RETURN ; Jump back to main program

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

; Start main loop ...........................................

reset CLRF PORTB ; Clear Port B Data

start BTFSS PORTD,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 literalCALL delay ; Jump to subroutine 'delay'

GOTO start ; Repeat main loop always

END ; Terminate source code

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

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

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

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

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

Palabra de configuración `F877

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

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

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

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

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

Programación de bajo voltaje

• Normalmente cuando el chip es programado, un voltaje alto (12..14 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

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

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 .

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

• 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

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

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

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

• 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

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

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

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

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

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

• 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)

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

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

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

• 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

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

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

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

• 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

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

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

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

• 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)

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

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

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

• 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)

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

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

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

• 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

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

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

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

Fin

TUSistComp_Comp05

JEA/jea