Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
2- Marco Teórico
2-1 Instrucciones
La mayoría de los programas se escriben en lenguajes de alto nivel, como C++, Java o
Pascal. Para poder ejecutar un programa escrito en un lenguaje de alto nivel en un procesador,
este programa se debe traducir primero a un lenguaje que pueda entender el procesador,
diferente para cada familia de procesadores. El conjunto de instrucciones que forman este
lenguaje se denomina juego de instrucciones o repertorio de instrucciones.
Para poder definir un juego de instrucciones, habrá que conocer bien la arquitectura del
computador para sacarle el máximo rendimiento; en este módulo veremos cómo queda definido
un juego de instrucciones según una arquitectura genérica.
Ejecutar un programa consiste en ejecutar una secuencia de instrucciones, de manera que cada
instrucción lleva a cabo un ciclo de ejecución. Esta secuencia de instrucciones no será la
secuencia escrita que hacemos de un programa, sino la secuencia temporal de ejecución de las
instrucciones considerando las instrucciones de salto.
Las fases del ciclo de ejecución son comunes en la mayoría de los computadores actuales y las
diferencias principales se encuentran en el orden en el que se llevan a cabo algunas de las
operaciones de cada fase o en el que se hacen algunas de las operaciones en otras fases.
2-3Tipos de Direccionamiento
El valor del dato inmediato (su valor literal) lo contiene el mismo código de operación que, en la
ejecución de la instrucción, se carga en el registro W para su posterior procesamiento. Por Ejemplo
IORLW Constante..
2-3-2 Direccionamiento Directo
Procesa datos de un bit. La dirección del dato es un bit. Porejemplo BCF STATUS,RP0.
Utilizado para manejar tablas mediante la instrucción Por ejemplo ADDWF PCL,F.
El registro FSR sirve como puntero para direccionamiento indirecto además de servir para
seleccionar el banco activo. La posición 00 del mapa de RAM es la llamada dirección indirecta.
Si en cualquier instrucción se opera con la dirección 00, en realidad se estará operando con la
dirección a donde apunte el contenido del FSR.
Por ejemplo si el FSR contiene el valor 1Ah, una instrucción que opere sobre la dirección
0, en realidad lo hará sobre la dirección 1Ah. Puede decirse que la posición 1Ah de memoria fue
direccionada en forma indirecta a través del puntero FSR.
Ejemplo :
1.- Dado los siguientes datos localizado en la memoria de dato del PIC, realice un
programa que ordene de menor a mayor dichos datos en el mismo segmento de memoria,
realice un diagrama de flujo, comente cada línea de programa, pruebe en el simulador
MPLAB.
10 11 12 13 14 15 16 17 18 19
0x38 0x45 0x28 0xf0 0x33 0xe9 0x55 0xaa 0x78 0x31
2.- Para asegura que el código anterior ordena cualquier estructura de datos proponga un
programa que coloque en el segmento de memoria 10H – 19H, bytes aleatorios, indique
que método propone para garantizar que los datos son completamente aleatorios y no
puedan ser determinístico. Realice un diagrama de fluj0 y comente cada línea. Pruebe en
conjunto con la parte experimental 1.
3.2.- Realizar una librería para que cuando se obtenga un data en ese rango se
procese los siguiente parámetros estadísticos:
Max_punto.INC Debe indicar cual es el valor máximo y en que posición de memoria se
encuentra. Min_Punto.INC Debe indicar cual es el minimo valor y en que posición de
memoria se encuentra. Average.INC Halla el valor medio de los datos representados.
RMS.INC Halla el valor absoluto de los datos representados (para este caso asuma que
la señal es sinusoidal).
Cada librería debe tener su documentación en la cabecera del programa y comentarios en
cada línea de código, y su debido diagrama de flujo. Los resultados siempre deben
devolverse en el Registro de trabajo y en la dirección 0x0C, en caso Max_Punto. INC,
Min_Punto.INC la dirección que indica el resultado obtenido.
Tabla #1.
Arit_Multiplica_8Bit
clrf Arit_Producto_H ; En principio el resultado es
cero. clrf Arit_Producto_L
movlw .8 ; Carga el contador de 8
bits. movwf Arit_ContadorBits
movf Arit_Multiplicando,W ;Carga el
multiplicando. Arit_MultiplicaBit8
Rrf Arit_Multiplicador,F ;Va comprobar el siguiente bit del
multiplicador. btfsc STATUS,C ; Si el bit del multiplicador es
"1"
addwf Arit_Producto_H,F ;suma el resultado parcial anterior más el
multiplicando. Rrf Arit_Producto_H,F ; Desplaza el resultado parcial un
lugar hacia la
Rrf Arit_Producto_L,F ; derecha, introduciendo un "0" por la
izquierda. Decfsz Arit_ContadorBits,F ; ¿Ha multiplicado los 8 bits?
goto Arit_MultiplicaBit8 ; Repite la
operación. return
El formato general el código anterior es una librería perteneciente a una librería que contiene
diversas funciones matemáticas, lo primeros que haremos será aguarla las variables de entrada
de la función de la cual fue llamada y reescribir sus valores en las variables que utilizara las
secciones de nuestra sub rutinas, luego resetearemos nuestras variables por si acaso si queso un
dato residual de otra operación, en la siguiente instrucción cargaremos una variable con un valor
8 permitiendo de que se realice la operación con los 8 bits del Multiplicando, luego procederemos
a realizar la multiplicación de los números que van a hacer la operación ,lo que haremos será
rotar a la derecha el bit menos significativo ,posterior a ello comprobaremos que el bit Carry del
registro STATUS es 0 con lo cual si es 1 sumara lo que sea que este en W a Arit_Producto_H luego rotara
a la derecha el bit menos significativo a la derecha de la variable Arit_Product_L este proceso se repetirá
hasta que Arit_ContadorBits,F sea igual a cero para ello decrementara en 1 y sse guardara el resultado
en el mismo
5.- Dado el programa abajo representado, comente adecuadamente cada instrucción con
precisión, explique que hace el programa con exactitud y elabore un Diagrama de Flujo.
Implemente en Proteus colocando la entrada con Logic_Toggle y la salida con un tren de
diodos.
end
PALACIKOS E., REMIRO F., LOPEZ L., (2009) Microcontrolador PIC16F84,
Desarrollo de proyectos, 3era Edición. Mexico: Alfaomega