; #=#=#=#=#=#=#=#=#= PROJECT DETEKTOR + BLOKER VEZERLO =#=#=#=#=#=#=#=#=#=#=#
; 
; PIC16F628 running at 20MHz, Ti=200ns

	processor pic16F628
	#include "p16f628.inc"
__CONFIG _HS_OSC & _WDT_OFF & _LVP_OFF &_BODEN_ON & _PWRTE_ON & _DATA_CP_OFF

#DEFINE BIT_RP0         STATUS,5

STARTTRISA      = B'01110'
STARTTRISB      = B'00000000'

#DEFINE _LASER       PORTA,0 
#DEFINE _STEP        PORTA,2 
#DEFINE _FIRE        PORTA,3 
#DEFINE _LLED        PORTA,4    

#DEFINE _PRO2        PORTB,0
#DEFINE _PRO3        PORTB,1 
#DEFINE _ULTR        PORTB,2
#DEFINE _STAL        PORTB,3 
#DEFINE _PATR        PORTB,4
#DEFINE _ATLA        PORTB,5 
#DEFINE _TRUS        PORTB,6
#DEFINE _SCS         PORTB,7 

NALO        	= H'20'
NAHI	        = H'21'
NBLO            = H'22'
NBHI            = H'23'
MENU            = H'24'

;-----------------------------------------------------------------------------------
RESET   
     
         MOVLW  0X07
         MOVWF  CMCON               
        
         BSF    BIT_RP0         
       
         MOVLW  STARTTRISA      
         MOVWF  TRISA           
         MOVLW  STARTTRISB      
         MOVWF  TRISB                  
         BCF    BIT_RP0         
         CLRF   MENU
         BSF    _LLED
         BCF    _LASER
         MOVLW  0XFE
         MOVWF  PORTB 
 
;-----------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------
FOPROGRAM
         BSF    _LLED
         BTFSS  _FIRE 
         GOTO   LASEROUT  
  
         BTFSS  _STEP
         GOTO   INCMENU

         GOTO   FOPROGRAM

INCMENU 
         INCF   MENU  
         MOVF   MENU,W         
         SUBLW  0X08
         BTFSC  STATUS,Z 
         CLRF   MENU         
                 
         MOVF   MENU,W
         SUBLW  0X00
         BTFSC  STATUS,Z 
         GOTO   PRO2
    
         MOVF   MENU,W
         SUBLW  0X01
         BTFSC  STATUS,Z 
         GOTO   PRO3

         MOVF   MENU,W
         SUBLW  0X02
         BTFSC  STATUS,Z 
         GOTO   ULTR
   
         MOVF   MENU,W
         SUBLW  0X03
         BTFSC  STATUS,Z 
         GOTO   STAL

         MOVF   MENU,W
         SUBLW  0X04
         BTFSC  STATUS,Z 
         GOTO   PATR

         MOVF   MENU,W
         SUBLW  0X05
         BTFSC  STATUS,Z 
         GOTO   ATLA 

         MOVF   MENU,W
         SUBLW  0X06
         BTFSC  STATUS,Z 
         GOTO   TRUS

         MOVF   MENU,W
         SUBLW  0X07
         BTFSC  STATUS,Z 
         GOTO   SCS   
         GOTO   FOPROGRAM
;-----------------------------------------------------------------------------------      
PRO2
         MOVLW  0XFE                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   PRO2W 
         GOTO   FOPROGRAM
PRO2W          
         CALL   IDOZIT
         GOTO   PRO2

PRO3
         MOVLW  0XFD                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   PRO3W         
         GOTO   FOPROGRAM    
PRO3W          
         CALL   IDOZIT
         GOTO   PRO3

ULTR
         MOVLW  0XFB                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   ULTRW         
         GOTO   FOPROGRAM
ULTRW          
         CALL   IDOZIT
         GOTO   ULTR
      
STAL
         MOVLW  0XF7                    
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   STALW        
         GOTO   FOPROGRAM
STALW          
         CALL   IDOZIT
         GOTO   STAL
PATR
         MOVLW  0XEF                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   PATRW         
         GOTO   FOPROGRAM
PATRW          
         CALL   IDOZIT
         GOTO   PATR
ATLA
         MOVLW  0XDF                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   ATLAW         
         GOTO   FOPROGRAM
ATLAW          
         CALL   IDOZIT
         GOTO   ATLA
 
TRUS
         MOVLW  0XBF                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   TRUSW         
         GOTO   FOPROGRAM
TRUSW          
         CALL   IDOZIT
         GOTO   TRUS
SCS
         MOVLW  0X7F                     
         MOVWF  PORTB
         BTFSS  _STEP
         GOTO   SCSW         
         GOTO   FOPROGRAM
SCSW          
         CALL   IDOZIT
         GOTO   SCS
;-----------------------------------------------------------------------------------
LASEROUT
         MOVF   MENU,W
         SUBLW  0X00
         BTFSC  STATUS,Z 
         GOTO   PRO2F
    
         MOVF   MENU,W
         SUBLW  0X01
         BTFSC  STATUS,Z 
         GOTO   PRO3F

         MOVF   MENU,W
         SUBLW  0X02
         BTFSC  STATUS,Z 
         GOTO   ULTRF
   
         MOVF   MENU,W
         SUBLW  0X03
         BTFSC  STATUS,Z 
         GOTO   STALF

         MOVF   MENU,W
         SUBLW  0X04
         BTFSC  STATUS,Z 
         GOTO   PATRF

         MOVF   MENU,W
         SUBLW  0X05
         BTFSC  STATUS,Z 
         GOTO   ATLAF 

         MOVF   MENU,W
         SUBLW  0X06
         BTFSC  STATUS,Z 
         GOTO   TRUSF

         MOVF   MENU,W
         SUBLW  0X07
         BTFSC  STATUS,Z 
         GOTO   SCSF   
         GOTO   FOPROGRAM
;-----------------------------------------------------------------------------------
PRO2F
        BCF     _LLED              ;238 PPS 4,20 MS
        MOVLW   1CH
    	MOVWF   NAHI
	    MOVLW   42H
	    MOVWF   NALO
DELOOP0                
	    DECFSZ  NALO
	    GOTO    DELOOP0
	    DECFSZ  NAHI
	    GOTO    DELOOP0
        NOP

        BSF     _LASER
        BCF     _LASER                    

        BTFSS   _FIRE 
        GOTO    PRO2F
        GOTO    FOPROGRAM
;-----------------------------------------------------------------------------------
PRO3F
        BCF     _LLED              ;200 PPS 5 MS
        MOVLW   21H
 	    MOVWF   NAHI
	    MOVLW   74H
	    MOVWF   NALO
DELOOP1                
	    DECFSZ  NALO
	    GOTO    DELOOP1
	    DECFSZ  NAHI
	    GOTO    DELOOP1
        NOP       

        BSF     _LASER
        BCF     _LASER

        BTFSS   _FIRE 
        GOTO    PRO3F
        GOTO    FOPROGRAM
;-----------------------------------------------------------------------------------
ULTRF 
        BCF     _LLED              ;125 PPS 8 MS
        MOVLW   34H
 	    MOVWF   NAHI
	    MOVLW   0XEF
	    MOVWF   NALO
DELOOP2                
	    DECFSZ  NALO
	    GOTO    DELOOP2
	    DECFSZ  NAHI
	    GOTO    DELOOP2
        NOP
        NOP     

        BSF     _LASER
        BCF     _LASER
       
        BTFSS   _FIRE 
        GOTO    ULTRF
        GOTO    FOPROGRAM
;------------------------------------------------------------------------------------
STALF
        BCF     _LLED              ;130 PPS 7,69 MS
        MOVLW   32H
 	    MOVWF   NAHI
	    MOVLW   0XEC
	    MOVWF   NALO
DELOOP3                
	    DECFSZ  NALO
	    GOTO    DELOOP3
	    DECFSZ  NAHI
	    GOTO    DELOOP3
        NOP       

        BSF     _LASER
        BCF     _LASER
      
        BTFSS   _FIRE 
        GOTO    STALF
        GOTO    FOPROGRAM
;------------------------------------------------------------------------------------
PATRF
        BCF     _LLED              ;100 PPS 10 MS
        MOVLW   41H
 	    MOVWF   NAHI
	    MOVLW   0XEC
	    MOVWF   NALO
DELOOP4                
	    DECFSZ  NALO
	    GOTO    DELOOP4
	    DECFSZ  NAHI
	    GOTO    DELOOP4
        NOP         

        BSF    _LASER
        BCF    _LASER
              
        BTFSS  _FIRE 
        GOTO   PATRF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
ATLAF 
        BCF    _LLED              ;68 PPS 14,7 MS
        MOVLW  0X60
 	    MOVWF  NAHI
	    MOVLW  0X71
	    MOVWF  NALO
DELOOP5                
	    DECFSZ NALO
	    GOTO   DELOOP5
	    DECFSZ NAHI
	    GOTO   DELOOP5
       
        BSF    _LASER
        BCF    _LASER             
      
        BTFSS  _FIRE 
        GOTO   ATLAF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
TRUSF
        BCF    _LLED              ;200,3 PPS 4,99 MS
        MOVLW  21H
 	    MOVWF  NAHI
	    MOVLW  0X63
	    MOVWF  NALO
DELOOP6                
	    DECFSZ NALO
	    GOTO   DELOOP6
	    DECFSZ NAHI
	    GOTO   DELOOP6
        NOP
        NOP
       
        BSF    _LASER
        BCF    _LASER

        BTFSS  _FIRE 
        GOTO   TRUSF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
SCSF
        BCF    _LLED              ;3200 PPS 312 uS
        MOVLW  03H
 	    MOVWF  NAHI
	    MOVLW  03H
	    MOVWF  NALO
DELOOP7                
	    DECFSZ NALO
	    GOTO   DELOOP7
	    DECFSZ NAHI
	    GOTO   DELOOP7
       
        BSF   _LASER
        BCF   _LASER
        
        BTFSS  _FIRE 
        GOTO    SCSF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
IDOZIT                          ;100 mSEC
  	    MOVLW  01H
	    MOVWF  NBHI
	    MOVLW  03H
	    MOVWF  NBLO
	    MOVLW  8AH
	    MOVWF  NAHI
	    MOVLW  5BH
	    MOVWF  NALO
DELOOP8
	    DECFSZ NALO
	    GOTO   DELOOP8
	    DECFSZ NAHI
	    GOTO   DELOOP8
	    DECFSZ NBLO
	    GOTO   DELOOP8
	    DECFSZ NBHI
	    GOTO   DELOOP8
        RETURN
;------------------------------------------------------------------------------------
        END

