Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
En el siguiente informe se realizará una investigación más a fondo sobre los
distintos comandos para configurar los puertos y trabajar con más características de
los microcontroladores, además de esta investigación se comprobará el
funcionamientos de algunos códigos ya creados y facilitados por la docente.
Objetivos
-Aprender a configurar Puertos.
- Realizar programas con las instrucciones aritméticas y lógicas, obteniendo y
visualizando los datos a través de los puertos y registros.
Procedimiento
Con sus palabras indique qué operación está realizando cada una de las
instrucciones siguientes:
- addwf f,d: añade el contenido del registro W al contenido del registro “f”, y
almacena el resultado en W si d = 0, y en el registro “f” si d = 1.
- subwf f,d: se resta el contenido del registro W al contenido del registro “f” y
almacena el resultado en W si d=0, y en el registro “f” si d=1.
- incf f,d: se incrementa el contenido del registro “f” en una unidad y almacena el
resultado en W si d = 0 y en el registro “f” si d = 1.
- andwf f,d: Efectúa la operación AND lógica entre el 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.
- comf f,d: realiza el complemento del contenido del registro “f” bit a bit. El resultado
se almacena en el registro “f” si d=1 y o en el registro W si d = 0, en este caso “f” no
varía.
- iorlw k: realiza la operación lógica OR entre el contenido del registro W y el literal k.
El resultado se almacena en W.
- rlf f,d: rotación de un bit hacia la izquierda del contenido 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 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.
- swapf f,d: intercambio de los cuatro bits de mayor peso por los cuatro bits de
menor peso del mismo registro. El registro destino será W si d = 0 i será “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 registro “f”, y almacena el resultado en W si d=0, o
en el registro “f” si d = 1.
Código original
#include
<xc.inc>;Se llaman las librerias
CONFIG FOSC = XT ;Se configura el cristal XT y las demas opciones de
configuración se dejan en OFF
CONFIG WDTE = OFF
CONFIG PWRTE = OFF
CONFIG BOREN = OFF
CONFIG LVP = OFF
CONFIG CPD = OFF
CONFIG WRT = OFF
CONFIG CP = OFF
RESULTADO EQU 0x20 ;Le da el valor númerico 20 a cada aparición de
RESULTADO dentro del codigo
ORG 0x05 ;Indica en donde inicia el codigo 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
Correcciones en el código
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>
Y se usó:
#include <xc.inc>
CONFIG FOSC = XT
CONFIG WDTE = OFF
CONFIG PWRTE = OFF
CONFIG BOREN = OFF
CONFIG LVP = OFF
CONFIG CPD = OFF
CONFIG WRT = OFF
CONFIG CP = OFF
Segundo código
;ID= U00123570
Inicio
movlw DATOA ;Se mueve el literal DATOA al registro de trabajo
subwf RESULTADO,0 ;Se resta el DATOA con el DATOB (DATOB=RESULTADO)
bcf STATUS,5;Se coloca en 0 el bit 5
;Se comprueba si el Dato A y el Dato B es igual a 0.
;Si Dato A = Dato B, Salta
btfss STATUS,2;Se verifica el estado de la bandera Z, para determinar si la resta da
0
goto Mayor ;Va a la etiqueta Mayor para comprobar si es mayor o menor el Dato A
al Dato B
goto Igual ;Va a la etiqueta igual ya que la resta dio igual a 0
Mayor:
;Si Dato A > Dato B, Salta
btfsc STATUS,0 ;Se comprueba el estado de la bandera C para determinar si
DATOA > o <= que DATOB
goto Menor ;Va a la etiqueta menor ya que la resta da negativa, indicando que el
Dato A < Dato B
;Mayor
movlw DATOA ;Se mueve el literal DATOA al registro de trabajo
movwf PORTC ;Se mueve al registro PORTC el contenido del registro de trabajo
movwf PORTD ;Se mueve al registro PORTD el contenido del registro de trabajo
movwf PORTB ;Se mueve al registro PORTB el contenido del registro de trabajo
movlw RESULTADO ;Se mueve el literal RESULTADO al registro de trabajo
andwf PORTC ;Se realiza la operación AND entre el DATOA y el DATOB, se guarda
el resultado en PORTC
iorwf PORTD ;Se realiza la operación OR entre el DATOA y el DATOB, se guarda el
resultado en PORTD
xorwf PORTB ;Se realiza la operación XOR entre el DATOA y el DATOB, se guarda
el resultado en PORTB
comf RESULTADO ;Se realiza el complememto al DATOB, se guarda el resultado en
RESULTADO
goto Inicio
Menor:
movlw RESULTADO ;Se mueve el literal RESULTADO al registro de trabajo
movwf PORTD ;Se mueve al registro PORTD el contenido del registro de trabajo
movlw DATOA ;Se mueve el literal DATOA al registro de trabajo
subwf PORTD ;Se resta al DATOA (Registro de Trabajo) el DATOB (PORTD), y se
guarda el resultado en PORTD
goto Inicio
Igual:
movlw DATOA ;Se mueve el literal DATOA al registro de trabajo
addwf RESULTADO ;Se suma el Dato A
goto Inicio
END