;--------------------------------------------------------
;                                   PIC16F84                                   ________
;                              --------\/--------                     0V   ---+\        \
;                             -|RA2          RA1|-                   +5V   ---+ ) TO92   )
;                             -|RA3          RA0|- Cidlo SMT 160-30 signál ---+/_______ /                
;                             -|RA4/ck      osc1|- 4MHz Xtall 15pF OV
;                        +5V  -|MCLR        osc2|- 4MHz Xtall 15pF OV                     
;                         0V  -|Vss          Vdd|- +5V                  
;        OV  LED Zelena  R220 -|RB0/INT  PGD/RB7|-  LED Zelena  R220 OV                     
;        OV  LED Zelena  R220 -|RB1      PGC/RB6|-  LED Zelena  R220 OV                     
;        OV  LED Zelena  R220 -|RB2          RB5|-  LED Zelena  R220 OV                     
;        OV  LED Zelena  R220 -|RB3          RB4|-  LED Zelena  R220 OV
;                              ------------------            
;--------------------------------------------------------

	LIST P=PIC16F84, R=DEC
	include<p16f84.inc>
	errorlevel -302	  ; potlaceni hlaseni o prepinani bank
       __config 03FF9h   ; xt + wd off

countH		EQU	012H		; horni bity teplotni smycky
countL		EQU	013H		; dolni bity teplotni smycky
stridaH		EQU	014H		; namerena strida SMT horni
stridaL		EQU	015H		; namerena strida SMT dolni
#DEFINE  CIDLO PORTA, 0			; INPUT PIN pro cidlo SMT 160 (RA0)



	BSF STATUS,RP0          ;přepnutí do banky jedna - vté musím nastavit co bude vstup  a co výstup
	MOVLW B'00000001'  	;do pracovního registru vložím hodnotu '00000001'
	MOVWF TRISA		;obsah W registru přesunu do registru TRISB => všechny výstupní
	MOVLW B'00000000'	;do pracovního registru vložím hodnotu  00000001
	MOVWF TRISB		;obsah w registru přesunu do registru TRISA => nultý bit bude vstupní, zbylé výstupní
	BCF STATUS,RP0        	;návrat zpět do banky 0

; http://fl.hw.cz/programovani/pic_temperature/paralax_smt.txt

Mereni		; Rutina popsana Ondrejem Vitousem na HW serveru
			MOVLW	#020H			; merime 108ms (425*32*8us)
			MOVWF	countL			; 435*32*8=1360=3520 +
			MOVLW	#035H			; cyklus pro countL
			MOVWF	countH			; = 3620h

			CLRF	stridaL			; vynulovat citace
			CLRF	stridaH			; stridy
			BCF 	STATUS, 2		; vynulovat Z 2
		
smyckaA			nop				; 1 kazdy 256 cykl = 9us
smyckaB			BTFSC 	CIDLO 			;SMT_IN	1/2
			INCF	stridaL, 1 		; 2	zvysit, pokud je SMT_IN log. 1
			BTFSC	STATUS, 2		; 3/4 
			INCF	stridaH, 1		; 4	zvysit, pokud pretekl reg
			
			DECFSZ	countL, 1		; 5/6
			GOTO	smyckaA			; 6+1=7
			DECFSZ	countH, 1		; 7/8
			GOTO	smyckaB			; 7+1=8

			BCF	STATUS, 0			; 1 vynulovat CY
			RLF	stridaL, 1			; 1 a odroloval
			RLF	stridaH, 1			; 1 v ramci 
			RLF	stridaL, 1			; 1 dvoubajtoveho
			RLF	stridaH, 1			; 1 registru ;;zde je pocet stupnu
			RLF	stridaL, 1			; 1 32*, tzn mame
			RLF	stridaH, 1			; 1 pocet pulstupnu

			MOVF	stridaH, W
			MOVWF	PORTB

	goto Mereni		;

		END

; *** poznamky 10.1.2009 ***
; VSTUP RA0 	L PORTB 169
;		H	0
; CIDLO -5ST		119
;	18ST		173
;	40ST		207
;
; teploty jsou priblizne 