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

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

; Código assembler generado por Niple.

; Nombre del Proyecto:

; Autor: Francisco Freire Blanco.

; Fecha: 03/03/2003

; PIC: 16F84

; Velocidad de reloj: 4 Mhz

; Funcion:

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

 

 

 LIST    P=PIC16F84

 

 

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

;                  Declaración de Registros

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

w                     equ  00h

status                equ  0x03

porta                 equ  0x05

portb                 equ  0x06

_np_tiempo            equ  0x0d

_np_tiempo1           equ  0x0e

_np_tiempo2           equ  0x0f

trisa                 equ  0x85

trisb                 equ  0x86

 

 

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

;                  Declaración de Bits

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

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

   movlw b'00011111'      ;configurar el puerto a como xxxeeeee

   bsf status,rp0         ;cambiar a pagina 1

   movwf trisa

   movlw b'00000000'      ;configurar el puerto b como ssssssss

   bsf status,rp0         ;cambiar a pagina 1

   movwf trisb

paso4

   clrwdt

   ;escribir en el puerto b

   movlw d'0'

   bcf status,rp0         ;cambiar a pagina 0

   movwf portb

   btfss porta,ra3

   goto paso7

paso8

   nop

paso9

   clrwdt

   ;escribir en el puerto b

   movlw b'00010000'

   movwf portb

   btfss porta,ra2

   goto paso12

paso13

   ;escribir en el puerto b

   movlw b'00000001'

   movwf portb

   clrwdt

   btfsc porta,ra2

   goto paso16

paso17

   clrwdt

   btfss porta,ra2

   goto paso19

   ;escribir en el puerto b

   movlw d'0'

   movwf portb

paso21

   clrwdt

   btfsc porta,ra2

   goto paso23

   ;escribir en el puerto b

   movlw d'0'

   movwf portb

   goto paso8             ;     cierra el ciclo

paso23

   call usr_paro

   goto paso21            ;     cierra el ciclo

paso19

   call usr_paro

   goto paso17            ;     cierra el ciclo

paso16

   call usr_paro

   goto paso13            ;     cierra el ciclo

paso12

   call usr_paro

   goto paso9             ;     cierra el ciclo

paso7

   call usr_paro

   goto paso4             ;     cierra el ciclo

 

 

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

;                  Declaración de Subrutinas

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

 

usr_paro

   movlw b'00000000'      ;configurar el puerto b como ssssssss

   bsf status,rp0         ;cambiar a pagina 1

   movwf trisb

usr_paro3

   clrwdt

   bcf status,rp0         ;cambiar a pagina 0

   btfss porta,ra4_t0cki

   goto usr_paro5

   ;temporizador 20 mse

   bcf status,rp0         ;cambiar a pagina 0

   movlw .2

   call tiempo_100_1000_ms

   ;fin del temporizador 20 mse

   goto usr_paro_salir

usr_paro5

   ;escribir en el puerto b

   movlw b'00000100'

   movwf portb

   ;temporizador 400 mse

   movlw .40

   call tiempo_100_1000_ms

   ;fin del temporizador 400 mse

   ;escribir en el puerto b

   movlw d'0'

   movwf portb

   ;temporizador 200 mse

   movlw .20

   call tiempo_100_1000_ms

   ;fin del temporizador 200 mse

   goto usr_paro3         ;cierra el ciclo

usr_paro_salir

   bcf status,rp0

   return

 

 

 

 

tiempo_100_1000_ms

   movwf _np_tiempo

   goto tiempo_100_1000_ms_1

tiempo_100_1000_ms_bucle2

   nop

   nop

   nop

   nop

   nop

   nop

   nop

tiempo_100_1000_ms_1

   movlw .22

   movwf _np_tiempo1

tiempo_100_1000_ms_bucle1

   movlw .150

   movwf _np_tiempo2

tiempo_100_1000_ms_bucle

   decfsz _np_tiempo2,1

   goto tiempo_100_1000_ms_bucle

   decfsz _np_tiempo1,1

   goto tiempo_100_1000_ms_bucle1

   nop

   decfsz _np_tiempo,1

   goto tiempo_100_1000_ms_bucle2

   return

 

 

 End