Vous êtes sur la page 1sur 8

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores DESARROLLO PRCTICO EXPERIENCIAS DE LABORATORIO DE MICROPROCESADORES En esta experiencia se tomar

r como partida el programa visto en la primera experiencia, con el fin de conocer ms en detalle la estructura interna del PIC 16F84 y su repertorio de instrucciones. Materiales necesarios para desarrollar la experiencia: 1. Un PC por cada dos personas, mximo 2. Aplicaciones para editar texto plano, ensamblar y simular ACTIVIDAD 1 Active el simulador y reconozca en el cada registro interno y componente que forman parte De la estructura del PIC 16F84 estudiado previamente. Reconocer e indicar para que se utilicen:

Registros de propsito general (GPRs). Estos registros son aquellos en los que no existe restriccin en cuanto a su utilizacin. Pueden ser empleados como fuente o destino de datos, como contador, como puntero de datos y de entradas o salidas

Registros de propsito especfico (SFRs). Son los registros que estn destinados para realizar una funcin especfica. En este se encuentran los flags o banderas del sistema, el registro de estado, el puntero de pila, entre otros.

1 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores Que tamao tiene la memoria de programa, como acceder a ella en el simulador. La memoria del programa comienza en la posicin 0000h y termina en la posicin 03FFh. Esto es 1Kbyte, es decir, 1024 bytes (210) o posiciones.

Para acceder a ella desde el simulador PIC Simulator IDE se debe ir al men Tools -> Program Memory Editor, o presionando el atajo de teclado Ctrl+M.

Cuantos bancos tiene el PIC 16F84 y como se seleccionan. Est organizada en dos pginas o bancos de registro, banco 0 y banco 1. Para cambiar de banco se utiliza un bit del registro STATUS (RP0).

2 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores ACTIVIDAD 2 Tome el contenido de archivo editado en la primera experiencia y especule de qu partes est compuesto y para qu sirven, responda las siguientes preguntas: Qu es un comando o directiva de ensamblador? Directivas: son rdenes para el ensamblador y no tienen traduccin a cdigo mquina. Qu es una etiqueta o LABEL? Permite realizar referencias a una direccin de memoria adems de re definir el atributo de una variable de datos o de una etiqueta de instruccin. Para que sirven List p =, Org , End, Equ ? List p = Org END EQU Se utiliza para definir el tipo de Pic a utilizar. Indica donde comienza el programa Indica donde se finaliza el programa Re define el nombre de una constante con otro nombre

Qu zona de lo editado corresponde al programa que ser ensamblado y grabado posteriormente en el PIC? Corresponde a todo lo que no est tras el punto y coma ; ACTIVIDAD 3 Editar un programa bsico que deposite un dato por ejemplo 3A en el registro 0x0C de la memoria de registros de propsito general del PIC 16F84. list p = 16f84 org 0 movlw 3A movwf 0x0C end

(Copy-Paste). Como en el programa no se establece un Nop al final, el registro W va decreciendo en 1 a medida que el PC aumenta (Alta impedancia). El valor en 0x0C no se ve afectado. 3 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

ACTIVIDAD 3 Obtenga el ejecutable y ejectelo en el I0 I1 I2 I3 I4 I5 I6 I7 simulador. En el primer paso (PC 1) se guarda el valor 3A 0X0C 0 3A 3A 3A 3A 3A en el registro de trabajo. Luego en PC 2 se W 3A 3A 39 38 37 36 copia 3A al registro 0x0C mantenindose adems el valor en el registro de trabajo PC 1 2 3 4 5 6

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores ACTIVIDAD 4 Tome el programa anterior y agrguele una instruccin que cargue un dato por ejemplo 04 en el registro W Obtenga el nuevo ejecutable y ejectelo en el simulador . Sucede el mismo plan de ejecucin que el programa anterior, solo que en vez de quedar el valor 3A en el registro W, se almacena el valor 04, el cual va decreciendo al quedar en alta impedancia el programa. En 0x0C permanece almacenado el valor 3A. ACTIVIDAD 5 Tome el programa anterior y agrguele la instruccin addwf que sirve para sumar el contenido de un registro f al registro w, para especificar la direccin del registro f , en este caso coloque 0x0C que es donde se encuentra el dato 3A y por ultimo, agregue donde quiere dejar el resultado mediante el bit d, que permite elegir como destino el registro f o el registro w, la nueva lnea de instruccin puede quedar queda como: Addwf O Addwf 0x0C,0 ; Lo que hay en W sumarlo en F y dejarlo en W 0x0C,1 ; Lo que hay en W sumarlo en F y dejarlo en F

Haga dos programas con las dos alternativas, obtenga los ejecutables correspondientes y ejectelos en el ensamblador. Cul es la diferencia en la ejecucin de ambos? Addwf 0x0c,1 Addwf 0x0c,0 ACTIVIDAD 6 Repita la misma actividad 5 pero ahora coloque el siguiente comando entre las lneas que especifican el tipo de micro controlador y la lnea que especifica la direccin de origen del programa: Venus Equ OxOC En esta opcin, el valor 04 de W se suma a 3A, y la suma se almacena en 0x0c. En W continua almacenado el valor 04. En esta opcin, el valor 04 de W se suma a 3A, y la suma se almacena en W. En 0x0c continua almacenado el valor 3A.

Luego en las lneas de instrucciones donde aparezca la direccin 0x0C, brrelas y reemplcelas por Venus Obtenga el nuevo ejecutable y ejectelo en el simulador 4 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores Discuta con sus compaeros de grupo y el profesor cual es la idea o ventaja que puede tener esta accin sobre un programa. La etiqueta EQU direcciona la bsqueda del registro 0x0c en la constante venus. Esta referencia solo es a nivel compilador, ya que en el programa ensamblado no se evidencia cambio alguno en la ejecucin y simulacin. ACTIVIDAD 7 Repita la misma actividad 5 con la correspondiente mejora hecha en la actividad 6, agregando en vez de la instruccin addwf, otras que se encuentran en el repertorio de instrucciones como y que estn relacionadas con los registros W y f, repita tantas veces como instrucciones se indican abajo y en cada una de ellas indique que pasa particularmente en algunos bits del el registro de Status, por ejemplo cambie los valores de los datos en las lneas relacionadas con la carga de datos en los registro 0x0C y W para que el resultado de las operaciones de cero, en esos casos Que bis del Status se altera?, luego comente con sus compaeros la utilidad de esto. Al haber valores distintos tanto en el registro de trabajo como en la direccin de memoria, la evaluacin And pone un cero en 0x0c (andwf,1), afectando esta operacin lgica al flag Z del registro status, el cual se activa cuando en una operacin que realiza la ALU se obtiene como resultado un cero (0). Esta accin limpia el registro 0x0c poniendo a cero el registro. Al haberse realizado una operacin que da como resultado un cero, se activa el flag Z del registro de estado (bit 2 del registro status se pone con valor 1) Esta accin activa el flag Z del registro status y lo pone con valor 1 ya que en la operacin lgica se obtiene un cero como resultado en el registro W. Da lo mismo donde se coloca el cero. Siempre que se obtiene un cero de una operatoria se activara el flag Z del registro de estado. Esta accin decrecienta el valor que se almacena en el registro 0x0c en 1 quedando el valor 39h (decf 0x0c,1). Si se agrega como valor de d cero, en el registro 0x0c se mantiene el ultimo valor agregado (3A) y el decremento de 3A se aloja en el registro W (39h) Esta accin incrementa el valor que se almacena en el registro 0x0c en 1 quedando el valor 3B (decf 0x0c,1). Si se agrega como valor de d cero, en el registro 0x0c se mantiene el ultimo valor agregado (3A) y el incremento de 3A se aloja en el registro W (3B). Genera una operacin lgica entre dos registros (W y 0x0c). La gracia de esta operacin es que luego de la evaluacin, une los dos valores (suma) y almacena el resultado en la direccin que se especifica (d=0/1). Mantiene los valores introducidos en los registros durante un tiemo. 5 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

Andwf

clrf

clrw

decf

incf

iorwf nop

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores Esta accin mueve todos los bits 1 del registro de datos (F) una posicin hacia la izquierda. Ej. Si se tiene un valor 0101 0001b en el registro F, con la instruccin rlf 0x0c,1 cambiar a 1010 0010b. Si el valor que se almacena supera al permitido en el registro de propsito general, el flag C (carry) del registro de estado se pone a 1. Esta accin mueve todos los bits 1 del registro de datos (F) una posicin hacia derecha. Ej. Si se tiene un valor 1010 0010b en el registro F, con la instruccin rlf 0x0c,1 cambiar a 0101 0001b. Si se tena almacenado un bit el el Flag C del registro de estado, el flag C de estado se pone a 0. Sustrae lo que hay en W en el registro F. esta instruccin afecta los flag C, DC y Z del registro de estado en los siguientes casos: C: si el resultado de la operacin es positivo o cero se pone a 1. DC: Si el resultado es negativo se pone a 1. Z: si el resultado es cero o negativo se pone a 1. Invierte los 4 bits ms significativos por los 4 bits menos significativos del registro. Ej. Swapf 0x0c,1 donde en 0x0c esta el valor 3A al ejecutarse esta instruccin el valor que quedara en el registro F ser A3 esto sera 0101 1100b (3A) a 1010 0011b (A3) Ejecuta un OR Exclusivo entre los valores almacenados en W y F poniendo a 1 solo los bits que sean diferentes, y poniendo a cero los que sean iguales. Ej, en W esta 0000 0100b (04h) y en F esta 0011 1010b (3A), al realizarse el OR Exclusivo resultara 0011 1110b (3E).

rlf

rrf

subwf

swapf

xorwf

ACTIVIDAD 8 Repita la actividad anterior pero ahora agregando las instrucciones que manejan operndoos inmediatos o literales L y son de la forma: AddLW, andLW, iorLW, movLW, subLW y xorLW. Por ejemplo si se desea sumar al contenido que hay en W el valor 06, la lnea de comando se escribira como: Addlw 0x06

Dnde que queda el resultado? ACTIVIDAD 9 Agregue al final de uno de los programas una lnea con la instruccin Goto, seguida de una etiqueta o LABEL con un nombre de su invencin, en seguida escoja cualquier lnea de instruccin ya hecha y antes de la instruccin agregue tambin la etiqueta.

6 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores Qu sucede?, Qu pasa con el registro contador de programa PC? ACTIVIDAD 10 1.- Hacer un diagrama de flujo para un programa que realice los siguientes pasos: Que Cargue el nmero 05 en el registro 0X20 de la memoria de registros de propsito general del PIC. Que Cargue el nmero 02 en el registro 0X21 de la memoria de registros de propsito general del PIC Que Realice la suma de los dos nmeros y la guarde en el registro de memoria 0X22 Despus de eso que quede en un lazo cerrado.

2.- De acuerdo al repertorio de instrucciones del PIC 16F84 y al programa SUMAV1.ASM ejecutado en la experiencia 1, Qu instrucciones de ese programa corresponden a cada paso del diagrama de flujo realizado? Programa SUMAV1.ASM: ; SUMA.ASM: Este programa suma el contenido de las posiciones 0x0C y 0x0D ; de memoria y almacena el resultado en la posicin 0x0E. ;LIST p = es un comando que indica ;al ensamblador que modelo de PIC ;se esta usando ; -------------------------------------------------------------------------;Zona para etiquetas: OPERANDO1 OPERANDO2 RESULTADO EQU 0x0c ;Define la posicin donde se guarda el operando1 EQU 0x0d ;Define la posicin donde se guarda el operando2 EQU 0x0e ;Define la posicin donde se guarda el Resultado LIST p= 16c84

;--------------------------------------------------------------------------ORG 0 ;Comando que indica al Ensamblador ;la direccin de la memoria de programa ;donde situar la siguiente instruccin

;--------------------------------------------------------------------------;Programa propiamente tal: movlw 05 movwf OPERANDO1 movlw 02 ;5 --> W (Primera instruccin) ; W --> OPERANDO1 ; 2 -> W 7 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial

Universidad de Santiago de Chile Laboratorio de tecnologa digital y microprocesadores movwf movfw addwf movwf goto END OPERANDO2 OPERANDO1 OPERANDO2,0 RESULTADO LABEL 1 ; W -> OPERANDO2 ; OPERANDO1 -> W ; W + OPERANDO2 -> W ; W -> RESULTADO ; Salta a la lnea LABEL 1 ; Comando que indica al ; ensamblador que debe parar de ; ensamblar.

LABEL1

Vuelva a correr este programa en el simulador, ahora fijndose con ms precisin sobre cada paso, cada registro y cada movimiento de datos dentro de la estructura interna de PIC.

ACTIVIDAD 11 Comente y especule primero con sus compaeros para que podran servir las instrucciones de brinco y llamada a subrutina, luego intgrese a un foro dirigido por el profesor.

8 Resuelto por Alejandro Prez E. - Estudiante de Tecnlogo en Automatizacin Industrial