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

Documentos relacionados