; #=#=#=#=#=#=#=#=#= PROJECT TESTER =#=#=#=#=#=#=#=#=#=#=#
; 
; PIC16F628 running at 4MHz, Ti=1us

	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'
MENU            = H'22'

;-----------------------------------------------------------------------------------
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 
  GOTO   ATLAF
;-----------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------
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 06H
 	    MOVWF NAHI
	    MOVLW 71H
	    MOVWF NALO
DELOOP0                
	    DECFSZ NALO
	    GOTO DELOOP0
	    DECFSZ NAHI
	    GOTO DELOOP0
       
        BSF   _LASER
        BCF   _LASER

        BTFSS  _FIRE 
        GOTO    PRO2F
        GOTO   FOPROGRAM
;-----------------------------------------------------------------------------------
PRO3F
        BCF   _LLED              ;200 PPS 5 MS
        MOVLW 07H
 	    MOVWF NAHI
	    MOVLW 7BH
	    MOVWF NALO
DELOOP1                
	    DECFSZ NALO
	    GOTO DELOOP1
	    DECFSZ NAHI
	    GOTO DELOOP1
       
        BSF   _LASER
        BCF   _LASER

        BTFSS  _FIRE 
        GOTO    PRO3F
        GOTO   FOPROGRAM
;-----------------------------------------------------------------------------------
ULTRF 
        BCF   _LLED              ;125 PPS 8 MS
        MOVLW 0BH
 	    MOVWF NAHI
	    MOVLW 60H
	    MOVWF NALO
DELOOP2                
	    DECFSZ NALO
	    GOTO DELOOP2
	    DECFSZ NAHI
	    GOTO DELOOP2
       
        BSF   _LASER
        BCF   _LASER
        NOP
        BTFSS  _FIRE 
        GOTO    ULTRF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
STALF
        BCF   _LLED              ;130 PPS 7,69 MS
        MOVLW 0AH
 	    MOVWF NAHI
	    MOVLW 0XFA
	    MOVWF NALO
DELOOP3                
	    DECFSZ NALO
	    GOTO DELOOP3
	    DECFSZ NAHI
	    GOTO DELOOP3
       
        BSF   _LASER
        BCF   _LASER
      
        BTFSS  _FIRE 
        GOTO    STALF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
PATRF
        BCF   _LLED              ;100 PPS 10 MS
        MOVLW 0DH
 	    MOVWF NAHI
	    MOVLW 0XF9
	    MOVWF NALO
DELOOP4                
	    DECFSZ NALO
	    GOTO DELOOP4
	    DECFSZ NAHI
	    GOTO DELOOP4
       
        BSF   _LASER
        BCF   _LASER
        NOP
        NOP
      
        BTFSS  _FIRE 
        GOTO   PATRF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
ATLAF 
        BCF   _LLED              ;68 PPS 14,7 MS
        MOVLW 14H
 	    MOVWF NAHI
	    MOVLW 0X13
	    MOVWF NALO
DELOOP5                
	    DECFSZ NALO
	    GOTO DELOOP5
	    DECFSZ NAHI
	    GOTO DELOOP5
       
        BSF   _LASER
        BCF   _LASER 
        NOP
        NOP       
      
        BTFSS  _FIRE 
        GOTO   ATLAF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
TRUSF
        BCF   _LLED              ;200,3 PPS 4,99 MS
        MOVLW 07H
 	    MOVWF NAHI
	    MOVLW 78H
	    MOVWF NALO
DELOOP6                
	    DECFSZ NALO
	    GOTO DELOOP6
	    DECFSZ NAHI
	    GOTO DELOOP6
       
        BSF   _LASER
        BCF   _LASER

        BTFSS  _FIRE 
        GOTO   TRUSF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
SCSF
        BCF   _LLED              ;3200 PPS 312 uS
        MOVLW 01H
 	    MOVWF NAHI
	    MOVLW 64H
	    MOVWF NALO
DELOOP7                
	    DECFSZ NALO
	    GOTO DELOOP7
	    DECFSZ NAHI
	    GOTO DELOOP7
       
        BSF   _LASER
        BCF   _LASER
        NOP

        BTFSS  _FIRE 
        GOTO    SCSF
        GOTO   FOPROGRAM
;------------------------------------------------------------------------------------
IDOZIT       
        MOVLW 82H                  ;100 MS
	    MOVWF NAHI
	    MOVLW 0XE0
	    MOVWF NALO
DELOOP8
	    DECFSZ NALO
	    GOTO DELOOP8
	    DECFSZ NAHI
	    GOTO DELOOP8
        RETURN

;------------------------------------------------------------------------------------
        END

