;---------------------------------------------------------------------------;
;									    									;
;																			;
;	AUTHOR: Monostori Martin.												;
;	DATE; FEBR 25, 2012														;
;	EMAIL ADD: mon.martinov@gmail.com										;
;	TITLE: TEMPERATURE SENSOR												;
;	SENSOR: TC1047A															;
;	PIC: 16F676										 						;
;																			;
;---------------------------------------------------------------------------;
; PORTA										 								;
;	RA0 : ?										 							;
;	RA1 : ?										 							;
;	RA2 : x										 					        ;
;	RA3 : ?										 							;
;	RA4 : Analog in										 					;
;	RA5 : Digit3 out (+- cső)								 				;
;										 									;
; PORTC										 								;
;	RC0 : BCD out (A)										 				;
;	RC1 : BCD out (B)										 				;
;	RC2 : BCD out (C)										 				;
;	RC3 : BCD out (D)										 				;
;	RC4 : Digit2 out (10-es helyiérték)										;
;	RC5 : Digit1 out (1-es helyiérték)										;
;---------------------------------------------------------------------------;

			#include "p16f676.inc"

	__CONFIG _WDT_OFF & _INTRC_OSC_NOCLKOUT & _CP_OFF & _MCLRE_OFF

temp	equ	0x20
		
		ORG 	0
		GOTO	Start


		cblock 	0x21 
		d1
		d2
		temp1
		digit1
		digit2
		digit3

		endc
;----------------------------------------------------------------------
Initialize

		bcf		STATUS,RP0
		movlw	B'00000111'	;to make RA0,RA1,RA2
							;not comparator
;		iorwf	CMCON,f
		movwf	CMCON	
		clrf	PORTA
		bsf		STATUS,RP0
		movlw	B'00001000'
		movwf	ANSEL

		movlw	B'00011011'
		movwf	TRISA

		bcf		ADCON1,ADCS2
		bcf		ADCON1,ADCS1
		bsf		ADCON1,ADCS0

		bcf		STATUS,RP0
		movlw	B'11100011'
		andwf	ADCON0,F
		movlw	B'01001100'
		iorwf	ADCON0,F

		bcf		ADCON0,ADFM
		bsf		ADCON0,VCFG
		bsf		ADCON0,ADON
	
		bcf		STATUS,RP0
		clrf	PORTC
		bsf		STATUS,RP0
		movlw	B'00000000'
		movwf	TRISC
		bcf		STATUS,RP0	
		return
;---------------------------------------------------------------
delay1ms
			movlw	3h
			movwf	d1
			movlw	3h
			movwf	d2
			
loopd2		decfsz	d2,f
			goto	loopd2
			decfsz	d1,f
			goto	loopd2
				return
;---------------------------------------------------------------
Display_out
			bcf		PORTC,5
			bcf		PORTA,5
			bsf		PORTC,4
			movlw	B'11110000'
			andwf	PORTC,F
			movf	digit1,w
			iorwf	PORTC,f
			call	delay1ms

			bcf		PORTC,4
			bcf		PORTA,5
			bsf		PORTC,5
			movlw	B'11110000'
			andwf	PORTC,F
			movf	digit2,w
			iorwf	PORTC,f
			call	delay1ms

			bcf		PORTC,4
			bcf		PORTC,5
			bsf		PORTA,5
			movlw	B'11110000'
			andwf	PORTC,F
			movf	digit3,w
			iorwf	PORTC,f
			call	delay1ms

;---------------------------------------------------------------
sample
			clrf	temp1	    ; temp1 ürítése.
			bsf		ADCON0,GO   ; AD konverzió elindítása ADCON0,GO bit 1-be állításával.
loop_sample
			btfsc	ADCON0,GO   ; Ha kész a konverzió akkor ADCON0,GO bit 0-ba áll be,
			goto	loop_sample ; addig ismétli a vizsgálatot amíg ez meg nem történik.
			movf	ADRESH,W    ; A konverzió eredményét beírja w-be,
			movwf	temp1       ; majd a temp1 válzotóba.
			return
;---------------------------------------------------------------
actual_temp
;---------- Szimbólum cső vezérlőbit beállítása.
			call	sample	 ; Kiolvassa a szenzort.
			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x66     ; A w értékének kivonása a mintából (itt d102, vagyis 500mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0 (Ha C=1 akkor +°C van, ha C=0 akkor -°C)
			btfss	STATUS,C ; Ha C=0 akkor bsf végrehajtódik.
			GOTO	plusz
			GOTO	minus

plusz		movlw	1h
			movwf	digit3
			GOTO	m30

minus		movlw	2h
			movwf	digit3
			GOTO	m30

;---------- Itt kezdődik a két számkijelző cső részére az adatok feldolgozása.
m30			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x29     ; A w értékének kivonása a mintából (itt d41, vagyis 200mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m29 	 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	0h		 ; 0-at ír 
			movwf	digit1	 ; digit1-be
			movlw	3h	     ; 3-át
			movwf	digit2   ; digit2-be, -30°C
			return

m29			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x2B     ; A w értékének kivonása a mintából (itt d43, vagyis 210mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m28		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	9h		 ; 9-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -29°C
			return

m28			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x2D     ; A w értékének kivonása a mintából (itt d45, vagyis 220mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m27		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	8h		 ; 8-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -28°C
			return

m27			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x2E     ; A w értékének kivonása a mintából (itt d47, vagyis 230mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m26		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	7h		 ; 7-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -27°C
			return

m26			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x31     ; A w értékének kivonása a mintából (itt d49, vagyis 240mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m25		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	6h		 ; 6-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -26°C
			return

m25			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x33     ; A w értékének kivonása a mintából (itt d51, vagyis 250mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m24		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	5h		 ; 5-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -25°C
			return

m24			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x35     ; A w értékének kivonása a mintából (itt d53, vagyis 260mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m23		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	4h		 ; 4-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -24°C
			return

m23			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x37     ; A w értékének kivonása a mintából (itt d55, vagyis 270mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m22		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	3h		 ; 3-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -23°C
			return

m22			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x39     ; A w értékének kivonása a mintából (itt d57, vagyis 280mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m21		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	2h		 ; 2-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -22°C
			return

m21			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x3B     ; A w értékének kivonása a mintából (itt d59, vagyis 290mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m20		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	1h		 ; 1-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -21°C
			return

m20			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x3D     ; A w értékének kivonása a mintából (itt d61, vagyis 300mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m19		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	0h		 ; 0-at ír 
			movwf	digit1	 ; digit1-be
			movlw	2h	     ; 2-át
			movwf	digit2   ; digit2-be, -20°C
			return

m19			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x3F     ; A w értékének kivonása a mintából (itt d63, vagyis 310mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m18		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	9h		 ; 9-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -19°C
			return

m18			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x42     ; A w értékének kivonása a mintából (itt d66, vagyis 320mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m17		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	8h		 ; 8-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -18°C
			return

m17			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x44     ; A w értékének kivonása a mintából (itt d68, vagyis 330mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m16		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	7h		 ; 7-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -17°C
			return

m16			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x46     ; A w értékének kivonása a mintából (itt d70, vagyis 340mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m15		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	6h		 ; 6-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -16°C
			return

m15			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x48     ; A w értékének kivonása a mintából (itt d72, vagyis 350mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m14		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	5h		 ; 5-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -15°C
			return

m14			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x4A     ; A w értékének kivonása a mintából (itt d74, vagyis 360mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m13		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	4h		 ; 4-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -14°C
			return

m13			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x4C     ; A w értékének kivonása a mintából (itt d76, vagyis 370mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m12		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	3h		 ; 3-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -13°C
			return

m12			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x4E     ; A w értékének kivonása a mintából (itt d78, vagyis 380mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m11		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	2h		 ; 2-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -12°C
			return

m11			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x50     ; A w értékének kivonása a mintából (itt d80, vagyis 390mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m10		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	1h		 ; 1-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -11°C
			return

m10			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x52     ; A w értékének kivonása a mintából (itt d82, vagyis 400mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m09		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	0h		 ; 0-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, -10°C
			return

m09			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x54     ; A w értékének kivonása a mintából (itt d84, vagyis 410mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m08		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	9h		 ; 9-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -09°C
			return

m08			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x56     ; A w értékének kivonása a mintából (itt d86, vagyis 420mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m07		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	8h		 ; 8-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -08°C
			return

m07			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x58     ; A w értékének kivonása a mintából (itt d88, vagyis 430mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m06		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	7h		 ; 7-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -07°C
			return

m06			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x5A     ; A w értékének kivonása a mintából (itt d90, vagyis 440mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m05		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	6h		 ; 6-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -06°C
			return

m05			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x5C	 ; A w értékének kivonása a mintából (itt d92, vagyis 450mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m04		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	5h		 ; 5-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -05°C
			return

m04			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x5E     ; A w értékének kivonása a mintából (itt d94, vagyis 460mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m03		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	4h		 ; 4-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -04°C
			return

m03			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x60     ; A w értékének kivonása a mintából (itt d96, vagyis 470mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m02		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	3h		 ; 3-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -03°C
			return

m02			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x62     ; A w értékének kivonása a mintából (itt d98, vagyis 480mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m01		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	2h		 ; 2-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -02°C
			return

m01			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x64     ; A w értékének kivonása a mintából (itt d100, vagyis 490mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	m00		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	1h		 ; 1-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, -01°C
			return

m00			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x66     ; A w értékének kivonása a mintából (itt d102, vagyis 500mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p01		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	0h		 ; 0-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, 0°C
			return

p01			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x68     ; A w értékének kivonása a mintából (itt d104, vagyis 510mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p02		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	1h		 ; 1-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +01°C
			return

p02			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x6A     ; A w értékének kivonása a mintából (itt d106, vagyis 520mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p03		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	6h		 ; 2-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +02°C
			return

p03			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x6D     ; A w értékének kivonása a mintából (itt d109, vagyis 530mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p04		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	3h		 ; 3-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +03°C
			return

p04			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x6F     ; A w értékének kivonása a mintából (itt d111, vagyis 540mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p05		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	4h		 ; 4-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +04°C
			return

p05			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x71     ; A w értékének kivonása a mintából (itt d113, vagyis 550mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p06		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	5h		 ; 5-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +05°C
			return

p06			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x73     ; A w értékének kivonása a mintából (itt d115, vagyis 560mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p07		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	6h		 ; 6-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +06°C
			return

p07			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x75     ; A w értékének kivonása a mintából (itt d117, vagyis 570mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p08		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	7h		 ; 7-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +07°C
			return

p08			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x77     ; A w értékének kivonása a mintából (itt d119, vagyis 580mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p09		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	8h		 ; 8-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +08°C
			return

p09			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x79     ; A w értékének kivonása a mintából (itt d121, vagyis 590mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p10		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	9h		 ; 9-at ír 
			movwf	digit1	 ; digit1-be
			movlw	0h	     ; 0-át
			movwf	digit2   ; digit2-be, +09°C
			return

p10			movf	temp1,w  ; Ha w=0 akkor temp1 -> w,  ha w=1 akkor temp1 -> temp1
			sublw	0x7B     ; A w értékének kivonása a mintából (itt d123, vagyis 600mV a bementen) 2-es komplemens módszerrel; az eredmény a w-be kerül.
					         ; Ha az eredmény 0,vagy + akkor C=1, ha - akkor C=0
			btfss	STATUS,C ; Ha C=0 akkor GOTO végrehajtódik.
			goto	p11		 ; Ha C=1 akkor GOTO átugródik, tehát megtörténik a beírás!
			movlw	0h		 ; 0-at ír 
			movwf	digit1	 ; digit1-be
			movlw	1h	     ; 1-át
			movwf	digit2   ; digit2-be, +10°C
			return

p11			movf	temp1,w 
			sublw	0x7D     ;125    
			btfss	STATUS,C 
			goto	p12	 
			movlw	1h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p12			movf	temp1,w 
			sublw	0x7F ;127    
			btfss	STATUS,C 
			goto	p13	 
			movlw	2h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p13			movf	temp1,w 
			sublw	0x81     ;129    
			btfss	STATUS,C 
			goto	p14	 
			movlw	3h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p14			movf	temp1,w 
			sublw	0x83     ;131
			btfss	STATUS,C 
			goto	p15	 
			movlw	4h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p15			movf	temp1,w 
			sublw	0x85     ;133
			btfss	STATUS,C 
			goto	p16	 
			movlw	5h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p16			movf	temp1,w 
			sublw	0x87     ;135    
			btfss	STATUS,C 
			goto	p17	 
			movlw	6h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p17			movf	temp1,w 
			sublw	0x89     ;137    
			btfss	STATUS,C 
			goto	p18 
			movlw	7h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p18			movf	temp1,w 
			sublw	0x8B     ;139    
			btfss	STATUS,C 
			goto	p19	 
			movlw	9h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p19			movf	temp1,w 
			sublw	0x8D     ;141    
			btfss	STATUS,C 
			goto	p20	 
			movlw	9h	 
			movwf	digit1	 
			movlw	1h  
			movwf	digit2
			return

p20			movf	temp1,w 
			sublw	0x8F ;143
			btfss	STATUS,C 
			goto	p21	 
			movlw	0h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p21			movf	temp1,w 
			sublw	0x91 ;145
			btfss	STATUS,C 
			goto	p22	 
			movlw	1h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p22			movf	temp1,w 
			sublw	0x93 ;147
			btfss	STATUS,C 
			goto	p23	 
			movlw	2h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p23			movf	temp1,w 
			sublw	0x96 ;150
			btfss	STATUS,C 
			goto	p24	 
			movlw	3h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p24			movf	temp1,w 
			sublw	0x98 ;152
			btfss	STATUS,C 
			goto	p25 
			movlw	4h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p25			movf	temp1,w 
			sublw	0x9A ;154
			btfss	STATUS,C 
			goto	p26	 
			movlw	5h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p26			movf	temp1,w 
			sublw	0x9C ;156
			btfss	STATUS,C 
			goto	p27	 
			movlw	6h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p27			movf	temp1,w 
			sublw	0x9E ;158
			btfss	STATUS,C 
			goto	p28	 
			movlw	7h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p28			movf	temp1,w 
			sublw	0xA0 ;160
			btfss	STATUS,C 
			goto	p29	 
			movlw	8h	 
			movwf	digit1	 
			movlw	2h  
			movwf	digit2
			return

p29			movf	temp1,w 
			sublw	0xA2 ;162
			btfss	STATUS,C 
			goto	p30
			movlw	9h
			movwf	digit1	 
			movlw	2h
			movwf	digit2
			return


p30			movf	temp1,w 
			sublw	0xA4 ;164
			btfss	STATUS,C 
			goto	p31
			movlw	0h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p31			movf	temp1,w 
			sublw	0xA6 ;166
			btfss	STATUS,C 
			goto	p32
			movlw	1h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p32			movf	temp1,w 
			sublw	0xA8 ;168
			btfss	STATUS,C 
			goto	p33
			movlw	2h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p33			movf	temp1,w 
			sublw	0xAA ;170
			btfss	STATUS,C 
			goto	p34
			movlw	3h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p34			movf	temp1,w 
			sublw	0xAC ;172
			btfss	STATUS,C 
			goto	p35
			movlw	4h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p35			movf	temp1,w 
			sublw	0xAE ;174
			btfss	STATUS,C 
			goto	p36
			movlw	5h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p36			movf	temp1,w 
			sublw	0xB0 ;176
			btfss	STATUS,C 
			goto	p37
			movlw	6h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p37			movf	temp1,w 
			sublw	0xB2 ;178
			btfss	STATUS,C 
			goto	p38
			movlw	7h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p38			movf	temp1,w 
			sublw	0xB4 ;180
			btfss	STATUS,C 
			goto	p39
			movlw	8h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p39			movf	temp1,w 
			sublw	0xB6 ;182
			btfss	STATUS,C 
			goto	p40
			movlw	9h
			movwf	digit1	 
			movlw	3h
			movwf	digit2
			return


p40			movf	temp1,w 
			sublw	0xB8 ;184
			btfss	STATUS,C 
			goto	p41
			movlw	0h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p41			movf	temp1,w 
			sublw	0xBA ;186
			btfss	STATUS,C 
			goto	p42
			movlw	1h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p42			movf	temp1,w 
			sublw	0xBC ;188
			btfss	STATUS,C 
			goto	p43
			movlw	1h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p43			movf	temp1,w 
			sublw	0xBE ;190
			btfss	STATUS,C 
			goto	p44
			movlw	3h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p44			movf	temp1,w 
			sublw	0xC1 ;193
			btfss	STATUS,C 
			goto	p45
			movlw	4h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p45			movf	temp1,w 
			sublw	0xC3 ;195
			btfss	STATUS,C 
			goto	p46
			movlw	5h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p46			movf	temp1,w 
			sublw	0xC5 ;197
			btfss	STATUS,C 
			goto	p47
			movlw	6h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p47			movf	temp1,w 
			sublw	0xC7 ;199
			btfss	STATUS,C 
			goto	p48
			movlw	7h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p48			movf	temp1,w 
			sublw	0xC9 ;201
			btfss	STATUS,C 
			goto	p49
			movlw	8h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return


p49			movf	temp1,w 
			sublw	0xCB ;203
			btfss	STATUS,C 
			goto	p50
			movlw	9h
			movwf	digit1	 
			movlw	4h
			movwf	digit2
			return

p50			movf	temp1,w 
			sublw	0xCD ;205
			btfss	STATUS,C 
			goto	p51
			movlw	0h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p51			movf	temp1,w 
			sublw	0xCF ;207
			btfss	STATUS,C 
			goto	p52
			movlw	1h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p52			movf	temp1,w 
			sublw	0xD1 ;209
			btfss	STATUS,C 
			goto	p53
			movlw	2h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p53			movf	temp1,w 
			sublw	0xD3 ;211
			btfss	STATUS,C 
			goto	p54
			movlw	3h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p54			movf	temp1,w 
			sublw	0xD5 ;213
			btfss	STATUS,C 
			goto	p55
			movlw	4h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p55			movf	temp1,w 
			sublw	0xD7 ;215
			btfss	STATUS,C 
			goto	p56
			movlw	5h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p56			movf	temp1,w 
			sublw	0xD9 ;217
			btfss	STATUS,C 
			goto	p57
			movlw	6h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p57			movf	temp1,w 
			sublw	0xDB ;219
			btfss	STATUS,C 
			goto	p58
			movlw	7h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p58			movf	temp1,w 
			sublw	0xDD ;221
			btfss	STATUS,C 
			goto	p59
			movlw	8h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p59			movf	temp1,w 
			sublw	0xDF ;223
			btfss	STATUS,C 
			goto	p60
			movlw	9h
			movwf	digit1	 
			movlw	5h
			movwf	digit2
			return

p60			movf	temp1,w 
			sublw	0xE1 ;225
			btfss	STATUS,C 
			goto	Start  ; Itt a vége, ha 60°C-nál több lenne akkor újraindul, de akkor már úgyis nagy a baj a klímával! :)
			movlw	0h
			movwf	digit1	 
			movlw	6h
			movwf	digit2
			return

;---------------------------------------------------------------
Start
			call 	Initialize ; Mindent alapértékre állít, beállítja a port I/O-kat.
			clrf	digit1	   ; Mindent alapértékre állít
			clrf	digit2     ; Mindent alapértékre állít
;---------------------------------------------------------------
mainloop1

			call	actual_temp ; Kiolvassa a szenzor jeleit és bállítja a válzotókat
			call	Display_out	; Kijelzi az aktuális hőmérsékletet
			goto	mainloop1
;---------------------------------------------------------------
			END	

