EJERCICIO 2
Transcripción
EJERCICIO 2
SISTEMAS ELECTRONICOS DIGITALES DIRECCIONAMIENTO DE REGISTROS Las líneas de entrada-salida digitales del PIC16X84 llamadas puertas(PUERTOS), PUERTA A Y PUERTA B, que se denominan PA y PB. En este caso PA sólo posee 5 líneas (RA0-RA4) mientras que PB consta de 8 líneas (RB0-RB7). Tanto las líneas de una puerta como de otra pueden actuar de forma independiente como entrada o salida. Todos los recursos del PIC se manejan como registros de 8 bits que están implementados físicamente como posiciones de la memoria de datos RAM. El valor de los datos que entran o salen por PA y PB están contenidos en dos posiciones de la RAM, que en el caso del PIC 16X84 corresponden a las direcciones 5 y 6, respectivamente. Existen otros dos registros o posiciones de la RAM que se emplean para configurar las líneas de PA y PB como entrada o salida, de tal forma que cuando en uno de los bits de estos registros se graba un 1, la línea correspondiente de la puerta afectada actúa como entrada; mientras que si se graba un 0, actúa como salida. A estos registros de configuración de las puertas se les denomina TRISA, al que controla PA, y TRISB, al que lo hace con PB. La memoria de datos del PIC16F84 está dividida en dos bancos: banco 0 y banco 1, de 8 bits cada uno. En las posiciones 5 y 6 del banco 0 se ubican los registros PUERTAA y PUERTAB, que contienen el byte de información que ha entrado o va a salir por las líneas de dichas puertas. Con igual situación, pero en la banco 1, se hallan situados los registros TRISA y TRISB que configuran la dirección de cada línea. Cuando se conecta la alimentación al PIC o se reinicializa su funcionamiento mediante un Reset, se activa automáticamente el acceso al banco 0. Si se desea acceder a posiciones del banco 1 hay que poner a 1 el bit 5 de un registro llamado ESTADO(STATUS) y que ocupa, duplicado, dos posiciones que tienen la dirección 3 del banco 0 y del banco 1. 1 Si, por ejemplo, se quisiese configurar como entradas a todas las líneas de la PUERTAA y como salidas a las de la PUERTAB, habría que cargar con un 1 a todos los bits de TRISA y con un 0 a todos los bits de TRISB. Suponiendo que el bit 5 del registro ESTADO valiese 1 y se pudiese acceder al banco 1, las instrucciones necesarias para realizar la configuración de las dos puertas sería: movlw 0xff ;ff se carga enW movwf 0x05 ;W> TRISA ,las lineas de PA SE CONFIGURAN COMO ENTRADAS movlw 0x00; 0 se carga en W movwf 0x06 ;W>TRISB, las lineas de PB son salidas Cuando se comienza a trabajar por primera vez con elPIC16X84, el bit 5 del registro ESTADO se carga automáticamente con un 0, con lo que se permite el acceso a las posiciones del banco O de la memoria de datos. Para configurar las líneas de las puertas hay que acceder a los registros TRISA y TRISB que se hallan en el banco 1, por lo que, previamente a cargar en ellos los valores adecuados, hay que poner a 1 el bit 5 de ESTADO. Una vez configuradas las puertas, habrá que volver a poner a O el bit 5 del registro ESTADO para poder leer la información introducida por las líneas que funcionan como entradas o para poder enviar al exterior los bits colocados sobre las líneas de salida, cuyos valores se hallan en las posiciones 5 y 6 del banco 0. INSTRUCCIÓN bsf bsf f,b: Pone a 1 el bit «b» del operando fuente «f», que es una posición de la memoria de datos o registro. (s=set) 2 EJEMPLO:La instrucción bsf 03, 5 pone a 1 el bit 5 de la posición 3 de la memoria de datos, que se ubica en el registro STATUS. INSTRUCCIÓN bcf (REVISE LA TABLA RESUMEN DE INSTRUCCIONES Y EXPLIQUE) A diferencia de las instrucciones de movimiento, esta instrucción no varía un registro completamente al utilizarla, sino que sirve para modificar bits individuales, dejando el resto como estaba. Esto es especialmente útil en el uso de algunos registros específicos, donde cada bit tiene un significado y se necesita tratar cada uno en un momento determinado, sin que los demás varíen. Un ejemplo muy típico de esto es el cambio de banco; normalmente se trabaja en el banco O, pero en la mayoría de los programas es necesario acceder al banco 1 para configurar una serie de registros, y luego volver al banco O para trabajar. El cambio entre estos dos bancos se realiza modificando el bit 5 del registro ESTADO (registro que ocupa la posición 03 de la memoria de datos). El bit es conocido como RPO y, puesto que los bits comienzan a numerarse de derecha a izquierda, es el sexto bit en posición. ACTIVIDAD a)Configure los puertos A y B de al menos 2 formas distintas. ACTIVIDAD 2 Se colocan 3 interruptores en las lineas RA1, RA1 Y RA2DE LA PUERTA A Y 4 DIODOS LED EN LAS lineas de salida RB0,RB1,RB2,RB3 DE PUERTA B, se introduce un numero de 3 bits mediante interruptores y a este numero binario se le suma 2 unidades y se muestra en los diodos. 3 INSTRUCCION GOTO Instrucción de salto condicional GOTO k, que produce un salto a la direccion del programa indicado por k. INSTRUCCIÓN sublw La instrucción "sublw" podría decirse que es la contraria de la "addlw", ya que realiza la resta de un literal menos el valor del registro de trabajo W. El resultado queda en este último. Los flags que se activan son los mismos que en el caso de la suma, pero debido que la operación se realiza mediante el método del complemento a dos, los flags de carry, en lugar de activarse cuando hay llevada(acarreo) lo hacen cuando no la hay. Así, como se muestra en el ejemplo, vemos que cuando el resultado de una operación es un valor negativo, lo que se almacena en W no es ese valor, sino su complemento a 2, y el que sea negativo se marca con un 0 en el bit de carry. INSTRUCCIÓN subwf Es la segunda instrucción de resta, y resta al registro referenciado como "f' el valor que contenga el registro de trabajo W. El resultado de la operación se almacenará en f o en W, dependiendo del valor del parámetro d. Al igual que con la instrucción anterior se ven afectados los flags C, DC y Z de la forma descrita 4 MEMORIA DE PROGRAMA El microcontrolador está diseñado para que en su MEMORIA DE PROGRAMA se almacenen todas las instrucciones del programa de control, el programa siempre es el mismo, y debe estar grabado permanentemente, garantizando que la memoria mantenga el contenido aún sin alimentación. EL CONTADOR DE PROGRAMA (PC) Las instrucciones se ejecutan en forma secuencial, y cada una ocupa una posición de memoria de programa. El PC es un registro interno que se usa para direccionar las instrucciones del programa de control que estan almacenadas en la memoria de programa, este registro contiene la direccion de la próxima instrucción a ejecutar, y se incrementa automáticamente , siendo la ejecución del programa en forma lineal. En el PC se ignoran los 3 bits de más peso, de forma que apuntar a la dirección 33 H es lo mismo que hacerlo a la 433 H, 833 H, C33 H, 1033 H, 1433 H o a la lC33 H. Al igual que todos los registros específicos que controlan la actividad del procesador, el Contador de Programa está implementado sobre un par de posiciones de la memoria RAM. Cuando se escribe el Contador de Programa como resultado de una operación de la ALU, los 8 bits de menos peso del PC residen en el registro PCL, que ocupa, repetido, la posición 2 de los dos bancos de la memoria de datos. Los bits de más peso, PC<12 :8>, residen en los 5 bits de menos peso del registro PCLATH, que ocupa la posición 0A H de los dos bancos de la memoria RAM. En las instrucciones GOTO y CALL de la gama media los 11 bits de menos peso del PC provienen del código de la instrucción y los otros dos de los bits PCLATH <4 :3>. Con los 11 bits que se cargan en el PC desde el código de las instrucciones GOTO y CALL, se puede direccionar una página de 2 K de la memoria. Los bits restantes PC< 12 : 11> tienen la misión de apuntar una de las 4 páginas del mapa de memoria y, en los modelos de PIC que alcanzan ese tamaño, dichos bits proceden de PCLATH<4 :3>. La Pila es una zona aislada de las memorias de instrucciones y datos. Tiene una estructura LIFO, en la que el último valor guardado es el primero que sale. Tiene 8 niveles de profundidad cada uno con 13 bits. Funciona como un «buffer» circular, de manera que el valor que se obtiene al realizar el noveno «desempilado» (pop) es igual al que se obtuvo en el primero. La instrucción CALL y las interrupciones originan la carga del contenido del PC en el nivel superior o «cima» de la Pila. El contenido del nivel superior se saca de la Pila al ejecutar las instrucciones RETURN, RETLW y RETFIE. El contenido del registro PCLATH no es afectado por la entrada o salida de información de la Pila. 5 MEMORIA DE DATOS RAM La memoria de datos del PICl6C84 dispone de dos zonas diferentes: l.a Área de RAM estática o SRAM, donde reside el Banco de Registros Específicos (SFR) y el Banco de Registros de Propósito General (GPR). El primer banco tiene 24 posiciones de tamaño byte, aunque dos de ellas no son operativas, y el segundo 36. 2.a Área EEPROM de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentación. La zona de memoria RAM se halla dividida en dos bancos (banco O y banco 1) de 128 bytes cada uno. En el PIC16C84 sólo se hallan imp1ementadas físicamente las 48 primeras posiciones de cada banco. Y las 12 primeras estan reservadas a los registros de próposito especifico(SFR). REGISTROS DE LA MEMORIA RAM REGISTRO STATUS(ESTADO) Ocupa la dirección 3 tanto del banco O como del banco 1 de la memoria de datos RAM. Sus bits tienen tres misiones distintas. 6 1. Avisa de los resultados de la ALU(C,DC,Z) 2. Indica el estado de Reset(TO#, PD#) 3. Selecciona el banco a acceder en la memoria de datos(IRP,RP0,RP1) se muestra el diagrama de distribución de los bits del registro STATUS. Los bits /TO y /PD indican el estado del procesador en algunas condiciones y no se pueden escribir. Por este motivo la instrucción clrf STATUS deja el contenido de dicho registro con el valor OOOu , siendo u el símbolo de «no cambia». Sólo se ponen a O los tres bits de más peso, el bit Z (cero) se pone a 1 y los restantes no alteran su valor. A continuación se describe la misión de los bits del registro ESTADO. C: Acarreo/llevada en el bit de más peso 1: Cuando este señalizador vale 1 indica que se ha producido acarreo en el bit de más peso del resultado al ejecutar las instrucciones addwfy addlw. O: No se ha producido acarreo. C también actúa como señalizador de «llevada» en el caso de la instrucción de resta, como subwfy sublw. En este caso la correspondencia es inversa (si vale 1 no hay llevada y si vale O sí). DC: Acarreo/llevada en el 4.0 bit Igual significado que C pero refiriéndose al 4.° bit. De interés en operaciones en BCD. Z: Cero 1: El resultado de una instrucción lógico-aritmética ha sido 0. 0: El resultado de una instrucción lógica-aritmética no ha sido . /PD: «Power Down» l: Se pone automáticamente a 1 después de la conexión de la alimentación al microcontrolador o al ejecutar la instrucción clrwdt. 0: Se pone automáticamente a 0 mediante la ejecución de la instrucción sleep. /TO: «Time Out» l: Se pone a 1 después de la conexión de la alimentación o al ejecutarse las instrucciones . clrwdt y sleep. 0: Se pone a O cuando se produce el desbordamiento del Perro Guardián (Watchdog). RPl – RP0: Selección de banco en direccionamiento directo Como el PIC16X84 sólo tiene dos bancos únicamente emplea el bit RP0, de forma que cuando vale l se accede al banco 1 y cuando vale 0 se accede al banco 0. Después de un Reset RP0= 0. IRP: Selección del banco en direccionamiento indirecto Este bit junto con el de más peso del registro FSR sirven para determinar el banco de la memoria de datos seleccionado. En el PIC l6X84 al disponer de dos bancos no se usa este bit y debe programarse como 0. 7 CICLO DE MAQUINA El tiempo que tarda en ejecutarse un programa depende de la frecuencia del oscilador conectado al microcontrolador y del número de ciclos máquina ejecutados. Un ciclo máquina es la unidad básica de tiempo que utiliza el microcontrolador. Para el pic16F84 el ciclo máquina equivale a 4 ciclos de reloj, por lo tanto, el tiempo que tarda en producirse un ciclo máquina es igual a cuatro veces el período del oscilador Las instrucciones en el microcontrolador PIC16F84 necesitan 1 ciclo máquina para ejecutarse, excepto las de salto (goto, cal!, btjss, btjsc, return, etc) que necesitan de dos ciclos máquina. El tiempo que tarda el microcontrolador en ejecutar una tarea viene fijado por la formula siguiente: Tiempo = 4/f cm Siendo: f la frecuencia del osci1ador. cm, el número de ciclos máquina que tarda en ejecutar la tarea. EJEMPLO 1: Calcular la duración de 1 ciclo máquina para un PIC16F84 que utiliza un cristal de cuarzo de 4 MHz. Solucion : 1 seg. EJEMPLO 2: Calcular el tiempo que tarda en ejecutarse la instrucción cal! si el sistema funcionase con un cristal de cuarzo de 4 MHz. Solución: Al tratarse de un salto esta instrucción dura dos ciclos máquina, por tanto, el tiempo que tarda en ejecutarse será: 2 seg EJEMPLO 3: En un sistema con microcontro1ador PIC16F84 y cristal de cuarzo de 4 MHz se desea generar un retardo de 1,5 ms. Calcular el número de ciclos máquina necesarios. Solución: 1500 8 9 QUIZ 4 1. REALIZAR EL PROGRAMA QUE REALICE LA OPERACIÓN (A+B)-C Y MUESTRE EL RESULTADO EN EL PUERTO DE SALIDA (recuerde configurar los puertos) 2. HACER UN PROGRAMA PARA VISUALIZAR EL NUMERO 33 HEXADECIMAL POR EL PUERTO B 3.HACER UN PROGRAMA QUE INCREMENTE EN UNO EL CONTENIDO DE UN REGISTRO Y COLOQUE EL RESULTADO EN EL PUERTO DE SALIDA B 4. HACER UN PROGRAMA QUE DECREMENTE EN UNO EL CONTENIDO DE UN REGISTRO Y COLOQUE EL RESULTADO EN EL PUERTO DE SALIDA B 5. HACER UN PROGRAMA PARA COMPLEMENTAR EL CONTENIDO DEL PUERTO A, ES DECIR SI SE TIENE UN 1 EN LA ENTRADA, SE COLOQUE UN 0 EN LA SALIDA Y VICEVERSA. 6.¿Cuál es la diferencia entre directiva y etiqueta? 7.¿El registro de trabajo W forma parte de la memoria de datos. a) cierto b) falso. 8.Los flags indican si se tiene un acarreo en el bit 8. si) no) 9.La instrucción addlw realiza la suma logica de dos registros.a) cierto b)falso. 10.El código OP es un codigo protegido. A) cierto b)falso 11.Diga la diferencia esencial entre ADDLW Y ADDWF 12.que significa el Flag C 13.¿ En que columna deben empezar los mnemonicos de instrucciones? 14. Se tiene un cristal de 10 MHz para el reloj del microcontrolador, diga cuanto vale el ciclo de máquina. 15. ¿Cual es el propósito de los registros TRISA y TRISB? 10 RESUMEN DE INSTRUCCIONES Bibliografía -Microcontroladores PIC , DISEÑO PRACTICO DE APLICACIONES. JOSE MA ANGULO USATEGUI. MC GRAW HIL 11