Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
btfsc
goto
porta,in
Checa_in
;checa que in a 0
0,1,0
0,0,0,0,0
0,1,0
0,0,0,0,1
0,1,0
0,0,0,1,1
0,1,0
0,0,1,1,1
0,1,0
0,1,1,1,1
0,1,0
1,1,1,1,1
Se repite 5 veces
Fin
ciclo=1
if ciclo==0
goto
Inicio_de_nuevo
else
goto
Prog2
endif
Fig. 1
Fig. 2
equ
equ
equ
0x0c
0x0d
0x0e
rcount
scount
tcount
ucount
equ
equ
equ
equ
0x0f
0x10
0x11
0x12
;registro
;registro
;registro
;registro
count1
count2
count3
count4
count5
equ
equ
equ
equ
equ
0x13
0x14
0x15
0x16
0x17
;registro
;registro
;registro
;registro
;registro
veces
equ
0x18
;------------------------------------------------------------------------;
equs de configuracion
;------------------------------------------------------------------------_CP_ON
_CP_OFF
_PWRTE_ON
_PWRTE_OFF
_WDT_ON
_WDT_OFF
_LP_OSC
_XT_OSC
_HS_OSC
_RC_OSC
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'000F'
H'3FFF'
H'3FF7'
H'3FFF'
H'3FFF'
H'3FFB'
H'3FFC'
H'3FFD'
H'3FFE'
H'3FFF'
list p=16F84A
__CONFIG
;---------------------------------------------------------------------------;MACROS
Minutos
macro
movlw
movwf
call
endm
min
min
count5
npaus_1m
Segundos
macro
movlw
movwf
call
endm
seg
seg
ucount
npaus_1s
Miliseg
macro
movlw
movwf
call
endm
miliseg
miliseg
pcount
npaus_100ms
Timer
macro
if min>0
Minutos
endif
min,seg,miliseg
if seg>0
Segundos
endif
if miliseg>0
Miliseg
endif
endm
Output
macro
if o1==0
bcf
else
bsf
endif
if o2==0
bcf
else
bsf
endif
if o3==0
bcf
else
bsf
endif
if o4==0
bcf
else
bsf
endif
if o5==0
bcf
min
seg
miliseg
o1,o2,o3,o4,o5
portb,out1
portb,out1
portb,out2
portb,out2
portb,out3
portb,out3
portb,out4
portb,out4
porta,out5
else
bsf
endif
endm
Repite
macro
movlw
movwf
endm
RepitiendoDesde macro
decfsz
goto
endm
porta,out5
Repeticiones
Repeticiones
veces
Etiqueta
veces,f
Etiqueta
;---------------------------------------------------------------------------;Principio
start
org
0x000
movlw
tris
movlw
tris
b'11110000'
porta
b'00001111'
portb
clrf
clrf
portb
porta
;apaga puerto B
;apaga puerto A
btfsc
goto
porta,in
Checa_in
;checa que in a 0
Inicio_de_nuevo
Checa_in
;---------------------------------------------------------------------------;Programa
;-------Prog1
Prog1Step1
Timer
0,1,0
;min,seg,miliseg
FinProg1
Prog2
Repite
d'3'
Prog2Step1
Output
Timer
0,0,0,0,1
0,0,5
Output
Timer
0,0,0,1,0
0,0,5
Output
Timer
0,0,1,0,0
0,0,5
Prog2Step2
Prog2Step3
Prog2Step4
;Repite 1 a 255, no se v
Output
Timer
0,1,0,0,0
0,0,5
Output
Timer
1,0,0,0,0
0,0,5
Prog2Step5
RepitiendoDesde Prog2Step1
Repite
;Repite 1 a 255, no se v
FinProg2
;-------Prog3
d'3'
Prog3Step1
Output
Timer
1,1,1,1,1
0,0,7
Output
Timer
0,0,0,0,0
0,0,7
Prog3Step2
RepitiendoDesde Prog3Step1
;Repite este programa de
FinProg3
;---------------------------------------------------------------------------Ciclo
ciclo=1
if ciclo==0
Fin
goto
Inicio_de_nuevo
else
goto
Prog2
endif
;---------------------------------------------------------------------------;SUBRRITINAS
;---------------------------------------------------------------------------;paus_100ms es una pausa de 100 mili segundos = a .1 seg
paus_100ms
movlw
0x82
;M
movwf
mcount
;to M counter
loadn
movlw
0xff
;N
movwf
ncount
;to N counter
decn
decfsz ncount,f
;decrement N
goto
decn
;again
decfsz mcount,f
;decrement M
goto
loadn
;again
return
;done
;---------------------------------------------------------------------------;npause_100ms repite 100ms las veces que contenda el registro pcount
;antes de entrar cargar el registro pcount con el numero deceado
npaus_100ms
call
paus_100ms
decfsz pcount,f
goto
npaus_100ms
return
;---------------------------------------------------------------------------;paus_1s es una pausa de 1 segundo
paus_1s
movlw
0x0a
;carga
movwf
tcount
;tcount
loads
loadr
decr
movlw
movwf
movlw
movwf
decfsz
goto
decfsz
goto
decfsz
goto
return
0x82
scount
0xff
rcount
rcount,f
decr
scount,f
loadr
tcount
loads
;carga
;scount
;carga
;rcount
;decrement r
;again
;decrement s
;again
;decrement t
;again
;done
movlw
movwf
movlw
movwf
0x3c
count4
0x0a
count3
;carga 60 decimal
;count4
;carga
;count3
movlw
movwf
movlw
movwf
decfsz
goto
decfsz
goto
decfsz
goto
decfsz
goto
return
0x82
count2
0x00
count1
count1,f
dec1
count2,f
load1
count3
load2
count4
load3