PRACTICA3
processor 16f877A ;Indica la versin de
procesador
include ;Incluye la librera
de la versin del procesador
org 0 ;Carga al vector de RESET la
direccin de inicio
goto INICIO
org 5 ;Direccin de inicio del programa
del usuario
INICIO
CLRF PORTA
BSF STATUS,RP0 ;Cambia
la banco 1
BCF STATUS,RP1
MOVLW 3FH ;Configura
puertos A y E como digitales
MOVWF TRISA
clrf TRISB
MOVLW 06H ;Configura el
puerto A como entrada
MOVWF ADCON1
BCF STATUS,RP0 ;Regresa
al banco cero
PRINCIPAL: CLRW ;
BTFSC PORTA,0;
MOVLW 0FFH ;
MOVWF PORTB;
GOTO PRINCIPAL;
END;
processor 16f877 ;Indica la
versin de procesador
include ;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 ;inicializa
constante en 20h
cte2 equ 50h ;inicializa
constante en 50h
cte3 equ 60h ;inicializa
constante en 60h
org 0H
;Carga al vector de RESET la
direccin de inicio
goto inicio
org 05H
;Direccin de inicio del programa
del usuario
inicio:
CLRF PORTA
BSF STATUS,RP0 ;Cambia la
banco 1
BCF STATUS,RP1
MOVLW 06H
;Configura puertos A y E como
digitales
MOVWF ADCON1
MOVLW 3FH
;Configura el puerto A como
entrada
MOVWF TRISA
MOVLW H'0' ;Se
configura el puerto B como salida
MOVWF TRISB
BCF STATUS,RP0
;Regresa al banco cero
CLRF PORTB
LEER: ;
XOR = 1 -> numeros diferentes
MOVF PORTA, 0
BTFSC STATUS,Z ;Se
verifica la bandera Z
goto apaga ;Si
PORTA == 00 apaga los leds
MOVLW H'01'
;W=01
XORWF PORTA, 0
BTFSC STATUS, Z
GOTO enciende ;Si
PORTA == 01 enciende los leds
MOVLW H'02'
;W=02
XORWF PORTA, 0
BTFSC STATUS, Z
GOTO INICIACD ;Si
PORTA == 02
MOVLW H'03'
;W=03
XORWF PORTA, 0
BTFSC STATUS, Z
GOTO INICIACI ;Si
PORTA == 03
MOVLW H'04'
;W=04
XORWF PORTA, 0
BTFSC STATUS, Z
GOTO corrimientoMixto ;Si
PORTA == 04
GOTO enciendeApaga
;Si PORTA == 05 o cualquier valor
apaga:
CLRF PORTB
GOTO LEER
enciende:
MOVLW H'FF'
MOVWF PORTB
GOTO LEER
INICIACD:
bcf STATUS,C ;si carry es
1, limpia la bandera del carry
MOVLW H'80'
MOVWF PORTB
CALL retardo
CALL retardo
corrimientoDer:
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 ;si
carry es 0, salta a corrimiento
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'
MOVWF PORTB
CALL retardo
CALL retardo
corrimientoIzq:
RLF 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 corrimientoIzq ;si carry es
0, salta a corrimiento
bcf STATUS,C ;si carry es
1, limpia la bandera del carry
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
BTFSS STATUS, C ;pregunta
por el estado de la bandera carry
GOTO corrimientoDerM;si carry
es 0, salta a corrimiento
bcf STATUS,C ;si carry es
1, limpia la bandera del carry
MOVLW H'01'
MOVWF PORTB
call retardo
call retardo
corrimientoIzqM:
RLF 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 corrimientoIzqM;si carry es
0, salta a corrimiento
bcf STATUS,C ;si carry es
1, limpia la bandera del carry
GOTO LEER
;regresa al inicio
enciendeApaga:
CLRF PORTB
call retardo
call retardo
COMF PORTB
call retardo
call retardo
goto LEER
retardo:
;Rutina de retado
movlw cte1
movwf valor1
tres:
movlw cte2
movwf valor2
dos:
movlw cte3
movwf valor3
uno:
decfsz valor3
goto uno
decfsz valor2
goto dos
decfsz valor1
goto tres
return
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.
Top Related