;------------------------------------------------------------

;------------------------------------------------------------

; 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