⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 这是使用AVR GCC的读取DS18B20的代码。 代码功能很全
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"main.c"
   2               		.arch atmega16
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  17               	.Ltext0:
  18               		.section	.progmem.data,"a",@progbits
  21               	c.46:
  22 0000 0D53 6361 		.string	"\rScanning Bus for DS18X20\r"
  22      6E6E 696E 
  22      6720 4275 
  22      7320 666F 
  22      7220 4453 
  25               	c.47:
  26 001b 4E6F 2053 		.string	"No Sensor found\r"
  26      656E 736F 
  26      7220 666F 
  26      756E 640D 
  26      00
  29               	c.48:
  30 002c 4275 7320 		.string	"Bus Error\r"
  30      4572 726F 
  30      720D 00
  31               		.text
  32               	.global	search_sensors
  34               	search_sensors:
  35               	.LFB11:
  36               	.LM1:
  37               	/* prologue: frame size=9 */
  38 0000 1F93      		push r17
  39 0002 CF93      		push r28
  40 0004 DF93      		push r29
  41 0006 CDB7      		in r28,__SP_L__
  42 0008 DEB7      		in r29,__SP_H__
  43 000a 2997      		sbiw r28,9
  44 000c 0FB6      		in __tmp_reg__,__SREG__
  45 000e F894      		cli
  46 0010 DEBF      		out __SP_H__,r29
  47 0012 0FBE      		out __SREG__,__tmp_reg__
  48 0014 CDBF      		out __SP_L__,r28
  49               	/* prologue end (size=11) */
  50               	.LM2:
  51 0016 80E0      		ldi r24,lo8(c.46)
  52 0018 90E0      		ldi r25,hi8(c.46)
  53 001a 0E94 0000 		call uart_puts_p
  54               	.LM3:
  55 001e 10E0      		ldi r17,lo8(0)
  56               	.LM4:
  57 0020 8FEF      		ldi r24,lo8(-1)
  58 0022 8987      		std Y+9,r24
  59               	.L10:
  60               	.LM5:
  61 0024 BE01      		movw r22,r28
  62 0026 6F5F      		subi r22,lo8(-(1))
  63 0028 7F4F      		sbci r23,hi8(-(1))
  64 002a CE01      		movw r24,r28
  65 002c 0996      		adiw r24,9
  66 002e 0E94 0000 		call DS18X20_find_sensor
  67               	.LM6:
  68 0032 2985      		ldd r18,Y+9
  69 0034 2F3F      		cpi r18,lo8(-1)
  70 0036 19F4      		brne .L4
  71               	.LM7:
  72 0038 80E0      		ldi r24,lo8(c.47)
  73 003a 90E0      		ldi r25,hi8(c.47)
  74 003c 04C0      		rjmp .L14
  75               	.L4:
  76               	.LM8:
  77 003e 2E3F      		cpi r18,lo8(-2)
  78 0040 29F4      		brne .L5
  79               	.LM9:
  80 0042 80E0      		ldi r24,lo8(c.48)
  81 0044 90E0      		ldi r25,hi8(c.48)
  82               	.L14:
  83 0046 0E94 0000 		call uart_puts_p
  84               	.LM10:
  85 004a 16C0      		rjmp .L3
  86               	.L5:
  87 004c E12F      		mov r30,r17
  88 004e FF27      		clr r31
  89 0050 83E0      		ldi r24,3
  90 0052 EE0F      	1:	lsl r30
  91 0054 FF1F      		rol r31
  92 0056 8A95      		dec r24
  93 0058 E1F7      		brne 1b
  94 005a E050      		subi r30,lo8(-(gSensorIDs))
  95 005c F040      		sbci r31,hi8(-(gSensorIDs))
  96 005e DE01      		movw r26,r28
  97 0060 1196      		adiw r26,1
  98 0062 97E0      		ldi r25,lo8(7)
  99               	.L9:
 100               	.LM11:
 101 0064 8D91      		ld r24,X+
 102 0066 8193      		st Z+,r24
 103               	.LM12:
 104 0068 9150      		subi r25,lo8(-(-1))
 105 006a 97FF      		sbrs r25,7
 106 006c FBCF      		rjmp .L9
 107               	.LM13:
 108 006e 1F5F      		subi r17,lo8(-(1))
 109               	.LM14:
 110 0070 2223      		tst r18
 111 0072 11F0      		breq .L3
 112 0074 1530      		cpi r17,lo8(5)
 113 0076 B0F2      		brlo .L10
 114               	.L3:
 115               	.LM15:
 116 0078 812F      		mov r24,r17
 117 007a 9927      		clr r25
 118               	/* epilogue: frame size=9 */
 119 007c 2996      		adiw r28,9
 120 007e 0FB6      		in __tmp_reg__,__SREG__
 121 0080 F894      		cli
 122 0082 DEBF      		out __SP_H__,r29
 123 0084 0FBE      		out __SREG__,__tmp_reg__
 124 0086 CDBF      		out __SP_L__,r28
 125 0088 DF91      		pop r29
 126 008a CF91      		pop r28
 127 008c 1F91      		pop r17
 128 008e 0895      		ret
 129               	/* epilogue end (size=10) */
 130               	/* function search_sensors size 72 (51) */
 131               	.LFE11:
 133               		.section	.progmem.data
 136               	c.41:
 137 0037 2E00      		.string	"."
 140               	c.42:
 141 0039 3000      		.string	"0"
 144               	c.43:
 145 003b B043 205B 		.string	"\260C ["
 145      00
 148               	c.44:
 149 0040 2E00      		.string	"."
 152               	c.45:
 153 0042 B043 5D00 		.string	"\260C]"
 154               		.text
 155               	.global	uart_put_temp
 157               	uart_put_temp:
 158               	.LFB12:
 159               	.LM16:
 160               	/* prologue: frame size=17 */
 161 0090 DF92      		push r13
 162 0092 EF92      		push r14
 163 0094 FF92      		push r15
 164 0096 0F93      		push r16
 165 0098 1F93      		push r17
 166 009a CF93      		push r28
 167 009c DF93      		push r29
 168 009e CDB7      		in r28,__SP_L__
 169 00a0 DEB7      		in r29,__SP_H__
 170 00a2 6197      		sbiw r28,17
 171 00a4 0FB6      		in __tmp_reg__,__SREG__
 172 00a6 F894      		cli
 173 00a8 DEBF      		out __SP_H__,r29
 174 00aa 0FBE      		out __SREG__,__tmp_reg__
 175 00ac CDBF      		out __SP_L__,r28
 176               	/* prologue end (size=15) */
 177 00ae F82E      		mov r15,r24
 178 00b0 D62E      		mov r13,r22
 179 00b2 E42E      		mov r14,r20
 180               	.LM17:
 181 00b4 8823      		tst r24
 182 00b6 11F0      		breq .L16
 183               	.LM18:
 184 00b8 8DE2      		ldi r24,lo8(45)
 185 00ba 01C0      		rjmp .L17
 186               	.L16:
 187 00bc 8BE2      		ldi r24,lo8(43)
 188               	.L17:
 189 00be 0E94 0000 		call uart_putc
 190               	.LM19:
 191 00c2 8D2D      		mov r24,r13
 192 00c4 9927      		clr r25
 193 00c6 0E94 0000 		call uart_puti
 194               	.LM20:
 195 00ca 80E0      		ldi r24,lo8(c.41)
 196 00cc 90E0      		ldi r25,hi8(c.41)
 197 00ce 0E94 0000 		call uart_puts_p
 198               	.LM21:
 199 00d2 2E2D      		mov r18,r14
 200 00d4 3327      		clr r19
 201 00d6 4AE0      		ldi r20,lo8(10)
 202 00d8 50E0      		ldi r21,hi8(10)
 203 00da BE01      		movw r22,r28
 204 00dc 6F5F      		subi r22,lo8(-(1))
 205 00de 7F4F      		sbci r23,hi8(-(1))
 206 00e0 81E7      		ldi r24,lo8(625)
 207 00e2 92E0      		ldi r25,hi8(625)
 208 00e4 289F      		mul r18,r24
 209 00e6 F001      		movw r30,r0
 210 00e8 299F      		mul r18,r25
 211 00ea F00D      		add r31,r0
 212 00ec 389F      		mul r19,r24
 213 00ee F00D      		add r31,r0
 214 00f0 1124      		clr r1
 215 00f2 CF01      		movw r24,r30
 216 00f4 0E94 0000 		call itoa
 217               	.LM22:
 218 00f8 DE01      		movw r26,r28
 219 00fa 1196      		adiw r26,1
 220 00fc FD01      		movw r30,r26
 221 00fe 0190      		ld __tmp_reg__,Z+
 222 0100 0020      		tst __tmp_reg__
 223 0102 E9F7      		brne .-6
 224 0104 3197      		sbiw r30,1
 225 0106 EA1B      		sub r30,r26
 226 0108 FB0B      		sbc r31,r27
 227 010a 14E0      		ldi r17,lo8(4)
 228 010c 1E1B      		sub r17,r30
 229               	.LM23:
 230 010e 00E0      		ldi r16,lo8(0)
 231               	.L26:
 232 0110 0117      		cp r16,r17
 233 0112 30F4      		brsh .L25
 234 0114 80E0      		ldi r24,lo8(c.42)
 235 0116 90E0      		ldi r25,hi8(c.42)
 236 0118 0E94 0000 		call uart_puts_p
 237 011c 0F5F      		subi r16,lo8(-(1))
 238 011e F8CF      		rjmp .L26
 239               	.L25:
 240               	.LM24:
 241 0120 CE01      		movw r24,r28
 242 0122 0196      		adiw r24,1
 243 0124 0E94 0000 		call uart_puts
 244               	.LM25:
 245 0128 80E0      		ldi r24,lo8(c.43)
 246 012a 90E0      		ldi r25,hi8(c.43)
 247 012c 0E94 0000 		call uart_puts_p
 248               	.LM26:
 249 0130 FF20      		tst r15
 250 0132 11F0      		breq .L22
 251 0134 8DE2      		ldi r24,lo8(45)
 252 0136 01C0      		rjmp .L23
 253               	.L22:
 254 0138 8BE2      		ldi r24,lo8(43)
 255               	.L23:
 256 013a 0E94 0000 		call uart_putc
 257               	.LM27:
 258 013e 4E2D      		mov r20,r14
 259 0140 6D2D      		mov r22,r13
 260 0142 8F2D      		mov r24,r15
 261 0144 0E94 0000 		call DS18X20_temp_to_decicel
 262 0148 8C01      		movw r16,r24
 263               	.LM28:
 264 014a 6AE0      		ldi r22,lo8(10)
 265 014c 70E0      		ldi r23,hi8(10)
 266 014e 0E94 0000 		call __udivmodhi4
 267 0152 CB01      		movw r24,r22
 268 0154 0E94 0000 		call uart_puti
 269               	.LM29:
 270 0158 80E0      		ldi r24,lo8(c.44)
 271 015a 90E0      		ldi r25,hi8(c.44)
 272 015c 0E94 0000 		call uart_puts_p
 273               	.LM30:
 274 0160 C801      		movw r24,r16
 275 0162 6AE0      		ldi r22,lo8(10)
 276 0164 70E0      		ldi r23,hi8(10)
 277 0166 0E94 0000 		call __udivmodhi4
 278 016a 805D      		subi r24,lo8(-(48))
 279 016c 0E94 0000 		call uart_putc
 280               	.LM31:
 281 0170 80E0      		ldi r24,lo8(c.45)
 282 0172 90E0      		ldi r25,hi8(c.45)
 283 0174 0E94 0000 		call uart_puts_p
 284               	/* epilogue: frame size=17 */
 285 0178 6196      		adiw r28,17
 286 017a 0FB6      		in __tmp_reg__,__SREG__
 287 017c F894      		cli
 288 017e DEBF      		out __SP_H__,r29
 289 0180 0FBE      		out __SREG__,__tmp_reg__
 290 0182 CDBF      		out __SP_L__,r28
 291 0184 DF91      		pop r29
 292 0186 CF91      		pop r28
 293 0188 1F91      		pop r17
 294 018a 0F91      		pop r16
 295 018c FF90      		pop r15
 296 018e EF90      		pop r14
 297 0190 DF90      		pop r13
 298 0192 0895      		ret
 299               	/* epilogue end (size=14) */
 300               	/* function uart_put_temp size 130 (101) */
 301               	.LFE12:
 303               		.section	.progmem.data
 306               	c.0:
 307 0046 0D44 5331 		.string	"\rDS18X20 1-Wire-Reader Demo by Martin Thomas\r"
 307      3858 3230 
 307      2031 2D57 
 307      6972 652D 
 307      5265 6164 
 310               	c.1:
 311 0074 2D2D 2D2D 		.string	"-------------------------------------------"
 311      2D2D 2D2D 
 311      2D2D 2D2D 
 311      2D2D 2D2D 
 311      2D2D 2D2D 
 314               	c.2:
 315 00a0 2044 5331 		.string	" DS18X20 Sensor(s) available:\r"
 315      3858 3230 
 315      2053 656E 
 315      736F 7228 
 315      7329 2061 
 318               	c.3:
 319 00bf 2320 696E 		.string	"# in Bus :"
 319      2042 7573 
 319      203A 00
 322               	c.4:
 323 00ca 203A 2000 		.string	" : "
 326               	c.5:
 327 00ce 0D00      		.string	"\r"
 330               	c.6:
 331 00d0 5365 6E73 		.string	"Sensor# "
 331      6F72 2320 
 331      00
 334               	c.7:
 335 00d9 2069 7320 		.string	" is a "
 335      6120 00
 338               	c.8:
 339 00e0 4453 3138 		.string	"DS18S20/DS1820"
 339      5332 302F 
 339      4453 3138 
 339      3230 00
 342               	c.9:
 343 00ef 4453 3138 		.string	"DS18B20"
 343      4232 3000 
 346               	c.10:
 347 00f7 2077 6869 		.string	" which is "
 347      6368 2069 
 347      7320 00
 350               	c.11:
 351 0102 7061 7261 		.string	"parasite"
 351      7369 7465 
 351      00
 354               	c.12:
 355 010b 6578 7465 		.string	"externally"
 355      726E 616C 
 355      6C79 00
 358               	c.13:
 359 0116 2070 6F77 		.string	" powered\r"
 359      6572 6564 
 359      0D00 
 362               	c.29:
 363 0120 0D44 5331 		.string	"\rDS18x20 EEPROM support test for fist sensor\r"
 363      3878 3230 
 363      2045 4550 
 363      524F 4D20 
 363      7375 7070 
 366               	c.30:
 367 014e 5448 2F54 		.string	"TH/TL from EEPROM sensor 1 : "
 367      4C20 6672 
 367      6F6D 2045 
 367      4550 524F 
 367      4D20 7365 
 370               	c.31:
 371 016c 202F 2000 		.string	" / "
 374               	c.32:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -