You are on page 1of 5

UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO

FACULTAD DE INGENIERA
SEMESTRE 2017-2
LABORATORIO DE MICROCOMPUTADORAS
M. I. RUBEN ANAYA GARCA
PRCTICA 1. INTRODUCCIN GENERAL A UN
MICROCONTROLADOR PIC16F877
ALUMNOS:
OCAA CASILLAS ANDREA JYHAN
YAEZ CADENA CRISTIAN DAVID
FECHA DE ENTREGA:
16-MARZO-2017
DESARROLLO
Para cada uno de los siguientes ejercicios, realizar los programas solicitados
y simular el funcionamiento de ellos.
1. Siguiendo las indicaciones previas, escribir el siguiente programa,
ensamblar y simular el funcionamiento de este:
PROGRAMA
processor 16f877
include <p16f877.inc>

K equ h'26'
R1 equ h'27'

org 0
goto INICIO
org 5

INICIO: movlw h'05'


addwf K,0
movwf L
goto INICIO
end

2. Modificar el programa anterior, para que ahora los datos que operar
se encuentren en las localidades reservadas para J y K
respectivamente y el resultado almacenarlo en otras direcciones,
reservadas para C1 y R1 donde C1 representar el valor de la
bandera de acarreo y R1 el resultado.
PROGRAMA
processor 16f877
include <p16f877.inc>

J equ h'25' ;Reservacin de localidades en memoria


K equ h'26'
R1 equ h'27'
C1 equ h'28'

org 0
goto INICIO
org 5

acarreo: movlw 0x00


movwf C1
INICIO: movf J,w ;Carga el contenido de J en W
addwf K,w ;W+K -> W
movwf R1 ;Guarda el contenido de W en R1
btfss STATUS,C ;Verifica si hubo acarreo
goto acarreo ;No -> Inicio
movlw 0x01 ;Si -> Carga 0x1 en W
movwf C1 ;Pon el contenido de W en C1
goto INICIO ;inicia otra vez el ciclo
end
3. Realice un programa que ejecute la siguiente secuencia, misma que
deber ver en la direccin de memoria de su eleccin. Secuencia:

PROGRAMA
processor 16f877
include<p16f877.inc>

org 0
goto INICIO
org 5

INICIO: movlw h'1' ;Carga en W en valor inicial de 1


movwf h'20' ;Mueve el valor de W a la Localidad 20h
CICLO: rlf h'20',1 ;Hace un rotamiento a la Izquierda y guarda
en 20h
btfss h'20',7 ;Comprueba si el valor que hay en 20h es 80h
goto CICLO ;NO -> CICLO
goto INICIO ;SI -> INICIO
end

4. Desarrollar un programa que presente la cuenta en numeracin


decimal en la localidad de memoria de su eleccin, como se indica a
continuacin.

PROGRAMA
processor 16f877
include<p16f877.inc>
org 0
goto INICIO
org 5
LIMPIA: clrf h'20' ;Limpia la localidad 20h
INICIO: incf h'20',1 ;Incrementa el valor que haya en 20h
movlw h'9' ;Carga en W el valor de 9h
xorwf h'20',w ;Realiza XOR del contenido de W con contenido
de 20h
btfss STATUS,Z ;Verifica si el resultado de Xor=0 (z=1)
goto INICIO ;No,Repite el ciclo Si, entocess llegamos a 9
DIEZ: movlw h'7' ;Carga en W el valor de 7
addwf h'20' ;Suma W+Loc h'20' para obtener el numero siguiente
para seguir la secuencia de nmeros decimales
INC: movlw h'20' ;Carga el valor de 20h en W
xorwf h'20',w ;Realiza XOR del contenido de W con el
contenido de 20h
btfsc STATUS,Z ;Verifica si el resultado de Xor!=0 (z=0)
goto LIMPIA ;NO,entonces llegamos al 20 y vuelve
aempezar la cuenta
incf h'20' ;Si,incrementa
movlw h'19' ;Carga el valor de 19h en W
xorwf h'20',w ;Realiza XOR del contenido de W con el
contenido de 20h
btfsc STATUS,Z ;Verifica si el resultado de Xor!=0 (z=0)
goto DIEZ ;No,ve a DIEZ
goto INC ;Si,repite el ciclo
end

5. Elaborar un programa que encuentre el nmero menor, de un


conjunto de datos ubicados entre las localidades de memoria 20h a
40h; mostrar el valor en la direccin 41h.
PROGRAMA
processor 16f877
include<p16f877.inc>

k equ h'20' ;variable muestra el resultado


org 0 ;origen dirr 0
goto inicio ;salta a inicio
org 5 ;origen dir 5

inicio:
movlw h'21' ;w=21hex
movwf FSR ;FSR=w
movf k,0 ;w=k
movwf h'41' ;[0x41]=w
evalua:
btfss FSR,6 ;salta si bit 6 de FSR es 0 (si llego a
la dirr 40)
goto sigue
btfss FSR,0
goto sigue
goto fin ;Falso va a inicio
sigue subwf INDF,0 ;w=INDF-w
btfsc STATUS,C ;salta si acarrero es 1 (si la resta
fue negativa)
goto incrementa ;salta a incrementa
goto nuevo_menor ;salta a nuevo menor
nuevo_menor:
movf INDF,0 ;w=INDF
incf FSR,1 ;FSR=FSR+1
movwf h'41' ;[0x41]=w
movwf k ;k=w
goto evalua ;salta a evalua
incrementa:
incf FSR,1 ;FSR=FSR+1
movf k,0 ;w=k
goto evalua ;salta a evalua
fin:
end ;fin

CONCLUSIONES
En esta prctica tuvimos la oportunidad de familiarizarnos tanto con el IDE
que se estar ocupando a lo largo del curso, MPLAB, as como con la lista de
mnemnicos para el PIC16F877.
Los ejercicios realizados fueron tiles para recordar los conocimientos que
ya tenamos sobre ensamblador y para analizar a fondo las instrucciones de
este controlador.

You might also like