www.pudn.com > DS18B20.rar > ds18b20.asm


 
;CodeVisionAVR C Compiler V1.25.5 Professional 
;(C) Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. 
;http://www.hpinfotech.com 
 
;Chip type              : ATmega8515 
;Program type           : Application 
;Clock frequency        : 3.686400 MHz 
;Memory model           : Small 
;Optimize for           : Size 
;(s)printf features     : float, width, precision 
;(s)scanf features      : int, width 
;External SRAM size     : 0 
;Data Stack size        : 128 byte(s) 
;Heap size              : 0 byte(s) 
;Promote char to int    : No 
;char is unsigned       : Yes 
;8 bit enums            : Yes 
;Word align FLASH struct: Yes 
;Enhanced core instructions    : On 
;Smart register allocation : On 
;Automatic register allocation : On 
 
	#pragma AVRPART ADMIN PART_NAME ATmega8515 
	#pragma AVRPART MEMORY PROG_FLASH 8192 
	#pragma AVRPART MEMORY EEPROM 512 
	#pragma AVRPART MEMORY INT_SRAM SIZE 512 
	#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60 
 
	.EQU UDRE=0x5 
	.EQU RXC=0x7 
	.EQU USR=0xB 
	.EQU UDR=0xC 
	.EQU SPSR=0xE 
	.EQU SPDR=0xF 
	.EQU EERE=0x0 
	.EQU EEWE=0x1 
	.EQU EEMWE=0x2 
	.EQU EECR=0x1C 
	.EQU EEDR=0x1D 
	.EQU EEARL=0x1E 
	.EQU EEARH=0x1F 
	.EQU WDTCR=0x21 
	.EQU MCUCSR=0x34 
	.EQU MCUCR=0x35 
	.EQU EMCUCR=0x36 
	.EQU GICR=0x3B 
	.EQU SPL=0x3D 
	.EQU SPH=0x3E 
	.EQU SREG=0x3F 
 
	.DEF R0X0=R0 
	.DEF R0X1=R1 
	.DEF R0X2=R2 
	.DEF R0X3=R3 
	.DEF R0X4=R4 
	.DEF R0X5=R5 
	.DEF R0X6=R6 
	.DEF R0X7=R7 
	.DEF R0X8=R8 
	.DEF R0X9=R9 
	.DEF R0XA=R10 
	.DEF R0XB=R11 
	.DEF R0XC=R12 
	.DEF R0XD=R13 
	.DEF R0XE=R14 
	.DEF R0XF=R15 
	.DEF R0X10=R16 
	.DEF R0X11=R17 
	.DEF R0X12=R18 
	.DEF R0X13=R19 
	.DEF R0X14=R20 
	.DEF R0X15=R21 
	.DEF R0X16=R22 
	.DEF R0X17=R23 
	.DEF R0X18=R24 
	.DEF R0X19=R25 
	.DEF R0X1A=R26 
	.DEF R0X1B=R27 
	.DEF R0X1C=R28 
	.DEF R0X1D=R29 
	.DEF R0X1E=R30 
	.DEF R0X1F=R31 
 
	.MACRO __CPD1N 
	CPI  R30,LOW(@0) 
	LDI  R26,HIGH(@0) 
	CPC  R31,R26 
	LDI  R26,BYTE3(@0) 
	CPC  R22,R26 
	LDI  R26,BYTE4(@0) 
	CPC  R23,R26 
	.ENDM 
 
	.MACRO __CPD2N 
	CPI  R26,LOW(@0) 
	LDI  R30,HIGH(@0) 
	CPC  R27,R30 
	LDI  R30,BYTE3(@0) 
	CPC  R24,R30 
	LDI  R30,BYTE4(@0) 
	CPC  R25,R30 
	.ENDM 
 
	.MACRO __CPWRR 
	CP   R@0,R@2 
	CPC  R@1,R@3 
	.ENDM 
 
	.MACRO __CPWRN 
	CPI  R@0,LOW(@2) 
	LDI  R30,HIGH(@2) 
	CPC  R@1,R30 
	.ENDM 
 
	.MACRO __ADDB1MN 
	SUBI R30,LOW(-@0-(@1)) 
	.ENDM 
	.MACRO __ADDB2MN 
	SUBI R26,LOW(-@0-(@1)) 
	.ENDM 
	.MACRO __ADDW1MN 
	SUBI R30,LOW(-@0-(@1)) 
	SBCI R31,HIGH(-@0-(@1)) 
	.ENDM 
	.MACRO __ADDW2MN 
	SUBI R26,LOW(-@0-(@1)) 
	SBCI R27,HIGH(-@0-(@1)) 
	.ENDM 
	.MACRO __ADDW1FN 
	SUBI R30,LOW(-2*@0-(@1)) 
	SBCI R31,HIGH(-2*@0-(@1)) 
	.ENDM 
	.MACRO __ADDD1FN 
	SUBI R30,LOW(-2*@0-(@1)) 
	SBCI R31,HIGH(-2*@0-(@1)) 
	SBCI R22,BYTE3(-2*@0-(@1)) 
	.ENDM 
	.MACRO __ADDD1N 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	SBCI R22,BYTE3(-@0) 
	SBCI R23,BYTE4(-@0) 
	.ENDM 
 
	.MACRO __ADDD2N 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	SBCI R24,BYTE3(-@0) 
	SBCI R25,BYTE4(-@0) 
	.ENDM 
 
	.MACRO __SUBD1N 
	SUBI R30,LOW(@0) 
	SBCI R31,HIGH(@0) 
	SBCI R22,BYTE3(@0) 
	SBCI R23,BYTE4(@0) 
	.ENDM 
 
	.MACRO __SUBD2N 
	SUBI R26,LOW(@0) 
	SBCI R27,HIGH(@0) 
	SBCI R24,BYTE3(@0) 
	SBCI R25,BYTE4(@0) 
	.ENDM 
 
	.MACRO __ANDBMNN 
	LDS  R30,@0+@1 
	ANDI R30,LOW(@2) 
	STS  @0+@1,R30 
	.ENDM 
 
	.MACRO __ANDWMNN 
	LDS  R30,@0+@1 
	ANDI R30,LOW(@2) 
	STS  @0+@1,R30 
	LDS  R30,@0+@1+1 
	ANDI R30,HIGH(@2) 
	STS  @0+@1+1,R30 
	.ENDM 
 
	.MACRO __ANDD1N 
	ANDI R30,LOW(@0) 
	ANDI R31,HIGH(@0) 
	ANDI R22,BYTE3(@0) 
	ANDI R23,BYTE4(@0) 
	.ENDM 
 
	.MACRO __ORBMNN 
	LDS  R30,@0+@1 
	ORI  R30,LOW(@2) 
	STS  @0+@1,R30 
	.ENDM 
 
	.MACRO __ORWMNN 
	LDS  R30,@0+@1 
	ORI  R30,LOW(@2) 
	STS  @0+@1,R30 
	LDS  R30,@0+@1+1 
	ORI  R30,HIGH(@2) 
	STS  @0+@1+1,R30 
	.ENDM 
 
	.MACRO __ORD1N 
	ORI  R30,LOW(@0) 
	ORI  R31,HIGH(@0) 
	ORI  R22,BYTE3(@0) 
	ORI  R23,BYTE4(@0) 
	.ENDM 
 
	.MACRO __DELAY_USB 
	LDI  R24,LOW(@0) 
__DELAY_USB_LOOP: 
	DEC  R24 
	BRNE __DELAY_USB_LOOP 
	.ENDM 
 
	.MACRO __DELAY_USW 
	LDI  R24,LOW(@0) 
	LDI  R25,HIGH(@0) 
__DELAY_USW_LOOP: 
	SBIW R24,1 
	BRNE __DELAY_USW_LOOP 
	.ENDM 
 
	.MACRO __CLRD1S 
	LDI  R30,0 
	STD  Y+@0,R30 
	STD  Y+@0+1,R30 
	STD  Y+@0+2,R30 
	STD  Y+@0+3,R30 
	.ENDM 
 
	.MACRO __GETD1S 
	LDD  R30,Y+@0 
	LDD  R31,Y+@0+1 
	LDD  R22,Y+@0+2 
	LDD  R23,Y+@0+3 
	.ENDM 
 
	.MACRO __PUTD1S 
	STD  Y+@0,R30 
	STD  Y+@0+1,R31 
	STD  Y+@0+2,R22 
	STD  Y+@0+3,R23 
	.ENDM 
 
	.MACRO __PUTD2S 
	STD  Y+@0,R26 
	STD  Y+@0+1,R27 
	STD  Y+@0+2,R24 
	STD  Y+@0+3,R25 
	.ENDM 
 
	.MACRO __POINTB1MN 
	LDI  R30,LOW(@0+@1) 
	.ENDM 
 
	.MACRO __POINTW1MN 
	LDI  R30,LOW(@0+@1) 
	LDI  R31,HIGH(@0+@1) 
	.ENDM 
 
	.MACRO __POINTD1M 
	LDI  R30,LOW(@0) 
	LDI  R31,HIGH(@0) 
	LDI  R22,BYTE3(@0) 
	LDI  R23,BYTE4(@0) 
	.ENDM 
 
	.MACRO __POINTW1FN 
	LDI  R30,LOW(2*@0+@1) 
	LDI  R31,HIGH(2*@0+@1) 
	.ENDM 
 
	.MACRO __POINTD1FN 
	LDI  R30,LOW(2*@0+@1) 
	LDI  R31,HIGH(2*@0+@1) 
	LDI  R22,BYTE3(2*@0+@1) 
	LDI  R23,BYTE4(2*@0+@1) 
	.ENDM 
 
	.MACRO __POINTB2MN 
	LDI  R26,LOW(@0+@1) 
	.ENDM 
 
	.MACRO __POINTW2MN 
	LDI  R26,LOW(@0+@1) 
	LDI  R27,HIGH(@0+@1) 
	.ENDM 
 
	.MACRO __POINTBRM 
	LDI  R@0,LOW(@1) 
	.ENDM 
 
	.MACRO __POINTWRM 
	LDI  R@0,LOW(@2) 
	LDI  R@1,HIGH(@2) 
	.ENDM 
 
	.MACRO __POINTBRMN 
	LDI  R@0,LOW(@1+@2) 
	.ENDM 
 
	.MACRO __POINTWRMN 
	LDI  R@0,LOW(@2+@3) 
	LDI  R@1,HIGH(@2+@3) 
	.ENDM 
 
	.MACRO __POINTWRFN 
	LDI  R@0,LOW(@2*2+@3) 
	LDI  R@1,HIGH(@2*2+@3) 
	.ENDM 
 
	.MACRO __GETD1N 
	LDI  R30,LOW(@0) 
	LDI  R31,HIGH(@0) 
	LDI  R22,BYTE3(@0) 
	LDI  R23,BYTE4(@0) 
	.ENDM 
 
	.MACRO __GETD2N 
	LDI  R26,LOW(@0) 
	LDI  R27,HIGH(@0) 
	LDI  R24,BYTE3(@0) 
	LDI  R25,BYTE4(@0) 
	.ENDM 
 
	.MACRO __GETD2S 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	LDD  R24,Y+@0+2 
	LDD  R25,Y+@0+3 
	.ENDM 
 
	.MACRO __GETB1MN 
	LDS  R30,@0+@1 
	.ENDM 
 
	.MACRO __GETB1HMN 
	LDS  R31,@0+@1 
	.ENDM 
 
	.MACRO __GETW1MN 
	LDS  R30,@0+@1 
	LDS  R31,@0+@1+1 
	.ENDM 
 
	.MACRO __GETD1MN 
	LDS  R30,@0+@1 
	LDS  R31,@0+@1+1 
	LDS  R22,@0+@1+2 
	LDS  R23,@0+@1+3 
	.ENDM 
 
	.MACRO __GETBRMN 
	LDS  R@0,@1+@2 
	.ENDM 
 
	.MACRO __GETWRMN 
	LDS  R@0,@2+@3 
	LDS  R@1,@2+@3+1 
	.ENDM 
 
	.MACRO __GETWRZ 
	LDD  R@0,Z+@2 
	LDD  R@1,Z+@2+1 
	.ENDM 
 
	.MACRO __GETD2Z 
	LDD  R26,Z+@0 
	LDD  R27,Z+@0+1 
	LDD  R24,Z+@0+2 
	LDD  R25,Z+@0+3 
	.ENDM 
 
	.MACRO __GETB2MN 
	LDS  R26,@0+@1 
	.ENDM 
 
	.MACRO __GETW2MN 
	LDS  R26,@0+@1 
	LDS  R27,@0+@1+1 
	.ENDM 
 
	.MACRO __GETD2MN 
	LDS  R26,@0+@1 
	LDS  R27,@0+@1+1 
	LDS  R24,@0+@1+2 
	LDS  R25,@0+@1+3 
	.ENDM 
 
	.MACRO __PUTB1MN 
	STS  @0+@1,R30 
	.ENDM 
 
	.MACRO __PUTW1MN 
	STS  @0+@1,R30 
	STS  @0+@1+1,R31 
	.ENDM 
 
	.MACRO __PUTD1MN 
	STS  @0+@1,R30 
	STS  @0+@1+1,R31 
	STS  @0+@1+2,R22 
	STS  @0+@1+3,R23 
	.ENDM 
 
	.MACRO __PUTBR0MN 
	STS  @0+@1,R0 
	.ENDM 
 
	.MACRO __PUTDZ2 
	STD  Z+@0,R26 
	STD  Z+@0+1,R27 
	STD  Z+@0+2,R24 
	STD  Z+@0+3,R25 
	.ENDM 
 
	.MACRO __PUTBMRN 
	STS  @0+@1,R@2 
	.ENDM 
 
	.MACRO __PUTWMRN 
	STS  @0+@1,R@2 
	STS  @0+@1+1,R@3 
	.ENDM 
 
	.MACRO __PUTBZR 
	STD  Z+@1,R@0 
	.ENDM 
 
	.MACRO __PUTWZR 
	STD  Z+@2,R@0 
	STD  Z+@2+1,R@1 
	.ENDM 
 
	.MACRO __GETW1R 
	MOV  R30,R@0 
	MOV  R31,R@1 
	.ENDM 
 
	.MACRO __GETW2R 
	MOV  R26,R@0 
	MOV  R27,R@1 
	.ENDM 
 
	.MACRO __GETWRN 
	LDI  R@0,LOW(@2) 
	LDI  R@1,HIGH(@2) 
	.ENDM 
 
	.MACRO __PUTW1R 
	MOV  R@0,R30 
	MOV  R@1,R31 
	.ENDM 
 
	.MACRO __PUTW2R 
	MOV  R@0,R26 
	MOV  R@1,R27 
	.ENDM 
 
	.MACRO __ADDWRN 
	SUBI R@0,LOW(-@2) 
	SBCI R@1,HIGH(-@2) 
	.ENDM 
 
	.MACRO __ADDWRR 
	ADD  R@0,R@2 
	ADC  R@1,R@3 
	.ENDM 
 
	.MACRO __SUBWRN 
	SUBI R@0,LOW(@2) 
	SBCI R@1,HIGH(@2) 
	.ENDM 
 
	.MACRO __SUBWRR 
	SUB  R@0,R@2 
	SBC  R@1,R@3 
	.ENDM 
 
	.MACRO __ANDWRN 
	ANDI R@0,LOW(@2) 
	ANDI R@1,HIGH(@2) 
	.ENDM 
 
	.MACRO __ANDWRR 
	AND  R@0,R@2 
	AND  R@1,R@3 
	.ENDM 
 
	.MACRO __ORWRN 
	ORI  R@0,LOW(@2) 
	ORI  R@1,HIGH(@2) 
	.ENDM 
 
	.MACRO __ORWRR 
	OR   R@0,R@2 
	OR   R@1,R@3 
	.ENDM 
 
	.MACRO __EORWRR 
	EOR  R@0,R@2 
	EOR  R@1,R@3 
	.ENDM 
 
	.MACRO __GETWRS 
	LDD  R@0,Y+@2 
	LDD  R@1,Y+@2+1 
	.ENDM 
 
	.MACRO __PUTWSR 
	STD  Y+@2,R@0 
	STD  Y+@2+1,R@1 
	.ENDM 
 
	.MACRO __MOVEWRR 
	MOV  R@0,R@2 
	MOV  R@1,R@3 
	.ENDM 
 
	.MACRO __INWR 
	IN   R@0,@2 
	IN   R@1,@2+1 
	.ENDM 
 
	.MACRO __OUTWR 
	OUT  @2+1,R@1 
	OUT  @2,R@0 
	.ENDM 
 
	.MACRO __CALL1MN 
	LDS  R30,@0+@1 
	LDS  R31,@0+@1+1 
	ICALL 
	.ENDM 
 
	.MACRO __CALL1FN 
	LDI  R30,LOW(2*@0+@1) 
	LDI  R31,HIGH(2*@0+@1) 
	RCALL __GETW1PF 
	ICALL 
	.ENDM 
 
	.MACRO __CALL2EN 
	LDI  R26,LOW(@0+@1) 
	LDI  R27,HIGH(@0+@1) 
	RCALL __EEPROMRDW 
	ICALL 
	.ENDM 
 
	.MACRO __GETW1STACK 
	IN   R26,SPL 
	IN   R27,SPH 
	ADIW R26,@0+1 
	LD   R30,X+ 
	LD   R31,X 
	.ENDM 
 
	.MACRO __NBST 
	BST  R@0,@1 
	IN   R30,SREG 
	LDI  R31,0x40 
	EOR  R30,R31 
	OUT  SREG,R30 
	.ENDM 
 
 
	.MACRO __PUTB1SN 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1SN 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1SN 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1SNS 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	ADIW R26,@1 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1SNS 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	ADIW R26,@1 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1SNS 
	LDD  R26,Y+@0 
	LDD  R27,Y+@0+1 
	ADIW R26,@1 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1PMN 
	LDS  R26,@0 
	LDS  R27,@0+1 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1PMN 
	LDS  R26,@0 
	LDS  R27,@0+1 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1PMN 
	LDS  R26,@0 
	LDS  R27,@0+1 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1PMNS 
	LDS  R26,@0 
	LDS  R27,@0+1 
	ADIW R26,@1 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1PMNS 
	LDS  R26,@0 
	LDS  R27,@0+1 
	ADIW R26,@1 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1PMNS 
	LDS  R26,@0 
	LDS  R27,@0+1 
	ADIW R26,@1 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1RN 
	MOVW R26,R@0 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1RN 
	MOVW R26,R@0 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1RN 
	MOVW R26,R@0 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1RNS 
	MOVW R26,R@0 
	ADIW R26,@1 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1RNS 
	MOVW R26,R@0 
	ADIW R26,@1 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1RNS 
	MOVW R26,R@0 
	ADIW R26,@1 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1RON 
	MOV  R26,R@0 
	MOV  R27,R@1 
	SUBI R26,LOW(-@2) 
	SBCI R27,HIGH(-@2) 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1RON 
	MOV  R26,R@0 
	MOV  R27,R@1 
	SUBI R26,LOW(-@2) 
	SBCI R27,HIGH(-@2) 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1RON 
	MOV  R26,R@0 
	MOV  R27,R@1 
	SUBI R26,LOW(-@2) 
	SBCI R27,HIGH(-@2) 
	RCALL __PUTDP1 
	.ENDM 
 
	.MACRO __PUTB1RONS 
	MOV  R26,R@0 
	MOV  R27,R@1 
	ADIW R26,@2 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1RONS 
	MOV  R26,R@0 
	MOV  R27,R@1 
	ADIW R26,@2 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1RONS 
	MOV  R26,R@0 
	MOV  R27,R@1 
	ADIW R26,@2 
	RCALL __PUTDP1 
	.ENDM 
 
 
	.MACRO __GETB1SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	LD   R30,Z 
	.ENDM 
 
	.MACRO __GETB1HSX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	LD   R31,Z 
	.ENDM 
 
	.MACRO __GETW1SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	LD   R0,Z+ 
	LD   R31,Z 
	MOV  R30,R0 
	.ENDM 
 
	.MACRO __GETD1SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	LD   R0,Z+ 
	LD   R1,Z+ 
	LD   R22,Z+ 
	LD   R23,Z 
	MOVW R30,R0 
	.ENDM 
 
	.MACRO __GETB2SX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	LD   R26,X 
	.ENDM 
 
	.MACRO __GETW2SX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	LD   R0,X+ 
	LD   R27,X 
	MOV  R26,R0 
	.ENDM 
 
	.MACRO __GETD2SX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	LD   R0,X+ 
	LD   R1,X+ 
	LD   R24,X+ 
	LD   R25,X 
	MOVW R26,R0 
	.ENDM 
 
	.MACRO __GETBRSX 
	MOVW R30,R28 
	SUBI R30,LOW(-@1) 
	SBCI R31,HIGH(-@1) 
	LD   R@0,Z 
	.ENDM 
 
	.MACRO __GETWRSX 
	MOVW R30,R28 
	SUBI R30,LOW(-@2) 
	SBCI R31,HIGH(-@2) 
	LD   R@0,Z+ 
	LD   R@1,Z 
	.ENDM 
 
	.MACRO __LSLW8SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	LD   R31,Z 
	CLR  R30 
	.ENDM 
 
	.MACRO __PUTB1SX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1SX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1SX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	ST   X+,R30 
	ST   X+,R31 
	ST   X+,R22 
	ST   X,R23 
	.ENDM 
 
	.MACRO __CLRW1SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	CLR  R0 
	ST   Z+,R0 
	ST   Z,R0 
	.ENDM 
 
	.MACRO __CLRD1SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	CLR  R0 
	ST   Z+,R0 
	ST   Z+,R0 
	ST   Z+,R0 
	ST   Z,R0 
	.ENDM 
 
	.MACRO __PUTB2SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	ST   Z,R26 
	.ENDM 
 
	.MACRO __PUTW2SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	ST   Z+,R26 
	ST   Z,R27 
	.ENDM 
 
	.MACRO __PUTD2SX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	ST   Z+,R26 
	ST   Z+,R27 
	ST   Z+,R24 
	ST   Z,R25 
	.ENDM 
 
	.MACRO __PUTBSRX 
	MOVW R30,R28 
	SUBI R30,LOW(-@0) 
	SBCI R31,HIGH(-@0) 
	ST   Z,R@1 
	.ENDM 
 
	.MACRO __PUTWSRX 
	MOVW R30,R28 
	SUBI R30,LOW(-@2) 
	SBCI R31,HIGH(-@2) 
	ST   Z+,R@0 
	ST   Z,R@1 
	.ENDM 
 
	.MACRO __PUTB1SNX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	LD   R0,X+ 
	LD   R27,X 
	MOV  R26,R0 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X,R30 
	.ENDM 
 
	.MACRO __PUTW1SNX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	LD   R0,X+ 
	LD   R27,X 
	MOV  R26,R0 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X+,R30 
	ST   X,R31 
	.ENDM 
 
	.MACRO __PUTD1SNX 
	MOVW R26,R28 
	SUBI R26,LOW(-@0) 
	SBCI R27,HIGH(-@0) 
	LD   R0,X+ 
	LD   R27,X 
	MOV  R26,R0 
	SUBI R26,LOW(-@1) 
	SBCI R27,HIGH(-@1) 
	ST   X+,R30 
	ST   X+,R31 
	ST   X+,R22 
	ST   X,R23 
	.ENDM 
 
	.MACRO __MULBRR 
	MULS R@0,R@1 
	MOVW R30,R0 
	.ENDM 
 
	.MACRO __MULBRRU 
	MUL  R@0,R@1 
	MOVW R30,R0 
	.ENDM 
 
	.MACRO __MULBRR0 
	MULS R@0,R@1 
	.ENDM 
 
	.MACRO __MULBRRU0 
	MUL  R@0,R@1 
	.ENDM 
 
	.MACRO __MULBNWRU 
	LDI  R26,@2 
	MUL  R26,R@0 
	MOVW R30,R0 
	MUL  R26,R@1 
	ADD  R31,R0 
	.ENDM 
 
	.CSEG 
	.ORG 0 
 
	.INCLUDE "ds18b20.vec" 
	.INCLUDE "ds18b20.inc" 
 
__RESET: 
	CLI 
	CLR  R30 
	OUT  EECR,R30 
 
;INTERRUPT VECTORS ARE PLACED 
;AT THE START OF FLASH 
	LDI  R31,1 
	OUT  GICR,R31 
	OUT  GICR,R30 
	OUT  MCUCR,R30 
	OUT  EMCUCR,R30 
 
;DISABLE WATCHDOG 
	LDI  R31,0x18 
	OUT  WDTCR,R31 
	OUT  WDTCR,R30 
 
;CLEAR R2-R14 
	LDI  R24,13 
	LDI  R26,2 
	CLR  R27 
__CLEAR_REG: 
	ST   X+,R30 
	DEC  R24 
	BRNE __CLEAR_REG 
 
;CLEAR SRAM 
	LDI  R24,LOW(0x200) 
	LDI  R25,HIGH(0x200) 
	LDI  R26,0x60 
__CLEAR_SRAM: 
	ST   X+,R30 
	SBIW R24,1 
	BRNE __CLEAR_SRAM 
 
;GLOBAL VARIABLES INITIALIZATION 
	LDI  R30,LOW(__GLOBAL_INI_TBL*2) 
	LDI  R31,HIGH(__GLOBAL_INI_TBL*2) 
__GLOBAL_INI_NEXT: 
	LPM  R24,Z+ 
	LPM  R25,Z+ 
	SBIW R24,0 
	BREQ __GLOBAL_INI_END 
	LPM  R26,Z+ 
	LPM  R27,Z+ 
	LPM  R0,Z+ 
	LPM  R1,Z+ 
	MOVW R22,R30 
	MOVW R30,R0 
__GLOBAL_INI_LOOP: 
	LPM  R0,Z+ 
	ST   X+,R0 
	SBIW R24,1 
	BRNE __GLOBAL_INI_LOOP 
	MOVW R30,R22 
	RJMP __GLOBAL_INI_NEXT 
__GLOBAL_INI_END: 
 
;STACK POINTER INITIALIZATION 
	LDI  R30,LOW(0x25F) 
	OUT  SPL,R30 
	LDI  R30,HIGH(0x25F) 
	OUT  SPH,R30 
 
;DATA STACK POINTER INITIALIZATION 
	LDI  R28,LOW(0xE0) 
	LDI  R29,HIGH(0xE0) 
 
	RJMP _main 
 
	.ESEG 
	.ORG 0 
	.DB  0 ; FIRST EEPROM LOCATION NOT USED, SEE ATMEL ERRATA SHEETS 
 
	.DSEG 
	.ORG 0xE0 
;       1 /* Multipoint thermometer with LCD display 
;       2    using the Maxim DS18B20 
;       3    1 Wire bus temperature sensors 
;       4  
;       5    CodeVisionAVR C Compiler 
;       6    (C) 2000-2005 HP InfoTech S.R.L. 
;       7    www.hpinfotech.ro 
;       8  
;       9    Chip: ATmega8515 
;      10    Memory Model: SMALL 
;      11    Data Stack Size: 128 bytes 
;      12  
;      13    PLEASE MAKE SURE THAT THE CKSEL0..3 FUSE 
;      14    BITS ARE PROGRAMMED TO USE THE EXTERNAL 
;      15    3.6864MHz CLOCK SOURCE OF THE STK500 AND NOT 
;      16    THE INTERNAL 1MHz OSCILLATOR. 
;      17    The ATmega8515 chip comes from the factory 
;      18    with CKSEL0..3 fuse bits set to use the 
;      19    internal 1 MHz oscillator. 
;      20  
;      21    The DS18B20 sensors are connected to 
;      22    bit 6 of PORTA of the ATmega8515 as follows: 
;      23  
;      24    [DS18B20]     [STK500 PORTA HEADER] 
;      25     1 GND         -   9  GND 
;      26     2 DQ          -   7  PA6 
;      27     3 VDD         -  10 +5V 
;      28  
;      29    All the temperature sensors must be connected 
;      30    in parallel 
;      31  
;      32    AN 4.7k PULLUP RESISTOR MUST BE CONNECTED 
;      33    BETWEEN DQ (PA6) AND +5V ! 
;      34 */ 
;      35 #asm 
;      36     .equ __w1_port=0x1b 
    .equ __w1_port=0x1b 
;      37     .equ __w1_bit=6 
    .equ __w1_bit=6 
;      38 #endasm 
;      39  
;      40 /* Use an 2x16 alphanumeric LCD connected 
;      41    to PORTC as follows: 
;      42  
;      43   [LCD]   [STK500 PORTC HEADER] 
;      44    1 GND- 9  GND 
;      45    2 +5V- 10 VCC 
;      46    3 VLC- LCD contrast control voltage 0..1V 
;      47    4 RS - 1  PC0 
;      48    5 RD - 2  PC1 
;      49    6 EN - 3  PC2 
;      50   11 D4 - 5  PC4 
;      51   12 D5 - 6  PC5 
;      52   13 D6 - 7  PC6 
;      53   14 D7 - 8  PC7 
;      54 */ 
;      55  
;      56 #asm 
;      57     .equ __lcd_port=0x15 
    .equ __lcd_port=0x15 
;      58 #endasm 
;      59  
;      60 #include  // LCD driver routines 
;      61 #include  
;      62 #include  
;      63 #include  
;      64  
;      65 char lcd_buffer[33]; 
_lcd_buffer: 
	.BYTE 0x21 
;      66  
;      67 /* maximum number of DS18B20 connected to the 1 Wire bus */ 
;      68 #define MAX_DEVICES 8 
;      69  
;      70 /* DS18B20 devices ROM code storage area */ 
;      71 unsigned char rom_code[MAX_DEVICES][9]; 
_rom_code: 
	.BYTE 0x48 
;      72  
;      73 main() 
;      74 { 
 
	.CSEG 
_main: 
;      75 unsigned char i,j,devices; 
;      76 float tmp; 
;      77 lcd_init(16); 
	SBIW R28,4 
;	i -> R17 
;	j -> R16 
;	devices -> R19 
;	tmp -> Y+0 
	LDI  R30,LOW(16) 
	ST   -Y,R30 
	RCALL _lcd_init 
;      78 lcd_putsf("CodeVisionAVR\n1 Wire Bus Demo"); 
	__POINTW1FN _0,0 
	RCALL SUBOPT_0x0 
	RCALL _lcd_putsf 
;      79 delay_ms(200); 
	LDI  R30,LOW(200) 
	LDI  R31,HIGH(200) 
	RCALL SUBOPT_0x1 
;      80 lcd_clear(); 
	RCALL _lcd_clear 
;      81  
;      82 /* detect how many DS18B20 devices 
;      83    are connected to the 1 Wire bus */ 
;      84 devices=w1_search(0xf0,rom_code); 
	LDI  R30,LOW(240) 
	ST   -Y,R30 
	LDI  R30,LOW(_rom_code) 
	LDI  R31,HIGH(_rom_code) 
	RCALL SUBOPT_0x0 
	RCALL _w1_search 
	MOV  R19,R30 
;      85 sprintf(lcd_buffer,"%u DS18B20\nDevice detected",devices); 
	RCALL SUBOPT_0x2 
	__POINTW1FN _0,30 
	RCALL SUBOPT_0x0 
	MOV  R30,R19 
	RCALL SUBOPT_0x3 
;      86 lcd_puts(lcd_buffer); 
	RCALL SUBOPT_0x2 
	RCALL SUBOPT_0x4 
;      87 delay_ms(800); 
;      88  
;      89 /* display the ROM codes for each device */ 
;      90 if (devices) 
	CPI  R19,0 
	BREQ _0x3 
;      91    { 
;      92    for (i=0;i125) 
	__GETD2S 0 
	__GETD1N 0x42FA0000 
	RCALL __CMPF12 
	BREQ PC+2 
	BRCC PC+2 
	RJMP _0x1C 
;     130           sprintf(lcd_buffer,"t%u=%+.3f\xdfC",i+1,tmp-4096); 
	RCALL SUBOPT_0x2 
	__POINTW1FN _0,113 
	RCALL SUBOPT_0x5 
	RCALL SUBOPT_0x7 
	__GETD2S 8 
	__GETD1N 0x45800000 
	RCALL SUBOPT_0x8 
	RJMP _0x13A 
;     131           else 
_0x1C: 
;     132           sprintf(lcd_buffer,"t%u=%+.3f\xdfC",i+1,tmp); 
	RCALL SUBOPT_0x2 
	__POINTW1FN _0,113 
	RCALL SUBOPT_0x5 
	RCALL SUBOPT_0x7 
	__GETD1S 8 
_0x13A: 
	RCALL __PUTPARD1 
	LDI  R24,8 
	RCALL _sprintf 
	ADIW R28,12 
;     133           lcd_clear(); 
	RCALL _lcd_clear 
;     134           lcd_puts(lcd_buffer); 
	RCALL SUBOPT_0x2 
	RCALL _lcd_puts 
;     135           delay_ms(1000); 
	LDI  R30,LOW(1000) 
	LDI  R31,HIGH(1000) 
	RCALL SUBOPT_0x1 
;     136           }; 
	SUBI R17,-1 
	RJMP _0x1A 
_0x1B: 
;     137       }; 
	RJMP _0x16 
;     138 } 
_0x1E: 
	NOP 
	RJMP _0x1E 
 
    .equ __lcd_direction=__lcd_port-1 
    .equ __lcd_pin=__lcd_port-2 
    .equ __lcd_rs=0 
    .equ __lcd_rd=1 
    .equ __lcd_enable=2 
    .equ __lcd_busy_flag=7 
 
	.DSEG 
__base_y_G2: 
	.BYTE 0x4 
 
	.CSEG 
__lcd_delay_G2: 
    ldi   r31,15 
__lcd_delay0: 
    dec   r31 
    brne  __lcd_delay0 
	RET 
__lcd_ready: 
    in    r26,__lcd_direction 
    andi  r26,0xf                 ;set as input 
    out   __lcd_direction,r26 
    sbi   __lcd_port,__lcd_rd     ;RD=1 
    cbi   __lcd_port,__lcd_rs     ;RS=0 
__lcd_busy: 
	RCALL __lcd_delay_G2 
    sbi   __lcd_port,__lcd_enable ;EN=1 
	RCALL __lcd_delay_G2 
    in    r26,__lcd_pin 
    cbi   __lcd_port,__lcd_enable ;EN=0 
	RCALL __lcd_delay_G2 
    sbi   __lcd_port,__lcd_enable ;EN=1 
	RCALL __lcd_delay_G2 
    cbi   __lcd_port,__lcd_enable ;EN=0 
    sbrc  r26,__lcd_busy_flag 
    rjmp  __lcd_busy 
	RET 
__lcd_write_nibble_G2: 
    andi  r26,0xf0 
    or    r26,r27 
    out   __lcd_port,r26          ;write 
    sbi   __lcd_port,__lcd_enable ;EN=1 
	RCALL __lcd_delay_G2 
    cbi   __lcd_port,__lcd_enable ;EN=0 
	RCALL __lcd_delay_G2 
	RET 
__lcd_write_data: 
    cbi  __lcd_port,__lcd_rd 	  ;RD=0 
    in    r26,__lcd_direction 
    ori   r26,0xf0 | (1<<__lcd_rs) | (1<<__lcd_rd) | (1<<__lcd_enable) ;set as output     
    out   __lcd_direction,r26 
    in    r27,__lcd_port 
    andi  r27,0xf 
    ld    r26,y 
	RCALL __lcd_write_nibble_G2 
    ld    r26,y 
    swap  r26 
	RCALL __lcd_write_nibble_G2 
    sbi   __lcd_port,__lcd_rd     ;RD=1 
	ADIW R28,1 
	RET 
__lcd_read_nibble_G2: 
    sbi   __lcd_port,__lcd_enable ;EN=1 
	RCALL __lcd_delay_G2 
    in    r30,__lcd_pin           ;read 
    cbi   __lcd_port,__lcd_enable ;EN=0 
	RCALL __lcd_delay_G2 
    andi  r30,0xf0 
	RET 
_lcd_read_byte0_G2: 
	RCALL __lcd_delay_G2 
	RCALL __lcd_read_nibble_G2 
    mov   r26,r30 
	RCALL __lcd_read_nibble_G2 
    cbi   __lcd_port,__lcd_rd     ;RD=0 
    swap  r30 
    or    r30,r26 
	RET 
_lcd_gotoxy: 
	RCALL __lcd_ready 
	LD   R30,Y 
	RCALL SUBOPT_0x9 
	SUBI R30,LOW(-__base_y_G2) 
	SBCI R31,HIGH(-__base_y_G2) 
	LD   R30,Z 
	LDD  R26,Y+1 
	ADD  R30,R26 
	RCALL SUBOPT_0xA 
	LDD  R5,Y+1 
	LDD  R4,Y+0 
	ADIW R28,2 
	RET 
_lcd_clear: 
	RCALL __lcd_ready 
	LDI  R30,LOW(2) 
	RCALL SUBOPT_0xA 
	RCALL __lcd_ready 
	LDI  R30,LOW(12) 
	RCALL SUBOPT_0xA 
	RCALL __lcd_ready 
	LDI  R30,LOW(1) 
	RCALL SUBOPT_0xA 
	LDI  R30,LOW(0) 
	MOV  R4,R30 
	MOV  R5,R30 
	RET 
_lcd_putchar: 
    push r30 
    push r31 
    ld   r26,y 
    set 
    cpi  r26,10 
    breq __lcd_putchar1 
    clt 
	INC  R5 
	CP   R7,R5 
	BRSH _0x20 
	__lcd_putchar1: 
	INC  R4 
	LDI  R30,LOW(0) 
	ST   -Y,R30 
	ST   -Y,R4 
	RCALL _lcd_gotoxy 
	brts __lcd_putchar0 
_0x20: 
    rcall __lcd_ready 
    sbi  __lcd_port,__lcd_rs ;RS=1 
    ld   r26,y 
    st   -y,r26 
    rcall __lcd_write_data 
__lcd_putchar0: 
    pop  r31 
    pop  r30 
	ADIW R28,1 
	RET 
_lcd_puts: 
	ST   -Y,R17 
_0x21: 
	RCALL SUBOPT_0xB 
	MOV  R17,R30 
	CPI  R30,0 
	BREQ _0x23 
	ST   -Y,R17 
	RCALL _lcd_putchar 
	RJMP _0x21 
_0x23: 
	LDD  R17,Y+0 
	RJMP _0x139 
_lcd_putsf: 
	ST   -Y,R17 
_0x24: 
	RCALL SUBOPT_0xC 
	ADIW R30,1 
	STD  Y+1,R30 
	STD  Y+1+1,R31 
	SBIW R30,1 
	LPM  R30,Z 
	MOV  R17,R30 
	CPI  R30,0 
	BREQ _0x26 
	ST   -Y,R17 
	RCALL _lcd_putchar 
	RJMP _0x24 
_0x26: 
	LDD  R17,Y+0 
_0x139: 
	ADIW R28,3 
	RET 
__long_delay_G2: 
    clr   r26 
    clr   r27 
__long_delay0: 
    sbiw  r26,1         ;2 cycles 
    brne  __long_delay0 ;2 cycles 
	RET 
__lcd_init_write_G2: 
    cbi  __lcd_port,__lcd_rd 	  ;RD=0 
    in    r26,__lcd_direction 
    ori   r26,0xf7                ;set as output 
    out   __lcd_direction,r26 
    in    r27,__lcd_port 
    andi  r27,0xf 
    ld    r26,y 
	RCALL __lcd_write_nibble_G2 
    sbi   __lcd_port,__lcd_rd     ;RD=1 
	ADIW R28,1 
	RET 
_lcd_init: 
    cbi   __lcd_port,__lcd_enable ;EN=0 
    cbi   __lcd_port,__lcd_rs     ;RS=0 
	LDD  R7,Y+0 
	LD   R30,Y 
	SUBI R30,-LOW(128) 
	__PUTB1MN __base_y_G2,2 
	LD   R30,Y 
	SUBI R30,-LOW(192) 
	__PUTB1MN __base_y_G2,3 
	RCALL SUBOPT_0xD 
	RCALL SUBOPT_0xD 
	RCALL SUBOPT_0xD 
	RCALL __long_delay_G2 
	LDI  R30,LOW(32) 
	ST   -Y,R30 
	RCALL __lcd_init_write_G2 
	RCALL __long_delay_G2 
	LDI  R30,LOW(40) 
	RCALL SUBOPT_0xA 
	RCALL __long_delay_G2 
	LDI  R30,LOW(4) 
	RCALL SUBOPT_0xA 
	RCALL __long_delay_G2 
	LDI  R30,LOW(133) 
	RCALL SUBOPT_0xA 
	RCALL __long_delay_G2 
    in    r26,__lcd_direction 
    andi  r26,0xf                 ;set as input 
    out   __lcd_direction,r26 
    sbi   __lcd_port,__lcd_rd     ;RD=1 
	RCALL _lcd_read_byte0_G2 
	CPI  R30,LOW(0x5) 
	BREQ _0x27 
	LDI  R30,LOW(0) 
	RJMP _0x138 
_0x27: 
	RCALL __lcd_ready 
	LDI  R30,LOW(6) 
	RCALL SUBOPT_0xA 
	RCALL _lcd_clear 
	LDI  R30,LOW(1) 
_0x138: 
	ADIW R28,1 
	RET 
 
	.DSEG 
___ds18b20_scratch_pad: 
	.BYTE 0x9 
 
	.CSEG 
_ds18b20_select: 
	ST   -Y,R17 
	RCALL _w1_init 
	CPI  R30,0 
	BRNE _0x28 
	LDI  R30,LOW(0) 
	LDD  R17,Y+0 
	RJMP _0x136 
_0x28: 
	RCALL SUBOPT_0xC 
	SBIW R30,0 
	BREQ _0x29 
	LDI  R30,LOW(85) 
	RCALL SUBOPT_0xE 
	LDI  R17,LOW(0) 
_0x2B: 
	RCALL SUBOPT_0xB 
	RCALL SUBOPT_0xE 
	SUBI R17,-LOW(1) 
	CPI  R17,8 
	BRLO _0x2B 
	RJMP _0x2D 
_0x29: 
	LDI  R30,LOW(204) 
	RCALL SUBOPT_0xE 
_0x2D: 
	LDI  R30,LOW(1) 
	LDD  R17,Y+0 
	RJMP _0x136 
_ds18b20_read_spd: 
	RCALL __SAVELOCR4 
	LDD  R30,Y+4 
	LDD  R31,Y+4+1 
	RCALL SUBOPT_0xF 
	BRNE _0x2E 
	LDI  R30,LOW(0) 
	RJMP _0x137 
_0x2E: 
	LDI  R30,LOW(190) 
	RCALL SUBOPT_0xE 
	LDI  R17,LOW(0) 
	__POINTWRM 18,19,___ds18b20_scratch_pad 
_0x30: 
	PUSH R19 
	PUSH R18 
	__ADDWRN 18,19,1 
	RCALL _w1_read 
	POP  R26 
	POP  R27 
	ST   X,R30 
	SUBI R17,-LOW(1) 
	CPI  R17,9 
	BRLO _0x30 
	LDI  R30,LOW(___ds18b20_scratch_pad) 
	LDI  R31,HIGH(___ds18b20_scratch_pad) 
	RCALL SUBOPT_0x0 
	LDI  R30,LOW(9) 
	ST   -Y,R30 
	RCALL _w1_dow_crc8 
	RCALL __LNEGB1 
_0x137: 
	RCALL __LOADLOCR4 
	ADIW R28,6 
	RET 
_ds18b20_temperature: 
	ST   -Y,R17 
	RCALL SUBOPT_0x10 
	BRNE _0x32 
	RCALL SUBOPT_0x11 
	RJMP _0x136 
_0x32: 
	__GETB1MN ___ds18b20_scratch_pad,4 
	SWAP R30 
	ANDI R30,0xF 
	LSR  R30 
	ANDI R30,LOW(0x3) 
	MOV  R17,R30 
	RCALL SUBOPT_0xC 
	RCALL SUBOPT_0xF 
	BRNE _0x33 
	RCALL SUBOPT_0x11 
	RJMP _0x136 
_0x33: 
	LDI  R30,LOW(68) 
	RCALL SUBOPT_0xE 
	MOV  R30,R17 
	LDI  R26,LOW(_conv_delay_G3*2) 
	LDI  R27,HIGH(_conv_delay_G3*2) 
	RCALL SUBOPT_0x12 
	RCALL SUBOPT_0x1 
	RCALL SUBOPT_0x10 
	BRNE _0x34 
	RCALL SUBOPT_0x11 
	RJMP _0x136 
_0x34: 
	RCALL _w1_init 
	MOV  R30,R17 
	LDI  R26,LOW(_bit_mask_G3*2) 
	LDI  R27,HIGH(_bit_mask_G3*2) 
	RCALL SUBOPT_0x12 
	LDS  R26,___ds18b20_scratch_pad 
	LDS  R27,___ds18b20_scratch_pad+1 
	AND  R30,R26 
	AND  R31,R27 
	CLR  R22 
	CLR  R23 
	RCALL __CDF1 
	__GETD2N 0x3D800000 
	RCALL __MULF12 
	LDD  R17,Y+0 
_0x136: 
	ADIW R28,3 
	RET 
_ds18b20_init: 
	LDD  R30,Y+3 
	LDD  R31,Y+3+1 
	RCALL SUBOPT_0xF 
	BRNE _0x35 
	LDI  R30,LOW(0) 
	RJMP _0x135 
_0x35: 
	LD   R30,Y 
	SWAP R30 
	ANDI R30,0xF0 
	LSL  R30 
	ORI  R30,LOW(0x1F) 
	ST   Y,R30 
	LDI  R30,LOW(78) 
	RCALL SUBOPT_0xE 
	LDD  R30,Y+1 
	RCALL SUBOPT_0xE 
	LDD  R30,Y+2 
	RCALL SUBOPT_0xE 
	LD   R30,Y 
	RCALL SUBOPT_0xE 
	LDD  R30,Y+3 
	LDD  R31,Y+3+1 
	RCALL SUBOPT_0x0 
	RCALL _ds18b20_read_spd 
	CPI  R30,0 
	BRNE _0x36 
	LDI  R30,LOW(0) 
	RJMP _0x135 
_0x36: 
	__GETB2MN ___ds18b20_scratch_pad,3 
	LDD  R30,Y+2 
	CP   R30,R26 
	BRNE _0x38 
	__GETB2MN ___ds18b20_scratch_pad,2 
	LDD  R30,Y+1 
	CP   R30,R26 
	BRNE _0x38 
	__GETB2MN ___ds18b20_scratch_pad,4 
	LD   R30,Y 
	CP   R30,R26 
	BREQ _0x37 
_0x38: 
	LDI  R30,LOW(0) 
	RJMP _0x135 
_0x37: 
	LDD  R30,Y+3 
	LDD  R31,Y+3+1 
	RCALL SUBOPT_0xF 
	BRNE _0x3A 
	LDI  R30,LOW(0) 
	RJMP _0x135 
_0x3A: 
	LDI  R30,LOW(72) 
	RCALL SUBOPT_0xE 
	LDI  R30,LOW(15) 
	LDI  R31,HIGH(15) 
	RCALL SUBOPT_0x1 
	RCALL _w1_init 
_0x135: 
	ADIW R28,5 
	RET 
	#ifndef __SLEEP_DEFINED__ 
	#define __SLEEP_DEFINED__ 
	.EQU __se_bit=0x20 
	.SET power_ctrl_reg=mcucr 
	#endif 
_getchar: 
     sbis usr,rxc 
     rjmp _getchar 
     in   r30,udr 
	RET 
_putchar: 
     sbis usr,udre 
     rjmp _putchar 
     ld   r30,y 
     out  udr,r30 
	ADIW R28,1 
	RET 
__put_G4: 
	RCALL __SAVELOCR2 
	LDD  R26,Y+4 
	LDD  R27,Y+4+1 
	RCALL __GETW1P 
	SBIW R30,0 
	BREQ _0x3B 
	LDD  R26,Y+2 
	LDD  R27,Y+2+1 
	RCALL __GETW1P 
	MOVW R16,R30 
	SBIW R30,0 
	BREQ _0x3D 
	__CPWRN 16,17,2 
	BRLO _0x3E 
	MOVW R30,R16 
	SBIW R30,1 
	MOVW R16,R30 
	ST   X+,R30 
	ST   X,R31 
_0x3D: 
	LDD  R26,Y+4 
	LDD  R27,Y+4+1 
	RCALL SUBOPT_0x13 
	LDD  R26,Y+6 
	STD  Z+0,R26 
_0x3E: 
	RJMP _0x3F 
_0x3B: 
	LDD  R30,Y+6 
	ST   -Y,R30 
	RCALL _putchar 
_0x3F: 
	RCALL __LOADLOCR2 
	ADIW R28,7 
	RET 
__ftoa_G4: 
	SBIW R28,4 
	RCALL __SAVELOCR2 
	LDD  R26,Y+8 
	CPI  R26,LOW(0x7) 
	BRLO _0x40 
	LDI  R30,LOW(6) 
	STD  Y+8,R30 
_0x40: 
	LDD  R30,Y+8 
	LDI  R26,LOW(__fround_G4*2) 
	LDI  R27,HIGH(__fround_G4*2) 
	RCALL SUBOPT_0x9 
	RCALL __LSLW2 
	ADD  R30,R26 
	ADC  R31,R27 
	RCALL __GETD1PF 
	RCALL SUBOPT_0x14 
	RCALL __ADDF12 
	RCALL SUBOPT_0x15 
	LDI  R17,LOW(0) 
	RCALL SUBOPT_0x16 
	RCALL SUBOPT_0x17 
_0x41: 
	RCALL SUBOPT_0x18 
	RCALL __CMPF12 
	BRLO _0x43 
	RCALL SUBOPT_0x19 
	RCALL __MULF12 
	RCALL SUBOPT_0x17 
	SUBI R17,-LOW(1) 
	RJMP _0x41 
_0x43: 
	CPI  R17,0 
	BRNE _0x44 
	RCALL SUBOPT_0x1A 
	LDI  R30,LOW(48) 
	ST   X,R30 
	RJMP _0x45 
_0x44: 
_0x46: 
	MOV  R30,R17 
	SUBI R17,1 
	CPI  R30,0 
	BREQ _0x48 
	RCALL SUBOPT_0x19 
	RCALL SUBOPT_0x1B 
	RCALL SUBOPT_0x17 
	RCALL SUBOPT_0x18 
	RCALL __DIVF21 
	RCALL __CFD1 
	MOV  R16,R30 
	RCALL SUBOPT_0x1A 
	RCALL SUBOPT_0x1C 
	__GETD2S 2 
	RCALL SUBOPT_0x1D 
	RCALL __MULF12 
	RCALL SUBOPT_0x14 
	RCALL SUBOPT_0x8 
	RCALL SUBOPT_0x15 
	RJMP _0x46 
_0x48: 
_0x45: 
	LDD  R30,Y+8 
	CPI  R30,0 
	BRNE _0x49 
	RCALL SUBOPT_0x1E 
	RJMP _0x134 
_0x49: 
	RCALL SUBOPT_0x1A 
	LDI  R30,LOW(46) 
	ST   X,R30 
_0x4A: 
	LDD  R30,Y+8 
	SUBI R30,LOW(1) 
	STD  Y+8,R30 
	SUBI R30,-LOW(1) 
	BREQ _0x4C 
	RCALL SUBOPT_0x14 
	RCALL SUBOPT_0x1F 
	RCALL SUBOPT_0x15 
	__GETD1S 9 
	RCALL __CFD1U 
	MOV  R16,R30 
	RCALL SUBOPT_0x1A 
	RCALL SUBOPT_0x1C 
	RCALL SUBOPT_0x14 
	RCALL SUBOPT_0x1D 
	RCALL SUBOPT_0x8 
	RCALL SUBOPT_0x15 
	RJMP _0x4A 
_0x4C: 
	RCALL SUBOPT_0x1E 
_0x134: 
	RCALL __LOADLOCR2 
	ADIW R28,13 
	RET 
__ftoe_G4: 
	SBIW R28,4 
	RCALL __SAVELOCR4 
	RCALL SUBOPT_0x16 
	RCALL SUBOPT_0x20 
	LDD  R26,Y+11 
	CPI  R26,LOW(0x7) 
	BRLO _0x4D 
	LDI  R30,LOW(6) 
	STD  Y+11,R30 
_0x4D: 
	LDD  R17,Y+11 
_0x4E: 
	MOV  R30,R17 
	SUBI R17,1 
	CPI  R30,0 
	BREQ _0x50 
	RCALL SUBOPT_0x21 
	RCALL SUBOPT_0x20 
	RJMP _0x4E 
_0x50: 
	RCALL SUBOPT_0x22 
	RCALL __CPD10 
	BRNE _0x51 
	LDI  R19,LOW(0) 
	RCALL SUBOPT_0x21 
	RCALL SUBOPT_0x20 
	RJMP _0x52 
_0x51: 
	LDD  R19,Y+11 
	RCALL SUBOPT_0x23 
	BREQ PC+2 
	BRCC PC+2 
	RJMP _0x53 
	RCALL SUBOPT_0x21 
	RCALL SUBOPT_0x20 
_0x54: 
	RCALL SUBOPT_0x23 
	BRLO _0x56 
	RCALL SUBOPT_0x24 
	RCALL SUBOPT_0x25 
	RJMP _0x54 
_0x56: 
	RJMP _0x57 
_0x53: 
_0x58: 
	RCALL SUBOPT_0x23 
	BRSH _0x5A 
	RCALL SUBOPT_0x24 
	RCALL SUBOPT_0x1F 
	RCALL SUBOPT_0x26 
	SUBI R19,LOW(1) 
	RJMP _0x58 
_0x5A: 
	RCALL SUBOPT_0x21 
	RCALL SUBOPT_0x20 
_0x57: 
	RCALL SUBOPT_0x22 
	__GETD2N 0x3F000000 
	RCALL __ADDF12 
	RCALL SUBOPT_0x26 
	RCALL SUBOPT_0x23 
	BRLO _0x5B 
	RCALL SUBOPT_0x24 
	RCALL SUBOPT_0x25 
_0x5B: 
_0x52: 
	LDI  R17,LOW(0) 
_0x5C: 
	LDD  R30,Y+11 
	CP   R30,R17 
	BRLO _0x5E 
	RCALL SUBOPT_0x27 
	__GETD1N 0x41200000 
	RCALL SUBOPT_0x1B 
	RCALL SUBOPT_0x20 
	__GETD1S 4 
	RCALL SUBOPT_0x24 
	RCALL __DIVF21 
	RCALL __CFD1 
	MOV  R16,R30 
	RCALL SUBOPT_0x28 
	RCALL SUBOPT_0x1C 
	RCALL SUBOPT_0x1D 
	RCALL SUBOPT_0x27 
	RCALL __MULF12 
	RCALL SUBOPT_0x24 
	RCALL SUBOPT_0x8 
	RCALL SUBOPT_0x26 
	MOV  R30,R17 
	SUBI R17,-1 
	CPI  R30,0 
	BRNE _0x5C 
	RCALL SUBOPT_0x28 
	LDI  R30,LOW(46) 
	ST   X,R30 
	RJMP _0x5C 
_0x5E: 
	RCALL SUBOPT_0x29 
	LDD  R26,Y+10 
	STD  Z+0,R26 
	CPI  R19,0 
	BRGE _0x60 
	RCALL SUBOPT_0x28 
	LDI  R30,LOW(45) 
	ST   X,R30 
	NEG  R19 
_0x60: 
	CPI  R19,10 
	BRLT _0x61 
	RCALL SUBOPT_0x29 
	MOVW R22,R30 
	MOV  R26,R19 
	LDI  R30,LOW(10) 
	RCALL __DIVB21 
	SUBI R30,-LOW(48) 
	MOVW R26,R22 
	ST   X,R30 
_0x61: 
	RCALL SUBOPT_0x29 
	MOVW R22,R30 
	MOV  R26,R19 
	LDI  R30,LOW(10) 
	RCALL __MODB21 
	SUBI R30,-LOW(48) 
	MOVW R26,R22 
	ST   X,R30 
	LDD  R26,Y+8 
	LDD  R27,Y+8+1 
	LDI  R30,LOW(0) 
	ST   X,R30 
	RCALL __LOADLOCR4 
	ADIW R28,16 
	RET 
__print_G4: 
	SBIW R28,63 
	SBIW R28,15 
	RCALL __SAVELOCR6 
	LDI  R17,0 
	__GETW1SX 84 
	STD  Y+16,R30 
	STD  Y+16+1,R31 
_0x62: 
	MOVW R26,R28 
	SUBI R26,LOW(-(90)) 
	SBCI R27,HIGH(-(90)) 
	RCALL SUBOPT_0x13 
	LPM  R30,Z 
	MOV  R18,R30 
	CPI  R30,0 
	BRNE PC+2 
	RJMP _0x64 
	MOV  R30,R17 
	CPI  R30,0 
	BRNE _0x68 
	CPI  R18,37 
	BRNE _0x69 
	LDI  R17,LOW(1) 
	RJMP _0x6A 
_0x69: 
	RCALL SUBOPT_0x2A 
_0x6A: 
	RJMP _0x67 
_0x68: 
	CPI  R30,LOW(0x1) 
	BRNE _0x6B 
	CPI  R18,37 
	BRNE _0x6C 
	RCALL SUBOPT_0x2A 
	RJMP _0x13B 
_0x6C: 
	LDI  R17,LOW(2) 
	LDI  R30,LOW(0) 
	STD  Y+19,R30 
	LDI  R16,LOW(0) 
	CPI  R18,45 
	BRNE _0x6D 
	LDI  R16,LOW(1) 
	RJMP _0x67 
_0x6D: 
	CPI  R18,43 
	BRNE _0x6E 
	LDI  R30,LOW(43) 
	STD  Y+19,R30 
	RJMP _0x67 
_0x6E: 
	CPI  R18,32 
	BRNE _0x6F 
	LDI  R30,LOW(32) 
	STD  Y+19,R30 
	RJMP _0x67 
_0x6F: 
	RJMP _0x70 
_0x6B: 
	CPI  R30,LOW(0x2) 
	BRNE _0x71 
_0x70: 
	LDI  R21,LOW(0) 
	LDI  R17,LOW(3) 
	CPI  R18,48 
	BRNE _0x72 
	ORI  R16,LOW(128) 
	RJMP _0x67 
_0x72: 
	RJMP _0x73 
_0x71: 
	CPI  R30,LOW(0x3) 
	BRNE _0x74 
_0x73: 
	CPI  R18,48 
	BRLO _0x76 
	CPI  R18,58 
	BRLO _0x77 
_0x76: 
	RJMP _0x75 
_0x77: 
	MOV  R26,R21 
	LDI  R30,LOW(10) 
	MUL  R30,R26 
	MOVW R30,R0 
	MOV  R21,R30 
	MOV  R30,R18 
	SUBI R30,LOW(48) 
	ADD  R21,R30 
	RJMP _0x67 
_0x75: 
	LDI  R20,LOW(0) 
	CPI  R18,46 
	BRNE _0x78 
	LDI  R17,LOW(4) 
	RJMP _0x67 
_0x78: 
	RJMP _0x79 
_0x74: 
	CPI  R30,LOW(0x4) 
	BRNE _0x7B 
	CPI  R18,48 
	BRLO _0x7D 
	CPI  R18,58 
	BRLO _0x7E 
_0x7D: 
	RJMP _0x7C 
_0x7E: 
	ORI  R16,LOW(32) 
	MOV  R26,R20 
	LDI  R30,LOW(10) 
	MUL  R30,R26 
	MOVW R30,R0 
	MOV  R20,R30 
	MOV  R30,R18 
	SUBI R30,LOW(48) 
	ADD  R20,R30 
	RJMP _0x67 
_0x7C: 
_0x79: 
	CPI  R18,108 
	BRNE _0x7F 
	ORI  R16,LOW(2) 
	LDI  R17,LOW(5) 
	RJMP _0x67 
_0x7F: 
	RJMP _0x80 
_0x7B: 
	CPI  R30,LOW(0x5) 
	BREQ PC+2 
	RJMP _0x67 
_0x80: 
	MOV  R30,R18 
	CPI  R30,LOW(0x63) 
	BRNE _0x85 
	RCALL SUBOPT_0x2B 
	LDD  R30,Z+4 
	RCALL SUBOPT_0x2C 
	RJMP _0x86 
_0x85: 
	CPI  R30,LOW(0x45) 
	BREQ _0x89 
	CPI  R30,LOW(0x65) 
	BRNE _0x8A 
_0x89: 
	RJMP _0x8B 
_0x8A: 
	CPI  R30,LOW(0x66) 
	BRNE _0x8C 
_0x8B: 
	RCALL SUBOPT_0x2D 
	RCALL SUBOPT_0x2B 
	RCALL SUBOPT_0x2E 
	RCALL __GETD1P 
	RCALL SUBOPT_0x2F 
	MOVW R26,R30 
	MOVW R24,R22 
	RCALL __CPD20 
	BRLT _0x8D 
	LDD  R26,Y+19 
	CPI  R26,LOW(0x2B) 
	BREQ _0x8F 
	RJMP _0x90 
_0x8D: 
	RCALL SUBOPT_0x30 
	RCALL __ANEGF1 
	RCALL SUBOPT_0x2F 
	LDI  R30,LOW(45) 
	STD  Y+19,R30 
_0x8F: 
	SBRS R16,7 
	RJMP _0x91 
	LDD  R30,Y+19 
	RCALL SUBOPT_0x2C 
	RJMP _0x92 
_0x91: 
	RCALL SUBOPT_0x31 
	RCALL SUBOPT_0x32 
	LDD  R26,Y+19 
	STD  Z+0,R26 
_0x92: 
_0x90: 
	SBRS R16,5 
	LDI  R20,LOW(6) 
	CPI  R18,102 
	BRNE _0x94 
	RCALL SUBOPT_0x30 
	RCALL __PUTPARD1 
	ST   -Y,R20 
	LDD  R30,Y+15 
	LDD  R31,Y+15+1 
	RCALL SUBOPT_0x0 
	RCALL __ftoa_G4 
	RJMP _0x95 
_0x94: 
	RCALL SUBOPT_0x30 
	RCALL __PUTPARD1 
	ST   -Y,R20 
	ST   -Y,R18 
	LDD  R30,Y+16 
	LDD  R31,Y+16+1 
	RCALL SUBOPT_0x0 
	RCALL __ftoe_G4 
_0x95: 
	RCALL SUBOPT_0x2D 
	RCALL SUBOPT_0x33 
	RJMP _0x96 
_0x8C: 
	CPI  R30,LOW(0x73) 
	BRNE _0x98 
	RCALL SUBOPT_0x2B 
	RCALL SUBOPT_0x2E 
	RCALL __GETW1P 
	STD  Y+10,R30 
	STD  Y+10+1,R31 
	RCALL SUBOPT_0x33 
	RJMP _0x99 
_0x98: 
	CPI  R30,LOW(0x70) 
	BRNE _0x9B 
	RCALL SUBOPT_0x2B 
	RCALL SUBOPT_0x2E 
	RCALL __GETW1P 
	STD  Y+10,R30 
	STD  Y+10+1,R31 
	RCALL SUBOPT_0x31 
	RCALL SUBOPT_0x0 
	RCALL _strlenf 
	MOV  R17,R30 
	ORI  R16,LOW(8) 
_0x99: 
	ANDI R16,LOW(127) 
	CPI  R20,0 
	BREQ _0x9D 
	CP   R20,R17 
	BRLO _0x9E 
_0x9D: 
	RJMP _0x9C 
_0x9E: 
	MOV  R17,R20 
_0x9C: 
_0x96: 
	LDI  R20,LOW(0) 
	LDI  R30,LOW(0) 
	STD  Y+18,R30 
	LDI  R19,LOW(0) 
	RJMP _0x9F 
_0x9B: 
	CPI  R30,LOW(0x64) 
	BREQ _0xA2 
	CPI  R30,LOW(0x69) 
	BRNE _0xA3 
_0xA2: 
	ORI  R16,LOW(4) 
	RJMP _0xA4 
_0xA3: 
	CPI  R30,LOW(0x75) 
	BRNE _0xA5 
_0xA4: 
	LDI  R30,LOW(10) 
	STD  Y+18,R30 
	SBRS R16,1 
	RJMP _0xA6 
	__GETD1N 0x3B9ACA00 
	RCALL SUBOPT_0x26 
	LDI  R17,LOW(10) 
	RJMP _0xA7 
_0xA6: 
	__GETD1N 0x2710 
	RCALL SUBOPT_0x26 
	LDI  R17,LOW(5) 
	RJMP _0xA7 
_0xA5: 
	CPI  R30,LOW(0x58) 
	BRNE _0xA9 
	ORI  R16,LOW(8) 
	RJMP _0xAA 
_0xA9: 
	CPI  R30,LOW(0x78) 
	BREQ PC+2 
	RJMP _0xE8 
_0xAA: 
	LDI  R30,LOW(16) 
	STD  Y+18,R30 
	SBRS R16,1 
	RJMP _0xAC 
	__GETD1N 0x10000000 
	RCALL SUBOPT_0x26 
	LDI  R17,LOW(8) 
	RJMP _0xA7 
_0xAC: 
	__GETD1N 0x1000 
	RCALL SUBOPT_0x26 
	LDI  R17,LOW(4) 
_0xA7: 
	CPI  R20,0 
	BREQ _0xAD 
	ANDI R16,LOW(127) 
	RJMP _0xAE 
_0xAD: 
	LDI  R20,LOW(1) 
_0xAE: 
	SBRS R16,1 
	RJMP _0xAF 
	RCALL SUBOPT_0x2B 
	RCALL SUBOPT_0x2E 
	RCALL __GETD1P 
	RJMP _0x13C 
_0xAF: 
	SBRS R16,2 
	RJMP _0xB1 
	RCALL SUBOPT_0x2B 
	RCALL SUBOPT_0x2E 
	RCALL __GETW1P 
	RCALL __CWD1 
	RJMP _0x13C 
_0xB1: 
	RCALL SUBOPT_0x2B 
	RCALL SUBOPT_0x2E 
	RCALL __GETW1P 
	CLR  R22 
	CLR  R23 
_0x13C: 
	__PUTD1S 6 
	SBRS R16,2 
	RJMP _0xB3 
	RCALL SUBOPT_0x34 
	RCALL __CPD20 
	BRGE _0xB4 
	RCALL SUBOPT_0x30 
	RCALL __ANEGD1 
	RCALL SUBOPT_0x2F 
	LDI  R30,LOW(45) 
	STD  Y+19,R30 
_0xB4: 
	LDD  R30,Y+19 
	CPI  R30,0 
	BREQ _0xB5 
	SUBI R17,-LOW(1) 
	SUBI R20,-LOW(1) 
	RJMP _0xB6 
_0xB5: 
	ANDI R16,LOW(251) 
_0xB6: 
_0xB3: 
	MOV  R19,R20 
_0x9F: 
	SBRC R16,0 
	RJMP _0xB7 
_0xB8: 
	CP   R17,R21 
	BRSH _0xBB 
	CP   R19,R21 
	BRLO _0xBC 
_0xBB: 
	RJMP _0xBA 
_0xBC: 
	SBRS R16,7 
	RJMP _0xBD 
	SBRS R16,2 
	RJMP _0xBE 
	ANDI R16,LOW(251) 
	LDD  R18,Y+19 
	SUBI R17,LOW(1) 
	RJMP _0xBF 
_0xBE: 
	LDI  R18,LOW(48) 
_0xBF: 
	RJMP _0xC0 
_0xBD: 
	LDI  R18,LOW(32) 
_0xC0: 
	RCALL SUBOPT_0x2A 
	SUBI R21,LOW(1) 
	RJMP _0xB8 
_0xBA: 
_0xB7: 
_0xC1: 
	CP   R17,R20 
	BRSH _0xC3 
	ORI  R16,LOW(16) 
	SBRS R16,2 
	RJMP _0xC4 
	RCALL SUBOPT_0x35 
	BREQ _0xC5 
	SUBI R21,LOW(1) 
_0xC5: 
	SUBI R17,LOW(1) 
	SUBI R20,LOW(1) 
_0xC4: 
	LDI  R30,LOW(48) 
	RCALL SUBOPT_0x2C 
	CPI  R21,0 
	BREQ _0xC6 
	SUBI R21,LOW(1) 
_0xC6: 
	SUBI R20,LOW(1) 
	RJMP _0xC1 
_0xC3: 
	MOV  R19,R17 
	LDD  R30,Y+18 
	CPI  R30,0 
	BRNE _0xC7 
_0xC8: 
	CPI  R19,0 
	BREQ _0xCA 
	SBRS R16,3 
	RJMP _0xCB 
	RCALL SUBOPT_0x31 
	RCALL SUBOPT_0x32 
	LPM  R30,Z 
	RJMP _0x13D 
_0xCB: 
	LDD  R26,Y+10 
	LDD  R27,Y+10+1 
	LD   R30,X+ 
	STD  Y+10,R26 
	STD  Y+10+1,R27 
_0x13D: 
	ST   -Y,R30 
	__GETW1SX 87 
	RCALL SUBOPT_0x0 
	MOVW R30,R28 
	ADIW R30,19 
	RCALL SUBOPT_0x0 
	RCALL __put_G4 
	CPI  R21,0 
	BREQ _0xCD 
	SUBI R21,LOW(1) 
_0xCD: 
	SUBI R19,LOW(1) 
	RJMP _0xC8 
_0xCA: 
	RJMP _0xCE 
_0xC7: 
_0xD0: 
	RCALL SUBOPT_0x22 
	RCALL SUBOPT_0x34 
	RCALL __DIVD21U 
	MOV  R18,R30 
	CPI  R18,10 
	BRLO _0xD2 
	SBRS R16,3 
	RJMP _0xD3 
	SUBI R18,-LOW(55) 
	RJMP _0xD4 
_0xD3: 
	SUBI R18,-LOW(87) 
_0xD4: 
	RJMP _0xD5 
_0xD2: 
	SUBI R18,-LOW(48) 
_0xD5: 
	SBRC R16,4 
	RJMP _0xD7 
	CPI  R18,49 
	BRSH _0xD9 
	RCALL SUBOPT_0x24 
	__CPD2N 0x1 
	BRNE _0xD8 
_0xD9: 
	RJMP _0xDB 
_0xD8: 
	CP   R20,R19 
	BRSH _0x13E 
	CP   R21,R19 
	BRLO _0xDE 
	SBRS R16,0 
	RJMP _0xDF 
_0xDE: 
	RJMP _0xDD 
_0xDF: 
	LDI  R18,LOW(32) 
	SBRS R16,7 
	RJMP _0xE0 
_0x13E: 
	LDI  R18,LOW(48) 
_0xDB: 
	ORI  R16,LOW(16) 
	SBRS R16,2 
	RJMP _0xE1 
	RCALL SUBOPT_0x35 
	BREQ _0xE2 
	SUBI R21,LOW(1) 
_0xE2: 
_0xE1: 
_0xE0: 
_0xD7: 
	RCALL SUBOPT_0x2A 
	CPI  R21,0 
	BREQ _0xE3 
	SUBI R21,LOW(1) 
_0xE3: 
_0xDD: 
	SUBI R19,LOW(1) 
	RCALL SUBOPT_0x22 
	RCALL SUBOPT_0x34 
	RCALL __MODD21U 
	RCALL SUBOPT_0x2F 
	LDD  R30,Y+18 
	RCALL SUBOPT_0x24 
	CLR  R31 
	CLR  R22 
	CLR  R23 
	RCALL __DIVD21U 
	RCALL SUBOPT_0x26 
	RCALL SUBOPT_0x22 
	RCALL __CPD10 
	BREQ _0xD1 
	RJMP _0xD0 
_0xD1: 
_0xCE: 
	SBRS R16,0 
	RJMP _0xE4 
_0xE5: 
	CPI  R21,0 
	BREQ _0xE7 
	SUBI R21,LOW(1) 
	LDI  R30,LOW(32) 
	RCALL SUBOPT_0x2C 
	RJMP _0xE5 
_0xE7: 
_0xE4: 
_0xE8: 
_0x86: 
_0x13B: 
	LDI  R17,LOW(0) 
_0x67: 
	RJMP _0x62 
_0x64: 
	RCALL __LOADLOCR6 
	ADIW R28,63 
	ADIW R28,29 
	RET 
_sprintf: 
	PUSH R15 
	MOV  R15,R24 
	SBIW R28,2 
	RCALL __SAVELOCR2 
	MOVW R26,R28 
	RCALL __ADDW2R15 
	MOVW R16,R26 
	MOVW R26,R28 
	ADIW R26,6 
	RCALL __ADDW2R15 
	RCALL __GETW1P 
	STD  Y+2,R30 
	STD  Y+2+1,R31 
	MOVW R26,R28 
	ADIW R26,4 
	RCALL __ADDW2R15 
	RCALL __GETW1P 
	RCALL SUBOPT_0x0 
	ST   -Y,R17 
	ST   -Y,R16 
	MOVW R30,R28 
	ADIW R30,6 
	RCALL SUBOPT_0x0 
	LDI  R30,LOW(0) 
	LDI  R31,HIGH(0) 
	RCALL SUBOPT_0x0 
	RCALL __print_G4 
	LDD  R26,Y+2 
	LDD  R27,Y+2+1 
	LDI  R30,LOW(0) 
	ST   X,R30 
	RCALL __LOADLOCR2 
	ADIW R28,4 
	POP  R15 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 66 TIMES, CODE SIZE REDUCTION:63 WORDS 
SUBOPT_0x0: 
	ST   -Y,R31 
	ST   -Y,R30 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 7 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0x1: 
	RCALL SUBOPT_0x0 
	RJMP _delay_ms 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 11 TIMES, CODE SIZE REDUCTION:18 WORDS 
SUBOPT_0x2: 
	LDI  R30,LOW(_lcd_buffer) 
	LDI  R31,HIGH(_lcd_buffer) 
	RJMP SUBOPT_0x0 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:16 WORDS 
SUBOPT_0x3: 
	CLR  R31 
	CLR  R22 
	CLR  R23 
	RCALL __PUTPARD1 
	LDI  R24,4 
	RCALL _sprintf 
	ADIW R28,8 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x4: 
	RCALL _lcd_puts 
	LDI  R30,LOW(800) 
	LDI  R31,HIGH(800) 
	RJMP SUBOPT_0x1 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x5: 
	RCALL SUBOPT_0x0 
	MOV  R30,R17 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:2 WORDS 
SUBOPT_0x6: 
	LDI  R26,LOW(9) 
	MUL  R17,R26 
	MOVW R30,R0 
	SUBI R30,LOW(-_rom_code) 
	SBCI R31,HIGH(-_rom_code) 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:2 WORDS 
SUBOPT_0x7: 
	SUBI R30,-LOW(1) 
	CLR  R31 
	CLR  R22 
	CLR  R23 
	RCALL __PUTPARD1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x8: 
	RCALL __SWAPD12 
	RCALL __SUBF12 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0x9: 
	LDI  R31,0 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 8 TIMES, CODE SIZE REDUCTION:5 WORDS 
SUBOPT_0xA: 
	ST   -Y,R30 
	RJMP __lcd_write_data 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:2 WORDS 
SUBOPT_0xB: 
	LDD  R26,Y+1 
	LDD  R27,Y+1+1 
	LD   R30,X+ 
	STD  Y+1,R26 
	STD  Y+1+1,R27 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 5 TIMES, CODE SIZE REDUCTION:2 WORDS 
SUBOPT_0xC: 
	LDD  R30,Y+1 
	LDD  R31,Y+1+1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0xD: 
	RCALL __long_delay_G2 
	LDI  R30,LOW(48) 
	ST   -Y,R30 
	RJMP __lcd_init_write_G2 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 10 TIMES, CODE SIZE REDUCTION:7 WORDS 
SUBOPT_0xE: 
	ST   -Y,R30 
	RJMP _w1_write 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0xF: 
	RCALL SUBOPT_0x0 
	RCALL _ds18b20_select 
	CPI  R30,0 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x10: 
	RCALL SUBOPT_0xC 
	RCALL SUBOPT_0x0 
	RCALL _ds18b20_read_spd 
	CPI  R30,0 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:6 WORDS 
SUBOPT_0x11: 
	__GETD1N 0xC61C3C00 
	LDD  R17,Y+0 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:3 WORDS 
SUBOPT_0x12: 
	RCALL SUBOPT_0x9 
	LSL  R30 
	ROL  R31 
	ADD  R30,R26 
	ADC  R31,R27 
	RCALL __GETW1PF 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:3 WORDS 
SUBOPT_0x13: 
	LD   R30,X+ 
	LD   R31,X+ 
	ADIW R30,1 
	ST   -X,R31 
	ST   -X,R30 
	SBIW R30,1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 6 TIMES, CODE SIZE REDUCTION:13 WORDS 
SUBOPT_0x14: 
	__GETD2S 9 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:7 WORDS 
SUBOPT_0x15: 
	__PUTD1S 9 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x16: 
	__GETD1N 0x3F800000 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0x17: 
	__PUTD1S 2 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:2 WORDS 
SUBOPT_0x18: 
	__GETD1S 2 
	RJMP SUBOPT_0x14 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:5 WORDS 
SUBOPT_0x19: 
	__GETD2S 2 
	__GETD1N 0x41200000 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:13 WORDS 
SUBOPT_0x1A: 
	LDD  R26,Y+6 
	LDD  R27,Y+6+1 
	ADIW R26,1 
	STD  Y+6,R26 
	STD  Y+6+1,R27 
	SBIW R26,1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:5 WORDS 
SUBOPT_0x1B: 
	RCALL __DIVF21 
	__GETD2N 0x3F000000 
	RCALL __ADDF12 
	RCALL __PUTPARD1 
	RJMP _floor 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0x1C: 
	MOV  R30,R16 
	SUBI R30,-LOW(48) 
	ST   X,R30 
	MOV  R30,R16 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0x1D: 
	CLR  R31 
	CLR  R22 
	CLR  R23 
	RCALL __CDF1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x1E: 
	LDD  R26,Y+6 
	LDD  R27,Y+6+1 
	LDI  R30,LOW(0) 
	ST   X,R30 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 6 TIMES, CODE SIZE REDUCTION:18 WORDS 
SUBOPT_0x1F: 
	__GETD1N 0x41200000 
	RCALL __MULF12 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 6 TIMES, CODE SIZE REDUCTION:13 WORDS 
SUBOPT_0x20: 
	__PUTD1S 4 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:10 WORDS 
SUBOPT_0x21: 
	__GETD2S 4 
	RJMP SUBOPT_0x1F 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 5 TIMES, CODE SIZE REDUCTION:10 WORDS 
SUBOPT_0x22: 
	__GETD1S 12 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:22 WORDS 
SUBOPT_0x23: 
	__GETD1S 4 
	__GETD2S 12 
	RCALL __CMPF12 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 7 TIMES, CODE SIZE REDUCTION:16 WORDS 
SUBOPT_0x24: 
	__GETD2S 12 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:7 WORDS 
SUBOPT_0x25: 
	__GETD1N 0x41200000 
	RCALL __DIVF21 
	__PUTD1S 12 
	SUBI R19,-LOW(1) 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 8 TIMES, CODE SIZE REDUCTION:19 WORDS 
SUBOPT_0x26: 
	__PUTD1S 12 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x27: 
	__GETD2S 4 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:8 WORDS 
SUBOPT_0x28: 
	LDD  R26,Y+8 
	LDD  R27,Y+8+1 
	ADIW R26,1 
	STD  Y+8,R26 
	STD  Y+8+1,R27 
	SBIW R26,1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:8 WORDS 
SUBOPT_0x29: 
	LDD  R30,Y+8 
	LDD  R31,Y+8+1 
	ADIW R30,1 
	STD  Y+8,R30 
	STD  Y+8+1,R31 
	SBIW R30,1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:31 WORDS 
SUBOPT_0x2A: 
	ST   -Y,R18 
	__GETW1SX 87 
	RCALL SUBOPT_0x0 
	MOVW R30,R28 
	ADIW R30,19 
	RCALL SUBOPT_0x0 
	RJMP __put_G4 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 7 TIMES, CODE SIZE REDUCTION:40 WORDS 
SUBOPT_0x2B: 
	MOVW R26,R28 
	SUBI R26,LOW(-(88)) 
	SBCI R27,HIGH(-(88)) 
	LD   R30,X+ 
	LD   R31,X+ 
	SBIW R30,4 
	ST   -X,R31 
	ST   -X,R30 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:31 WORDS 
SUBOPT_0x2C: 
	ST   -Y,R30 
	__GETW1SX 87 
	RCALL SUBOPT_0x0 
	MOVW R30,R28 
	ADIW R30,19 
	RCALL SUBOPT_0x0 
	RJMP __put_G4 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x2D: 
	MOVW R30,R28 
	ADIW R30,20 
	STD  Y+10,R30 
	STD  Y+10+1,R31 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 6 TIMES, CODE SIZE REDUCTION:3 WORDS 
SUBOPT_0x2E: 
	ADIW R30,4 
	MOVW R26,R30 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:7 WORDS 
SUBOPT_0x2F: 
	__PUTD1S 6 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 4 TIMES, CODE SIZE REDUCTION:7 WORDS 
SUBOPT_0x30: 
	__GETD1S 6 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 5 TIMES, CODE SIZE REDUCTION:2 WORDS 
SUBOPT_0x31: 
	LDD  R30,Y+10 
	LDD  R31,Y+10+1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x32: 
	ADIW R30,1 
	STD  Y+10,R30 
	STD  Y+10+1,R31 
	SBIW R30,1 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS 
SUBOPT_0x33: 
	RCALL SUBOPT_0x31 
	RCALL SUBOPT_0x0 
	RCALL _strlen 
	MOV  R17,R30 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 3 TIMES, CODE SIZE REDUCTION:4 WORDS 
SUBOPT_0x34: 
	__GETD2S 6 
	RET 
 
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:13 WORDS 
SUBOPT_0x35: 
	ANDI R16,LOW(251) 
	LDD  R30,Y+19 
	ST   -Y,R30 
	__GETW1SX 87 
	RCALL SUBOPT_0x0 
	MOVW R30,R28 
	SUBI R30,LOW(-(87)) 
	SBCI R31,HIGH(-(87)) 
	RCALL SUBOPT_0x0 
	RCALL __put_G4 
	CPI  R21,0 
	RET 
 
_isdigit: 
	ldi  r30,1 
	ld   r31,y+ 
	cpi  r31,'0' 
	brlo __isdigit0 
	cpi  r31,'9'+1 
	brlo __isdigit1 
__isdigit0: 
	clr  r30 
__isdigit1: 
	ret 
 
_isspace: 
	ldi  r30,1 
	ld   r31,y+ 
	cpi  r31,' ' 
	breq __isspace1 
	cpi  r31,9 
	brlo __isspace0 
	cpi  r31,14 
	brlo __isspace1 
__isspace0: 
	clr  r30 
__isspace1: 
	ret 
 
_isxdigit: 
	ldi  r30,1 
	ld   r31,y+ 
	subi r31,0x30 
	brcs __isxdigit0 
	cpi  r31,10 
	brcs __isxdigit1 
	andi r31,0x5f 
	subi r31,7 
	cpi  r31,10 
	brcs __isxdigit0 
	cpi  r31,16 
	brcs __isxdigit1 
__isxdigit0: 
	clr  r30 
__isxdigit1: 
	ret 
 
_strlen: 
	ld   r26,y+ 
	ld   r27,y+ 
	clr  r30 
	clr  r31 
__strlen0: 
	ld   r22,x+ 
	tst  r22 
	breq __strlen1 
	adiw r30,1 
	rjmp __strlen0 
__strlen1: 
	ret 
 
_strlenf: 
	clr  r26 
	clr  r27 
	ld   r30,y+ 
	ld   r31,y+ 
__strlenf0: 
	lpm  r0,z+ 
	tst  r0 
	breq __strlenf1 
	adiw r26,1 
	rjmp __strlenf0 
__strlenf1: 
	movw r30,r26 
	ret 
 
_delay_ms: 
	ld   r30,y+ 
	ld   r31,y+ 
	adiw r30,0 
	breq __delay_ms1 
__delay_ms0: 
	__DELAY_USW 0x39A 
	wdr 
	sbiw r30,1 
	brne __delay_ms0 
__delay_ms1: 
	ret 
 
_w1_init: 
	clr  r30 
	cbi  __w1_port,__w1_bit 
	sbi  __w1_port-1,__w1_bit 
	__DELAY_USW 0x1BA 
	cbi  __w1_port-1,__w1_bit 
	__DELAY_USB 0x11 
	sbis __w1_port-2,__w1_bit 
	ret 
	__DELAY_USB 0x5D 
	sbis __w1_port-2,__w1_bit 
	inc  r30 
	__DELAY_USW 0x167 
	ret 
 
__w1_read_bit: 
	sbi  __w1_port-1,__w1_bit 
	__DELAY_USB 0x2 
	cbi  __w1_port-1,__w1_bit 
	__DELAY_USB 0xE 
	clc 
	sbic __w1_port-2,__w1_bit 
	sec 
	ror  r30 
	__DELAY_USB 0x62 
	ret 
 
__w1_write_bit: 
	clt 
	sbi  __w1_port-1,__w1_bit 
	__DELAY_USB 0x2 
	sbrc r23,0 
	cbi  __w1_port-1,__w1_bit 
	__DELAY_USB 0x10 
	sbic __w1_port-2,__w1_bit 
	rjmp __w1_write_bit0 
	sbrs r23,0 
	rjmp __w1_write_bit1 
	ret 
__w1_write_bit0: 
	sbrs r23,0 
	ret 
__w1_write_bit1: 
	__DELAY_USB 0x5C 
	cbi  __w1_port-1,__w1_bit 
	__DELAY_USB 0x6 
	set 
	ret 
 
_w1_read: 
	ldi  r22,8 
	__w1_read0: 
	rcall __w1_read_bit 
	dec  r22 
	brne __w1_read0 
	ret 
 
_w1_write: 
	ldi  r22,8 
	ld   r23,y+ 
	clr  r30 
__w1_write0: 
	rcall __w1_write_bit 
	brtc __w1_write1 
	ror  r23 
	dec  r22 
	brne __w1_write0 
	inc  r30 
__w1_write1: 
	ret 
 
_w1_search: 
	push r20 
	push r21 
	clr  r1 
	clr  r20 
	ld   r26,y 
	ldd  r27,y+1 
__w1_search0: 
	mov  r0,r1 
	clr  r1 
	rcall _w1_init 
	tst  r30 
	breq __w1_search7 
	ldd  r30,y+2 
	st   -y,r30 
	rcall _w1_write 
	ldi  r21,1 
__w1_search1: 
	cp   r21,r0 
	brsh __w1_search6 
	rcall __w1_read_bit 
	sbrc r30,7 
	rjmp __w1_search2 
	rcall __w1_read_bit 
	sbrc r30,7 
	rjmp __w1_search3 
	rcall __sel_bit 
	and  r24,r25 
	brne __w1_search3 
	mov  r1,r21 
	rjmp __w1_search3 
__w1_search2: 
	rcall __w1_read_bit 
__w1_search3: 
	rcall __sel_bit 
	and  r24,r25 
	ldi  r23,0 
	breq __w1_search5 
__w1_search4: 
	ldi  r23,1 
__w1_search5: 
	rcall __w1_write_bit 
	rjmp __w1_search13 
__w1_search6: 
	rcall __w1_read_bit 
	sbrs r30,7 
	rjmp __w1_search9 
	rcall __w1_read_bit 
	sbrs r30,7 
	rjmp __w1_search8 
__w1_search7: 
	mov  r30,r20 
	pop  r21 
	pop  r20 
	adiw r28,3 
	ret 
__w1_search8: 
	set 
	rcall __set_bit 
	rjmp __w1_search4 
__w1_search9: 
	rcall __w1_read_bit 
	sbrs r30,7 
	rjmp __w1_search10 
	rjmp __w1_search11 
__w1_search10: 
	cp   r21,r0 
	breq __w1_search12 
	mov  r1,r21 
__w1_search11: 
	clt 
	rcall __set_bit 
	clr  r23 
	rcall __w1_write_bit 
	rjmp __w1_search13 
__w1_search12: 
	set 
	rcall __set_bit 
	ldi  r23,1 
	rcall __w1_write_bit 
__w1_search13: 
	inc  r21 
	cpi  r21,65 
	brlt __w1_search1 
	rcall __w1_read_bit 
	rol  r30 
	rol  r30 
	andi r30,1 
	adiw r26,8 
	st   x,r30 
	sbiw r26,8 
	inc  r20 
	tst  r1 
	breq __w1_search7 
	ldi  r21,9 
__w1_search14: 
	ld   r30,x 
	adiw r26,9 
	st   x,r30 
	sbiw r26,8 
	dec  r21 
	brne __w1_search14 
	rjmp __w1_search0 
 
__sel_bit: 
	mov  r30,r21 
	dec  r30 
	mov  r22,r30 
	lsr  r30 
	lsr  r30 
	lsr  r30 
	clr  r31 
	add  r30,r26 
	adc  r31,r27 
	ld   r24,z 
	ldi  r25,1 
	andi r22,7 
__sel_bit0: 
	breq __sel_bit1 
	lsl  r25 
	dec  r22 
	rjmp __sel_bit0 
__sel_bit1: 
	ret 
 
__set_bit: 
	rcall __sel_bit 
	brts __set_bit2 
	com  r25 
	and  r24,r25 
	rjmp __set_bit3 
__set_bit2: 
	or   r24,r25 
__set_bit3: 
	st   z,r24 
	ret 
 
_w1_dow_crc8: 
	clr  r30 
	ld   r24,y 
	tst  r24 
	breq __w1_dow_crc83 
	ldi  r22,0x18 
	ldd  r26,y+1 
	ldd  r27,y+2 
__w1_dow_crc80: 
	ldi  r25,8 
	ld   r31,x+ 
__w1_dow_crc81: 
	mov  r23,r31 
	eor  r23,r30 
	ror  r23 
	brcc __w1_dow_crc82 
	eor  r30,r22 
__w1_dow_crc82: 
	ror  r30 
	lsr  r31 
	dec  r25 
	brne __w1_dow_crc81 
	dec  r24 
	brne __w1_dow_crc80 
__w1_dow_crc83: 
	adiw r28,3 
	ret 
 
__ftrunc: 
	ldd  r23,y+3 
	ldd  r22,y+2 
	ldd  r31,y+1 
	ld   r30,y 
	bst  r23,7 
	lsl  r23 
	sbrc r22,7 
	sbr  r23,1 
	mov  r25,r23 
	subi r25,0x7e 
	breq __ftrunc0 
	brcs __ftrunc0 
	cpi  r25,24 
	brsh __ftrunc1 
	clr  r26 
	clr  r27 
	clr  r24 
__ftrunc2: 
	sec 
	ror  r24 
	ror  r27 
	ror  r26 
	dec  r25 
	brne __ftrunc2 
	and  r30,r26 
	and  r31,r27 
	and  r22,r24 
	rjmp __ftrunc1 
__ftrunc0: 
	clt 
	clr  r23 
	clr  r30 
	clr  r31 
	clr  r22 
__ftrunc1: 
	cbr  r22,0x80 
	lsr  r23 
	brcc __ftrunc3 
	sbr  r22,0x80 
__ftrunc3: 
	bld  r23,7 
	ld   r26,y+ 
	ld   r27,y+ 
	ld   r24,y+ 
	ld   r25,y+ 
	cp   r30,r26 
	cpc  r31,r27 
	cpc  r22,r24 
	cpc  r23,r25 
	bst  r25,7 
	ret 
 
_floor: 
	rcall __ftrunc 
	brne __floor1 
__floor0: 
	ret 
__floor1: 
	brtc __floor0 
	ldi  r25,0xbf 
 
__addfc: 
	clr  r26 
	clr  r27 
	ldi  r24,0x80 
	rjmp __addf12 
 
__ADDW2R15: 
	CLR  R0 
	ADD  R26,R15 
	ADC  R27,R0 
	RET 
 
__ANEGD1: 
	COM  R31 
	COM  R22 
	COM  R23 
	NEG  R30 
	SBCI R31,-1 
	SBCI R22,-1 
	SBCI R23,-1 
	RET 
 
__LSLW2: 
	LSL  R30 
	ROL  R31 
	LSL  R30 
	ROL  R31 
	RET 
 
__CBD1: 
	MOV  R31,R30 
	ADD  R31,R31 
	SBC  R31,R31 
	MOV  R22,R31 
	MOV  R23,R31 
	RET 
 
__CWD1: 
	MOV  R22,R31 
	ADD  R22,R22 
	SBC  R22,R22 
	MOV  R23,R22 
	RET 
 
__LNEGB1: 
	TST  R30 
	LDI  R30,1 
	BREQ __LNEGB1F 
	CLR  R30 
__LNEGB1F: 
	RET 
 
__DIVB21U: 
	CLR  R0 
	LDI  R25,8 
__DIVB21U1: 
	LSL  R26 
	ROL  R0 
	SUB  R0,R30 
	BRCC __DIVB21U2 
	ADD  R0,R30 
	RJMP __DIVB21U3 
__DIVB21U2: 
	SBR  R26,1 
__DIVB21U3: 
	DEC  R25 
	BRNE __DIVB21U1 
	MOV  R30,R26 
	MOV  R26,R0 
	RET 
 
__DIVB21: 
	RCALL __CHKSIGNB 
	RCALL __DIVB21U 
	BRTC __DIVB211 
	NEG  R30 
__DIVB211: 
	RET 
 
__DIVD21U: 
	PUSH R19 
	PUSH R20 
	PUSH R21 
	CLR  R0 
	CLR  R1 
	CLR  R20 
	CLR  R21 
	LDI  R19,32 
__DIVD21U1: 
	LSL  R26 
	ROL  R27 
	ROL  R24 
	ROL  R25 
	ROL  R0 
	ROL  R1 
	ROL  R20 
	ROL  R21 
	SUB  R0,R30 
	SBC  R1,R31 
	SBC  R20,R22 
	SBC  R21,R23 
	BRCC __DIVD21U2 
	ADD  R0,R30 
	ADC  R1,R31 
	ADC  R20,R22 
	ADC  R21,R23 
	RJMP __DIVD21U3 
__DIVD21U2: 
	SBR  R26,1 
__DIVD21U3: 
	DEC  R19 
	BRNE __DIVD21U1 
	MOVW R30,R26 
	MOVW R22,R24 
	MOVW R26,R0 
	MOVW R24,R20 
	POP  R21 
	POP  R20 
	POP  R19 
	RET 
 
__MODB21: 
	CLT 
	SBRS R26,7 
	RJMP __MODB211 
	NEG  R26 
	SET 
__MODB211: 
	SBRC R30,7 
	NEG  R30 
	RCALL __DIVB21U 
	MOV  R30,R26 
	BRTC __MODB212 
	NEG  R30 
__MODB212: 
	RET 
 
__MODD21U: 
	RCALL __DIVD21U 
	MOVW R30,R26 
	MOVW R22,R24 
	RET 
 
__CHKSIGNB: 
	CLT 
	SBRS R30,7 
	RJMP __CHKSB1 
	NEG  R30 
	SET 
__CHKSB1: 
	SBRS R26,7 
	RJMP __CHKSB2 
	NEG  R26 
	BLD  R0,0 
	INC  R0 
	BST  R0,0 
__CHKSB2: 
	RET 
 
__GETW1P: 
	LD   R30,X+ 
	LD   R31,X 
	SBIW R26,1 
	RET 
 
__GETD1P: 
	LD   R30,X+ 
	LD   R31,X+ 
	LD   R22,X+ 
	LD   R23,X 
	SBIW R26,3 
	RET 
 
__GETW1PF: 
	LPM  R0,Z+ 
	LPM  R31,Z 
	MOV  R30,R0 
	RET 
 
__GETD1PF: 
	LPM  R0,Z+ 
	LPM  R1,Z+ 
	LPM  R22,Z+ 
	LPM  R23,Z 
	MOVW R30,R0 
	RET 
 
__PUTPARD1: 
	ST   -Y,R23 
	ST   -Y,R22 
	ST   -Y,R31 
	ST   -Y,R30 
	RET 
 
__SWAPD12: 
	MOV  R1,R24 
	MOV  R24,R22 
	MOV  R22,R1 
	MOV  R1,R25 
	MOV  R25,R23 
	MOV  R23,R1 
 
__SWAPW12: 
	MOV  R1,R27 
	MOV  R27,R31 
	MOV  R31,R1 
 
__SWAPB12: 
	MOV  R1,R26 
	MOV  R26,R30 
	MOV  R30,R1 
	RET 
 
__ANEGF1: 
	SBIW R30,0 
	SBCI R22,0 
	SBCI R23,0 
	BREQ __ANEGF10 
	SUBI R23,0x80 
__ANEGF10: 
	RET 
 
__ROUND_REPACK: 
	TST  R21 
	BRPL __REPACK 
	CPI  R21,0x80 
	BRNE __ROUND_REPACK0 
	SBRS R30,0 
	RJMP __REPACK 
__ROUND_REPACK0: 
	ADIW R30,1 
	ADC  R22,R25 
	ADC  R23,R25 
	BRVS __REPACK1 
 
__REPACK: 
	LDI  R21,0x80 
	EOR  R21,R23 
	BRNE __REPACK0 
	PUSH R21 
	RJMP __ZERORES 
__REPACK0: 
	CPI  R21,0xFF 
	BREQ __REPACK1 
	LSL  R22 
	LSL  R0 
	ROR  R21 
	ROR  R22 
	MOV  R23,R21 
	RET 
__REPACK1: 
	PUSH R21 
	TST  R0 
	BRMI __REPACK2 
	RJMP __MAXRES 
__REPACK2: 
	RJMP __MINRES 
 
__UNPACK: 
	LDI  R21,0x80 
	MOV  R1,R25 
	AND  R1,R21 
	LSL  R24 
	ROL  R25 
	EOR  R25,R21 
	LSL  R21 
	ROR  R24 
 
__UNPACK1: 
	LDI  R21,0x80 
	MOV  R0,R23 
	AND  R0,R21 
	LSL  R22 
	ROL  R23 
	EOR  R23,R21 
	LSL  R21 
	ROR  R22 
	RET 
 
__CFD1U: 
	SET 
	RJMP __CFD1U0 
__CFD1: 
	CLT 
__CFD1U0: 
	PUSH R21 
	RCALL __UNPACK1 
	CPI  R23,0x80 
	BRLO __CFD10 
	CPI  R23,0xFF 
	BRCC __CFD10 
	RJMP __ZERORES 
__CFD10: 
	LDI  R21,22 
	SUB  R21,R23 
	BRPL __CFD11 
	NEG  R21 
	CPI  R21,8 
	BRTC __CFD19 
	CPI  R21,9 
__CFD19: 
	BRLO __CFD17 
	SER  R30 
	SER  R31 
	SER  R22 
	LDI  R23,0x7F 
	BLD  R23,7 
	RJMP __CFD15 
__CFD17: 
	CLR  R23 
	TST  R21 
	BREQ __CFD15 
__CFD18: 
	LSL  R30 
	ROL  R31 
	ROL  R22 
	ROL  R23 
	DEC  R21 
	BRNE __CFD18 
	RJMP __CFD15 
__CFD11: 
	CLR  R23 
__CFD12: 
	CPI  R21,8 
	BRLO __CFD13 
	MOV  R30,R31 
	MOV  R31,R22 
	MOV  R22,R23 
	SUBI R21,8 
	RJMP __CFD12 
__CFD13: 
	TST  R21 
	BREQ __CFD15 
__CFD14: 
	LSR  R23 
	ROR  R22 
	ROR  R31 
	ROR  R30 
	DEC  R21 
	BRNE __CFD14 
__CFD15: 
	TST  R0 
	BRPL __CFD16 
	RCALL __ANEGD1 
__CFD16: 
	POP  R21 
	RET 
 
__CDF1U: 
	SET 
	RJMP __CDF1U0 
__CDF1: 
	CLT 
__CDF1U0: 
	SBIW R30,0 
	SBCI R22,0 
	SBCI R23,0 
	BREQ __CDF10 
	CLR  R0 
	BRTS __CDF11 
	TST  R23 
	BRPL __CDF11 
	COM  R0 
	RCALL __ANEGD1 
__CDF11: 
	MOV  R1,R23 
	LDI  R23,30 
	TST  R1 
__CDF12: 
	BRMI __CDF13 
	DEC  R23 
	LSL  R30 
	ROL  R31 
	ROL  R22 
	ROL  R1 
	RJMP __CDF12 
__CDF13: 
	MOV  R30,R31 
	MOV  R31,R22 
	MOV  R22,R1 
	PUSH R21 
	RCALL __REPACK 
	POP  R21 
__CDF10: 
	RET 
 
__SWAPACC: 
	PUSH R20 
	MOVW R20,R30 
	MOVW R30,R26 
	MOVW R26,R20 
	MOVW R20,R22 
	MOVW R22,R24 
	MOVW R24,R20 
	MOV  R20,R0 
	MOV  R0,R1 
	MOV  R1,R20 
	POP  R20 
	RET 
 
__UADD12: 
	ADD  R30,R26 
	ADC  R31,R27 
	ADC  R22,R24 
	RET 
 
__NEGMAN1: 
	COM  R30 
	COM  R31 
	COM  R22 
	SUBI R30,-1 
	SBCI R31,-1 
	SBCI R22,-1 
	RET 
 
__SUBF12: 
	PUSH R21 
	RCALL __UNPACK 
	CPI  R25,0x80 
	BREQ __ADDF129 
	LDI  R21,0x80 
	EOR  R1,R21 
 
	RJMP __ADDF120 
 
__ADDF12: 
	PUSH R21 
	RCALL __UNPACK 
	CPI  R25,0x80 
	BREQ __ADDF129 
 
__ADDF120: 
	CPI  R23,0x80 
	BREQ __ADDF128 
__ADDF121: 
	MOV  R21,R23 
	SUB  R21,R25 
	BRVS __ADDF129 
	BRPL __ADDF122 
	RCALL __SWAPACC 
	RJMP __ADDF121 
__ADDF122: 
	CPI  R21,24 
	BRLO __ADDF123 
	CLR  R26 
	CLR  R27 
	CLR  R24 
__ADDF123: 
	CPI  R21,8 
	BRLO __ADDF124 
	MOV  R26,R27 
	MOV  R27,R24 
	CLR  R24 
	SUBI R21,8 
	RJMP __ADDF123 
__ADDF124: 
	TST  R21 
	BREQ __ADDF126 
__ADDF125: 
	LSR  R24 
	ROR  R27 
	ROR  R26 
	DEC  R21 
	BRNE __ADDF125 
__ADDF126: 
	MOV  R21,R0 
	EOR  R21,R1 
	BRMI __ADDF127 
	RCALL __UADD12 
	BRCC __ADDF129 
	ROR  R22 
	ROR  R31 
	ROR  R30 
	INC  R23 
	BRVC __ADDF129 
	RJMP __MAXRES 
__ADDF128: 
	RCALL __SWAPACC 
__ADDF129: 
	RCALL __REPACK 
	POP  R21 
	RET 
__ADDF127: 
	SUB  R30,R26 
	SBC  R31,R27 
	SBC  R22,R24 
	BREQ __ZERORES 
	BRCC __ADDF1210 
	COM  R0 
	RCALL __NEGMAN1 
__ADDF1210: 
	TST  R22 
	BRMI __ADDF129 
	LSL  R30 
	ROL  R31 
	ROL  R22 
	DEC  R23 
	BRVC __ADDF1210 
 
__ZERORES: 
	CLR  R30 
	CLR  R31 
	CLR  R22 
	CLR  R23 
	POP  R21 
	RET 
 
__MINRES: 
	SER  R30 
	SER  R31 
	LDI  R22,0x7F 
	SER  R23 
	POP  R21 
	RET 
 
__MAXRES: 
	SER  R30 
	SER  R31 
	LDI  R22,0x7F 
	LDI  R23,0x7F 
	POP  R21 
	RET 
 
__MULF12: 
	PUSH R21 
	RCALL __UNPACK 
	CPI  R23,0x80 
	BREQ __ZERORES 
	CPI  R25,0x80 
	BREQ __ZERORES 
	EOR  R0,R1 
	SEC 
	ADC  R23,R25 
	BRVC __MULF124 
	BRLT __ZERORES 
__MULF125: 
	TST  R0 
	BRMI __MINRES 
	RJMP __MAXRES 
__MULF124: 
	PUSH R0 
	PUSH R17 
	PUSH R18 
	PUSH R19 
	PUSH R20 
	CLR  R17 
	CLR  R18 
	CLR  R25 
	MUL  R22,R24 
	MOVW R20,R0 
	MUL  R24,R31 
	MOV  R19,R0 
	ADD  R20,R1 
	ADC  R21,R25 
	MUL  R22,R27 
	ADD  R19,R0 
	ADC  R20,R1 
	ADC  R21,R25 
	MUL  R24,R30 
	RCALL __MULF126 
	MUL  R27,R31 
	RCALL __MULF126 
	MUL  R22,R26 
	RCALL __MULF126 
	MUL  R27,R30 
	RCALL __MULF127 
	MUL  R26,R31 
	RCALL __MULF127 
	MUL  R26,R30 
	ADD  R17,R1 
	ADC  R18,R25 
	ADC  R19,R25 
	ADC  R20,R25 
	ADC  R21,R25 
	MOV  R30,R19 
	MOV  R31,R20 
	MOV  R22,R21 
	MOV  R21,R18 
	POP  R20 
	POP  R19 
	POP  R18 
	POP  R17 
	POP  R0 
	TST  R22 
	BRMI __MULF122 
	LSL  R21 
	ROL  R30 
	ROL  R31 
	ROL  R22 
	RJMP __MULF123 
__MULF122: 
	INC  R23 
	BRVS __MULF125 
__MULF123: 
	RCALL __ROUND_REPACK 
	POP  R21 
	RET 
 
__MULF127: 
	ADD  R17,R0 
	ADC  R18,R1 
	ADC  R19,R25 
	RJMP __MULF128 
__MULF126: 
	ADD  R18,R0 
	ADC  R19,R1 
__MULF128: 
	ADC  R20,R25 
	ADC  R21,R25 
	RET 
 
__DIVF21: 
	PUSH R21 
	RCALL __UNPACK 
	CPI  R23,0x80 
	BRNE __DIVF210 
	TST  R1 
__DIVF211: 
	BRPL __DIVF219 
	RJMP __MINRES 
__DIVF219: 
	RJMP __MAXRES 
__DIVF210: 
	CPI  R25,0x80 
	BRNE __DIVF218 
__DIVF217: 
	RJMP __ZERORES 
__DIVF218: 
	EOR  R0,R1 
	SEC 
	SBC  R25,R23 
	BRVC __DIVF216 
	BRLT __DIVF217 
	TST  R0 
	RJMP __DIVF211 
__DIVF216: 
	MOV  R23,R25 
	PUSH R17 
	PUSH R18 
	PUSH R19 
	PUSH R20 
	CLR  R1 
	CLR  R17 
	CLR  R18 
	CLR  R19 
	CLR  R20 
	CLR  R21 
	LDI  R25,32 
__DIVF212: 
	CP   R26,R30 
	CPC  R27,R31 
	CPC  R24,R22 
	CPC  R20,R17 
	BRLO __DIVF213 
	SUB  R26,R30 
	SBC  R27,R31 
	SBC  R24,R22 
	SBC  R20,R17 
	SEC 
	RJMP __DIVF214 
__DIVF213: 
	CLC 
__DIVF214: 
	ROL  R21 
	ROL  R18 
	ROL  R19 
	ROL  R1 
	ROL  R26 
	ROL  R27 
	ROL  R24 
	ROL  R20 
	DEC  R25 
	BRNE __DIVF212 
	MOVW R30,R18 
	MOV  R22,R1 
	POP  R20 
	POP  R19 
	POP  R18 
	POP  R17 
	TST  R22 
	BRMI __DIVF215 
	LSL  R21 
	ROL  R30 
	ROL  R31 
	ROL  R22 
	DEC  R23 
	BRVS __DIVF217 
__DIVF215: 
	RCALL __ROUND_REPACK 
	POP  R21 
	RET 
 
__CMPF12: 
	TST  R25 
	BRMI __CMPF120 
	TST  R23 
	BRMI __CMPF121 
	CP   R25,R23 
	BRLO __CMPF122 
	BRNE __CMPF121 
	CP   R26,R30 
	CPC  R27,R31 
	CPC  R24,R22 
	BRLO __CMPF122 
	BREQ __CMPF123 
__CMPF121: 
	CLZ 
	CLC 
	RET 
__CMPF122: 
	CLZ 
	SEC 
	RET 
__CMPF123: 
	SEZ 
	CLC 
	RET 
__CMPF120: 
	TST  R23 
	BRPL __CMPF122 
	CP   R25,R23 
	BRLO __CMPF121 
	BRNE __CMPF122 
	CP   R30,R26 
	CPC  R31,R27 
	CPC  R22,R24 
	BRLO __CMPF122 
	BREQ __CMPF123 
	RJMP __CMPF121 
 
__CPD10: 
	SBIW R30,0 
	SBCI R22,0 
	SBCI R23,0 
	RET 
 
__CPD20: 
	SBIW R26,0 
	SBCI R24,0 
	SBCI R25,0 
	RET 
 
__SAVELOCR6: 
	ST   -Y,R21 
__SAVELOCR5: 
	ST   -Y,R20 
__SAVELOCR4: 
	ST   -Y,R19 
__SAVELOCR3: 
	ST   -Y,R18 
__SAVELOCR2: 
	ST   -Y,R17 
	ST   -Y,R16 
	RET 
 
__LOADLOCR6: 
	LDD  R21,Y+5 
__LOADLOCR5: 
	LDD  R20,Y+4 
__LOADLOCR4: 
	LDD  R19,Y+3 
__LOADLOCR3: 
	LDD  R18,Y+2 
__LOADLOCR2: 
	LDD  R17,Y+1 
	LD   R16,Y 
	RET 
 
;END OF CODE MARKER 
__END_OF_CODE: