You are on page 1of 0

LAVADORA I.

asm
;Temporizador Automtico para Lavadoras
;
;Descripcin: Temporizador Regresivo.
;
Temporizador ajustable.
;
Pantalla de Displays de siete segmentos para visualizar el tiempo.
;
;
Rango de tiempo: 0 - 60 min.
;
Error de temporizacin: 1ms/ao.
;
Criterio de Comparacin: Algoritmo Gaussiano.
;
Consumo: No ha sido calculado .
;
Nivel de Depuracin: Bajo.
;
;Autor: Angel de Dios Mejas Ruiz.
;
;Elaborado para la compaa:
;IVENSYS C.A. (Industria Venezolana de Soluciones y Servicios).
;
;Lugar:
;Fecha de inicio de cdigo: 23 de Febrero de 2006.
;Hora: 4:42 pm
;
;Ciudad: Naguanagua - Edo. Carabobo - Venezuela.
;Contacto: angelmejias@cantv.net / amejias@thor.uc.edu.ve
;Copyright 2006
;--------------------------------------------------------;************************************************
;
;
;

Archivo: LAVADORA I.asm


Fecha:
23 de Febrero de 2006

Versin del archivo:

1.0

;
;

Autor: Angel Mejas

;
;

Compaa: SISTEMAS ELECTRNICOS, SISTEL C.A.

;
;************************************************
;
;

Archivos Requeridos:

;
;
;
;************************************************
;
;

Notas:
Page 1

LAVADORA I.asm
;
;
;
;
;************************************************
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;
;
MODIFICACIONES
;
===================
;
8 de Abril de 2008
12:10
;
7 de Abril de 2008
4:00
;
6 de Abril de 2008
9:00
;
5 de Abril de 2008
10:00
;
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
LIST

p=16f84A

#include

<p16f84A.inc>

p.m.
p.m.
a.m.
p.m.

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


;************* DEFINICIN DE VARIABLES
************
;=====================================================
RA0
RA1
RA4

EQU
EQU
EQU

0x00
0x01
0x04

CBLOCK

0x0C
C1,C2
C01,C02,C03,C04,C05
CSET

; Contadores Generales.
;
"
; Contador de Pulsadas del botn de ajuste

CSEG
CMIN
CTIME
SEG
GIROIZQ, GIRODER
CMOTOR
BAND
SAVE_TMR0

;
;
;
;
;
;
;

tiempo.
Contadores de segundos.
Contadores de minutos.
Contador general de tiempo.
Sentido de giro del motor
Contador de tiempo de trabajo para cada giro.
Bandera de cambio de giro.

ENDC
;.........................................................................
BANCO_0 MACRO
bcf
bcf
endm

STATUS, RP0
STATUS, RP1
Page 2

LAVADORA I.asm
BANCO_1 macro
bsf
bcf
ENDM

STATUS, RP0
STATUS, RP1

;((((((((((((((( CONSTANTES ))))))))))))))))


;====================================
CONSTANT
letra 'F'.

FFFF = b'11110001'

; Segmentos del display que permiten mostrar la

;.........................................................................
;(((((((((((((((((( PINES
))))))))))))))))))
;=====================================
#define SS
PORTA,2;
#define TIMER_SET
PORTA,3
;#define TIPO_DE_LAVADO PORTA,4
;..............................................................................
ORG
goto

0x00
INICIO

ORG

0x04

;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
INTERRUP:
bcf
INTCON,T0IF
incf
movf
xorlw
btfss
goto

CTIME,F
CTIME,W
.125
STATUS,Z
RETORNAR

incf
movf
xorlw
btfsc
call

CMOTOR,F
CMOTOR,W
.5
STATUS,Z
CAMBIO_DE_GIRO

clrf
incf
movf
xorlw
btfss
goto

CTIME
CSEG,F
CSEG,W
.60
STATUS,Z
RETORNAR

; Duracin de 5 segundos en cada sentido de giro.

DECMIN:
clrf
decf
DISPLAY:
movf
call

CSEG
CMIN,F
CMIN,W
TABLA
Page 3

LAVADORA I.asm
movwf
RETORNAR:
movlw
movwf

PORTB
.6
TMR0

BANCO_1
movlw
b'10000100'
movwf
OPTION_REG
BANCO_0
RETFIE

; Configuracin del TMR0 (PSA TMR0).


; Se asigna el Preescaler 1:4 al TMR0 .

;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

; ***************************************************************
;************
SUBPROGRAMAS
**************************
; ***************************************************************
RET_1m:
movlw
movwf

.250
C1

nop
decfsz
goto
RETURN

C1,1
CICLO

; Retardo de 1 ms.

CICLO:

;......................................................................................
.................
RET_100m:
movlw
movwf
CICLO3:
movlw
movwf
CICLO4:
nop
nop
decfsz
goto
decfsz
goto
RETURN

.100
C01
.200
C02

C02,F
CICLO4
C01,F
CICLO3

;......................................................................................
...............
RET_500m:
movlw
movwf
CICLO5:
call
decfsz
goto
RETURN

.5
C03
RET_100m
C03,F
CICLO5
Page 4

LAVADORA I.asm
;......................................................................................
..............
ANTIREBOTE:
movlw
.100
movwf
C04
CICLO6:
movlw
.200
movwf
C05
CICLO7:
nop
nop
decfsz C05,F
goto
CICLO7
decfsz C04,F
goto
CICLO6
RETURN
;......................................................................................
..............
CAMBIO_DE_GIRO:
clrf
CMOTOR
incf
movf
xorlw
btfsc
clrf

BAND,F
BAND,W
.4
STATUS,Z
BAND

movf
xorlw
btfsc
goto

BAND,W
0
STATUS,Z
ACTIVAR_MOTOR_DERECHO

movf
xorlw
btfsc
goto

BAND,W
.1
STATUS,Z
DETENER_MOTOR_DERECHO

movf
xorlw
btfsc
goto

BAND,W
.2
STATUS,Z
ACTIVAR_MOTOR_IZQUIERDO

movf
xorlw
btfsc
goto

BAND,W
.3
STATUS,Z
DETENER_MOTOR_IZQUIERDO

; Limpia el contador de 8 segundos

ACTIVAR_MOTOR_DERECHO:
bsf
PORTA,RA0
goto
SALIR
DETENER_MOTOR_DERECHO:
bcf
PORTA,RA0
goto
SALIR
ACTIVAR_MOTOR_IZQUIERDO:
bsf
PORTA,RA1
Page 5

LAVADORA I.asm
goto

SALIR

DETENER_MOTOR_IZQUIERDO:
bcf
PORTA,RA1
SALIR:
RETURN
;......................................................................................
..............
TABLA:
addwf
PCL,F
retlw
H'00'
retlw
H'01'
retlw
H'02'
retlw
H'03'
retlw
H'04'
retlw
H'05'
retlw
H'06'
retlw
H'07'
retlw
H'08'
retlw
H'09'
retlw
H'10'
retlw
H'11'
retlw
H'12'
retlw
H'13'
retlw
H'14'
retlw
H'15'
retlw
H'16'
retlw
H'17'
retlw
H'18'
retlw
H'19'
retlw
H'20'
retlw
H'21'
retlw
H'22'
retlw
H'23'
retlw
H'24'
retlw
H'25'
retlw
H'26'
retlw
H'27'
retlw
H'28'
retlw
H'29'
retlw
H'30'
retlw
H'31'
retlw
H'32'
retlw
H'33'
retlw
H'34'
retlw
H'35'
retlw
H'36'
retlw
H'37'
retlw
H'38'
retlw
H'39'
retlw
H'40'
retlw
H'41'
retlw
H'42'
retlw
H'43'
retlw
H'44'
retlw
H'45'
retlw
H'46'
Page 6

LAVADORA I.asm
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw

H'47'
H'48'
H'49'
H'50'
H'51'
H'52'
H'53'
H'54'
H'55'
H'56'
H'57'
H'58'
H'59'

;***********************************************************************
;***************
FIN SUBPROGRAMAS
************************
;***********************************************************************

;***********************************************************************
;*****************
CUERPO PRINCIPAL DEL PROGRAMA
******************
;=======================================================================
;***********************************************************************
INICIO:
BANCO_0
clrf
PORTA
clrf
PORTB
BANCO_1
movlw
salidas.
movwf
movlw
movwf
BANCO_0
clrf
clrf
clrf
clrf

; Limpiando Puertos.

b'11101100'

; Configuracin de los puertos.


; PORTA<4:2> como entradas y PORTA<1:0> como

TRISA
0
TRISB

; PORTB todo como salidas.

PORTA
PORTB
TMR0
INTCON

BANCO_1
movlw
b'10000100'
movwf
OPTION_REG

; Limpiando Puertos.
;
; Configuracin del TMR0 (PSA TMR0).
; Se asigna el Preescaler 1:4 al TMR0 .

BANCO_0
;..........................................................................
;-------------------------------------------------; Inicializacin de variables
;------------------------------------------------INICIALIZAR:
Page 7

LAVADORA I.asm
movlw
movwf

0x0C
FSR

clrf
incf
movf
xorlw
btfss
goto

INDF
FSR,F
FSR,W
0x1E
STATUS,Z
LAZ

LAZ:

;......................................................................................
............
REPITE:

;
;

btfss
goto

TIMER_SET
AJUSTE

btfss
goto

SECAR
SECADO

btfss
goto

SS
START

goto

REPITE

call
btfsc
goto

ANTIREBOTE
TIMER_SET
REPITE

movf
sublw
btfss
goto
incf
goto

CMIN,W
.59
STATUS,C
CMINMAY59
CMIN,F
DISPMIN

AJUSTE:

CMINMAY59:
clrf

CMIN

DISPMIN:
movf
call
movwf

CMIN,W
TABLA
PORTB

bsf
call
call
bcf

PORTA,RA4
RET_100m
RET_100m
PORTA,RA4

goto

REPITE

;......................................................................................
.............
SECADO:
call
ANTIREBOTE
Page 8

LAVADORA I.asm
;
;

btfsc
goto
goto

SECAR
REPITE
INICIAR_SECADO

Realizar los cambios de hardware necesarios y terminar la subrutina para SECAR.

START:
call
btfsc
goto

ANTIREBOTE
SS
REPITE

movf
xorlw
btfsc
goto

CMIN,W
0
STATUS,Z
REGRESAR

bsf
call
call
bcf

PORTA,RA4
RET_100m
RET_100m
PORTA,RA4

goto

SEGUIR

REGRESAR:
goto

REPITE

SEGUIR:
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
CONFIGURACION DEL TIMER
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
BANCO_0
bsf
PORTA,RA0
bcf
PORTA,RA1
clrf

CTIME

bcf
bsf
bsf

INTCON,T0IF
INTCON,T0IE
INTCON,GIE

; Habilita la interrupcin del TMR0


; Activacin Global de interrupciones.

movlw
movwf

.6
TMR0

; Iniciando cuenta del TMR0 en

6.

goto
CONTINUA
;......................................................................................
................
TIMER_ON:
movf
movwf
bsf
bsf
call
;
call
bcf

; Se enciende el Reloj
SAVE_TMR0,W
TMR0
INTCON,T0IE
PORTA,RA4
RET_100m
RET_100m
PORTA,RA4

; Habilita la interrupcin del TMR0

CONTINUA:
Page 9

LAVADORA I.asm
movf
xorlw
btfsc
goto

CMIN,W
0
STATUS,Z
APAGA

btfsc
goto
call
btfss
goto
goto

SS
CONTINUA
ANTIREBOTE
SS
PAUSA
CONTINUA

bcf
movf
movwf

INTCON,T0IE
TMR0,W
SAVE_TMR0

bsf
call
call
bcf

PORTA,RA4
RET_100m
RET_100m
PORTA,RA4

PAUSA:

SIGUE_PAUSA:
btfsc
goto
call
btfss
goto
goto

SS
SIGUE_PAUSA
ANTIREBOTE
SS
TIMER_ON
SIGUE_PAUSA

APAGA:
bcf
clrf

INTCON,T0IE
PORTA

bsf
call
call
bcf
call
call
bsf
call
call
bcf
bsf
call
call
bcf

PORTA,RA4
RET_100m
RET_500m
PORTA,RA4
RET_500m
RET_500m
PORTA,RA4
RET_500m
RET_500m
PORTA,RA4
PORTA,RA4
RET_500m
RET_500m
PORTA,RA4

Fin del Ciclo de Lavado.

;**********************
goto

INICIO

END

Page 10

You might also like