;********************
;*  Hőmérő program  *
;*    DS1620-szal   *
;*        by:       *
;*.:: MaSTeRFoXX::.	*
;**** 2005-10-29 ****


;Hardver:
;		-CPU     : PIC16F628A @4MHz , XT mód
;		-Szenzor : DS1620 SPI Buszon

;Először kapcsoljunk ki hibaüzeneteket..   :)))
	ERRORLEVEL -302
	ERRORLEVEL -207

;Proci megadása
		List p=16f628A
		#include p16f628A.inc

;konfigurálás
		__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
		;XT mód;
		;Watchdog: ki
		;Power on reset: be
		;Kódos védelem: ki

    ORG     0x00		
  	goto    start
	ORG     0x04			
	goto	start	


;maga a programhoz kell
	#DEFINE CLK PORTA,1		;CLOCK 
	#DEFINE DAT PORTA,0		;DATA
	#DEFINE RST	PORTA,2		;RESET



	;Változóblokk
	CBLOCK 0x20
				COUNT ;számláló
				KIMENO
				BEJOVO1
				BEJOVO2 
				BEJOVO_TEMP		
				T1
				T2
				
	ENDC
	;Változóblokk vége
	
;---- INICIALIZÁCIÓS RÉSZ ----
start
	BCF  	INTCON, T0IF 		; TMR0 megszakítás miatt T0IF 1-re áll, ezért 0
	CLRF 	PORTA 
	BSF 	STATUS, RP0 ;Select Bank 1
	CLRF 	TRISA
	CLRF 	TRISB
	BCF 	STATUS, RP0	; Bank0

;A DS1620 konfigurálása
			; 76543210
	;parancs: 00001100  ;write config
	;adat	: 00000001	; 1SHOT mode
	movlw 	0xac
	movwf 	KIMENO
	BSF 	RST				;engedélyezés
	CALL 	SEND			;elküldeni a parnacsot
	movlw 	b'00000001'	
	movwf 	KIMENO
	CALL 	SEND			;elküldeni az adatot
	CALL 	VARJ
	BCF 	RST				;tiltás
	CALL 	DELAY

	MOVLW   07H				; PIC16F628 - nál kikapcsolja a komparátort
	MOVWF	MCON

	
eleje
	CALL 	START_CONVERT
	CALL 	DELAY
	call 	READ_TEMPERATURE
;Most már a BEJOVO1 -ben van a hőmérséklet


	goto 	eleje

START_CONVERT
;ez a rész küld az IC-nek egy parancsot, hogy végezzen el egy mérést
;PARANCS: 11101110
	MOVLW 	0xee
	MOVWF 	KIMENO
	BSF 	RST
	CALL 	SEND
	CALL 	VARJ
	BCF 	RST
	RETURN

READ_TEMPERATURE
;Ez a rész olvassa ki a hőmérsékletet
;parancs : AA    10101010
	MOVLW 	B'10101010'
	MOVWF 	KIMENO
	BSF 	RST
	CALL 	SEND
	CALL 	RECEIVE
	MOVF 	BEJOVO_TEMP,W
	MOVWF 	BEJOVO1
	CALL 	RECEIVE
	MOVF 	BEJOVO_TEMP,W
	MOVWF 	BEJOVO2
	BCF 	RST
	RETURN


SEND
	MOVLW 	D'8'
	MOVWF 	COUNT
	CALL 	DATA_LOW			;kimenetre kapcsolás
	NOP
SEND_
	BCF 	CLK
	NOP
	BCF 	DAT
	BTFSC 	KIMENO,0			;HA H AKKOR H-t küldjön
	BSF 	DAT
SEND_VEGE
	CALL 	DELAY
	BSF 	CLK
	RRF 	KIMENO,F
	DECFSZ 	COUNT,F
	GOTO 	SEND_	
	RETURN

RECEIVE
	MOVLW 	D'8'
	MOVWF 	COUNT
	CALL 	DATA_HIGH			;bemenetre kapcsolás
	CLRF 	BEJOVO_TEMP
RECEIVE_
	BCF 	CLK
	BCF 	STATUS,C
	BTFSC 	DAT
	BSF 	STATUS,C
	RRF 	BEJOVO_TEMP,F
	CALL 	DELAY
	BSF 	CLK
	DECFSZ 	COUNT,F
	GOTO 	RECEIVE_
	RETURN

DATA_HIGH
	BSF 	STATUS,RP0
	BSF 	TRISA,0
	BCF 	STATUS,RP0
	RETURN

DATA_LOW
	BSF 	STATUS,RP0
	BCF 	TRISA,0
	BCF 	STATUS,RP0
	RETURN

VARJ
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP	
	RETURN

DELAY	
	MOVLW	d'150'
	MOVWF	T1
DEL	
	MOVLW	d'255'
	MOVWF	T2	
DEL1	
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	T2,f
	GOTO	DEL1
	DECFSZ	T1,f
	GOTO	DEL
	RETURN
		
	END
