Está en la página 1de 8

1.

-Implementar el circuito y realizar un programa para que funcione como un


contador 74193, donde mediante un pulsador S se elige la secuencia de tal
manera
si S = 0, la secuencia sea ascendente y que cambie cada 2 seg
si S = 1, la secuencia sea descendente y que cambie cada seg. Mostrando la salida
en leds. y en dos diplays de 7 segmentos

solucin.

CONTADOR

si S no
=
1

W 14h W 00h

Cont1 w Cont1 w

DISPLAY DISPLAY

Call delay1seg Call delay1seg

Call delay1seg
Cont1 cont1-1

si no no si
Cont Cont
1=00 1=14
h h
list p=16f84

status equ 0x03


roption equ 0x81
trisb equ 0x86
trisa equ 0x85
porta equ 0x05
portb equ 0x06
uno equ 0x0c
dos equ 0x0d
tres equ 0x0e
cuatro equ 0x0f
cinco equ 0x10
seis equ 0x11
siete equ 0x12
ocho equ 0x13
nueve equ 0x14
cero equ 0x15
intcon equ 0x0b
tmr equ 0x01
cont equ 0x16

movlw 0x30
movwf uno
movlw 0x6d
movwf dos
movlw 0x79
movwf tres
movlw 0x33
movwf cuatro
movlw 0x5b
movwf cinco
movlw 0x5f
movwf seis
movlw 0x70
movwf siete
movlw 0x7f
movwf ocho
movlw 0x7b
movwf nueve
movlw 0x7e
movwf cero

bsf status,5
movlw 0x07
movwf roption
movlw 0x00
movwf trisb
movlw 0x01
movwf trisa
bcf status,5

lazo btfss porta,0


goto up
goto down

up call asc
goto lazo

down call des


goto lazo

asc movf cero,0


movwf portb
call delay1seg
call delay1seg
movf uno,0
movwf portb
call delay1seg
call delay1seg
movf dos,0
movwf portb
call delay1seg
call delay1seg
movf tres,0
movwf portb
call delay1seg
call delay1seg
movf cuatro,0
movwf portb
call delay1seg
call delay1seg
movf cinco,0
movwf portb
call delay1seg
call delay1seg
movf seis,0
movwf portb
call delay1seg
call delay1seg
movf siete,0
movwf portb
call delay1seg
call delay1seg
movf ocho,0
movwf portb
call delay1seg
call delay1seg
movf nueve,0
movwf portb
call delay1seg
call delay1seg
return

des movf nueve,0


movwf portb
call delay1seg
call delay1seg
movf ocho,0
movwf portb
call delay1seg
call delay1seg
movf siete,0
movwf portb
call delay1seg
call delay1seg
movf seis,0
movwf portb
call delay1seg
call delay1seg
movf cinco,0
movwf portb
call delay1seg
call delay1seg
movf cuatro,0
movwf portb
call delay1seg
call delay1seg
movf tres,0
movwf portb
call delay1seg
call delay1seg
movf dos,0
movwf portb
call delay1seg
call delay1seg
movf uno,0
movwf portb
call delay1seg
call delay1seg
movf cero,0
movwf portb
call delay1seg
call delay1seg
return
delay1seg movlw 0x64
movwf cont
lazo2 call delay10ms
decfsz cont,1
goto lazo2
return

delay10ms bcf intcon,2


movlw 0xd9
movwf tmr
lazo3 btfss intcon,2
goto lazo3
return
end
3.-Implementar el circuito y realizar un programa para que funcione como un
registro de corrimiento derecha / izquierda. de 8 bits. de tal manera el corrimiento
derecha sea cada seg. y el corrimiento izquierda sea cada 2 seg. El sentido de
desplazamiento sea seleccionable mediante un selector S.
si S = 0 se tiene corrimiento derecha
si S = 1 se tiene corrimiento izquierda

CORRIMIENTO

si no
IZQ 01h S= DER 01h
1

W 07h W 08h

cont W
cont W

RRF DER
RLF IZQ

Call delay1seg
Call delay1seg

cont cont - 1
Call delay1seg

no si
Cont=
cont cont - 1
0

si no
Cont=
0
list p=16f84

status equ 0x03


trisa equ 0x85
trisb equ 0x86
roption equ 0x81
tmr equ 0x01
intcon equ 0x0b
izq equ 0x0c
der equ 0x0d
cont1 equ 0x0e
cont2 equ 0x0f
temp equ 0x10
porta equ 0x05
portb equ 0x06

bsf status,5
movlw 0x00
movwf trisb
bsf trisa,0
movlw 0x07
movwf roption
bcf status,5

lazo btfss porta,0


goto derecha
goto izquierda

izquierda call ciz


goto lazo
derecha call cde
goto lazo

ciz movlw 0x01


movwf portb
movlw 0x07
movwf cont1

lazo2 rlf portb,1


call delay1seg
call delay1seg
decfsz cont1,1
goto lazo2
return

cde movlw 0x01


movwf portb
movlw 0x08
movwf cont2
lazo3 rrf portb,1
call delay1seg
decfsz cont2,1
goto lazo3
return

delay1seg movlw 0x64


movwf temp
lazo4 call delay10mseg
decfsz temp,1
goto lazo4
return

delay10mseg bcf intcon,2


movlw 0xd9
movwf tmr
lazo5 btfss intcon,2
goto lazo5
return
end

También podría gustarte