;;; ************************************************************
;;; Hlasic teplot
;;;JKP 011207  PIC16F628A
;;; ************************************************************

       LIST P=16F628A, R=DEC    ; Use the PIC16F628 and decimal system

	#include "P16F628A.INC"  ; Include header file
	
       __config  _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON



RAM	EQU	H'20'		; definice 1. registru pameti pro 16F628A
W_BKP	EQU	RAM		; zaloha registru W
S_BKP	EQU	RAM+1		; zaloha registru STATUS
PCL_BKP	EQU	RAM+2		; zaloha registru PCLATH
TMP0	EQU	RAM+3		; registr pro cekaci smycku
TMP1	EQU	RAM+4		; registr pro cekaci smycku
TMP2	EQU	RAM+5		; registr pro cekaci smycku
TMP3	EQU	RAM+6		; registr pro ulozeni stavu portu B
TMP4	EQU	RAM+7		; registr pro ulozeni obsahu W
TMP5	EQU	RAM+8		; registr pro smycku 3x
TMP6	EQU	RAM+9		; registr pro smycku 10x
TMP7	EQU	RAM+10		; registr pro smycku 30x
TMP8	EQU	RAM+11		; registr pro smycku 90x




	ORG 0
	
	
       
         	
	
       


#DEFINE IN1	PORTB,3		; definice bitu pro obsluhu vstupu1
#DEFINE IN2	PORTB,1		; definice bitu pro obsluhu vstupu2
#DEFINE IN3	PORTB,0		; definice bitu pro obsluhu vstupu3
#DEFINE J1	PORTB,5		; definice bitu pro obsluhu jumperu1
#DEFINE J2	PORTB,4		; definice bitu pro obsluhu jumperu2
#DEFINE BUZZ	PORTA,2		; definice bitu pro obsluhu bzucaku
#DEFINE RELE1	PORTA,6		; definice bitu pro obsluhu rele1
#DEFINE RELE2	PORTA,7		; definice bitu pro obsluhu rele2
#DEFINE RELE3	PORTA,0		; definice bitu pro obsluhu rele3
;
; -----------
; INITIALIZE
; -----------
;
       ORG    0x000           ; Program starts at 0x000

       
	CLRF   PORTA           ; Initialize port A
       CLRF   PORTB           ; Initialize port B


       BSF    STATUS,RP0      ; RAM bank 1

       MOVLW B'00000000'	;  piny portu A jako výstup
	MOVWF TRISA		; nastaveni portu A 
	MOVLW B'00111011'	; piny portu B jako vstup
	MOVWF TRISB		; nastaveni portu B 
       BCF    STATUS,RP0      ; RAM bank 0
;
; ------------------------
; FUNCTION OF PORT A PINS
; ------------------------
;
       MOVLW    7
       MOVWF    CMCON         ; Comparators off, all pins digital I/O
;
; ----------
; MAIN 
; ----------
;

START




	MOVLW	D'3'
	MOVWF	TMP5
demo	NOP
	BSF	RELE1
	BSF	RELE2
	BSF	RELE3
	BSF	BUZZ
	CALL	CEK1S	
	BCF	RELE1
	BCF	RELE2
	BCF	RELE3
	BCF	BUZZ
	CALL	CEK05S
	DECFSZ	TMP5,F	
	GOTO	demo
	
MAIN01	
	BTFSS	IN1
	GOTO	testin	
	BTFSS	IN2
	GOTO	testin
	BTFSS	IN3
	GOTO	testin


MAIN02	
	BTFSS	IN1
	GOTO$+5
	BTFSS	IN2
	GOTO$+5
	BTFSS	IN3
	GOTO$+5
		
	BTFSC	IN1
	GOTO$+5
	BTFSC	IN2
	GOTO$+3
	BTFSC	IN3
	GOTO$+1


	NOP
	BSF	RELE1
	BSF	RELE2
	BSF	RELE3
	
	CALL	CEK1S	










testin	BTFSC	IN1
	GOTO	jtest
	BTFSC	IN2
	GOTO	jtest
	BTFSC	IN3
	GOTO	jtest	
	GOTO	testin

jtest	BTFSS	J1
	GOTO$+4	
	BTFSS	J2
	GOTO	opak30
	GOTO	opak3
	BTFSS	J2
	GOTO	opak90
	GOTO	opak10

opak3	MOVLW	D'3'
	MOVWF	TMP4
	GOTO	blpip

opak10	MOVLW	D'10'
	MOVWF	TMP4
	GOTO	blpip

opak30	MOVLW	D'30'
	MOVWF	TMP4
	GOTO	blpip

opak90	MOVLW	D'90'
	MOVWF	TMP4
	GOTO	blpip


blpip	NOP
	BTFSS	IN1
	BSF 	RELE1 
	BTFSS	IN2
	BSF 	RELE2 
	BTFSS	IN3
	BSF 	RELE3 
	NOP
	BTFSS	IN1
	BSF 	BUZZ 
	BTFSS	IN2
	BSF 	BUZZ 
	BTFSS	IN3
	BSF 	BUZZ 
	CALL 	CEK1S

	BTFSC	IN1
	NOP
	BCF 	RELE1 
	BTFSC	IN2
	NOP	
	BCF 	RELE2 
	BTFSC	IN3
	NOP
	BCF 	RELE3
	NOP
	BTFSC	IN1
	NOP
	BCF 	BUZZ 
	BTFSC	IN2
	NOP
	BCF 	BUZZ 
	BTFSC	IN3
	NOP
	BCF 	BUZZ 
		
	CALL 	CEK05S
	DECFSZ	TMP4,F	
	GOTO	blpip	

	BTFSS	IN1
	BSF 	RELE1 
	BTFSS	IN2
	BSF 	RELE2 
	BTFSS	IN3
	BSF 	RELE3 

	GOTO	MAIN02










	
	

; -------------------------------------------------------------------------------------------
; cekaci smycka 500 ms
; -------------------------------------------------------------------------------------------
CEK05S	MOVLW H'8'
        MOVWF TMP2
        MOVLW H'59'
        MOVWF TMP1
        MOVLW H'B1'
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
        DECFSZ TMP2,F
        GOTO $-9
		RETURN
; -------------------------------------------------------------------------------------------
; konec cekaci smycky 50 ms
; -------------------------------------------------------------------------------------------
; cekaci smycka 1 s
; -------------------------------------------------------------------------------------------
CEK1S   MOVLW H'15'
        MOVWF TMP2
        MOVLW H'59'
        MOVWF TMP1
        MOVLW H'B1'
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
        DECFSZ TMP2,F
        GOTO $-9
		RETURN
; -------------------------------------------------------------------------------------------
; konec cekaci smycky 1 s
; -------------------------------------------------------------------------------------------









	END