You are on page 1of 29

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

UNIDAD N 10: DISPOSITIVOS LGICOS PROGRAMABLES INTRODUCCIN Hasta este momento nuestro estudio se centro en el anlisis y diseo de circuitos cableados cuyo principio de funcionamiento se basa en la utilizacin de un circuito especifico para cada aplicacin. Estos circuitos requieren de importantes cambios cuando se intenta adaptarlos a otras aplicaciones o circunstancias distintas a las previstas. Una maquina cableada se muestra grficamente en la figura 10 1

Figura 10 - 1 Algunos factores como el incremento de la complejidad de las funciones, los avances tecnolgicos en la fabricacin de circuitos integrados, etc. Analgica posibilitado la aparicin de los circuitos programados, basados en el Microprocesador como estructura principal de todas las aplicaciones. Se aplica la denominacin Microprocesador a un circuito integrado que contiene los elementos que constituyen la Unidad Central de Proceso (CPU) de una maquina programada llamada genricamente Computador

Figura 10 2: Microprocesador HITACHI 6303

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Las principales funciones del microprocesador son las siguientes a) Direccionamiento de la instruccin a ejecutar: se lleva a cabo mediante un elemento denominado contador de programa, que normalmente se valor incrementando, su valor puede ser modificado con lo que se logra una alteracin en el orden de ejecucin de las instrucciones b) Descodificacin de las instrucciones: las instrucciones se reciben en un cdigo binario y el microprocesador debe interpretar su significado c) Unidad de control y tiempo: : es el componente encargado de generar y transmitir las seales de gobierno y sincronismo a todo el sistema (componentes internos del microprocesador y externos al mismo) d) Unidad aritmtica y lgica : es la encargada de efectuar las operaciones e) Registros : son celdas para almacenamiento de informacin (datos o direcciones) ARQUITECTURA DE VON NEUMAN La arquitectura tradicional de microprocesadores se basa en el esquema propuesto por Von Neuman, en el cual la unidad central de procesos o CPU esta conectada por a una memoria nica que contiene datos e instrucciones y se basa en tres conceptos claves: 1. Los datos y las instrucciones se almacenan en una sola memoria de lectura-escritura. 2. Los contenidos de esta memoria se direccionan indicando su posicin, sin considerar el tipo de dato contenido en la misma. 3. La ejecucin se produce siguiendo una secuencia de instruccin tras instruccin (a no ser que dicha secuencia se modifique explcitamente). Hay un conjunto pequeo de componentes lgicos bsicos que pueden combinarse de formas diferentes para almacenar datos binarios y realizar las operaciones aritmticas y lgicas con esos datos. Si se desea realizar un clculo concreto, es posible utilizar una configuracin de componentes lgicos diseada especficamente para dicho clculo. Se puede pensar en el proceso de conexin de los diversos componentes para obtener la configuracin deseada como si se tratase de una forma de programacin. El programa resultante es hardware, y se denomina programa cableado. Consideremos ahora un hardware de uso general de funciones lgicas y aritmticas, el cual realiza funciones diferentes segn las seales de control aplicadas. Si tratamos del hardware especfico, el sistema solo acepta datos y produce resultados, en cambio, con el hardware de uso general, el sistema acepta datos y seales de control y produce resultados. As, en lugar de reconfigurar el hardware para cada nuevo programa, el programador simplemente necesita proporcionar un nuevo conjunto de seales de control, pero cmo? El programa es una secuencia de pasos. En cada paso, se realiza una operacin aritmtica o lgica con ciertos datos. Para cada paso, se necesita un nuevo conjunto de seales de control. La solucin consiste en asociar un cdigo especfico a cada posible conjunto de seales de control, y aadir al hardware de uso general una parte encargada de generar las seales de control a partir del cdigo.

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Programar ahora es mas fcil, no hay necesidad de reconfigurar el hardware para cada programa, todo lo que se necesita es proporcionar una nueva secuencia de cdigos. Cada cdigo es, de hecho, una instruccin, y una parte del hardware interpreta cada instruccin y genera las seales de control. Para distinguir este nuevo mtodo de programacin, una secuencia de cdigos o instrucciones se denomina software.

Para almacenar temporalmente tanto las instrucciones como los datos, debe existir algn mdulo que lo haga, este mdulo se llama memoria, o memoria principal para distinguirlo de los perifricos y la memoria externa. Von Neumann indic que la misma memoria podra ser usada tanto para las instrucciones como para los datos.

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

El tamao de la unidad de datos o instrucciones esta fijado por el ancho del bus de la memoria, es decir que un microprocesador de 8 bits que tiene adems un bus de 8 bits que lo conecta con la memoria, deber manejar datos e instrucciones de una o mas unidades de 8 bits (BYTE) de longitud. Cuando deba acceder a una instruccin o dato de mas de un BYTE deber realizar mas de un acceso a memoria. Por otro lado este bus nico limita la velocidad del microprocesador ya que no se puede buscar en memoria una nueva instruccin antes de que finalicen las transferencias de datos que pudieran resultar de la instruccin anterior. Es decir que las principales limitaciones de este modelo son: a) Que la longitud de las instrucciones esta limitada por la unidad de longitud de los datos b) Que la velocidad de operacin esta limitada por el efecto de cuello de botella que significa disponer de un bus nico para datos e instrucciones

CPU

BUS

MEMORIA

ARQUITECTURA HARVARD Esta arquitectura consiste en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa y la otra almacena los datos. Ambos buses son totalmente independientes y

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido (RISC), el set de instrucciones y el bus de memoria del programa pueden disearse de manera tal que todas las instrucciones ocupen una sola posicin de memoria. Adems como los buses son independientes el CPU puede estar accediendo a los datos para completar la ejecucin de una instruccin y al mismo tiempo estar leyendo la prxima instruccin. Las principales ventajas de esta arquitectura son. a) Que el tamao de las instrucciones no esta relacionado con el de datos y por lo tanto puede ser optimizado para que cualquier instruccin ocupe una sola posicin de memoria b) Que el tiempo de acceso a las instrucciones puede superponerse con el de datos logrando una mayor velocidad de operacin. MEMORIA DE PROGRAMA

BUS

CPU

BUS

MEMORIA DE DATOS

ARQUITECTURA INTERNA DE UN MICROPROCESADOR Para poder analizar el funcionamiento del microprocesador partiremos de una estructura interna simplificada que nos permita analizar la funcin de cada uno de sus principales bloques constitutivos. La figura 10 5 presenta esta estructura interna

Figura 10 - 5

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

CONTADOR DE PROGRAMA: contiene la direccin de la prxima instruccin a ejecutar, se incrementa automticamente pero puede ser alterada, su tamao en bits esta directamente relacionada con el tamao del bus de direcciones. Al resetearse un microprocesador el contador de programa asume siempre la misma direccin, siendo esta la direccin de arranque de programa y en ella se deber colocar una instruccin de salto a la direccin inicial del programa que se quiere ejecutar DECODIFICADOR DE INSTRUCCIONES: recibe la instruccin en cdigo binario e interpreta su significado UNIDAD DE CONTROL Y TEMPORIZACION: genera y transmite las seales de gobierno y sincronismo UNIDAD ARITMTICA Y LGICA : ejecuta las operaciones que pueden implicar hasta dos operandos. Un diagrama simplificado de la ALU seria:

ALU Seleccin de la operacin Salidas de condicin. Al registro de estado Circuitos de procesamiento aritmtico y lgico Resultados Al acumulador

Operando A (8) Operando B (8)

La ALU produce dos conjuntos de salidas, un conjunto es el resultado de la operacin, el otro es un conjunto de seales que se envan al registro de estado para indicar diferentes situaciones referentes a la ultima operacin realizada. Por ejemplo si el resultado de la ultima operacin fue cero el bit Zdel registro de estado se pone en 1 o si ocurri un acarreo en el ultimo bit el bit C del registro de estado se pone en 1, etc. Las entradas de operando provienen de varias fuentes como ser de memoria, de registros auxiliares del microprocesador. Algunas operaciones que se realizan con un solo operando son: Borrar : todos los bits del operando son puestos en cero

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

1 0 1 0 1 0 1 1 C 0 1

1 0

0 0

1 0

1 0

0 0

1 0

1 0

Antes de la operacin Despus de la operacin

Complementar o invertir: todos los bits cambian de nivel lgico 1 0 0 1 1 0 1 0 0 1 1 0 1 0 Antes de la operacin Despus de la operacin

Incrementar: Sumarle uno al operador 1 0 0 0 1 0 1 0 0 1 1 0 1 0 Antes de la operacin Despus de la operacin

Disminuir: Restarle uno al operador 1 1 0 0 1 1 1 1 0 0 1 1 1 0 Antes de la operacin Despus de la operacin

Rotar: En esta operacin interviene el bit de acarreo 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 Antes de la operacin Despus de la operacin

Algunas operaciones con dos operandos son: Sumar y Restar : El sumador elemental de un bit ya lo hemos visto en captulos anteriores y lo resumimos en la A B siguiente figura. A partir del sumador elemental de un bit se puede construir un sumador restador completo como Cout Cin el de la figura, en el cual cuando la seal s/r vale 0 se realiza una suma S entre los operandos A y B, sin embargo cuando s/r vale 1 se realiza la suma del complemento del operando B, es decir que se suma B.

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Multiplicar y Dividir : a partir de la metodologa conocida de multiplicacin se puede construir un multiplicador utilizando sumadores elementales de un bit. El truco del diseo de la figura siguiente consiste en habilitar que se sume el multiplicando A n-1 ... A0 o una fila de ceros mediante una puerta AND que valor al bit correspondiente del multiplicador Bm-1 ... B0. El desplazamiento de los resultados parciales se realiza desplazando la conexin de salida de los sumadores da la siguiente fila de sumadores. Los acarreos se propagan a travs de toda la red de multiplicadores.

Esta aproximacin llamada Aproximacin combinacional suele no se r muy usada por la cantidad de componentes que implica, es por eso que se han desarrollado otros mtodos que a costa de ser mas lentos, reutilizan la circuiteria de la suma y multiplicacin y por ello requieren de menos componentes. En la siguiente figura se muestra un multiplicador secuencial, en este circuito se supone que el

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

multiplicando es A n-1 .... A0 y el multiplicador es B m-1 ... B0. El circuito consta de un sumador de n bits, un registro acumulador S de desplazamiento de n bits (con seales de carga en paralelo LOAD y desplazamiento SHIFT), un registro de desplazamiento M de m bits y un registro C de 1 bit para almacenar el desbordamiento. La unidad de control no es mas que una maquina de estados que realiza el algoritmo: 1. Se activa la seal reset de todos los registros i = 0 2. Mientras i < m hacer Si Bi = 1 entonces activar la seal de carga LOAD, cargando en S el resultado de la suma y en C el acarreo Desplazamiento a la derecha (activar la seal SHIFT) cargando en M m-1 el bit saliente de S0 i i+1

Comparar AND Lgica OR Lgica

REGISTROS DE TRABAJO: almacenamiento de datos y direcciones. Estos registros pueden, en algunos microprocesadores, utilizarse solos o de a pares, segn se almacene un dato o una direccin. Registro Auxiliar B 16 bits BH BL

8 bits mas signif.

8 bits menos signif

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

REGISTRO DE ESTADO: contiene informacin sobre el estado interno de la CPU despus de haber realizado una instruccin. Se compone de una serie de bits llamados FLAGS que pueden ser consultados por el programador en cualquier momento. Bit 7 S Bit 6 Z Bit 5 X Bit 4 H Bit 3 X Bit 2 P/V Bit 1 N Bit 0 C

C: Indicador de acarreo N: Indicador de suma / resta P/V: Indicador de Paridad / desbordamiento H: Indicador de acarreo en el cuarto bit Z: Indicador de cero S: Indicador de signo X: No usado PUNTERO DE STACK: direcciona una posicin de memoria (STACK) donde se almacenan ciertos elementos significativos de la CPU. El uso del puntero y de la pila o STACK permiten la anidacin de subrutinas. La pila o STACK es una zona de memoria reservada, el puntero indica la direccin de la ultima entrada de datos a la pila dado que la pila es del tipo ultimo en entrar primero en salir ACUMULADOR: Es un registro que tiene la particularidad de que en el se depositan los resultados de una operacin realizada por la Unidad Aritmtica. El acumulador por lo general tiene el mismo numero de bits que el tamao de la palabra de datos.

DIAGRAMAS DE TIEMPO La unidad bsica de tiempo es el estado que es un ciclo de reloj (clock). Un ciclo de maquina consta de 3 a 6 estados. Las operaciones requieren entre uno y cinco ciclos de maquina para completar su ejecucin. En la figura siguiente se representa la relacin entre los diferentes ciclos del microprocesador.

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Figura 10 - 7 Si por ejemplo la frecuencia de trabajo del microprocesador es de 2MHz, el ciclo de reloj tendr una duracin de 500 ns, por cuanto la instruccin mas rpida, al constar de 4 ciclos ser de 500 * 4 = 2000 ns. A continuacin se describir el diagrama de tiempos de una instruccin OUT (en forma genrica)

Figura 10 - 8 En el primer ciclo de maquina M1 se busca el cdigo de la instruccin en la memoria (FETCH) En el segundo ciclo M2 se busca en memoria el segundo Byte de la instruccin (la direccin de la puerta de salida) y durante M3 se ejecuta la instruccin y el dato es escrito en la puerta de salida. Los datos marcados como (1) consisten en el cdigo de operacin de la instruccin que son ledos de memoria (ver que esta activa la seal read), los marcados como (2) corresponden al la segunda parte de la instruccin y tambin se leen de la memoria y los marcados con (3) son los datos escritos en el puerto de entrada / salida (IO) (ver que se activa la seal write)

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Si ahora analizamos lo que sucede durante el ciclo de bsqueda podemos diferenciar las siguientes fases: El contenido del contador de programas (PC) pasa al bus de direcciones con lo que se selecciona la posicin de memoria donde esta la instruccin que se debe ejecutar El contador de programa (PC) se incremente automticamente El dato contenido en la memoria (corresponde al cdigo de operacin de la instruccin) se coloca en el bus de datos e ingresa por esta va al registro de instrucciones Se decodifica la instruccin, el micro procesador genera las ordenes de control para la ejecucin de la instruccin

Figura 10 - 9

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

FAMILIA DE COMPONENTES RELACIONADOS CON EL MICROPROCESADOR Un sistema construido alrededor de un microprocesador requiere de otros componentes como ser : los mdulos de entrada / salida, la memoria y algunos otros componentes auxiliares que permitan el trabajo en equipo de toda la estructura. Precisamente una de las razones que motiva la eleccin de un microprocesador determinado es la variedad y potencia de los componentes que forman su familia A continuacin se mencionan algunos componentes de uso general: 1. COMPONENTES AUXILIARES 1.1. Decodificador binario: para seleccionar memoria o puertos de E / S. En la figura 1010 se muestra un esquema de un decodificador y un esquema de su aplicacin en circuitos de seleccin 1.2. Driver para bus bidireccional: se emplea como buffer. En la figura 10-11 se muestra la estructura interna de este circuito y su tabla de funcionamiento

Figura 10 10 Decodificador binario / decimal, utilizado para seleccionar uno de ocho puertos de entrada / salida

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Figura 10 11 Estructura y tabla de funcionamiento de un Driver bidireccional 2. MEMORIAS 2.1. RAM esttica 2.2. RAM dinmica 2.3. ROM 2.4. Controlador de refresco

Figura 10 12: RAM esttica

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Figura 10 13 : conexin en paralelo de memoria para extender la longitud de la palabra

Figura 10 14 : conexin en paralelo de memoria para extender la cantidad de palabras 3. MDULOS DE ENTRADA / SALIDA 3.1. Transmisor / receptor universal sincrnico / asincrnico: perifrico programable destinado a la comunicacin serie 3.2. Temporizador programable: contadores programables 3.3. Perifrico de interfaz programable (PIA): puertos paralelos programables como entrada o salida de datos 3.4. Controlador programable de acceso directo a memoria: diseado para simplificar la transferencia de datos a alta velocidad entre los perifricos y la memoria

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Figura 10 15 : USART

Figura 10 16 : conexin entre perifricos y microprocesador a tras de una PIA

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

MICROCONTROLADORES PIC Ante la necesidad de realizar una experiencia practica con microprocesadores se ha adoptado a los microcontroladores PIC como herramienta de desarrollo por su reducido costo y facilidad de implementacin en circuitos de estudio. Es por ello que en primer lugar estudiaremos su estructura interna y analizaremos en detalle su funcionamiento. En la figura 10 17 vemos la estructura interna del microcontrolador PIC16C8x, e la cual se pueden diferenciar los bloques funcionales de este circuito integrado En primer lugar debemos decir que no es exactamente un microprocesador sino un microcontrolador dado que adems de los bloques tpicos del microprocesador encontraremos dentro del CI algunas funciones adicionales tales como memoria RAM, memoria EEPROM, etc.

Figura 10 17 : estructura interna del microcontrolador PIC16C84

Memoria Interna (RAM) : La memoria interna de datos (tambin llamada register file), esta dividida en dos grupos: los registros especiales y los registros de propsito generales. Los primeros ocupan las 11 posiciones primeras que van desde la 00 a la 07, y los segundos las

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

posiciones que siguen, o sea de la 08 a la 4F. Los registros especiales contienen: la palabra de estado (STATUS), los registros de datos de los tres puertos de entrada salida (Puerto A, Puerto B, Puerto C), los 8 bits menos significativos del program counter (PC), el contador del Real Time Clock / Counter (RTCC) y un registro puntero llamado File Select Register (FSR). La posicin 00 no contiene ningn registro en especial y es utilizada en el mecanismo de direccionamiento indirecto. Los registros de propsito general se dividen en dos grupos: los registros de posicin fija y los bancos de registros. Los primeros ocupan las 8 posiciones que van de la 08 a la 0F los bancos de registros consisten en hasta cuatro grupos o bancos de 16 registros cada uno que se encuentran superpuestos en las direcciones que van de la 10 a la 1F. Se puede operar con un solo banco a la vez, el cual se selecciona mediante los bits 5 y 6 del File Select Register (FSR). 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F DIRECCIN INDIRECTA TRC PC STATUS FSR PORT A PORT B PORT C 10 11 12 13 14 15 16 17 18 19 1 1B 1C 1D 1E 1F BANCO 0 1 2

Organizacin de la memoria interna del PIC 16C5x Memoria de Programa: La memoria de programa, que en los PIC16C5X puede ser de 512 a 2K instrucciones, debe ser considerada a los efectos de la programacin, como compuesta por secciones o pginas de 512 posiciones. A su vez cada pgina debe considerarse dividida en dos mitades de 128 posiciones cada una. Esto se debe, como se ver, a las limitaciones de direccionamiento de las instrucciones

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Pagina 0 de 000H a 1FFH, Pagina 1 de 200H a 3FFH, Pagina 2 de 400H a 5FFH y Pagina 4 de 600H a 7FFH, El registro W y la ALU: La figura 10 - 18 representa un diagrama simplificado de la arquitectura interna del camino de los datos en la CPU Se puede observar que la diferencia principal entre el microprocesador tradicional y el PIC radica en la ubicacin del registro de trabajo, que para el PIC se denomina registro W y para el microprocesador tradicional se llama Acumulador

Figura 10 18 En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La salida del acumulador esta conectada a una de las entradas de la Unidad Aritmtica y Lgica (ALU), y por lo tanto ste es siempre uno de los dos operandos de cualquier instruccin. Por convencin, las instrucciones de simple operando (borrar, incrementar, decrementar, complementar), actan sobre el acumulador. La salida de la ALU va solamente a la entrada del acumulador, por lo tanto el resultado de cualquier operacin siempre quedara en este registro. Para operar sobre un dato de memoria, luego realizar la operacin siempre hay que mover el acumulador a la memoria con una instruccin adicional. En Ios microcontroladores PIC, la salida de la ALU va al registro W y tambin a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro W, como ocurra en el modelo tradicional con el acumulador. En las instrucciones de simple operando el dato en este caso se toma de la memoria (tambin por convencin). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya sea de simple o doble operando, puede

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

dejarse en la misina posicin de memoria o en el registro W, segn se seleccione con un bit de la misma instruccin. Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W. En la memoria de datos de los PIC's se encuentran ubicados casi todos los registros de control del microprocesador y sus perifricos autocontenidos, y tambin las posiciones de memoria de usos generales. En el caso de los 16C5X, algunos registros especiales de solo escritura (TRIS y OPTION) no estn accesibles dentro del bloque de memoria de datos, sino que solo se pueden cargar desde el registro W por medio de instrucciones especiales. Contador de Programa: Este registro, normalmente denominado PC, es totalmente equivalente al de todos los microprocesadores y contiene la direccin de la prxima instruccin a ejecutar. Se incrementa automticamente al ejecutar cada instruccin, de manera que la secuencia natural de ejecucin del programa es lineal, una instruccin despus de la otra. Algunas instrucciones que llamaremos de control, cambian el contenido del PC alterando la secuencia Lineal de ejecucin. Dentro de estas Instrucciones se encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programa salte a cualquier posicin de la memoria. Otras instrucciones de control son los SKIP o "saltos" condicionales, que producen un incremento adicional del PC si se cumple una condicin especifica, haciendo que el programa salte, sin ejecutar, la instruccin siguiente. El PC es un registro de 9 bits en los 16L54155, 10 bits en el 16C56, y 11 bits en el 16C57, lo que permite direccionar respectivamente 512, 1024 o 2048 posiciones de memoria de programa. Al resetearse el microprocesador, todos los bits del PC toman valor 1, de manera que la direccin de arranque del programa es siempre la ultima posicin de memoria de programa. En esta posicin se deber poner una instruccin de salto al punto donde verdaderamente se inicia el programa. A diferencia de la mayora de los microprocesadores convencionales, el PC es tambin accesible al programador como registro de memoria interna de datos, en la posicin de 02. Es decir que cualquier instruccin comn que opere sobre registros puede ser utilizada para alterar el PC y desviar la ejecucin del programa. El uso indiscriminado de este tipo de instrucciones complica el programa y puede ser muy peligroso, ya que puede producir comportamientos difciles de predecir. Sin embargo, algunas de esta instrucciones utilizadas con cierto mtodo, pueden ser muy tiles para implementar poderosas estructuras de control tales como el goto computado. Como el microprocesador opera con datos de 8 bits, y la memoria de datos es tambin de 8 bits, estas instrucciones solo pueden leer o modificar los bits O a 7 del PC. Stack: En los microcontroladores PIC el stack es una memoria interna dedicada, de tamao, limitado, separada de las memorias de datos y de programa, inaccesible al programador, y organizada en forma de pila, que es utilizada solamente, en forma automtica, para guardar las

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

direcciones de retorno de subrutinas e interrupciones. Cada posicin es de 11 bits y permite guardar una copia completa del PC. Como en toda memoria tipo pila, los datos son accedidos de manera tal que el primero que entra es el ultimo que sale. En los 16C5X el stack es de solo dos posiciones, mientras que en los 16CXX es de 8 posiciones y en los 17CXX es de 16 posiciones. Esto representa, en cierta medida, una limitacin de estos microcontroladores, ya que no permite hacer uso intensivo del anidamiento de subrutina. En los 16C5X, solo se pueden anidar dos niveles de subrutinas, es decir que una subrutina que es llamada desde el programa principal, puede a su vez llamar a otra subrutina, pero esta ultima no puede llamar a una tercera, porque se desborda la capacidad del stack, que solo puede almacenar dos direcciones de retomo. Esto de hecho representa una traba para el programador y adems parece impedir o dificultar la programacin estructurada, sin embargo es una buena solucin de compromiso ya que estos microcontroladores estn diseados para aplicaciones de alta velocidad en tiempo real, en las que el overhead (demoras adicionales) que ocasiona un excesivo anidamiento de subrutinas es inaceptable. Por otra parte existen tcnicas de organizacin del programa que permiten mantener la claridad de la programacin estructurada, sin necesidad de utilizar tantas subrutinas anidadas. Como ya se menciono anteriormente, el stack y el puntero interno que lo direcciona, son invisibles para el programador, solo se los accede automticamente para guardar o rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamada o retorno de subrutinas, o cuando se produce una interrupcin o se ejecuta una instruccin de retorno de ella. Palabra de Estado del Procesador : La palabra de estado del procesador contiene los tres bits de estado de la ALU (C, DC y Z), y otros bits que por comodidad se incluyeron en este registro. Bit 7 PA2 Bit 6 PA1 Bit 5 PA0 Bit 4 Bit 3 T0 PD Registro STATUS Bit 2 Z Bit 1 DC Bit 0 C

El bit Z indica que el resultado de la ultima operacin fue CERO. El bit C indica acarreo del bit ms significativo (bit 7) del resultado de la ultima operacin de suma. En el caso de la resta se comporta a la inversa, C resulta 1 si no hubo pedido de prstamo. El bit DC (digit carry) indica acarreo del Cuarto bit (bit 3) del resultado de la ultima operacin de suma o resta, con un comportamiento anlogo al del bit C, y es til para operar en BCD (para sumar o restar nmeros en cdigo BCD empaquetado). EI bit C es usado adems en las operaciones de rotacin derecha o izquierda como un paso intermedio entre el bit O y el bit 7. El bit PD (POWER DOWN) sirve para detectar si la alimentacin fue apagada y encendida nuevamente, tiene que ver con la secuencia de inicializacin, el watch dog- timer y la instruccin sleep, y su uso se detallara en la seccin referida al modo POWER DOWN. El bit

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

TO (TIME- OUT) sirve para detectar si una condicin de reset fue producida por el watch dog timer, esta relacionado con los mismos elementos que el bit anterior y su uso se detallara en la seccin referida al WATCH DOG TIMER, Los bits de seleccin de pagina PA0 / PA1 / PA2 se utilizan en las instrucciones de salto GOTO y CALL, y se explicaran con detalle en la seccin referida a las instrucciones de control, y a la organizacin de la memoria de programa. En realidad en el 16C54 estos bits no se usan y sirven para propsitos generales. En el 16C57 el PA0 si se usa pero los otros dos no. En el 16C55 se utilizan PA0 y PA1. PA2 esta reservado para uso futuro y en cualquiera de los PIC 16C5x sirve para propsitos generales Otros registros especiales: Las 8 primeras posiciones del rea de datos estn reservadas para alojar registros de propsito especial, quedando las restantes libres para contener los datos u operandos que se desee El registro INDF que ocupa la posicin 00h no esta implementado fsicamente y como se ha explicado, se le referencia en el direccionamiento indirecto de datos aunque se utiliza el contenido de FSR (04h) En la direccin 01h esta el registro TMR0 (temporizador) que puede ser ledo y escrito como cualquier otro registro. Puede incrementar su valor con una seal externa aplicada al pin T0CK1 o mediante un oscilador interno El PC ocupa la posicin 02h del rea de datos en donde se halla el registro PCL al que se aaden 3 bits auxiliares y se conectan con los dos niveles de la pila en las instrucciones CALL y RETLW El registro de estado (STATUS) ocupa la posicin 03h y entre sus bits se encuentran los sealizadotes C, DC y Z y los bits PA1 y PA0 que seleccionan la pagina en la memoria de programa. El bit 7 (PA2) no esta implementado en los Pic de la gama baja FRS se ubica en la direccin 04h y puede usarse para contener las direcciones del dato en las instrucciones con direccionamiento indirecto y tambin para guardar operandos en sus 5 bits de menor peso Los registros que ocupan la posicin 05h, 06h y 07h soportan los puertos A, B y C de entrada / salida. Pueden ser ledos y escritos como cualquier otro registro y manejan los valores de los bits que entran y salen por los pines de E/S del microcontrolador. PUERTOS DE ENTRADA / SALIDA Los microprocesadores PIC16C5X tienen dos o tres puertos de entrada / salida paralelo de usos generales llamados puerto A, puerto B y puerto C. El Puerto A es de cuatro bits y los dems son de 8 bits cada uno. El Puerto C solamente esta disponible en el 16C55 y el 16C57. Los puertos pueden configurarse como entrada o salida a travs de los registros TRISx, colocando un 1 en un bit de este registro, el bit correspondiente del PORTx se configura como entrada. Colocando un 0 en TRISx el PORTx se configura como salida

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Direcc. Nombre Bit 7 05h PORTA 85h TRISA -

Bit 0 RA4/TOCKI RA3 RA2 RA1 RA0 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0

Direcc. Nombre Bit 7 Bit 0 06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 Circuito equivalente: El circuito equivlete para un bit cualquiera de un puerto de entrada / salida se representa en la figura 10 - 19

Figura 10 19 : circuito equivalente de un puerto de E / S EI latch L1 corresponde a un bit del registro de datos del puerto, mientras que L2 es un bit del registro de control de tristate del mismo. B1 es el buffer tristate de salida que tiene capacidad de entregar 20 mA y drenar 25 mA. B1 es controlado por L2. Si L2 tiene cargado un "1", B1 se encuentra en tri-state, es decir con la salida desconectada (en alta impedancia), y el puerto puede ser usado como entrada. Si L2 tiene cargado un "O", la salida de B1 esta conectada (baja impedancia) y el puerto esta en modo de salida. B2 es el buffer de entrada, es decir el que pone los datos en el bus interno del microcontrolador cuando se lee el registro de datos del puerto. Puede verse que el dato ledo es directamente el estado del pin de entrada.

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

TEMPORIZADOR / CONTADOR (RTCC) Este dispositivo, llamado Real Time Clock / Counter, es bsicamente un contador de 8 bits, constituido por el registro operacional RTCC que se encuentra en la posicin 01 de la memoria de datos. Este registro puede usarse para contar eventos externos por medio de un pin de entrada especial (modo contador) o para contar pulsos internos de reloj de frecuencia constante (modo timer). Adems, en cualquiera de los dos modos, se puede insertar un prescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler del RTCC o como postscaler del Watch Dog Timer, segn se lo programe. Para su programacin se dispone de 2 registros: el TRC ya mencionado y el registro OPTION. Este Ultimo no es accesible como memoria de datos, no se lo puede leer de ninguna manera, y solo se lo puede escribir con la instruccin especial OPTlON (familia PIC 16C5X). Este registro contiene los bits necesarios para seleccionar modo contador o modo timer, flanco de conteo en modo contador, prescaler para RTCC o para WDT y constante de divisin del prescaler, segn el siguiente esquema: El registro OPTION contiene bits de control que pueden ser modificados para configurar el Timer y las interrupciones externas (familia PIC 16F8X) Bit 7 RBPU INTEDG TOCS PS2:PS0 TOSE Valor PSA PS2 PS1 Bit 0 PS0

PSA

Escala Escala TMR0 WDT 000 1:2 1:1 001 1:4 1:2 010 1:8 1:4 011 1:16 1:8 100 1:32 1:16 101 1:64 1:32 110 1:128 1:64 111 1:256 1:128 Bit para asignar la escala 1 = asigna a WDT 0 = asigna a TMR0

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Bit para seleccionar la forma de transicin del timer 1 = incrementa con una transicin de alto a bajo en el pin TOCK1 0 = incrementa con una transicin de bajo a alto en el pin TOCK1 TOCS Bit para seleccionar el CLOCK 1 = Transicin en el pin TOCK1 0 = Interno INTEDG Bit para seleccionar la forma de (No implementado en interrupcin PIC 16C5x) 1 = interrumpe con rising edge en el pin RB0/INT 0 = interrumpe con falling edge en el pin RB0/INT RBPU Bit para habilitar la resistencia de (No implementado en PULL-UP en el puerto B PIC 16C5x) 1 = habilita 0 = deshabilita A continuacin se muestra un circuito equivalente del RTCC (TMRO) y el prescaler.

TOSE

En la figura se puede observar claramente como operan los bits de configuracin T0SE, T0CS y PSA, en cualquiera de sus combinaciones. Se observa adems que en la entrada del contador RTCC hay un circuito de sincronizacin que introduce una demora de dos ciclos del clock de instrucciones ( fosc. / 4). Al escribir sobre el RTCC automticamente se resetea este circuito, por lo tanto solo se incrementara dos ciclos despus. El prescaler es un contador asincrnico de 8 bits ms un multiplexor 8 a 1 comandado por los bits PS0 a PS2, que permite seleccionar como salida a cualquiera de los bits del contador. Al

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

escribir sobre el RTCC, si este esta programado para operar con prescaler (PSA = O), se borra automticamente el prescaler. Las instrucciones CLRWDT y SLEEP borran el prescaler, si este esta programado para operar como postscaler del watch dog timer ( PSA = 1). INTERRUPCIONES Los PIC 16Cxx agregan la posibilidad de contar con sistema de interrupciones. Este sistema consiste en un mecanismo por el cual un evento interno o externo, asincrnico respecto del programa, puede interrumpir la ejecucin de ste produciendo automticamente un salto a una subrutina de atencin, de manera que pueda atender inmediatamente el evento, y retomar luego la ejecucin del programa exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es muy til por ejemplo para el manejo de timers o rutinas que deben repetirse peridicamente (refresco de display, antirrobote de teclado, etc.), deteccin de pulsos externos, recepcin de datos, etc. Existen de tres a doce eventos que pueden generar interrupciones en los PIC 16CXX existentes hasta el momento, pero nada impide que puedan agregarse ms en versiones futuras. Funcionamiento : En los 16CXX las interrupciones se comportan casi exactamente igual que las subrutinas. Desde el punto de vista del control del programa, al producirse una interrupcin se produce el mismo efecto que ocurrira si el programa tuviese un CALL 0004h en el punto en que se produjo la interrupcin. En uno de los registros de control del sistema de interrupciones existe un bit de habilitacin general de interrupciones GIE, que debe ser programado en 1 para que las interrupciones puedan actuar. Al producirse una interrupcin, este bit se borra automticamente para evitar nuevas interrupciones. La instruccin RETFIE que se utiliza al final de la rutina de interrupcin, es idntica a un retorno de subrutina, salvo que adems coloca en uno automticamente el bit GIE volviendo a habilitar las interrupciones. Dentro de la rutina de interrupcin, el programa deber probar el estado de los flags de interrupcin de cada una de las fuente habilitadas, para detectar cual fue la que causo la interrupcin y as decidir que accin tomar

Figura 10 20 : lgica de interrupciones

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Fuentes : La seal que produce la interrupcin es en realidad una sola, que resulta de la combinacin de todas las fuentes posibles y de los bits de habilitacin. Existen dos grupos de fuentes, unas que se habilitan con solo colocar en uno el bit GIE, y otras que adems necesitan que este puesto a uno el bit EEIE. En algunas versiones de los 16CXX solo existe el primer grupo. Adems, cada fuente de interrupciones tiene su respectivo bit de habilitacin individual. Las fuentes de interrupcin varan con cada versin, y pueden ser por ejemplo: Interrupcin externa por pin RBO/INT Desborde del Timer 0 o RTCC Cambio en el estado de los bits 4 a 7 del puerto B Desborde del timer 1 Desborde del timer 2 Interrupcin del capture / compare 1 Interrupcin del capture / compare 2 transmisin o recepcin de un carcter por la interfase serie sincrnica transmisin o recepcin de un carcter por la interfase serie asincrnica Fin de conversin A/D Lectura / escritura del puerto paralelo de comunicacin con otros microprocesadores Escritura de EEPROM finalizada CONFIGURACIN DEL OSCILADOR Los PICs pueden operar con diferentes configuraciones del oscilador . El usuario puede configurar el tipo de oscilador a travs de dos bits del registro de configuracin (FOSC1 y FOSC0) de algunas de las siguientes formas posibles: bit 3 bit 2 WDTE bit 1 FOSC1 bit 0 FOSC0

LP XT HS RC

Low Power Crystal Crystal / Resonator High Speed Crystal / Resonator Resistor / Capacitor

FOSC1 / FOSC0 = 00 FOSC1 / FOSC0 = 01 FOSC1 / FOSC0 = 10 FOSC1 / FOSC0 = 11

En los modos XT, LP y HS un cristal es conectado a las lineas OSC1/CLKIN y OSC2/CLKOUT

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Freq. C1 C2 32 kHz 68 100pf 68 100pf 200kHz 15 33 pf 15 33 pf XT 100kHz 100 150 pf 100 150 pf 2MHz 15 33 pf 15 33 pf 4MHz 15 33 pf 15 33 pf HS 4MHz 15 33 pf 15 33 pf 10MHz 15 33 pf 15 33 pf Si Vdd > 4,5 V C1 = C2 = 30 pf (recomendado LP

Modo

En aplicaciones de bajo costo se puede implementar un oscilador RC

Power ON / Reset La lnea de Reset puede conectarse de forma tal que produzca un Reset al encenderse el equipo. El pulsador permite el reset del sistema en cualquier momento.

Microcontroladores Teora Arquitectura de Computadoras

Ingeniera en Sistemas de Informacin UNCAUS Ao 2010

Bibliografa Introduccin a los microcontroladores Jos Adolfo Gonzlez V. McGraw Hill Sistemas Digitales Ruiz, Espinoza, Roure McGraw Hill Microprocesadores RISC Evolucin y Tendencias Clemente Rodrguez, Olatz Arregui, Perez Alfaomega Estructura de computadores y Perifricos Martinez Dura, Grau, Solano Alfaomega Microprocesadores Fundamentos, diseo y aplicaciones Angulo Paraninfo Microcontroladores PIC Tavernier Paraninfo Microcontroladores PIC, La solucin en un solo chip Angulo Paraninfo Microcontroladores PIC, Diseo de aplicaciones Angulo y otros McGraw Hill Cursos sobre Microcontroladores PIC, Niveles Bsico y Avanzado Tekcien Ltda. PIC 16/17 microcontroller data Book Microchip MPASM assembler. Users Guide Microchip www.microchip.com Ctedra Aplicacin Industrial de Micros Universidad Antonio Nario