	LIST P=16F672A, R=DEC
	INCLUDE<P16F627A.INC>

	__CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _INTRC_OSC_NOCLKOUT

RAM		equ	20h	; prvni adresa pameti RAM pro PIC16F628 - 224bajtu (20h-7Fh)
W_save		equ	RAM+1	; zaloha pri preruseni
Sta_sav		equ	RAM+2	; zaloha pri preruseni
PCL_sav		equ	RAM+3	; zaloha pri preruseni
FSR_sav		equ	RAM+4	; zaloha pri preruseni

TMP0		equ	RAM+5	; pomocny registr
TMP1		equ	RAM+6	; pomocny registr

byte0		equ	RAM+8
byte1		equ	RAM+9
byte2		equ	RAM+10
byte3		equ	RAM+11

Priznaky		equ	RAM+12



#define	clk_4017		06,5		
#define	res_4017		06,4	
#define	in_0		05,1		
#define 	in_1		05,0
#define	in_2		05,7
#define	in_3		05,6
#define 	in_key		05,2

	org	00h
	goto	INIT


INIT	MOVLW	B'00000111'	; typ komparatoru (off)
	MOVWF	CMCON
	BSF	STATUS,RP0	; nastaveni In / Out
	MOVLW	B'11111111'
	MOVWF	05
	MOVLW	B'00000000'
	MOVWF	06
	MOVLW	B'00100110'
	MOVWF	TXSTA
	MOVLW	12
	MOVWF	SPBRG
	MOVLW	B'00100000'
	MOVWF	PIE1
	BCF	STATUS,RP0
	MOVLW	B'10010000'
	MOVWF	RCSTA
	MOVLW	B'11000000'
	MOVWF	INTCON

MAIN
	btfss	in_key
	goto	main_b
	call	Del
	call	INPORT	
	call	send	
main_b	goto	MAIN


Del
;Variables: TMP1, TMP0
;Delay 50000 cycles
        	MOVLW 	0x0AD
        	MOVWF 	TMP1
        	MOVLW 	0x5F
        	MOVWF 	TMP0
        	DECFSZ 	TMP0,F
        	GOTO 	$-1
        	DECFSZ 	TMP1,F
        	GOTO 	$-5
;End of Delay
	return	
INPORT
	BSF	res_4017
	nop
	nop
	nop
	bcf	res_4017
	bcf	byte0,0
	btfsc	in_0
	bsf	byte0,0
	bcf	byte1,0
	btfsc	in_1
	bsf	byte1,0
	bcf	byte2,0
	btfsc	in_2
	bsf	byte2,0
	bcf	byte3,0
	btfsc	in_3
	bsf	byte3,0

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,1
	btfsc	in_0
	bsf	byte0,1
	bcf	byte1,1
	btfsc	in_1
	bsf	byte1,1
	bcf	byte2,1
	btfsc	in_2
	bsf	byte2,1
	bcf	byte3,1
	btfsc	in_3
	bsf	byte3,1

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,2
	btfsc	in_0
	bsf	byte0,2
	bcf	byte1,2
	btfsc	in_1
	bsf	byte1,2
	bcf	byte2,2
	btfsc	in_2
	bsf	byte2,2
	bcf	byte3,2
	btfsc	in_3
	bsf	byte3,2

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,3
	btfsc	in_0
	bsf	byte0,3
	bcf	byte1,3
	btfsc	in_1
	bsf	byte1,3
	bcf	byte2,3
	btfsc	in_2
	bsf	byte2,3
	bcf	byte3,3
	btfsc	in_3
	bsf	byte3,3

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,4
	btfsc	in_0
	bsf	byte0,4
	bcf	byte1,4
	btfsc	in_1
	bsf	byte1,4
	bcf	byte2,4
	btfsc	in_2
	bsf	byte2,4
	bcf	byte3,4
	btfsc	in_3
	bsf	byte3,4

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,5
	btfsc	in_0
	bsf	byte0,5
	bcf	byte1,5
	btfsc	in_1
	bsf	byte1,5
	bcf	byte2,5
	btfsc	in_2
	bsf	byte2,5
	bcf	byte3,5
	btfsc	in_3
	bsf	byte3,5

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,6
	btfsc	in_0
	bsf	byte0,6
	bcf	byte1,6
	btfsc	in_1
	bsf	byte1,6
	bcf	byte2,6
	btfsc	in_2
	bsf	byte2,6
	bcf	byte3,6
	btfsc	in_3
	bsf	byte3,6

	BSF	clk_4017
	nop
	nop
	nop
	bcf	clk_4017

	bcf	byte0,7
	btfsc	in_0
	bsf	byte0,7
	bcf	byte1,7
	btfsc	in_1
	bsf	byte1,7
	bcf	byte2,7
	btfsc	in_2
	bsf	byte2,7
	bcf	byte3,7
	btfsc	in_3
	bsf	byte3,7
	return

send
	movlw	D'55'
	movwf	TXREG
	btfss	TXSTA,1		
	GOTO	$-1
	movf	byte0,0
	movwf	TXREG
	btfss	TXSTA,1		
	GOTO	$-1
	movf	byte1,0
	movwf	TXREG
	btfss	TXSTA,1		
	GOTO	$-1
	movf	byte2,0
	movwf	TXREG
	btfss	TXSTA,1		
	GOTO	$-1
	movf	byte3,0
	movwf	TXREG
	btfss	TXSTA,1		
	GOTO	$-1
	movlw	D'105'		
	movwf	TXREG
	btfss	TXSTA,1		
	GOTO	$-1
	return

	END 