; Project - spotwelder
	LIST	p=16F628A		; type of MCU
	#INCLUDE	<P16F628A.INC>	; definitions of variables

;Config
 __CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _INTRC_OSC_NOCLKOUT

  

;definitions

 #DEFINE D2	PORTA,1
 #DEFINE D3	PORTA,0
 #DEFINE FOOT	PORTA,2	    ;SW3
 #DEFINE UP	PORTA,3	    ;SW2
 #DEFINE DOWN	PORTA,4     ;SW1
 #DEFINE ZCD	PORTA,5
 #DEFINE LED	PORTA,6
 #DEFINE OK1	PORTA,7
 #DEFINE D1	PORTB,7
 
LEDTIME        equ 	23h	;for delay
WELDTIME	EQU	24H
X1		EQU    25H
X2		EQU	26H
X3		EQU	27H

		
 cblock 0X20
d1
d2
d3
d4
d5
d6
 endc

;program
RESET	ORG	0x0000		; start of program

; Inicialization of ports
        MOVLW	B'00000111'	; comparator (off)
	MOVWF	CMCON
	BSF	STATUS,RP0
	MOVLW	B'00011100'
	MOVWF	TRISA
	MOVLW   B'00000000'
	MOVWF   TRISB
	BCF	STATUS,RP0
	movlw	0XA
	movwf	LEDTIME	
	BCF	OK1
	
	GOTO START
	

 ;********************************************************************       
TIME1			;DELAY 5ms 
	movlw	0xE7
	movwf	d1
	movlw	0x04
	movwf	d2
Delay_1
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	Delay_1

			;2 cycles
	goto	$+1	
	nop
	RETURN
;************************************************************************	
PREWELD			;DELAY 50ms 
	movlw	0x0F
	movwf	d1
	movlw	0x28
	movwf	d2
Delay_2
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	Delay_2

			;2 cycles
	goto	$+1	
	nop
	RETURN

;*****************************************************************************				;DELAY 5ms 
RESTWELD movlw	0x03
	movwf	d1
	movlw	0x18
	movwf	d2
	movlw	0x02
	movwf	d3
Delay_3
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	$+2
	decfsz	d3, f
	goto	Delay_3
	RETURN
;******************************************************************************
TWELD		
Delay_4
	decfsz	X1, f
	goto	$+2
	decfsz	X2, f
	goto	$+2
	decfsz	X3, f
	goto	Delay_4

			;4 cycles
	goto	$+1
	goto	$+1
	NOP
	RETURN
	
;******************************************************************************

	

STEST   
	BTFSS   UP	    ;BUTTON TEST
	GOTO	BUTLOCK
	BTFSS	DOWN
	GOTO    BUTLOCK
	DECFSZ  LEDTIME	    ;LEDBLINK
	GOTO	$+0XA
	BTFSC	LED
	GOTO    LEDON
	BSF	LED
	movlw	0x3C
	movwf	LEDTIME
	GOTO	$+4
LEDON	BCF     LED
	movlw	0x1E
	movwf	LEDTIME
	RETURN
	
	
BUTLOCK 
        MOVLW 0X40
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO STEST
	
WELD    MOVLW   0X3F 
	MOVWF   TRISB
	BSF	D1
	BSF	D2
	BSF	D3
	BTFSC	ZCD    
	GOTO	$-1
	CALL	TIME1
	BSF	OK1
	BCF	LED
	CALL	PREWELD
	BCF	OK1
	BSF	LED
	CALL	RESTWELD	
        BTFSC	ZCD     
	GOTO	$-1	
	CALL	TIME1
	BSF	OK1
	BCF	LED
	CALL	TWELD
	BCF     OK1
	BSF	LED
	BTFSS	FOOT
	GOTO	$-1
	RETURN
	
	
	
	
T0	MOVLW	0X1
	MOVWF	X1
	MOVLW	0X1
	MOVWF	X2
	MOVLW	0X1
	MOVWF	X3
	CALL STEST
        MOVLW 0X40
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X7F	   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X7F	   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S0
	
	
T50	MOVLW	0X0F
	MOVWF	X1
	MOVLW	0X28
	MOVWF	X2
	MOVLW	0X1
	MOVWF	X3     
	CALL STEST
        MOVLW 0X12
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40 
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X7F	   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S50

T100	MOVLW	0X1F
	MOVWF	X1
	MOVLW	0X4F
	MOVWF	X2
	MOVLW	0X1
	MOVWF	X3
	CALL STEST
        MOVLW 0X4F
	MOVWF TRISB 
	BSF	D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S100
	
T150	MOVLW	0X2F
	MOVWF	X1
	MOVLW	0X76
	MOVWF	X2
	MOVLW	0X1
	MOVWF	X3
	CALL STEST
        MOVLW 0X4F
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X12	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S150
	
T200	MOVLW	0X3F
	MOVWF	X1
	MOVLW	0X9D
	MOVWF	X2
	MOVLW	0X1
	MOVWF	X3
	CALL STEST
        MOVLW 0X24
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	  
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S200
	
T250	MOVLW	0X4F
	MOVWF	X1
	MOVLW	0XC4
	MOVWF	X2
	MOVLW	0X1
	MOVWF	X3
	CALL STEST
        MOVLW 0X24
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X12	  
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	  
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S250
	
T300	MOVLW	0X5F
	MOVWF	X1
	MOVLW	0XEB
	MOVWF	X2
	MOVLW	0X01
	MOVWF	X3
	CALL STEST
        MOVLW 0X6
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S300
	
T350	MOVLW	0X4F
	MOVWF	X1
	MOVLW	0XC4
	MOVWF	X2
	MOVLW	0X01
	MOVWF	X3
	CALL STEST
        MOVLW 0X6
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X12	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S350
	
T400	MOVLW	0X36
	MOVWF	X1
	MOVLW	0XE0
	MOVWF	X2
	MOVLW	0X01
	MOVWF	X3
	CALL STEST
        MOVLW 0XB
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S400
	
T450	MOVLW	0X1D
	MOVWF	X1
	MOVLW	0XFC
	MOVWF	X2
	MOVLW	0X01
	MOVWF	X3
	CALL STEST
        MOVLW 0XB
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X12	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S450	

	
T500	MOVLW	0X03
	MOVWF	X1
	MOVLW	0X18
	MOVWF	X2
	MOVLW	0X02
	MOVWF	X3    
	CALL STEST
        MOVLW 0X12
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S500	

	
T550	MOVLW	0XEA
	MOVWF	X1
	MOVLW	0X33
	MOVWF	X2
	MOVLW	0X02
	MOVWF	X3   
	CALL STEST
        MOVLW 0X12
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X12	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S550	

	
T600  	MOVLW	0XD1
	MOVWF	X1
	MOVLW	0X4F
	MOVWF	X2
	MOVLW	0X02
	MOVWF	X3
	CALL STEST
        MOVLW 0X10
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X40	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO S600	
	
TCON  	MOVLW	0X5A
	MOVWF	X1
	MOVLW	0XCD
	MOVWF	X2
	MOVLW	0X16
	MOVWF	X3
	CALL STEST
        MOVLW 0XBF
	MOVWF TRISB
	BSF D1
	CALL TIME1
	BCF D1
	MOVLW 0X77	;0   
	MOVWF TRISB
	BSF D2
	CALL TIME1
	BCF D2
	MOVLW 0X3F	;0   
	MOVWF TRISB
	BSF D3
	CALL TIME1
	BCF D3
	GOTO SCON	
	
	
		


START
S0	BTFSS	UP   
	GOTO	T50
	BTFSS   DOWN
	GOTO    T0
	BTFSS   FOOT
	CALL    WELD
	GOTO	T0
	
S50	BTFSS	UP
	GOTO	T100
	BTFSS   DOWN
	GOTO    T0
	BTFSS   FOOT
	CALL	WELD
	GOTO	T50
	
S100	BTFSS	UP
	GOTO	T150
	BTFSS   DOWN
	GOTO    T50
	BTFSS   FOOT
	CALL	WELD
	GOTO	T100
	
S150	BTFSS	UP
	GOTO	T200
	BTFSS   DOWN
	GOTO    T100
	BTFSS   FOOT
	CALL	WELD
	GOTO	T150
	
S200	BTFSS	UP
	GOTO	T250
	BTFSS   DOWN
	GOTO    T150
	BTFSS   FOOT
	CALL	WELD
	GOTO	T200

S250	BTFSS	UP
	GOTO	T300
	BTFSS   DOWN
	GOTO    T200
	BTFSS   FOOT
	CALL	WELD
	GOTO	T250
	
S300	BTFSS	UP
	GOTO	T350
	BTFSS   DOWN
	GOTO    T250
	BTFSS   FOOT
	CALL	WELD
	GOTO	T300
	
S350	BTFSS	UP
	GOTO	T400
	BTFSS   DOWN
	GOTO    T300
	BTFSS   FOOT
	CALL	WELD
	GOTO	T350
	
S400	BTFSS	UP
	GOTO	T450
	BTFSS   DOWN
	GOTO    T350
	BTFSS   FOOT
	CALL	WELD
	GOTO	T400
	
S450	BTFSS	UP
	GOTO	T500
	BTFSS   DOWN
	GOTO    T400
	BTFSS   FOOT
	CALL	WELD
	GOTO	T450
	
S500	BTFSS	UP
	GOTO	T550
	BTFSS   DOWN
	GOTO    T450
	BTFSS   FOOT
	CALL	WELD
	GOTO	T500
	
S550	BTFSS	UP
	GOTO	T600
	BTFSS   DOWN
	GOTO    T500
	BTFSS   FOOT
	CALL	WELD
	GOTO	T550
	
S600	BTFSS	UP
	GOTO	TCON
	BTFSS   DOWN
	GOTO    T550
	BTFSS   FOOT
	CALL	WELD
	GOTO	T600
	
SCON	BTFSS	UP
	GOTO	TCON
	BTFSS   DOWN
	GOTO    T600
	BTFSC   FOOT
	GOTO	TCON
	MOVLW   0XBF 
	MOVWF   TRISB
	BSF	D1
	BSF	D2
	BSF	D3	
        BTFSC	ZCD     
	GOTO	$-1	
	CALL	TIME1
	BSF	OK1
	BCF	LED
	BTFSS	FOOT
	GOTO	$-1
	BCF     OK1
	BSF	LED
	GOTO	TCON

	
		
	END

	
	
	
	
;TABLE 7SEGMENT
;	0=40
;	1=79
;	2=24
;	3=30
;	4=99
;	5=12
;	6=2
;	7=78
;	8=0
;	9=10
   