Está en la página 1de 3

INFORME LABORATORIO Nº 4:

OPERACIONES
- andlw k: efectúa la operación AND lógica entre el
contenido del registro W y el literal k, y almacena el
resultado en W.
INTEGRANTES: - andwf f,d: Efectúa la operación AND lógica entre el
● Daniel Eduardo Estevez Cardenas contenido del registro W y el contenido del registro “f”, y
almacena el resultado en W si d = 0, y en “f” si d=1.
I. INTRODUCCIÓN
- comf f,d: realiza el complemento del contenido del registro
En el siguiente informe se realizará una investigación más a fondo “f” bit a bit. El resultado se almacena en el registro “f” si d
sobre los distintos comandos para configurar los puertos y trabajar = 1 y o en el registro W si d = 0, en este caso “f” no varía.
con más características de los microcontroladores, además de esta
investigación se comprobará el funcionamientos de algunos códigos - iorlw k: realiza la operación lógica OR entre el contenido
ya creados y facilitados por la docente. del registro W y el literal k. El resultado se almacena en W.

II. OBJETIVOS - iorwf f,d: realiza la operación lógica OR entre el contenido


del registro W y el contenido del registro “f”, y almacena el
● Aprender a configurar Puertos. resultado en W si d = 0 y en el registro “f” si d = 1.
● Realizar programas con las instrucciones aritméticas y
lógicas, obteniendo y visualizando los datos a través de los - rlf f,d: rotación de un bit hacia la izquierda del contenido
puertos y registros. del registro “f”, pasando por el bit de acarreo C, y almacena
el resultado en W si d = 0 y en “f” si d=1.

- rrf f,d: rotación de un bit hacia la derecha del contenido del


III. PROCEDIMIENTO registro “f”, pasando por el bit de acarreo C, y almacena el
resultado en W si d = 0 y en el registro “f” si d = 1.
Con sus palabras indique qué operación está realizando cada una de
- swapf f,d: intercambio de los cuatro bits de mayor peso por
las instrucciones siguientes:
los cuatro bits de menor peso del mismo registro. El registro
destino será W si d = 0 i será “f” si d=1.
- addlw k: se suma el literal contenido en k al contenido del
registro w.
- xorlw k: realiza la operación lógica OR – EXCLUSIVA bit
a bit, entre el contenido del registro W y el literal k, y
- addwf f,d: añade el contenido del registro W al contenido
almacena el resultado en W.
del registro “f”, y almacena el resultado en W si d = 0, y en
el registro “f” si d = 1.
- xorwf f,d: realiza la operación lógica OR – EXCLUSIVA
bit a bit entre el contenido del registro W y el contenido del
- sublw k: se resta el literal contenido en k al contenido del
registro “f”, y almacena el resultado en W si d=0, o en el
registro w.
registro “f” si d = 1.
- subwf f,d: se resta el contenido del registro W al contenido
2. Copie el código de el primer programa encontrado dentro de la guía
del registro “f” y almacena el resultado en W si d=0, y en el
en MPLAB, verifique si la sintaxis es correcta, realice las
registro “f” si d=1.
correcciones para depurar en MPLAB. Si hay correcciones, incluya
dichas correcciones en el informe.
- decf f,d: se decrementa en una unidad el contenido de “f”, y
almacena el resultado en W si d = 0 o en el registro “f” si d
Código sin Corregir
= 1.

LIST P = 16F877
- incf f,d: se incrementa el contenido del registro “f” en una
INCLUDE <P16F877.INC>
unidad y almacena el resultado en W si d = 0 y en el
RESULTADO EQU 0x20
registro “f” si d = 1.
ORG 0x00
Inicio por:
bsf STATUS,5
movlw b’11111111’ #include <xc.inc>
movwf TRISC CONFIG FOSC = XT
clrf TRISD CONFIG WDTE = OFF
bcf STATUS,5 CONFIG PWRTE = OFF
Ciclo CONFIG BOREN = OFF
movf PORTC,0 CONFIG LVP = OFF
addlw d’10’ CONFIG CPD = OFF
movwf PORTD CONFIG WRT = OFF
movwf RESULTADO CONFIG CP = OFF
goto Ciclo
END Posteriormente se cambió el comando ORG 0x00, el cual indica
donde arranca el código después de un reset a ORG 0x05, el cual
Código Corregido indica donde inicia el código del programa.

#include <xc.inc>;Se llaman las librerias Consecutivamente se añadió la acción “goto Inicio” y se corrigieron
CONFIG FOSC = XT ;Se configura el cristal XT y las demás los renglones en donde se encontraba la acción de Inicio y Ciclo,
opciones de configuración se dejan en OFF agregando al final de estos los :, para que su indicación fuera correcta.
CONFIG WDTE = OFF
CONFIG PWRTE = OFF Como cuarto y último aspecto a corregir del código inicial se
CONFIG BOREN = OFF modificó el formato que seguía los comandos movlw y addlw, dado
CONFIG LVP = OFF que el formato que indica que es binario ya no se indica con la b,y las
CONFIG CPD = OFF comillas sino con una B mayúscula al final del número, y el formato
CONFIG WRT = OFF decimal ya no se indica con una d y sino escribiendo el número
CONFIG CP = OFF normal..

RESULTADO EQU 0x20 ;Le da el valor numérico 32 a cada ● Evidencia funcionamiento del programa
aparición de RESULTADO dentro del código
ORG 0x05 ;Indica en donde inicia el código del programa
goto Inicio ;Va a la etiqueta Inicio

Inicio:
bsf STATUS,5 ;Se coloca en 1 en bit 5 de STATUS
movlw 11111111B ;Se mueve al registro de trabajo el literal 11111111
en binario
movwf TRISC ;Se mueve el contenido del registro de trabajo W al
registro TRISC
clrf TRISD ;Se colocan en 0 todos los bits del registro TRISD
bcf STATUS,5 ;Se coloca en 0 el bit 5 de STATUS
Ciclo: ;Se codifica el ciclo
movf PORTC,0 ;Se mueve el contenido del registro PORTC al
registro de trabajo W
addlw 10 ;Se suma el literal 10 en decimal al registro de trabajo W
movwf PORTD ;Se mueve el contenido del registro de trabajo W al
registro PORTD
movwf RESULTADO ;Se mueve el contenido del registro de trabajo
W al literal RESULTADO
goto Ciclo ;Se reinicia el ciclo
END

● Correcciones realizadas

Se cambiaron las primeras dos líneas de código del programa por su


versión más actualizada de inclusión de librerías, es decir los códigos:

LIST P = 16F877
INCLUDE <P16F877.INC>
Como se observa en la memoria del programa y en los bits de los ● Prueba de Escritorio
registros, el programa funciona correctamente posterior a las
correcciones realizadas. RESULTADO EQU
0x20 RESULTADO= 32 en decimal
● Diagrama de flujo del programa
ORG 0x05 Inico del código
goto Inicio Ir a línea inicio (6)
Inicio: Línea (6)
bsf STATUS,5 STATUS,5 = 1
movlw 11111111B WREG= 255 en decimal
WREG to TRISC; TRISC=255
movwf TRISC en decimal
clrf TRISD TRISD=0
bcf STATUS,5 STATUS,5 = 0
Ciclo: Línea(11)
movf PORTC,0 PORTC to WREG; WREG=0
WREG+10; WREG=10 en
addlw 10 decimal
movwf PORTD WREG to PORTD; PORTD=10
WREG to RESULTADO;
movwf RESULTADO RESULTADO=10
goto Ciclo Ir a línea Ciclo (11)
END

También podría gustarte