;	4MHz-es c1ock-ra iródott PCF8563
	processor	16F1513

Slave           equ     b'10100010'     ; óra modul slave címe


;------------------------------------------------------------------------------
; Az I2C port konfigurálása
;
		banksel PIE1
		clrf	PIE1		; a periféria megszakítások tiltása 
		clrf	INTCON		;
		movlw	0x80 
		banksel SSPSTAT
		movwf	SSPSTAT		; slew rate vezérlés tiltva
		movlw	0x09		; SSPADD=49
		movwf	SSPADD
		movlw	B'00101000'	; SSPEN=1, soros port engedélyezés
		movwf	SSPCON1		; I2C master, Fosc/(4*(SSPADD+1))
		banksel PIR1
		clrf	PIR1




;------------------------------------------------------------------------------
; ÓRA MODUL írás
;
Clock_Write	
		banksel SSPCON2	; bank kiválasztás
		bsf	SSPCON2,SEN	; start bit
		banksel PIR1	; bank0 kiválasztás
		call	WaitS
		movlw	Slave		; W= slave + R/W (=0)
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	0x00		; kezdőcím= 00h, átv. formátum reg.= 0
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	0x00		; CONTROL1 regiszter írás
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	0x00		; CONTROL2 regiszter írás
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movfw	SecB		; SEC regiszter írás
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movfw	MinB		; MIN regiszter írás
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movfw	HourB		; HOUR regiszter írás
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		banksel SSPCON2	; bank kiválasztás
		bsf	SSPCON2,PEN	; stop bit
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	.10
		call	WAIT		; várakozás az írás végére (kb. 10ms)
		return
;------------------------------------------------------------------------------
; ÓRA MODUL olvasás
;
Clock_Read	
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,SEN		; start bit
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	Slave		; W= slave + R/W (=0)
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	0x02		; SEC regiszter címe
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
;------------------------------------------------------------------------------
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,RSEN	; ismételt start bit !!!
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	Slave
		addlw	1			; W= slave + R/W (=1), olvasás !
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
;------------------------------------------------------------------------------
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,RCEN	; vétel engedélyezés
		banksel PIR1		; bank kiválasztás
		call	WaitS
		banksel	SSPBUF
		movfw	SSPBUF
		banksel PIR1		; bank kiválasztás
		andlw	B'01111111'
		movwf	Sec			; vett adat másolása SEC regiszterbe
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,ACKEN	; acknowledge bit generálás
		banksel PIR1		; bank kiválasztás
		call	WaitS
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,RCEN	; vétel ismételt engedélyezése
		banksel PIR1		; bank kiválasztás
		call	WaitS
		banksel	SSPBUF
		movfw	SSPBUF
		banksel PIR1		; bank kiválasztás
		andlw	B'01111111'
		movwf	Min			; vett adat másolása MIN regiszterbe
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,ACKEN	; acknowledge bit generálás
		banksel PIR1		; bank kiválasztás
		call	WaitS
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,RCEN	; vétel ismételt engedélyezése
		banksel PIR1		; bank kiválasztás
		call	WaitS
		banksel	SSPBUF
		movfw	SSPBUF
		banksel PIR1		; bank kiválasztás
		andlw	B'00111111'
		movwf	Hour		; vett adat másolása HOUR regiszterbe
		banksel	SSPCON2		; bank kiválasztás
		bsf	SSPCON2,PEN	; stop bit
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	.10
		call	WAIT		; várakozás az írás végére (kb. 10ms)
		return


Clock_FRSet	
		banksel	SSPCON2		; bank kiválasztás
		bsf		SSPCON2,SEN		; start bit
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	Slave		; W= slave + R/W (=0)
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	0x0D		; kezdőcím= 00h, átv. formátum reg.= 0
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás	
		call	WaitS
		movlw	B'10000001'	; CLKOUT regiszter írás
		banksel	SSPBUF
		movwf	SSPBUF
		banksel PIR1		; bank kiválasztás
		call	WaitS	
		banksel	SSPCON2		; bank kiválasztás
		bsf	SSPCON2,PEN		; stop bit
		banksel PIR1		; bank kiválasztás
		call	WaitS
		movlw	.10
		call	WAIT		; várakozás az írás végére (kb. 10ms)
		return

;------------------------------------------------------------------------------
WaitS		btfss	PIR1,SSPIF	; SSPIF megszakítás flagre vár
			goto	WaitS
			bcf	PIR1,SSPIF	; SSPIF flag törlése
            return