La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores."— Transcripción de la presentación:

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

2 Registros de funciones especiales SFR El conjunto archivo de registros está dividido en registros de funciones especiales SFR y registros de propósito general GPR Los SFR tienen funciones predeterminadas, especificadas en la hoja de datos del 16F877 figura 2-3, y ocupan las localizaciones 00..1F en banco 0, 80..9F en banco 1, 100..10F en banco 2 y 180..18F en banco 3 Muchos registros son repetidos en mas de un banco

3 Program counter: PCL PCL contiene los 8 bits mas bajos del PC Los bits superiores (PC 12..8) son accedidos vía PCLATH El PC es incrementado por cada instrucción y su contenido es reemplazado durante un GOTO, CALL (dirección de programa) o RETURN (stack)

4 Status Register (Registro de estado) El registro de estado graba el resultado de ciertas operaciones, el estado de la alimentación e incluye los bits de seleciión de banco Las funciones de los bits son detalladas en 2.2.2.1 de la hoja de datos

5 Flag zero (Z) Este flag es seteado cuando el resultado de una operación de registros es cero, y limpiado cuando no es cero El set completo de instrucciones debe ser consultado para confirmar cuales operaciones afectan el flag Z Las instrucciones BIT TEST y SKIP usan este flag para bifurcación condicional, pero hay que recordar que hay instrucciones dedicadas para decrementar o incrementar y brincar si es cero

6 Carry flag El flag de carry es solo afectado por las instrucciones de sumar, restar y rotar Si el resultado de una operación de suma genera un carry, este flag es seteado, esto es, cuando 2 números de 8 bits dan una suma de 9 bits. El bit de carry debe ser incluido en cálculos posteriores a fin de obtener el resultado correcto En la resta el flag de carry debe estar seteado inicialmente, ya que provee el digito de prestamo (si se requiere) en el bit más significativo del resultado

7 Si el flag de carry es limpiado después de la resta, significa que el resultado fue negativo, ya que el sustraendo fue mayor que el minuendo. Tomados juntos, el flag de carry y el de zero permiten detectar si el resultado de una operación aritmética es positivo, negativo o zero, como se muestra en la tabla a continuación:

8 Resultados aritméticos

9 Acarreo de dígito: DC Digit Carry Un registro de archivo puede ser visto con un contenido de 8 bits o 1 byte Puede también ser usado como 2 nibbles Cada nibble puede representar un dígito HEX (0..F) DC graba un carry desde el bit más significativo del nibble inferior (bit 3) De este modo DC permite que se puede llevar a cabo aritmética HEX de la misma manera como la aritmética de 8 bits usa el flag C

10 Selección de banco de registros En la MCU ‘F877 el archivo de registros de RAM está dividido en 4 bancos de 128 localizaciones, bancos 0..3 Al encender el banco 0 es seleccionado por omisión Para acceder a los otros bancos los bits de selección de bancos deben ser modificados, como se muestra en la tabla a continuación:

11 Seleccionar banco de registros

12 Se observa que algunos registros se repiten (mirrored) en más de un banco haciendo más fácil y rápido el acceso a ellos cuando se conmuta a ese banco Por ejemplo, el registro de STATUS se repite en todos los bancos Además un bloque de GPRs al final de cada banco se repite, tal que sus contenidos de datos son disponibles sin cambiar de banco Los bancos de registros son seleccionados con los bits RP0 y RP1 del registro de STATUS. Pero en vez de esto, más convenientemente, la pseudo-operación BANKSEL puede ser usada. El operando para BANKSEL es cualquier registro en ese banco, o su etiqueta. De hecho BANKSEL detecta los bits del banco en la dirección del registro y los copia en los bits de selección de banco del registro de STATUS

13 Power status bits Hay 2 bits de sólo lectura en el reg. de STATUS los cuales indican el estado global de la MCU. El bit Power Down (PD) es limpiado a cero cuando el modo SLEEP es ingresado El bit Tome Out (TO) es limpiado cuando el tiempo del WdT ha finalizado

14 Puertos Hay 5 puertos paralelo en el ‘F877, rotulados A..E Todos los pines pueden ser usados como entradas o salidas digitales orientadas al bit o al byte. Sus funciones alternativas son resumidas en la tabla a continuación:

15 Funciones alternativas de los puertos

16 Se observa que muchos de los pines de los puertos tienen 2 o más funciones, dependiendo de la inicialización de los registros de control asociados Al encender o resetear el sistema, los bits del registro de control de los puertos adoptarán una condición por omisión (ver tabla 2.1 en la hoja de datos, columnas a mano derecha) Los bits del registro TRIS (Dirección sentido de los datos) en el banco 1 por omisión en 1, seteando así los puertos B, C y D como entradas Si esto cumple con los requerimientos no es necesaria mas inicialización ya que otros registros de control relevantes son generalmente reseteados para ofrecer I/O digital sencilla por omisión

17 Sin embargo hay una importante excepción: los puertos A y E son seteados para entrada análoga por omisión, ya que el registro de control análogo ADCON1 en el banco 1por omisión es 0---0000 Para setear estos puertos como entrada digital, este registro debe ser cargado con el código x--- 011x (x = don’t care) digamos 06 Si entrada análoga es requerida sobre solo algunos pines seleccionados, ADCON1 puede ser inicializado con códigos de bit que pueden entregar un mix análogo/digital sobre los puertos A y E Observe que ADCON1 está en el banco 1tal que BANKSEL es necesario para accederlo

18 TIMERS TEMPORIZADORES El ‘F877 posee 3 timers en hwr hoja de datos secciones 5, 6 y 7) Estos son usados para llevar a cabo operaciones de temporización simultáneamente con el programa TIMER0 usa un registro de 8 bits, TMR0, registro de archivo dirección 01 Su salida es un flag de overflow TMROIF, bit 2 del registro de control de interrupciones INTCON, dirección 0B

19 El registro del TIMER es incrementado vía una entrada del reloj la cual es derivada ya sea desde el oscilador MCU (f OSC ) o de un tren de pulsos externos en RA4 El registro cuenta desde 0 a 255 y luego da la vuelta a 0 nuevamente Cuando el registro va desde FF a 00, se setea T0IF Si el reloj interno es usado el registro actúa como un Timer Cada instrucción en la MCU toma 4 ciclos de reloj para su ejecución, así el ciclo de instrucción es f OSC /4

20 Los timers son impulsados desde este reloj de instrucción, el cual puede ser monitoreado externamenteen CLKOUT si el chip está operando con un reloj RC Si es precargado con un valor por ejemplo de 155D, Timer0 contará 100 pulsos de reloj antes que T0IF sea seteado Si el chip está impulsado por un Xtal de 4 MHz, el reloj de instrucción será de 1 MHz y el Timer se sobrepasará despues de 100 uSeg Si esto fuera usado para conmutar sobre una salida, una señal con un periodo exacto de 2x100 uSeg será obtenida

21 Alternativamente, una cuenta de pulsos externos puede ser realizada y leer el registro cuando termine o disparar la lectura por una señal externa Así los Timers pueden ser usados como contadores En la hoja de datos se muestra el diagrama de bloques completo del Timer0, el cual muestra un registro de preescala y el timer watchdog El prescalador es un registro que divide por N, donde N=2, 4, 8, 16, 32, 64. 128 o 256, significando que la razón de la cuenta en la salida es reducida por este factor

22 El intervalo del timer watchdog también puede ser extendido si este es seleccionado como el reloj fuente Los bits de selección de preescala y otros bits de control para el Timer0 se encuentran en OPTION_REG Algunos valores típicos de configuración del Timer0 se muestran en la tabla a continuación:

23

24 Timer1 es un contador de 16 bits, que consiste de un TMR1H y un TMR1L (0E y 0F) El máximo conteo es de 65536 10 Timer2 es un contador de 8 bits – TMR2 – con un preescalador de 4 bits, un posescalador de 4 bits y un comparador Puede ser usado para generar PWM

25 Direccionamiento registro archivo indirecto El registro de archivo 00 (INDF) es usado para direccionamiento registro indirecto La dirección del registro es puesta en el registro seleccionador FSR Cuando el dato es escrito o leído desde INDF es realmente escrito o leído desde el registro de archivo apuntado por FSR Esto es muy usual para extraer una lectura o escritura de un bloque continuo de GPRs, por ejemplo cuando se salva los datos que están siendo leídos desde un puerto sobre un periodo de tiempo Ya que 9 bits son necesarios para direccionar todos los regsitros (000-1FF), el bit IRP en el regsitro de estado es usado como un bit extra

26 Registros de control de interrupción Los registros involucrados en el manejo de una interrupción son: INTCON, PIR1, PIR2, PIE1, PIE2 y PCON Una INT en el PIC resulta siempre en un salto a la dirección de código 004 Si hay mas de una fuente de interrupción, entonces la fuente debe ser detectada y la correspondiente ISR seleccionada Por omisión las INT están deshabilitadas tal que los programas pueden ser cargados con su ORG en 0000 y el significado de la dirección 0004 puede ser ignorado

27 Si INT van a ser usadas la dirección del MAIN debe estar en 0005, o superior y un GOTO START puesto en la dirección 0000 Un GOTO ISR puede ser puesto en la dirección 0004 usando la directiva ORG la cual establece la dirección en la cual la instrucción será puesta por el Assembler El bit Global Interrupt Enable (INTCON, GIE) debe ser seteado para habilitar el sistema de interrupción Por ejemplo, el bit INTCON, T0IE, es seteado para habilitar para que un rebalse del Timer0 dispare la secuencai de interrupción Cuando el Timer0 se rebalsa, INTCON, T0IF (Timer0 Interrupt Flag) se setea para indicar la fuente de la interrupción y la ISR es así llamada

28 Los flags pueden ser verificados por la ISR para establecer la fuente de la INT, si mas de una está habilitada Una lista de fuentes de interrupción y sus bits de control se muestran en la tabla a continuación:

29

30 Las fuentes de INT primarias son el Timer0 y el puerto B La entrada RB0 es usada para interrupción simple Pines RB4..RB7 pueden ser seteados tal que cualquier cambio en estas entradas inicia una INT Esto puede ser usado para detectar cuando un botón o una tecla conectada al puerto B ha sido presionada, y la ISR procesa entonces la entrada correspondientemente Las restantes fuentes de INT son habilitadas por el bit Peripheral Interrupt Enable (INTCON, PEIE)

31 Estos son individualmente habilitados y asociados a un flag en PIE1, PIE2, PIR1 y PIR2 El diseñador debe decidir sobre la prioridad de las INT La profundidad limitada del stack en el PIC debe se tomada en cuenta especialmente si varios niveles de subrutinas son implementados así como múltiples interrupciones

32 Registros de control de periféricos La función de la mayoría de los bloques periféricos y sus configuraciones deben ser estudiadas y analizadas en la hoja de datos del F877 y en los múltiples ejemplos que se encuentran en bibliografía El único periférico que no requiere de conexiones externas es la EEPROM Este es un bloque de memorias R/W no volátil el cual almacena datos durante un power-down, por ejemplo un código de seguridad o una combinación para un candado electrónico Un set de registros en el banco 2 y 3 son usados para acceder a esta memoria

33 Fin TUSistComp_Comp06 JEA/jea


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

Presentaciones similares


Anuncios Google