Está en la página 1de 7

Universidad Nacional Autnoma de Mxico

Facultad de Ingeniera
Laboratorio de Microcomputadoras
Prctica # 2
Sistema mnimo microcontrolador PIC16F877
Grupo: 01
Equipo: 4
Propuestas de solucin y cdigos fuente
Programa 3
1.- Inicio
2.- Poner en ceros los bits del Puerto B
3.-Llamar a retardo
4.- Poner en unos los bits del puerto B
5.- Llamar a retardo
6.- Regresar al paso 2
7.- FIN

processor 16f877
include<p16f877.inc>
contador equ h'20' ;Se declaran las constantes que seran usadas en

valor1 equ h'21' ;La subrutina que genera un retardo de .5 s


valor2 equ h'22'
valor3 equ h'23'
cte1 equ 20h
cte2 equ 50h
cte3 equ 60h
org 0
goto inicio
org 5
inicio
bsf STATUS,5 ;Se pone un 1 en el bit 5 de STATUS
BCF STATUS,6 ;Se pone un 0 en el bit 6 de STATUS para poder cambiar al banco 1
MOVLW H'0'
MOVWF TRISB ;Se configura a TRISB como puerto de salida
BCF STATUS,5 ;Se regresa al banco 0
clrf PORTB ;Se carga un 0 a PORTB
loop2
movlw 0xff ;Se carga un FF al registro de trabajo
movwf PORTB ;Se carga FF al PORTB para que prendan todos los leds
call retardo ;Se llama a la subrutina dos veces para generar un retarde de 1s
call retardo
clrf PORTB; Se carga 00 al PORTB para apagar todos los leds
call retardo;Se llama a la subrutina dos veces para generar un retarde de 1s
call retardo
goto loop2; Salto incondicional al loop2 para repetir el ciclo

retardo ;Subrutina que genera un retardo de .5 s

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
Programa 4
1.- Inicio
2.- Poner en alto bit 7
3.- Rotar bit a la derecha
4.- Si BIT en alto se encuentra en el LSB
5.- Volver al paso 2
6.- EN CASO CONTRARIO
7.- Volver al paso 3
8.- FIN
processor 16f877

include<p16f877.inc>
contador equ h'20' ;Se declaran las constantes que seran usadas en
valor1 equ h'21' ;La subrutina que genera un retardo de .5 s
valor2 equ h'22'
valor3 equ h'23'
cte1 equ 20h
cte2 equ 50h
cte3 equ 60h
org 0
goto inicio
org 5
inicio
bsf STATUS,5 ;Se pone un 1 en el bit 5 de STATUS
BCF STATUS,6 ;Se pone un 0 en el bit 6 de STATUS para poder cambiar al banco 1
MOVLW H'0'
MOVWF TRISB ;Se configura a TRISB como puerto de salida
BCF STATUS,5 ;Se regresa al banco 0
clrf PORTB ;Se carga un 0 a PORTB
loop2
rrf PORTB,1 ;Se hace un rotamiento hacia la izquierda
call retardo ;Se hace un retardo de .5s
goto loop2 ;Salto incondicional para repetir el ciclo
retardo ;Subrutina que genera retarde de .5 s
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
Programa 5
1.- Inicio
2.- Incrementar LSB
3.- Llama a retardo
4.- Regresar al paso 2
5.- FIN
processor 16f877
include<p16f877.inc>
contador equ h'20' ;Se declaran las constantes que seran usadas en
valor1 equ h'21' ;La subrutina que genera un retardo de .5 s
valor2 equ h'22'
valor3 equ h'23'
cte1 equ 20h
cte2 equ 50h
cte3 equ 60h
org 0
goto inicio

org 5
inicio
bsf STATUS,5 ;Se pone un 1 en el bit 5 de STATUS
BCF STATUS,6 ;Se pone un 0 en el bit 6 de STATUS para poder cambiar al banco 1
MOVLW H'0'
MOVWF TRISB ;Se configura a TRISB como puerto de salida
BCF STATUS,5 ;Se regresa al banco 0
reset
clrf PORTB ;Se carga un 0 a PORTB
loop2
incf PORTB;Se hace un incremento a PORTB
call retardo; Se hace un retarde de .5 s
movlw h'FF';Se carga FF al registro w
subwf PORTB,0 ;Se hace la resta de w-PORTB
BTFSC STATUS,Z ;Se comprueba si la bandera Z esta encendida
goto reset ;Si, Salto a reset
goto loop2 ;Se repite el ciclo
retardo ;Subrutina que genera retarde de .5 s
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
Perifricos usados
Los perifricos usados fueron los leds, localizados en el PUERTO B.
Conclusiones

En esta practica se pudieron cumplir todos los objetivos ya que se realizaron todos los
experimentos con xito y fue posible descargarlos a la tarjeta para poder ver su
funcionamiento. Esta practica es muy importante ya que nos da una introduccion a los
registros de los puertos ademas de cmo configurarlos para futuras practicas.
Modos de Direccionamiento

Para todos los ejercicio se uso direccionamiento directo