Está en la página 1de 10

UNIVERSIDAD SABES UNIDEG, PLANTEL SAN

LUIS DE LA PAZ
LIC. INGIENERIA TECNOLOGIAS DE LA
INFORMACIÓN
MICROCOMPUTADORAS
10Mo CUATRIMESTRE
Profesor. JOEL GARAVITO NAVARRO
Actividad 3. Sistema mínimo microcontrolador
PIC16F877.
JONATHAN ADRIAN ARREDONDO RIVERA.
Matricula: U1903059L0197
FECHA DE ENTREGA:26/09/2022
1.- Escribir comentar e indicar que hace el siguiente programa.

processor 16f877 ; indica la versión del procesador


include<p16f877.inc> ;incluye la libreria que contiene las instrucciónes del micro
contador equ h'20' ;reserva la memoria para la variable contador a partir de la localidad 20
valor1 equ h'21' ; reserva la memoria para la variable valor1
valor2 equ h'22' ;reserva la memoria para la variable valor2
valor3 equ h'23' ;reserva la memoria para la variable valor3
cte1 equ 20h ;asigna el valor a una constante ct1 de 20h
cte2 equ 50h ;asigna el valor a una constante cte2 de 50h
cte3 equ 60h
org 0 ; vector reset
goto inicio ;brinca a la etiqueta inicio
org 5 ; vector reset
inicio ;etiqueta
bsf STATUS,5 ; pone la configuración para banco 1
bcf STATUS,6 ;pone la configuración para banco 1
movlw H'0' ;mueve al registro W un 0
movwf TRISB ;mueve el 0 a el registro TRISB que configura PORTB
bcf STATUS,5 ; banco 0
clrf PORTB ; limpia el puerto b por si algo quedo guardado
loop2
bsf PORTB,0 ;asignamos acciones al registro portb en el bit 0 del puerto b pone
un uno
call retardo ; llama un retardo
bcf PORTB,0 ;pone un 1 en el puerto b
call retardo ; llamamos al retardo
goto loop2 ; y se encicla
retardo
movlw cte1 ; pone en el registro w cte1
movwf valor1 ; 20h
tres ;etiqueta
movlw cte2 ;pone en el registro w cte2
movwf valor2 ;50h
dos ;etiqueta
movlw cte3 ;pone en el registro w ct3
movwf valor3 ; 60h hace un retardo de medio segundo para un segundo habria que
duplicarse las distancias ( para un segundo)
uno ;etiqueta
decfsz valor3 ;decrementa el valor
goto uno ;va a la etiqueta uno

decfsz valor2 ; decrementa el valor2


goto dos ;va a la etiqueta dos

decfsz valor1 ;decrementa el valor1


goto tres ;va a la etiqueta tres
return
end ; FIN DEL PROGGRAMA
2.- Ensamblar y cargar el programa anterior en memoria del microcontrolador.
3.- Modificar el programa anterior, para que ahora se actualice el contenido de
todos los bits del puerto B y se genere una rutina de retardo de un segundo.

processor 16f877
include<p16f877.inc>
contador equ h'20' ; contador = 20h
valor1 equ h'21' ; dir(A) = 21h
valor2 equ h'22' ; dir(B) = 22h
valor3 equ h'23' ; dir(C) = 23h
cte1 equ 20h ; cte1 = 20h
cte2 equ 50h ; cte2 = 50h
cte3 equ 60h ; ct3 = 60h
org 0
goto inicio
org 5
inicio: bsf STATUS,5 ; rp0 = 1
BCF STATUS,6 ; rp1 = 0, accedemos al banco 1
MOVLW H'0' ; w = 0h
MOVWF TRISB ; TrisB = 0h, Config. de salida
BCF STATUS,5 ; rp0 = 0, accedemos al banco 0
clrf PORTB ; PortB = 00h, limpiar el PortB
loop2: movlw h'00'; w = 0h
movwf PORTB; PortB = 00h
call retardo ; mantiene la señal
movlw h'FF'; w = ffh
movwf PORTB; PortB = ffh
call retardo ; mantiene la señal
goto loop2 ; repite, el pin 0 del PortB "parpadea"
retardo:movlw cte1 ; w = ct1
movwf valor1 ; A = ct1
tres: movlw cte2 ; w = ct2
movwf valor2 ; B = ct2
dos: movlw cte3 ; w = ct3
movwf valor3 ; C = ct3
uno: decfsz valor3 ; C--, y salta si es cero
goto uno ; Si C != 0, repite
decfsz valor2 ; Si C == 0, B--, y salta si es cero
goto dos ; Si B != 0, reinicia C = ct3
decfsz valor1 ; Si B == 0, A--, y salta si es 0
goto tres ; Si A != 0, reinicia B
return ; Si A = B = C = 0, termina
END
4.- Realizar un programa que muestre la siguiente secuencia en el puerto B con
retardos de ½ segundo.

processor 16f877
include<p16f877.inc>
contador equ h'20' ; contador = 20h
valor1 equ h'21' ; dir(A) = 21h
valor2 equ h'22' ; dir(B) = 22h
valor3 equ h'23' ; dir(C) = 23h
cte1 equ 20h ; cte1 = 20h
cte2 equ 50h ; cte2 = 50h
cte3 equ 60h ; ct3 = 60h
org 0
goto inicio
org 5
inicio: bsf STATUS,5 ; rp0 = 1
BCF STATUS,6 ; rp1 = 0, accedemos al banco 1
MOVLW H'0' ; w = 0h
MOVWF TRISB ; TrisB = 0h, Config. de salida
BCF STATUS,5 ; rp0 = 0, accedemos al banco 0
clrf PORTB ; PortB = 00h, limpiar el PortB
movlw h'01'; w = 01h
movwf PORTB; PortB = 01h
BCF STATUS, C; Bandera C = 0
loop2: rrf PORTB; Rota el valor de PortB hacia la derecha
call retardo ; mantiene la señal
goto loop2 ; repite, el pin 0 del PortB "parpadea"
retardo:movlw cte1 ; w = ct1
movwf valor1 ; A = ct1
tres: movlw cte2 ; w = ct2
movwf valor2 ; B = ct2
dos: movlw cte3 ; w = ct3
movwf valor3 ; C = ct3
uno: decfsz valor3 ; C--, y salta si es cero
goto uno ; Si C != 0, repite
decfsz valor2 ; Si C == 0, B--, y salta si es cero
goto dos ; Si B != 0, reinicia C = ct3
decfsz valor1 ; Si B == 0, A--, y salta si es 0
goto tres ; Si A != 0, reinicia B
return ; Si A = B = C = 0, termina
END
5.- Realizar un programa que muestre un contador binario por el puerto paralelo B,
desde su valor mínimo B’00000000’ hasta el máximo B’11111111’ y se repita
nuevamente el contador; usar retardos de ½ segundo.

processor 16f877
include<p16f877.inc>
contador equ h'20' ; contador = 20h
valor1 equ h'21' ; dir(A) = 21h
valor2 equ h'22' ; dir(B) = 22h
valor3 equ h'23' ; dir(C) = 23h
cte1 equ 20h ; cte1 = 20h
cte2 equ 50h ; cte2 = 50h
cte3 equ 60h ; ct3 = 60h
org 0
goto inicio
org 5
inicio: bsf STATUS,5 ; rp0 = 1
BCF STATUS,6 ; rp1 = 0, accedemos al banco 1
MOVLW H'0' ; w = 0h
MOVWF TRISB ; TrisB = 0h, Config. de salida
BCF STATUS,5 ; rp0 = 0, accedemos al banco 0
clrf PORTB ; PortB = 00h, limpiar el PortB
loop2: incf PORTB ; PortB++
call retardo ; mantiene la señal
goto loop2 ; repite, el pin 0 del PortB "parpadea"
retardo:movlw cte1 ; w = ct1
movwf valor1 ; A = ct1
tres: movlw cte2 ; w = ct2
movwf valor2 ; B = ct2
dos: movlw cte3 ; w = ct3
movwf valor3 ; C = ct3
uno: decfsz valor3 ; C--, y salta si es cero
goto uno ; Si C != 0, repite
decfsz valor2 ; Si C == 0, B--, y salta si es cero
goto dos ; Si B != 0, reinicia C = ct3
decfsz valor1 ; Si B == 0, A--, y salta si es 0
goto tres ; Si A != 0, reinicia B
return ; Si A = B = C = 0, termina
END

Conclusiones
Actualmente una computadora suele tener diversas conexiones que hacen que el trabajo del
usuario se haga un poco más fácil, permitiéndole a este que su producción se incremente a
medida que los computadores vallan innovando y estos sean indispensables para el trabajo.

También podría gustarte