Está en la página 1de 9

UNIVERSIDAD NACIONAL AUTONOMA DE MXICO

LAB. DE MICROCONTROLADORES

PRCTICA 3

PUERTOS PARALELOS I CONTROL DE ACCIONES

Amado Esparza Martn del Campo

05/09/2017
PRCTICA 3

INICIO
ADCON1- DEFINE SI EL PUERTO TRABAJA DE FORMA

ANALGICA O DIGITAL

IR BANCO1

ADCON1=0
6H

CONFIG
REG. TRIS

IR BANCO 0
processor 16f877; indica la version del procesador
include <p16f877.inc>; incluye la librera de las instrucciones del micro
org 0H; vector de inicio
goto inicio; va a la etiqueta inicio
org 5H; vector de inicio
inicio: clrf PORTA; seguridad de que no este nada cargado
clrf PORTB; seguridad de que no este nada cargado
bsf STATUS,RP0; bit set para cambiar el banco
bcf STATUS,RP1;bit set para cambiar el banco
movlw 06H; E/S digital
movwf ADCON1; E/S digital
movlw H'FF'; PORTA = entrada
movwf TRISA; PORTA = entrada
clrf TRISB; PORTB = salida
bcf STATUS,RP0; banco 0
ciclo: btfsc PORTA,0; bit test de port A
goto encendidos; va a la etiqueta encendidos
clrf PORTB; pone en 0 el portB
goto ciclo; va a la etiqueta ciclo
encendidos: movlw H'FF'; pone 1s en el registro W
movwf PORTB; pone los 1 en el puertoB
goto ciclo; va a la etiqueta ciclo
END; fin del programa
2. Realizar un programa, el cual realice las siguientes acciones de control, para lo cul requiere
trabajar un puerto de entrada y otro puerto de salida, usar los sugeridos en el ejercicio anterior,
generar retardos de segundo en las secuencias que lo requieran.

processor 16f877
include <p16f877.inc>
valor1 equ h'21'
valor2 equ h'22'
valor3 equ h'23'
contador equ h'24'
conta equ h'25'
cte1 equ 20h; valores de retraso
cte2 equ 50h
cte3 equ 60h
org 0H
goto inicio
org 5H
inicio: clrf PORTA; seguridad de que no este nada cargado
clrf PORTB; seguridad de que no este nada cargado
bsf STATUS,RP0
bcf STATUS,RP1
movlw 06H; E/S digital
movwf ADCON1; E/S digital
movlw H'FF'; PORTA = entrada
movwf TRISA; PORTA = entrada
clrf TRISB; PORTB = salida
bcf STATUS,RP0; banco 0
switcheo: btfsc PORTA,2
goto a10x
goto a0xx
a0xx: btfsc PORTA,1
goto a01x
goto a00x
a01x:btfsc PORTA,0
goto opcion4
goto opcion3
a00x: btfsc PORTA,0
goto opcion2
goto opcion1
a10x: btfsc PORTA,0
goto opcion6
goto opcion5
opcion1: clrf PORTB ; todos los leds apagados
goto switcheo
opcion2: movlw H'FF'; todos los leds encendidos
movwf PORTB
goto switcheo
opcion3: movfw b'10000000'; se incicializa en H'80'
movfw PORTB
call retardo
rrf PORTB; recorre a la derecha el bit
call retardo
goto switcheo; y se encicla
;opcion4: movfw b'00000001'; se incicializa en H'80'
; movfw PORTB
; call retardo
; rlf PORTB; recorre a la derecha el bit
; call retardo
; goto switcheo; y se encicla
;opcion5: movfw b'10000000'
; movfw PORTB
; call retardo
; rrf PORTB
; call retardo
; btfss PORTB,0
; movfw b'00000001'
; movfw PORTB
; call retardo
; rlf PORTB
; call retardo
; goto switcheo
opcion5: bcf STATUS,0
movlw H'80'
movwf PORTB
movlw H'08'
movfw conta
loop3: call retardo
rrf PORTB,1
decf contador
btfss STATUS, 2
goto loop3
movlw H'08'
movwf conta
goto loop2
opcion4: bcf STATUS, 0
movlw H'01'
movwf PORTB
movlw H'08'
movwf conta
loop2: call retardo
rlf PORTB, 1
decf conta
btfss STATUS, 2
goto loop2
goto switcheo

opcion6: clrf PORTB ; todos los leds apagados


call retardo
movlw H'FF'; todos los leds encendidos
movwf PORTB
call retardo
goto switcheo

;CICLO DE RETARDO PARA VER EL ENCENDIDO DE LOS LEDS


retardo movlw cte1;
movwf valor1; 20h
tres movlw cte2
movwf valor2;50h
dos movlw cte3
movwf valor3; 60h hace un retardo de medio segundo para un segundo habria que duplicarse
las distancias ( para un segundo)
uno decfsz valor3
goto uno
decfsz valor2
goto dos
decfsz valor1
goto tres
return
END

También podría gustarte