;------------------------------------------------------------
; Archivo de Proyecto de Niple.
; Nombre del Proyecto:
PERSIANA
; Funcion:
; Autor: I. E. S. Cedeira - España - (Equipo e80).
; Fecha: 10/03/03
;------------------------------------------------------------
LIST P=PIC16F84
;------------------------------------------------------------
; Declaración de registros
;------------------------------------------------------------
w equ 00h
status equ 03h
porta equ 05h
portb equ 06h
_np_veces equ 0ch
_np_tiempo equ 0dh
_np_tiempo1 equ 0eh
conta equ 0fh
trisa equ 85h
trisb equ 86h
;------------------------------------------------------------
; Declaración de Bits
;------------------------------------------------------------
ra0 equ 0 ;bit 0 del puerto a
ra1 equ 1 ;bit 1 del puerto a
ra2 equ 2 ;bit 2 delpuerto
a
ra3 equ 3 ;bit 3 del puerto a
ra4_t0cki equ 4 ;bit 4 del puerto o entrada de
reloj
rp0 equ 5
;registrer banck select bit
;------------------------------------------------------------
; Inicio
;------------------------------------------------------------
reset org 0
goto
paso2
;------------------------------------------------------------
; programa principal
;------------------------------------------------------------
paso2
;configurar el
puerto a como xxxeeeee
bsf
status,rp0
;cambiar a pagina 1
movlw
b'00011111'
movwf
trisa
;configurar el
puerto b como ssssssss
movlw
b'00000000'
movwf
trisb
paso4
bcf
status,rp0
;cambiar a pagina 0
clrwdt
;escribir en el
puerto b
movlw d'0'
movwf portb
call usr_paro
btfss porta,ra1
goto
paso4 ;cierra el ciclo
goto
paso8
paso8
call
usr_pulso_puro
;escribir en el
puerto b
movlw
b'00000010'
movwf
portb
paso10
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
btfsc
porta,ra3
goto
paso13
goto
paso14
paso13
;escribir en el
puerto b
movlw
b'00000110'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
goto
paso10 ;cierra el ciclo
paso14
call
usr_pulso_puro
paso15
;escribir en el
puerto b
movlw
b'00000010'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
paso16
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
btfss
porta,ra2
goto
paso16 ;cierra el ciclo
goto
paso19
paso19
call
usr_pulso_puro
call
usr_conta_temp
paso21
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
btfss
porta,ra2
goto
paso24
goto
paso25
paso24
;escribir en el
puerto b
movlw
d'0'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
goto
paso21 ;cierra el ciclo
paso25
;escribir en el
puerto b
movlw
b'00001000'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
btfsc
porta,ra4_t0cki
goto
paso21 ;cierra el ciclo
goto
paso27
paso27
;escribir en el
puerto b
movlw
d'0'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
paso28
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
btfss
porta,ra2
goto
paso28 ;cierra el ciclo
goto
paso31
paso31
call
usr_pulso_puro
call
usr_conta_temp
paso33
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
btfss
porta,ra2
goto
paso36
goto
paso37
paso36
;escribir en el
puerto b
movlw
d'0'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
goto
paso33 ;cierra el ciclo
paso37
;escribir en el
puerto b
movlw
b'00000100'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
btfsc
porta,ra3
goto
paso33 ;cierra el ciclo
goto
paso39
paso39
;escribir en el
puerto b
movlw
d'0'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
goto
paso15 ;cierra el ciclo
;---------------------------------------------
usr_paro
;configurar el
puerto b como ssssssss
bsf
status,rp0
;cambiar a pagina 1
movlw
b'00000000'
movwf
trisb
usr_paro3
bcf
status,rp0
;cambiar a pagina 0
clrwdt
btfss
porta,ra0
goto
usr_paro5
goto
usr_paro9
usr_paro5
;escribir en el
puerto b
movlw
b'00000001'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
call
temporizador_500_mse
;escribir en el
puerto b
movlw
d'0'
movwf
portb
call
temporizador_300_mse
goto
usr_paro3
;cierra el ciclo
usr_paro9
call
temporizador_20_mse
goto
usr_paro_salir
usr_paro_salir
bcf status,rp0
return
;---------------------------------------------
usr_pulso_puro
call temporizador_20_mse
goto
usr_pulso_puro_salir
usr_pulso_puro_salir
bcf
status,rp0
return
;---------------------------------------------
usr_conta_temp
;configurar el
puerto b como ssssssss
bsf
status,rp0
;cambiar a pagina 1
movlw
b'00000000'
movwf
trisb
bcf
status,rp0
;cambiar a pagina 0
movlw
d'5'
movwf
conta
usr_conta_temp5
bcf
status,rp0
;cambiar a pagina 0
clrwdt
;escribir en el
puerto b
movlw d'0'
movwf portb
call usr_paro
btfss porta,ra2
goto
usr_conta_temp9
goto
usr_conta_temp16
usr_conta_temp9
bcf
status,rp0
;cambiar a pagina 0
clrwdt
btfsc
porta,ra3
goto
usr_conta_temp11
goto
usr_conta_temp15
usr_conta_temp11
btfsc
porta,ra4_t0cki
goto
usr_conta_temp9
;cierra el ciclo
goto
usr_conta_temp12
usr_conta_temp12
call
usr_marcha2
usr_conta_temp13
bcf
status,rp0
;cambiar a pagina 0
clrwdt
goto
usr_conta_temp_salir
usr_conta_temp15
call usr_marcha1
goto usr_conta_temp13 ;cierra el ciclo
usr_conta_temp16
call
temporizador_100_mse
decfsz
conta,1
goto
usr_conta_temp5
;cierra el ciclo
goto
usr_conta_temp13
;cierra el ciclo
usr_conta_temp_salir
bcf status,rp0
return
;---------------------------------------------
usr_marcha1
;configurar el
puerto b como ssssssss
bsf
status,rp0
;cambiar a pagina 1
movlw
b'00000000'
movwf
trisb
usr_marcha13
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
;escribir en el
puerto b
movlw
b'00001000'
movwf
portb
btfsc
porta,ra4_t0cki
goto
usr_marcha13
;cierra el ciclo
goto
usr_marcha17
usr_marcha17
;escribir en el puerto
b
movlw
d'0'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
goto
usr_marcha1_salir
usr_marcha1_salir
bcf
status,rp0
return
;---------------------------------------------
usr_marcha2
;configurar el
puerto b como ssssssss
bsf
status,rp0
;cambiar a pagina 1
movlw
b'00000000'
movwf
trisb
usr_marcha23
bcf
status,rp0
;cambiar a pagina 0
clrwdt
call
usr_paro
;escribir en el
puerto b
movlw
b'00000100'
movwf
portb
btfsc
porta,ra3
goto
usr_marcha23
;cierra el ciclo
goto
usr_marcha27
usr_marcha27
;escribir en el
puerto b
movlw
d'0'
bcf
status,rp0
;cambiar a pagina 0
movwf
portb
goto
usr_marcha2_salir
usr_marcha2_salir
bcf status,rp0
return
temporizador_500_mse
;temporizador 500 mse
;5 * (100
milisegundos)
bcf
status,rp0
;cambiar a pagina 0
movlw
.5
movwf
_np_veces
temporizador_500_mse_100ms
call
tiempo_100ms
decfsz
_np_veces,1
goto
temporizador_500_mse_100ms
return
temporizador_300_mse
;temporizador 300 mse
;3 * (100
milisegundos)
bcf
status,rp0
;cambiar a pagina 0
movlw
.3
movwf
_np_veces
temporizador_300_mse_100ms
call
tiempo_100ms
decfsz
_np_veces,1
goto
temporizador_300_mse_100ms
return
temporizador_20_mse
;temporizador 20 mse
;2 * (10
milisegundos)
bcf
status,rp0
;cambiar a pagina 0
movlw
.2
movwf
_np_veces
temporizador_20_mse_10ms
call
tiempo_10ms
decfsz
_np_veces,1
goto
temporizador_20_mse_10ms
return
temporizador_100_mse
;temporizador 100 mse
;1 * (100
milisegundos)
bcf
status,rp0
;cambiar a pagina 0
movlw
.1
movwf
_np_veces
temporizador_100_mse_100ms
call
tiempo_100ms
decfsz
_np_veces,1
goto
temporizador_100_mse_100ms
return
tiempo_100ms
;bucle de espera
100 milisegundos
bcf
status,rp0
;cambiar a pagina 0
movlw
.99
movwf
_np_tiempo
tiempo_100ms_bucle1
movlw
.250
movwf
_np_tiempo1
tiempo_100ms_bucle2
nop
decfsz
_np_tiempo1,1
goto
tiempo_100ms_bucle2
nop
nop
nop
nop
nop
decfsz
_np_tiempo,1
goto
tiempo_100ms_bucle1
nop
return
tiempo_10ms
;bucle de espera 10
milisegundos
bcf
status,rp0
;cambiar a pagina 0
movlw
.10
movwf
_np_tiempo
tiempo_10ms_bucle1
movlw
.165
movwf
_np_tiempo1
tiempo_10ms_bucle2
nop
nop
nop
decfsz
_np_tiempo1,1
goto
tiempo_10ms_bucle2
nop
nop
nop
decfsz
_np_tiempo,1
goto tiempo_10ms_bucle1
return
End