Practica 3 MICROCOMPUTADORAS FI UNAM
Practica 3 MICROCOMPUTADORAS FI UNAM
Practica 3 MICROCOMPUTADORAS FI UNAM
MOVWF
GOTO PRINCIPAL;
END;
processor 16f877
versin de procesador
;Indica la
include <p16f877.inc>
;Incluye la
librera de la versin del procesador
valor1 equ h'21'
;reserva
memoria en localidad 0x21
valor2 equ h'22'
;reserva
memoria en localidad 0x22
valor3 equ h'23'
;reserva
memoria en localidad 0x23
cte1 equ 20h
constante en 20h
;inicializa
;inicializa
;inicializa
org 0H
MOVWF ADCON1
goto inicio
org 05H
;Direccin de inicio del programa
del usuario
al banco cero
PRINCIPAL:
PORTB;
CLRW ;
inicio:
BTFSC PORTA,0;
CLRF PORTA
MOVLW
0FFH ;
BSF STATUS,RP0
banco 1
;Cambia la
GOTO enciende
PORTA == 01 enciende los leds
BCF STATUS,RP1
MOVLW H'02'
;W=02
MOVLW 06H
;Configura puertos A y E como
digitales
MOVWF ADCON1
XORWF PORTA, 0
BTFSC STATUS, Z
GOTO INICIACD
PORTA == 02
MOVLW 3FH
;Configura el puerto A como
entrada
XORWF PORTA, 0
;Se
BTFSC STATUS, Z
GOTO INICIACI
PORTA == 03
MOVWF TRISB
BCF STATUS,RP0
;Regresa al banco cero
XORWF PORTA, 0
;
BTFSC STATUS,Z
verifica la bandera Z
;Se
goto apaga
PORTA == 00 apaga los leds
;Si
XORWF PORTA, 0
BTFSC STATUS, Z
BTFSC STATUS, Z
GOTO corrimientoMixto
PORTA == 04
MOVF PORTA, 0
MOVLW H'01'
;W=01
;Si
MOVLW H'04'
;W=04
CLRF PORTB
LEER:
XOR = 1 -> numeros diferentes
;Si
MOVLW H'03'
;W=03
MOVWF TRISA
MOVLW H'0'
configura el puerto B como salida
;Si
;Si
GOTO enciendeApaga
;Si PORTA == 05 o cualquier valor
apaga:
CLRF PORTB
GOTO LEER
enciende:
MOVLW H'FF'
MOVWF PORTB
MOVWF PORTB
GOTO LEER
CALL retardo
INICIACD:
CALL retardo
bcf STATUS,C
;si carry es
1, limpia la bandera del carry
MOVLW H'80'
MOVWF PORTB
corrimientoIzq:
RLF PORTB
;realiza un corrimiento de bits a la
derecha
call retardo
CALL retardo
call retardo
CALL retardo
corrimientoDer:
BTFSS STATUS, C
;pregunta
por el estado de la bandera carry
RRF PORTB
;realiza un corrimiento de bits a la
derecha
call retardo
call retardo
BTFSS STATUS, C
;pregunta
por el estado de la bandera carry
GOTO corrimientoDer
carry es 0, salta a corrimiento
;si
bcf STATUS,C
;si carry es
1, limpia la bandera del carry
GOTO LEER
;regresa al inicio
INICIACI:
bcf STATUS,C
;si carry es
1, limpia la bandera del carry
MOVLW H'01'
GOTO LEER
;regresa al inicio
corrimientoMixto:
bcf STATUS,C
;si carry es
1, limpia la bandera del carry
MOVLW H'80'
MOVWF PORTB
call retardo
call retardo
corrimientoDerM:
RRF PORTB
;realiza un corrimiento de bits a la
derecha
call retardo
call retardo
call retardo
call retardo
BTFSS STATUS, C
;pregunta
por el estado de la bandera carry
COMF PORTB
call retardo
call retardo
goto LEER
retardo:
;Rutina de retado
movlw cte1
MOVWF PORTB
movwf valor1
call retardo
tres:
call retardo
movlw cte2
corrimientoIzqM:
movwf valor2
RLF PORTB
;realiza un corrimiento de bits a la
derecha
dos:
movlw cte3
call retardo
movwf valor3
call retardo
uno:
BTFSS STATUS, C
;pregunta
por el estado de la bandera carry
decfsz valor3
goto uno
decfsz valor2
bcf STATUS,C
;si carry es
1, limpia la bandera del carry
goto dos
decfsz valor1
GOTO LEER
;regresa al inicio
goto tres
return
enciendeApaga:
CLRF PORTB
end
Anlisis de resultados
Se alcanzaron los objetivos
En esta prctica se cumplieron rotundamente los objetivos ya que pudimos usar dos
puertos paralelos del microprocesador en este caso el A y B. Usamos estos puertos para
lograr hacer funciones de control a partir del ensamblador.
En el caso del punto uno se lograron los objetivos al emplear los dos puertos paralelos del
microcontrolador configurando cada uno de ellos, uno como entrada, y el otro como
salida. Se logr establecer que de acuerdo al valor establecido en el puerto A, sea cero o
uno, se gener una accin para el puerto B. Logrando as el objetivo. De la misma forma
que en el primer punto, en el segundo punto se trabaj con un puerto de entrada y con
otro de salida, logrando generar retardos de medio segundo, de acuerdo a nuestra tabla
de acciones de control establecidas. Logrando as tambin el objetivo.
Perifricos usados
Para realizar esta prctica utilizamos el puerto A y B. En donde el puerto A actu como
entrada y el B como salida.
Flujo interno
El puerto A del microprocesador fue nuestra entrada ya que por medio de un dipswitch
introdujimos los datos para que nuestro programa operara, dependiendo del nmero que
se asignara se realizaban diferentes funciones a travs del puerto B que resulto ser
nuestra salida, ya que aqu se mostraba las funciones antes mencionadas; dependiendo de
la instruccin los leds prendan o apagaban en diferentes secuencias.
Modos de direccionamiento
En esta prctica solo hicimos uso del modo de direccionamiento indexado ya que el
procesador calcula la direccin real y el operando se encuentra en memoria. Adems el
registro se modifica a menudo en la ejecucin del programa.
Conclusiones.
Mendoza Gonzlez Ernesto
Esta prctica me pareci muy divertida ya que empezamos a hacer ms cosas con el
micro, tambin que los programas son muy parecidos, pero eso me ayuda ms a como
comprender el funcionamiento y tambin a como programar mejor el micro.
Se nos complic un poco en el programa dos ya que tuvimos que implementar como un
tipo Switch para los diferentes casos que se podan presentar, pero aparte de eso fue muy
sencillo.
Martnez Ramrez Karen Liliana
Esta prctica me pareci muy interesante ya que pudimos ver con ms detalle de lo que es
capaz un microprocesador, esta vez trabajamos con los puertos paralelos del pic, con el
dipswitch del puerto A nosotros podamos introducir nuestros datos y el resultado de las
instrucciones ejecutadas al realizar esas acciones se mostraban en los leds del puerto B.
Esta vez nos pareci ms complicado implementar nuestro cdigo en ensamblador. El
ejercicio dos fue el que me pareci ms interesante porque para cada diferente numero
ingresado en binario los leds prendan y apagaban de diferentes maneras .
Miranda Vzquez Pedro Alberto
A decir verdad esta prctica estuvo muy interesante puesto aprend a emplear puertos
paralelos contenidos en un microcontrolador, aprendiendo adems a configurar a un
puerto como entrada y a el otro como salida. Creo yo que del que ms aprend, en esta
prctica, fue del segundo ejercicio ya que adems de lograr hacer retardos de medio
segundo en cada secuencia, logramos que cuando era cero; todos los leds se mantenan
apagados, que cuando era uno; todos encendidos, que cuando era tres; corrimiento hacia
la izquierda, con cuatro; a la derecha, y con cinco logramos apagar y prender todos los
bits. Por lo que se podra decir que adems de lo aprendido se lograron cumplir todos los
objetivos.