Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

2105 строки
83 KiB

  1. PoolClockWaterTemp.elf: file format elf32-avr
  2. Sections:
  3. Idx Name Size VMA LMA File off Algn
  4. 0 .data 00000024 00800100 00000a6a 00000afe 2**0
  5. CONTENTS, ALLOC, LOAD, DATA
  6. 1 .text 00000a6a 00000000 00000000 00000094 2**1
  7. CONTENTS, ALLOC, LOAD, READONLY, CODE
  8. 2 .bss 00000004 00800124 00800124 00000b22 2**0
  9. ALLOC
  10. 3 .comment 00000030 00000000 00000000 00000b22 2**0
  11. CONTENTS, READONLY
  12. 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00000b54 2**2
  13. CONTENTS, READONLY
  14. 5 .debug_aranges 00000078 00000000 00000000 00000b94 2**0
  15. CONTENTS, READONLY, DEBUGGING
  16. 6 .debug_info 000022e0 00000000 00000000 00000c0c 2**0
  17. CONTENTS, READONLY, DEBUGGING
  18. 7 .debug_abbrev 00000861 00000000 00000000 00002eec 2**0
  19. CONTENTS, READONLY, DEBUGGING
  20. 8 .debug_line 00000ba9 00000000 00000000 0000374d 2**0
  21. CONTENTS, READONLY, DEBUGGING
  22. 9 .debug_frame 00000134 00000000 00000000 000042f8 2**2
  23. CONTENTS, READONLY, DEBUGGING
  24. 10 .debug_str 00000535 00000000 00000000 0000442c 2**0
  25. CONTENTS, READONLY, DEBUGGING
  26. 11 .debug_loc 00001d8e 00000000 00000000 00004961 2**0
  27. CONTENTS, READONLY, DEBUGGING
  28. 12 .debug_ranges 000000c8 00000000 00000000 000066ef 2**0
  29. CONTENTS, READONLY, DEBUGGING
  30. Disassembly of section .text:
  31. 00000000 <__vectors>:
  32. 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end>
  33. 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt>
  34. 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt>
  35. 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt>
  36. 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt>
  37. a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt>
  38. c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt>
  39. e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt>
  40. 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt>
  41. 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt>
  42. 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt>
  43. 16: 7f c0 rjmp .+254 ; 0x116 <__vector_11>
  44. 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt>
  45. 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt>
  46. 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt>
  47. 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt>
  48. 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt>
  49. 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt>
  50. 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt>
  51. 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt>
  52. 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt>
  53. 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt>
  54. 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt>
  55. 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt>
  56. 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt>
  57. 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt>
  58. 00000034 <__ctors_end>:
  59. 34: 11 24 eor r1, r1
  60. 36: 1f be out 0x3f, r1 ; 63
  61. 38: cf ef ldi r28, 0xFF ; 255
  62. 3a: d4 e0 ldi r29, 0x04 ; 4
  63. 3c: de bf out 0x3e, r29 ; 62
  64. 3e: cd bf out 0x3d, r28 ; 61
  65. 00000040 <__do_copy_data>:
  66. 40: 11 e0 ldi r17, 0x01 ; 1
  67. 42: a0 e0 ldi r26, 0x00 ; 0
  68. 44: b1 e0 ldi r27, 0x01 ; 1
  69. 46: ea e6 ldi r30, 0x6A ; 106
  70. 48: fa e0 ldi r31, 0x0A ; 10
  71. 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10>
  72. 4c: 05 90 lpm r0, Z+
  73. 4e: 0d 92 st X+, r0
  74. 50: a4 32 cpi r26, 0x24 ; 36
  75. 52: b1 07 cpc r27, r17
  76. 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc>
  77. 00000056 <__do_clear_bss>:
  78. 56: 21 e0 ldi r18, 0x01 ; 1
  79. 58: a4 e2 ldi r26, 0x24 ; 36
  80. 5a: b1 e0 ldi r27, 0x01 ; 1
  81. 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start>
  82. 0000005e <.do_clear_bss_loop>:
  83. 5e: 1d 92 st X+, r1
  84. 00000060 <.do_clear_bss_start>:
  85. 60: a8 32 cpi r26, 0x28 ; 40
  86. 62: b2 07 cpc r27, r18
  87. 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop>
  88. 66: e2 d2 rcall .+1476 ; 0x62c <main>
  89. 68: fe c4 rjmp .+2556 ; 0xa66 <_exit>
  90. 0000006a <__bad_interrupt>:
  91. 6a: ca cf rjmp .-108 ; 0x0 <__vectors>
  92. 0000006c <s_vInit>:
  93. /************************************************************************/
  94. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  95. {
  96. g_au8Digits[DIGIT_TENS] = u8Tens;
  97. g_au8Digits[DIGIT_ONES] = u8Ones;
  98. g_au8Digits[DIGIT_UNIT] = u8Unit;
  99. 6c: 8f ef ldi r24, 0xFF ; 255
  100. 6e: 8a b9 out 0x0a, r24 ; 10
  101. 70: 87 e0 ldi r24, 0x07 ; 7
  102. 72: 84 b9 out 0x04, r24 ; 4
  103. 74: 80 e3 ldi r24, 0x30 ; 48
  104. 76: 88 b9 out 0x08, r24 ; 8
  105. 78: 10 92 80 00 sts 0x0080, r1 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080>
  106. 7c: 8a e0 ldi r24, 0x0A ; 10
  107. 7e: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__EEPROM_REGION_LENGTH__+0x7f0081>
  108. 82: 84 ec ldi r24, 0xC4 ; 196
  109. 84: 99 e0 ldi r25, 0x09 ; 9
  110. 86: 90 93 89 00 sts 0x0089, r25 ; 0x800089 <__EEPROM_REGION_LENGTH__+0x7f0089>
  111. 8a: 80 93 88 00 sts 0x0088, r24 ; 0x800088 <__EEPROM_REGION_LENGTH__+0x7f0088>
  112. 8e: ef e6 ldi r30, 0x6F ; 111
  113. 90: f0 e0 ldi r31, 0x00 ; 0
  114. 92: 80 81 ld r24, Z
  115. 94: 82 60 ori r24, 0x02 ; 2
  116. 96: 80 83 st Z, r24
  117. 98: 78 94 sei
  118. 9a: 08 95 ret
  119. 0000009c <s_vSetValue>:
  120. 9c: 9d ec ldi r25, 0xCD ; 205
  121. 9e: 89 9f mul r24, r25
  122. a0: 91 2d mov r25, r1
  123. a2: 11 24 eor r1, r1
  124. a4: 96 95 lsr r25
  125. a6: 96 95 lsr r25
  126. a8: 96 95 lsr r25
  127. aa: e0 e0 ldi r30, 0x00 ; 0
  128. ac: f1 e0 ldi r31, 0x01 ; 1
  129. ae: 92 83 std Z+2, r25 ; 0x02
  130. b0: 99 0f add r25, r25
  131. b2: 29 2f mov r18, r25
  132. b4: 22 0f add r18, r18
  133. b6: 22 0f add r18, r18
  134. b8: 92 0f add r25, r18
  135. ba: 89 1b sub r24, r25
  136. bc: 81 83 std Z+1, r24 ; 0x01
  137. be: 60 83 st Z, r22
  138. c0: 08 95 ret
  139. 000000c2 <s_vReadButtons>:
  140. /************************************************************************/
  141. /* Read button status */
  142. /************************************************************************/
  143. void s_vReadButtons( void )
  144. {
  145. if ( !(PINC & (1<<PINC4)) ) //if button '+' pressed
  146. c2: 34 99 sbic 0x06, 4 ; 6
  147. c4: 06 c0 rjmp .+12 ; 0xd2 <s_vReadButtons+0x10>
  148. {
  149. g_u8ButtonCountTop++;
  150. c6: 80 91 27 01 lds r24, 0x0127 ; 0x800127 <g_u8ButtonCountTop>
  151. ca: 8f 5f subi r24, 0xFF ; 255
  152. cc: 80 93 27 01 sts 0x0127, r24 ; 0x800127 <g_u8ButtonCountTop>
  153. d0: 02 c0 rjmp .+4 ; 0xd6 <s_vReadButtons+0x14>
  154. }
  155. else
  156. {
  157. g_u8ButtonCountTop = 0U; //reset button counter
  158. d2: 10 92 27 01 sts 0x0127, r1 ; 0x800127 <g_u8ButtonCountTop>
  159. }
  160. if ( !(PINC & (1<<PINC5)) ) //if button '-' pressed
  161. d6: 35 99 sbic 0x06, 5 ; 6
  162. d8: 0a c0 rjmp .+20 ; 0xee <s_vReadButtons+0x2c>
  163. {
  164. g_u8ButtonCountBot++;
  165. da: 80 91 26 01 lds r24, 0x0126 ; 0x800126 <g_u8ButtonCountBot>
  166. de: 8f 5f subi r24, 0xFF ; 255
  167. e0: 80 93 26 01 sts 0x0126, r24 ; 0x800126 <g_u8ButtonCountBot>
  168. else
  169. {
  170. g_u8ButtonCountBot = 0U; //reset button counter
  171. }
  172. if ( g_u8ButtonCountTop > BUTTON_THRESHOLD )
  173. e4: 90 91 27 01 lds r25, 0x0127 ; 0x800127 <g_u8ButtonCountTop>
  174. e8: 93 33 cpi r25, 0x33 ; 51
  175. ea: 68 f0 brcs .+26 ; 0x106 <s_vReadButtons+0x44>
  176. ec: 06 c0 rjmp .+12 ; 0xfa <s_vReadButtons+0x38>
  177. {
  178. g_u8ButtonCountBot++;
  179. }
  180. else
  181. {
  182. g_u8ButtonCountBot = 0U; //reset button counter
  183. ee: 10 92 26 01 sts 0x0126, r1 ; 0x800126 <g_u8ButtonCountBot>
  184. }
  185. if ( g_u8ButtonCountTop > BUTTON_THRESHOLD )
  186. f2: 80 91 27 01 lds r24, 0x0127 ; 0x800127 <g_u8ButtonCountTop>
  187. f6: 83 33 cpi r24, 0x33 ; 51
  188. f8: 68 f0 brcs .+26 ; 0x114 <s_vReadButtons+0x52>
  189. {
  190. g_u8ButtonCountTop = 0U; //reset top counter
  191. fa: 10 92 27 01 sts 0x0127, r1 ; 0x800127 <g_u8ButtonCountTop>
  192. g_u8Mode = MODE_ANIMATION_1;
  193. fe: 81 e0 ldi r24, 0x01 ; 1
  194. 100: 80 93 25 01 sts 0x0125, r24 ; 0x800125 <g_u8Mode>
  195. 104: 08 95 ret
  196. }
  197. else if ( g_u8ButtonCountBot > BUTTON_THRESHOLD )
  198. 106: 83 33 cpi r24, 0x33 ; 51
  199. 108: 28 f0 brcs .+10 ; 0x114 <s_vReadButtons+0x52>
  200. {
  201. g_u8ButtonCountBot = 0U; //reset bottom counter
  202. 10a: 10 92 26 01 sts 0x0126, r1 ; 0x800126 <g_u8ButtonCountBot>
  203. g_u8Mode = MODE_ANIMATION_2;
  204. 10e: 82 e0 ldi r24, 0x02 ; 2
  205. 110: 80 93 25 01 sts 0x0125, r24 ; 0x800125 <g_u8Mode>
  206. 114: 08 95 ret
  207. 00000116 <__vector_11>:
  208. /************************************************************************/
  209. /* Timer1 ISR - show values on display */
  210. /************************************************************************/
  211. ISR ( TIMER1_COMPA_vect )
  212. {
  213. 116: 1f 92 push r1
  214. 118: 0f 92 push r0
  215. 11a: 0f b6 in r0, 0x3f ; 63
  216. 11c: 0f 92 push r0
  217. 11e: 11 24 eor r1, r1
  218. 120: 2f 93 push r18
  219. 122: 3f 93 push r19
  220. 124: 4f 93 push r20
  221. 126: 5f 93 push r21
  222. 128: 6f 93 push r22
  223. 12a: 7f 93 push r23
  224. 12c: 8f 93 push r24
  225. 12e: 9f 93 push r25
  226. 130: af 93 push r26
  227. 132: bf 93 push r27
  228. 134: ef 93 push r30
  229. 136: ff 93 push r31
  230. PORTB = 0;
  231. 138: 15 b8 out 0x05, r1 ; 5
  232. PORTD = 0;
  233. 13a: 1b b8 out 0x0b, r1 ; 11
  234. #else
  235. //round up by default
  236. __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
  237. #endif
  238. __builtin_avr_delay_cycles(__ticks_dc);
  239. 13c: 8d e0 ldi r24, 0x0D ; 13
  240. 13e: 8a 95 dec r24
  241. 140: f1 f7 brne .-4 ; 0x13e <__vector_11+0x28>
  242. 142: 00 00 nop
  243. _delay_us(2);
  244. PORTB = SELECT_DIGIT(g_u8ISRDigitSelect);
  245. 144: 81 e0 ldi r24, 0x01 ; 1
  246. 146: 90 e0 ldi r25, 0x00 ; 0
  247. 148: 00 90 24 01 lds r0, 0x0124 ; 0x800124 <__data_end>
  248. 14c: 02 c0 rjmp .+4 ; 0x152 <__vector_11+0x3c>
  249. 14e: 88 0f add r24, r24
  250. 150: 99 1f adc r25, r25
  251. 152: 0a 94 dec r0
  252. 154: e2 f7 brpl .-8 ; 0x14e <__vector_11+0x38>
  253. 156: 85 b9 out 0x05, r24 ; 5
  254. PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]];
  255. 158: e0 91 24 01 lds r30, 0x0124 ; 0x800124 <__data_end>
  256. 15c: f0 e0 ldi r31, 0x00 ; 0
  257. 15e: e0 50 subi r30, 0x00 ; 0
  258. 160: ff 4f sbci r31, 0xFF ; 255
  259. 162: e0 81 ld r30, Z
  260. 164: f0 e0 ldi r31, 0x00 ; 0
  261. 166: ed 5f subi r30, 0xFD ; 253
  262. 168: fe 4f sbci r31, 0xFE ; 254
  263. 16a: 80 81 ld r24, Z
  264. 16c: 8b b9 out 0x0b, r24 ; 11
  265. g_u8ISRDigitSelect++;
  266. 16e: 80 91 24 01 lds r24, 0x0124 ; 0x800124 <__data_end>
  267. 172: 8f 5f subi r24, 0xFF ; 255
  268. if (g_u8ISRDigitSelect > 2U)
  269. 174: 83 30 cpi r24, 0x03 ; 3
  270. 176: 18 f4 brcc .+6 ; 0x17e <__vector_11+0x68>
  271. PORTB = 0;
  272. PORTD = 0;
  273. _delay_us(2);
  274. PORTB = SELECT_DIGIT(g_u8ISRDigitSelect);
  275. PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]];
  276. g_u8ISRDigitSelect++;
  277. 178: 80 93 24 01 sts 0x0124, r24 ; 0x800124 <__data_end>
  278. 17c: 02 c0 rjmp .+4 ; 0x182 <__vector_11+0x6c>
  279. if (g_u8ISRDigitSelect > 2U)
  280. {
  281. g_u8ISRDigitSelect = 0U;
  282. 17e: 10 92 24 01 sts 0x0124, r1 ; 0x800124 <__data_end>
  283. }
  284. /* Read and evaluate button status */
  285. s_vReadButtons();
  286. 182: 9f df rcall .-194 ; 0xc2 <s_vReadButtons>
  287. }
  288. 184: ff 91 pop r31
  289. 186: ef 91 pop r30
  290. 188: bf 91 pop r27
  291. 18a: af 91 pop r26
  292. 18c: 9f 91 pop r25
  293. 18e: 8f 91 pop r24
  294. 190: 7f 91 pop r23
  295. 192: 6f 91 pop r22
  296. 194: 5f 91 pop r21
  297. 196: 4f 91 pop r20
  298. 198: 3f 91 pop r19
  299. 19a: 2f 91 pop r18
  300. 19c: 0f 90 pop r0
  301. 19e: 0f be out 0x3f, r0 ; 63
  302. 1a0: 0f 90 pop r0
  303. 1a2: 1f 90 pop r1
  304. 1a4: 18 95 reti
  305. 000001a6 <s_vShowAnim>:
  306. /************************************************************************/
  307. /* Set display digits individually */
  308. /************************************************************************/
  309. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  310. {
  311. g_au8Digits[DIGIT_TENS] = u8Tens;
  312. 1a6: e0 e0 ldi r30, 0x00 ; 0
  313. 1a8: f1 e0 ldi r31, 0x01 ; 1
  314. 1aa: 90 e1 ldi r25, 0x10 ; 16
  315. 1ac: 92 83 std Z+2, r25 ; 0x02
  316. g_au8Digits[DIGIT_ONES] = u8Ones;
  317. 1ae: 91 83 std Z+1, r25 ; 0x01
  318. g_au8Digits[DIGIT_UNIT] = u8Unit;
  319. 1b0: 90 83 st Z, r25
  320. #else
  321. //round up by default
  322. __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
  323. #endif
  324. __builtin_avr_delay_cycles(__ticks_dc);
  325. 1b2: 2f eb ldi r18, 0xBF ; 191
  326. 1b4: 35 e4 ldi r19, 0x45 ; 69
  327. 1b6: 44 e0 ldi r20, 0x04 ; 4
  328. 1b8: 21 50 subi r18, 0x01 ; 1
  329. 1ba: 30 40 sbci r19, 0x00 ; 0
  330. 1bc: 40 40 sbci r20, 0x00 ; 0
  331. 1be: e1 f7 brne .-8 ; 0x1b8 <s_vShowAnim+0x12>
  332. 1c0: 00 c0 rjmp .+0 ; 0x1c2 <s_vShowAnim+0x1c>
  333. 1c2: 00 00 nop
  334. /************************************************************************/
  335. void s_vShowAnim( uint8_t u8Select )
  336. {
  337. s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF );
  338. _delay_ms(ANIMATION_DELAY_MS);
  339. switch ( u8Select )
  340. 1c4: 81 30 cpi r24, 0x01 ; 1
  341. 1c6: 21 f0 breq .+8 ; 0x1d0 <s_vShowAnim+0x2a>
  342. 1c8: 82 30 cpi r24, 0x02 ; 2
  343. 1ca: 09 f4 brne .+2 ; 0x1ce <s_vShowAnim+0x28>
  344. 1cc: e2 c0 rjmp .+452 ; 0x392 <s_vShowAnim+0x1ec>
  345. 1ce: c1 c1 rjmp .+898 ; 0x552 <__stack+0x53>
  346. /************************************************************************/
  347. /* Set display digits individually */
  348. /************************************************************************/
  349. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  350. {
  351. g_au8Digits[DIGIT_TENS] = u8Tens;
  352. 1d0: e0 e0 ldi r30, 0x00 ; 0
  353. 1d2: f1 e0 ldi r31, 0x01 ; 1
  354. 1d4: 22 e1 ldi r18, 0x12 ; 18
  355. 1d6: 22 83 std Z+2, r18 ; 0x02
  356. g_au8Digits[DIGIT_ONES] = u8Ones;
  357. 1d8: 90 e1 ldi r25, 0x10 ; 16
  358. 1da: 91 83 std Z+1, r25 ; 0x01
  359. g_au8Digits[DIGIT_UNIT] = u8Unit;
  360. 1dc: 90 83 st Z, r25
  361. 1de: 5f eb ldi r21, 0xBF ; 191
  362. 1e0: 65 e4 ldi r22, 0x45 ; 69
  363. 1e2: 74 e0 ldi r23, 0x04 ; 4
  364. 1e4: 51 50 subi r21, 0x01 ; 1
  365. 1e6: 60 40 sbci r22, 0x00 ; 0
  366. 1e8: 70 40 sbci r23, 0x00 ; 0
  367. 1ea: e1 f7 brne .-8 ; 0x1e4 <s_vShowAnim+0x3e>
  368. 1ec: 00 c0 rjmp .+0 ; 0x1ee <s_vShowAnim+0x48>
  369. 1ee: 00 00 nop
  370. /************************************************************************/
  371. /* Set display digits individually */
  372. /************************************************************************/
  373. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  374. {
  375. g_au8Digits[DIGIT_TENS] = u8Tens;
  376. 1f0: 3c e0 ldi r19, 0x0C ; 12
  377. 1f2: 32 83 std Z+2, r19 ; 0x02
  378. g_au8Digits[DIGIT_ONES] = u8Ones;
  379. 1f4: 91 83 std Z+1, r25 ; 0x01
  380. g_au8Digits[DIGIT_UNIT] = u8Unit;
  381. 1f6: 90 83 st Z, r25
  382. 1f8: 8f eb ldi r24, 0xBF ; 191
  383. 1fa: a5 e4 ldi r26, 0x45 ; 69
  384. 1fc: 44 e0 ldi r20, 0x04 ; 4
  385. 1fe: 81 50 subi r24, 0x01 ; 1
  386. 200: a0 40 sbci r26, 0x00 ; 0
  387. 202: 40 40 sbci r20, 0x00 ; 0
  388. 204: e1 f7 brne .-8 ; 0x1fe <s_vShowAnim+0x58>
  389. 206: 00 c0 rjmp .+0 ; 0x208 <s_vShowAnim+0x62>
  390. 208: 00 00 nop
  391. /************************************************************************/
  392. /* Set display digits individually */
  393. /************************************************************************/
  394. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  395. {
  396. g_au8Digits[DIGIT_TENS] = u8Tens;
  397. 20a: 88 e0 ldi r24, 0x08 ; 8
  398. 20c: 82 83 std Z+2, r24 ; 0x02
  399. g_au8Digits[DIGIT_ONES] = u8Ones;
  400. 20e: 91 83 std Z+1, r25 ; 0x01
  401. g_au8Digits[DIGIT_UNIT] = u8Unit;
  402. 210: 90 83 st Z, r25
  403. 212: 5f eb ldi r21, 0xBF ; 191
  404. 214: 65 e4 ldi r22, 0x45 ; 69
  405. 216: 74 e0 ldi r23, 0x04 ; 4
  406. 218: 51 50 subi r21, 0x01 ; 1
  407. 21a: 60 40 sbci r22, 0x00 ; 0
  408. 21c: 70 40 sbci r23, 0x00 ; 0
  409. 21e: e1 f7 brne .-8 ; 0x218 <s_vShowAnim+0x72>
  410. 220: 00 c0 rjmp .+0 ; 0x222 <s_vShowAnim+0x7c>
  411. 222: 00 00 nop
  412. /************************************************************************/
  413. /* Set display digits individually */
  414. /************************************************************************/
  415. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  416. {
  417. g_au8Digits[DIGIT_TENS] = u8Tens;
  418. 224: 82 83 std Z+2, r24 ; 0x02
  419. g_au8Digits[DIGIT_ONES] = u8Ones;
  420. 226: 21 83 std Z+1, r18 ; 0x01
  421. g_au8Digits[DIGIT_UNIT] = u8Unit;
  422. 228: 90 83 st Z, r25
  423. 22a: af eb ldi r26, 0xBF ; 191
  424. 22c: 45 e4 ldi r20, 0x45 ; 69
  425. 22e: 54 e0 ldi r21, 0x04 ; 4
  426. 230: a1 50 subi r26, 0x01 ; 1
  427. 232: 40 40 sbci r20, 0x00 ; 0
  428. 234: 50 40 sbci r21, 0x00 ; 0
  429. 236: e1 f7 brne .-8 ; 0x230 <s_vShowAnim+0x8a>
  430. 238: 00 c0 rjmp .+0 ; 0x23a <s_vShowAnim+0x94>
  431. 23a: 00 00 nop
  432. /************************************************************************/
  433. /* Set display digits individually */
  434. /************************************************************************/
  435. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  436. {
  437. g_au8Digits[DIGIT_TENS] = u8Tens;
  438. 23c: 82 83 std Z+2, r24 ; 0x02
  439. g_au8Digits[DIGIT_ONES] = u8Ones;
  440. 23e: 31 83 std Z+1, r19 ; 0x01
  441. g_au8Digits[DIGIT_UNIT] = u8Unit;
  442. 240: 90 83 st Z, r25
  443. 242: 6f eb ldi r22, 0xBF ; 191
  444. 244: 75 e4 ldi r23, 0x45 ; 69
  445. 246: a4 e0 ldi r26, 0x04 ; 4
  446. 248: 61 50 subi r22, 0x01 ; 1
  447. 24a: 70 40 sbci r23, 0x00 ; 0
  448. 24c: a0 40 sbci r26, 0x00 ; 0
  449. 24e: e1 f7 brne .-8 ; 0x248 <s_vShowAnim+0xa2>
  450. 250: 00 c0 rjmp .+0 ; 0x252 <s_vShowAnim+0xac>
  451. 252: 00 00 nop
  452. /************************************************************************/
  453. /* Set display digits individually */
  454. /************************************************************************/
  455. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  456. {
  457. g_au8Digits[DIGIT_TENS] = u8Tens;
  458. 254: 82 83 std Z+2, r24 ; 0x02
  459. g_au8Digits[DIGIT_ONES] = u8Ones;
  460. 256: 81 83 std Z+1, r24 ; 0x01
  461. g_au8Digits[DIGIT_UNIT] = u8Unit;
  462. 258: 90 83 st Z, r25
  463. 25a: 4f eb ldi r20, 0xBF ; 191
  464. 25c: 55 e4 ldi r21, 0x45 ; 69
  465. 25e: 64 e0 ldi r22, 0x04 ; 4
  466. 260: 41 50 subi r20, 0x01 ; 1
  467. 262: 50 40 sbci r21, 0x00 ; 0
  468. 264: 60 40 sbci r22, 0x00 ; 0
  469. 266: e1 f7 brne .-8 ; 0x260 <s_vShowAnim+0xba>
  470. 268: 00 c0 rjmp .+0 ; 0x26a <s_vShowAnim+0xc4>
  471. 26a: 00 00 nop
  472. /************************************************************************/
  473. /* Set display digits individually */
  474. /************************************************************************/
  475. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  476. {
  477. g_au8Digits[DIGIT_TENS] = u8Tens;
  478. 26c: 82 83 std Z+2, r24 ; 0x02
  479. g_au8Digits[DIGIT_ONES] = u8Ones;
  480. 26e: 81 83 std Z+1, r24 ; 0x01
  481. g_au8Digits[DIGIT_UNIT] = u8Unit;
  482. 270: 41 e0 ldi r20, 0x01 ; 1
  483. 272: 40 83 st Z, r20
  484. 274: 7f eb ldi r23, 0xBF ; 191
  485. 276: a5 e4 ldi r26, 0x45 ; 69
  486. 278: 54 e0 ldi r21, 0x04 ; 4
  487. 27a: 71 50 subi r23, 0x01 ; 1
  488. 27c: a0 40 sbci r26, 0x00 ; 0
  489. 27e: 50 40 sbci r21, 0x00 ; 0
  490. 280: e1 f7 brne .-8 ; 0x27a <s_vShowAnim+0xd4>
  491. 282: 00 c0 rjmp .+0 ; 0x284 <s_vShowAnim+0xde>
  492. 284: 00 00 nop
  493. /************************************************************************/
  494. /* Set display digits individually */
  495. /************************************************************************/
  496. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  497. {
  498. g_au8Digits[DIGIT_TENS] = u8Tens;
  499. 286: 82 83 std Z+2, r24 ; 0x02
  500. g_au8Digits[DIGIT_ONES] = u8Ones;
  501. 288: 81 83 std Z+1, r24 ; 0x01
  502. g_au8Digits[DIGIT_UNIT] = u8Unit;
  503. 28a: 53 e0 ldi r21, 0x03 ; 3
  504. 28c: 50 83 st Z, r21
  505. 28e: 6f eb ldi r22, 0xBF ; 191
  506. 290: 75 e4 ldi r23, 0x45 ; 69
  507. 292: a4 e0 ldi r26, 0x04 ; 4
  508. 294: 61 50 subi r22, 0x01 ; 1
  509. 296: 70 40 sbci r23, 0x00 ; 0
  510. 298: a0 40 sbci r26, 0x00 ; 0
  511. 29a: e1 f7 brne .-8 ; 0x294 <s_vShowAnim+0xee>
  512. 29c: 00 c0 rjmp .+0 ; 0x29e <s_vShowAnim+0xf8>
  513. 29e: 00 00 nop
  514. /************************************************************************/
  515. /* Set display digits individually */
  516. /************************************************************************/
  517. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  518. {
  519. g_au8Digits[DIGIT_TENS] = u8Tens;
  520. 2a0: 82 83 std Z+2, r24 ; 0x02
  521. g_au8Digits[DIGIT_ONES] = u8Ones;
  522. 2a2: 81 83 std Z+1, r24 ; 0x01
  523. g_au8Digits[DIGIT_UNIT] = u8Unit;
  524. 2a4: 80 83 st Z, r24
  525. 2a6: 6f eb ldi r22, 0xBF ; 191
  526. 2a8: 75 e4 ldi r23, 0x45 ; 69
  527. 2aa: a4 e0 ldi r26, 0x04 ; 4
  528. 2ac: 61 50 subi r22, 0x01 ; 1
  529. 2ae: 70 40 sbci r23, 0x00 ; 0
  530. 2b0: a0 40 sbci r26, 0x00 ; 0
  531. 2b2: e1 f7 brne .-8 ; 0x2ac <s_vShowAnim+0x106>
  532. 2b4: 00 c0 rjmp .+0 ; 0x2b6 <s_vShowAnim+0x110>
  533. 2b6: 00 00 nop
  534. /************************************************************************/
  535. /* Set display digits individually */
  536. /************************************************************************/
  537. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  538. {
  539. g_au8Digits[DIGIT_TENS] = u8Tens;
  540. 2b8: 82 83 std Z+2, r24 ; 0x02
  541. g_au8Digits[DIGIT_ONES] = u8Ones;
  542. 2ba: 81 83 std Z+1, r24 ; 0x01
  543. g_au8Digits[DIGIT_UNIT] = u8Unit;
  544. 2bc: 80 83 st Z, r24
  545. 2be: 6f eb ldi r22, 0xBF ; 191
  546. 2c0: 75 e4 ldi r23, 0x45 ; 69
  547. 2c2: a4 e0 ldi r26, 0x04 ; 4
  548. 2c4: 61 50 subi r22, 0x01 ; 1
  549. 2c6: 70 40 sbci r23, 0x00 ; 0
  550. 2c8: a0 40 sbci r26, 0x00 ; 0
  551. 2ca: e1 f7 brne .-8 ; 0x2c4 <s_vShowAnim+0x11e>
  552. 2cc: 00 c0 rjmp .+0 ; 0x2ce <s_vShowAnim+0x128>
  553. 2ce: 00 00 nop
  554. /************************************************************************/
  555. /* Set display digits individually */
  556. /************************************************************************/
  557. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  558. {
  559. g_au8Digits[DIGIT_TENS] = u8Tens;
  560. 2d0: 82 83 std Z+2, r24 ; 0x02
  561. g_au8Digits[DIGIT_ONES] = u8Ones;
  562. 2d2: 81 83 std Z+1, r24 ; 0x01
  563. g_au8Digits[DIGIT_UNIT] = u8Unit;
  564. 2d4: 50 83 st Z, r21
  565. 2d6: 5f eb ldi r21, 0xBF ; 191
  566. 2d8: 65 e4 ldi r22, 0x45 ; 69
  567. 2da: 74 e0 ldi r23, 0x04 ; 4
  568. 2dc: 51 50 subi r21, 0x01 ; 1
  569. 2de: 60 40 sbci r22, 0x00 ; 0
  570. 2e0: 70 40 sbci r23, 0x00 ; 0
  571. 2e2: e1 f7 brne .-8 ; 0x2dc <s_vShowAnim+0x136>
  572. 2e4: 00 c0 rjmp .+0 ; 0x2e6 <s_vShowAnim+0x140>
  573. 2e6: 00 00 nop
  574. /************************************************************************/
  575. /* Set display digits individually */
  576. /************************************************************************/
  577. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  578. {
  579. g_au8Digits[DIGIT_TENS] = u8Tens;
  580. 2e8: 82 83 std Z+2, r24 ; 0x02
  581. g_au8Digits[DIGIT_ONES] = u8Ones;
  582. 2ea: 81 83 std Z+1, r24 ; 0x01
  583. g_au8Digits[DIGIT_UNIT] = u8Unit;
  584. 2ec: 40 83 st Z, r20
  585. 2ee: af eb ldi r26, 0xBF ; 191
  586. 2f0: 45 e4 ldi r20, 0x45 ; 69
  587. 2f2: 54 e0 ldi r21, 0x04 ; 4
  588. 2f4: a1 50 subi r26, 0x01 ; 1
  589. 2f6: 40 40 sbci r20, 0x00 ; 0
  590. 2f8: 50 40 sbci r21, 0x00 ; 0
  591. 2fa: e1 f7 brne .-8 ; 0x2f4 <s_vShowAnim+0x14e>
  592. 2fc: 00 c0 rjmp .+0 ; 0x2fe <s_vShowAnim+0x158>
  593. 2fe: 00 00 nop
  594. /************************************************************************/
  595. /* Set display digits individually */
  596. /************************************************************************/
  597. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  598. {
  599. g_au8Digits[DIGIT_TENS] = u8Tens;
  600. 300: 82 83 std Z+2, r24 ; 0x02
  601. g_au8Digits[DIGIT_ONES] = u8Ones;
  602. 302: 81 83 std Z+1, r24 ; 0x01
  603. g_au8Digits[DIGIT_UNIT] = u8Unit;
  604. 304: 90 83 st Z, r25
  605. 306: 6f eb ldi r22, 0xBF ; 191
  606. 308: 75 e4 ldi r23, 0x45 ; 69
  607. 30a: a4 e0 ldi r26, 0x04 ; 4
  608. 30c: 61 50 subi r22, 0x01 ; 1
  609. 30e: 70 40 sbci r23, 0x00 ; 0
  610. 310: a0 40 sbci r26, 0x00 ; 0
  611. 312: e1 f7 brne .-8 ; 0x30c <s_vShowAnim+0x166>
  612. 314: 00 c0 rjmp .+0 ; 0x316 <s_vShowAnim+0x170>
  613. 316: 00 00 nop
  614. /************************************************************************/
  615. /* Set display digits individually */
  616. /************************************************************************/
  617. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  618. {
  619. g_au8Digits[DIGIT_TENS] = u8Tens;
  620. 318: 82 83 std Z+2, r24 ; 0x02
  621. g_au8Digits[DIGIT_ONES] = u8Ones;
  622. 31a: 31 83 std Z+1, r19 ; 0x01
  623. g_au8Digits[DIGIT_UNIT] = u8Unit;
  624. 31c: 90 83 st Z, r25
  625. 31e: 4f eb ldi r20, 0xBF ; 191
  626. 320: 55 e4 ldi r21, 0x45 ; 69
  627. 322: 64 e0 ldi r22, 0x04 ; 4
  628. 324: 41 50 subi r20, 0x01 ; 1
  629. 326: 50 40 sbci r21, 0x00 ; 0
  630. 328: 60 40 sbci r22, 0x00 ; 0
  631. 32a: e1 f7 brne .-8 ; 0x324 <s_vShowAnim+0x17e>
  632. 32c: 00 c0 rjmp .+0 ; 0x32e <s_vShowAnim+0x188>
  633. 32e: 00 00 nop
  634. /************************************************************************/
  635. /* Set display digits individually */
  636. /************************************************************************/
  637. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  638. {
  639. g_au8Digits[DIGIT_TENS] = u8Tens;
  640. 330: 82 83 std Z+2, r24 ; 0x02
  641. g_au8Digits[DIGIT_ONES] = u8Ones;
  642. 332: 21 83 std Z+1, r18 ; 0x01
  643. g_au8Digits[DIGIT_UNIT] = u8Unit;
  644. 334: 90 83 st Z, r25
  645. 336: 7f eb ldi r23, 0xBF ; 191
  646. 338: a5 e4 ldi r26, 0x45 ; 69
  647. 33a: 44 e0 ldi r20, 0x04 ; 4
  648. 33c: 71 50 subi r23, 0x01 ; 1
  649. 33e: a0 40 sbci r26, 0x00 ; 0
  650. 340: 40 40 sbci r20, 0x00 ; 0
  651. 342: e1 f7 brne .-8 ; 0x33c <s_vShowAnim+0x196>
  652. 344: 00 c0 rjmp .+0 ; 0x346 <s_vShowAnim+0x1a0>
  653. 346: 00 00 nop
  654. /************************************************************************/
  655. /* Set display digits individually */
  656. /************************************************************************/
  657. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  658. {
  659. g_au8Digits[DIGIT_TENS] = u8Tens;
  660. 348: 82 83 std Z+2, r24 ; 0x02
  661. g_au8Digits[DIGIT_ONES] = u8Ones;
  662. 34a: 91 83 std Z+1, r25 ; 0x01
  663. g_au8Digits[DIGIT_UNIT] = u8Unit;
  664. 34c: 90 83 st Z, r25
  665. 34e: 5f eb ldi r21, 0xBF ; 191
  666. 350: 65 e4 ldi r22, 0x45 ; 69
  667. 352: 74 e0 ldi r23, 0x04 ; 4
  668. 354: 51 50 subi r21, 0x01 ; 1
  669. 356: 60 40 sbci r22, 0x00 ; 0
  670. 358: 70 40 sbci r23, 0x00 ; 0
  671. 35a: e1 f7 brne .-8 ; 0x354 <s_vShowAnim+0x1ae>
  672. 35c: 00 c0 rjmp .+0 ; 0x35e <s_vShowAnim+0x1b8>
  673. 35e: 00 00 nop
  674. /************************************************************************/
  675. /* Set display digits individually */
  676. /************************************************************************/
  677. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  678. {
  679. g_au8Digits[DIGIT_TENS] = u8Tens;
  680. 360: 32 83 std Z+2, r19 ; 0x02
  681. g_au8Digits[DIGIT_ONES] = u8Ones;
  682. 362: 91 83 std Z+1, r25 ; 0x01
  683. g_au8Digits[DIGIT_UNIT] = u8Unit;
  684. 364: 90 83 st Z, r25
  685. 366: 8f eb ldi r24, 0xBF ; 191
  686. 368: a5 e4 ldi r26, 0x45 ; 69
  687. 36a: 34 e0 ldi r19, 0x04 ; 4
  688. 36c: 81 50 subi r24, 0x01 ; 1
  689. 36e: a0 40 sbci r26, 0x00 ; 0
  690. 370: 30 40 sbci r19, 0x00 ; 0
  691. 372: e1 f7 brne .-8 ; 0x36c <s_vShowAnim+0x1c6>
  692. 374: 00 c0 rjmp .+0 ; 0x376 <s_vShowAnim+0x1d0>
  693. 376: 00 00 nop
  694. /************************************************************************/
  695. /* Set display digits individually */
  696. /************************************************************************/
  697. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  698. {
  699. g_au8Digits[DIGIT_TENS] = u8Tens;
  700. 378: 22 83 std Z+2, r18 ; 0x02
  701. g_au8Digits[DIGIT_ONES] = u8Ones;
  702. 37a: 91 83 std Z+1, r25 ; 0x01
  703. g_au8Digits[DIGIT_UNIT] = u8Unit;
  704. 37c: 90 83 st Z, r25
  705. 37e: 4f eb ldi r20, 0xBF ; 191
  706. 380: 55 e4 ldi r21, 0x45 ; 69
  707. 382: 64 e0 ldi r22, 0x04 ; 4
  708. 384: 41 50 subi r20, 0x01 ; 1
  709. 386: 50 40 sbci r21, 0x00 ; 0
  710. 388: 60 40 sbci r22, 0x00 ; 0
  711. 38a: e1 f7 brne .-8 ; 0x384 <s_vShowAnim+0x1de>
  712. 38c: 00 c0 rjmp .+0 ; 0x38e <s_vShowAnim+0x1e8>
  713. 38e: 00 00 nop
  714. 390: e0 c0 rjmp .+448 ; 0x552 <__stack+0x53>
  715. /************************************************************************/
  716. /* Set display digits individually */
  717. /************************************************************************/
  718. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  719. {
  720. g_au8Digits[DIGIT_TENS] = u8Tens;
  721. 392: e0 e0 ldi r30, 0x00 ; 0
  722. 394: f1 e0 ldi r31, 0x01 ; 1
  723. 396: 22 e1 ldi r18, 0x12 ; 18
  724. 398: 22 83 std Z+2, r18 ; 0x02
  725. g_au8Digits[DIGIT_ONES] = u8Ones;
  726. 39a: 80 e1 ldi r24, 0x10 ; 16
  727. 39c: 81 83 std Z+1, r24 ; 0x01
  728. g_au8Digits[DIGIT_UNIT] = u8Unit;
  729. 39e: 80 83 st Z, r24
  730. 3a0: 7f eb ldi r23, 0xBF ; 191
  731. 3a2: 95 e4 ldi r25, 0x45 ; 69
  732. 3a4: a4 e0 ldi r26, 0x04 ; 4
  733. 3a6: 71 50 subi r23, 0x01 ; 1
  734. 3a8: 90 40 sbci r25, 0x00 ; 0
  735. 3aa: a0 40 sbci r26, 0x00 ; 0
  736. 3ac: e1 f7 brne .-8 ; 0x3a6 <s_vShowAnim+0x200>
  737. 3ae: 00 c0 rjmp .+0 ; 0x3b0 <s_vShowAnim+0x20a>
  738. 3b0: 00 00 nop
  739. /************************************************************************/
  740. /* Set display digits individually */
  741. /************************************************************************/
  742. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  743. {
  744. g_au8Digits[DIGIT_TENS] = u8Tens;
  745. 3b2: 3c e0 ldi r19, 0x0C ; 12
  746. 3b4: 32 83 std Z+2, r19 ; 0x02
  747. g_au8Digits[DIGIT_ONES] = u8Ones;
  748. 3b6: 81 83 std Z+1, r24 ; 0x01
  749. g_au8Digits[DIGIT_UNIT] = u8Unit;
  750. 3b8: 80 83 st Z, r24
  751. 3ba: 4f eb ldi r20, 0xBF ; 191
  752. 3bc: 55 e4 ldi r21, 0x45 ; 69
  753. 3be: 64 e0 ldi r22, 0x04 ; 4
  754. 3c0: 41 50 subi r20, 0x01 ; 1
  755. 3c2: 50 40 sbci r21, 0x00 ; 0
  756. 3c4: 60 40 sbci r22, 0x00 ; 0
  757. 3c6: e1 f7 brne .-8 ; 0x3c0 <s_vShowAnim+0x21a>
  758. 3c8: 00 c0 rjmp .+0 ; 0x3ca <s_vShowAnim+0x224>
  759. 3ca: 00 00 nop
  760. /************************************************************************/
  761. /* Set display digits individually */
  762. /************************************************************************/
  763. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  764. {
  765. g_au8Digits[DIGIT_TENS] = u8Tens;
  766. 3cc: 98 e0 ldi r25, 0x08 ; 8
  767. 3ce: 92 83 std Z+2, r25 ; 0x02
  768. g_au8Digits[DIGIT_ONES] = u8Ones;
  769. 3d0: 81 83 std Z+1, r24 ; 0x01
  770. g_au8Digits[DIGIT_UNIT] = u8Unit;
  771. 3d2: 80 83 st Z, r24
  772. 3d4: 7f eb ldi r23, 0xBF ; 191
  773. 3d6: a5 e4 ldi r26, 0x45 ; 69
  774. 3d8: 44 e0 ldi r20, 0x04 ; 4
  775. 3da: 71 50 subi r23, 0x01 ; 1
  776. 3dc: a0 40 sbci r26, 0x00 ; 0
  777. 3de: 40 40 sbci r20, 0x00 ; 0
  778. 3e0: e1 f7 brne .-8 ; 0x3da <s_vShowAnim+0x234>
  779. 3e2: 00 c0 rjmp .+0 ; 0x3e4 <s_vShowAnim+0x23e>
  780. 3e4: 00 00 nop
  781. /************************************************************************/
  782. /* Set display digits individually */
  783. /************************************************************************/
  784. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  785. {
  786. g_au8Digits[DIGIT_TENS] = u8Tens;
  787. 3e6: 92 83 std Z+2, r25 ; 0x02
  788. g_au8Digits[DIGIT_ONES] = u8Ones;
  789. 3e8: 21 83 std Z+1, r18 ; 0x01
  790. g_au8Digits[DIGIT_UNIT] = u8Unit;
  791. 3ea: 80 83 st Z, r24
  792. 3ec: 5f eb ldi r21, 0xBF ; 191
  793. 3ee: 65 e4 ldi r22, 0x45 ; 69
  794. 3f0: 74 e0 ldi r23, 0x04 ; 4
  795. 3f2: 51 50 subi r21, 0x01 ; 1
  796. 3f4: 60 40 sbci r22, 0x00 ; 0
  797. 3f6: 70 40 sbci r23, 0x00 ; 0
  798. 3f8: e1 f7 brne .-8 ; 0x3f2 <s_vShowAnim+0x24c>
  799. 3fa: 00 c0 rjmp .+0 ; 0x3fc <s_vShowAnim+0x256>
  800. 3fc: 00 00 nop
  801. /************************************************************************/
  802. /* Set display digits individually */
  803. /************************************************************************/
  804. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  805. {
  806. g_au8Digits[DIGIT_TENS] = u8Tens;
  807. 3fe: 92 83 std Z+2, r25 ; 0x02
  808. g_au8Digits[DIGIT_ONES] = u8Ones;
  809. 400: 31 83 std Z+1, r19 ; 0x01
  810. g_au8Digits[DIGIT_UNIT] = u8Unit;
  811. 402: 80 83 st Z, r24
  812. 404: af eb ldi r26, 0xBF ; 191
  813. 406: 45 e4 ldi r20, 0x45 ; 69
  814. 408: 54 e0 ldi r21, 0x04 ; 4
  815. 40a: a1 50 subi r26, 0x01 ; 1
  816. 40c: 40 40 sbci r20, 0x00 ; 0
  817. 40e: 50 40 sbci r21, 0x00 ; 0
  818. 410: e1 f7 brne .-8 ; 0x40a <__LOCK_REGION_LENGTH__+0xa>
  819. 412: 00 c0 rjmp .+0 ; 0x414 <__LOCK_REGION_LENGTH__+0x14>
  820. 414: 00 00 nop
  821. /************************************************************************/
  822. /* Set display digits individually */
  823. /************************************************************************/
  824. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  825. {
  826. g_au8Digits[DIGIT_TENS] = u8Tens;
  827. 416: 92 83 std Z+2, r25 ; 0x02
  828. g_au8Digits[DIGIT_ONES] = u8Ones;
  829. 418: 91 83 std Z+1, r25 ; 0x01
  830. g_au8Digits[DIGIT_UNIT] = u8Unit;
  831. 41a: 80 83 st Z, r24
  832. 41c: 6f eb ldi r22, 0xBF ; 191
  833. 41e: 75 e4 ldi r23, 0x45 ; 69
  834. 420: a4 e0 ldi r26, 0x04 ; 4
  835. 422: 61 50 subi r22, 0x01 ; 1
  836. 424: 70 40 sbci r23, 0x00 ; 0
  837. 426: a0 40 sbci r26, 0x00 ; 0
  838. 428: e1 f7 brne .-8 ; 0x422 <__LOCK_REGION_LENGTH__+0x22>
  839. 42a: 00 c0 rjmp .+0 ; 0x42c <__LOCK_REGION_LENGTH__+0x2c>
  840. 42c: 00 00 nop
  841. /************************************************************************/
  842. /* Set display digits individually */
  843. /************************************************************************/
  844. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  845. {
  846. g_au8Digits[DIGIT_TENS] = u8Tens;
  847. 42e: 92 83 std Z+2, r25 ; 0x02
  848. g_au8Digits[DIGIT_ONES] = u8Ones;
  849. 430: 91 83 std Z+1, r25 ; 0x01
  850. g_au8Digits[DIGIT_UNIT] = u8Unit;
  851. 432: 41 e0 ldi r20, 0x01 ; 1
  852. 434: 40 83 st Z, r20
  853. 436: 5f eb ldi r21, 0xBF ; 191
  854. 438: 65 e4 ldi r22, 0x45 ; 69
  855. 43a: 74 e0 ldi r23, 0x04 ; 4
  856. 43c: 51 50 subi r21, 0x01 ; 1
  857. 43e: 60 40 sbci r22, 0x00 ; 0
  858. 440: 70 40 sbci r23, 0x00 ; 0
  859. 442: e1 f7 brne .-8 ; 0x43c <__LOCK_REGION_LENGTH__+0x3c>
  860. 444: 00 c0 rjmp .+0 ; 0x446 <__LOCK_REGION_LENGTH__+0x46>
  861. 446: 00 00 nop
  862. /************************************************************************/
  863. /* Set display digits individually */
  864. /************************************************************************/
  865. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  866. {
  867. g_au8Digits[DIGIT_TENS] = u8Tens;
  868. 448: 92 83 std Z+2, r25 ; 0x02
  869. g_au8Digits[DIGIT_ONES] = u8Ones;
  870. 44a: 91 83 std Z+1, r25 ; 0x01
  871. g_au8Digits[DIGIT_UNIT] = u8Unit;
  872. 44c: 53 e0 ldi r21, 0x03 ; 3
  873. 44e: 50 83 st Z, r21
  874. 450: af eb ldi r26, 0xBF ; 191
  875. 452: 65 e4 ldi r22, 0x45 ; 69
  876. 454: 74 e0 ldi r23, 0x04 ; 4
  877. 456: a1 50 subi r26, 0x01 ; 1
  878. 458: 60 40 sbci r22, 0x00 ; 0
  879. 45a: 70 40 sbci r23, 0x00 ; 0
  880. 45c: e1 f7 brne .-8 ; 0x456 <__LOCK_REGION_LENGTH__+0x56>
  881. 45e: 00 c0 rjmp .+0 ; 0x460 <__LOCK_REGION_LENGTH__+0x60>
  882. 460: 00 00 nop
  883. /************************************************************************/
  884. /* Set display digits individually */
  885. /************************************************************************/
  886. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  887. {
  888. g_au8Digits[DIGIT_TENS] = u8Tens;
  889. 462: 92 83 std Z+2, r25 ; 0x02
  890. g_au8Digits[DIGIT_ONES] = u8Ones;
  891. 464: 91 83 std Z+1, r25 ; 0x01
  892. g_au8Digits[DIGIT_UNIT] = u8Unit;
  893. 466: 90 83 st Z, r25
  894. 468: af eb ldi r26, 0xBF ; 191
  895. 46a: 65 e4 ldi r22, 0x45 ; 69
  896. 46c: 74 e0 ldi r23, 0x04 ; 4
  897. 46e: a1 50 subi r26, 0x01 ; 1
  898. 470: 60 40 sbci r22, 0x00 ; 0
  899. 472: 70 40 sbci r23, 0x00 ; 0
  900. 474: e1 f7 brne .-8 ; 0x46e <__LOCK_REGION_LENGTH__+0x6e>
  901. 476: 00 c0 rjmp .+0 ; 0x478 <__LOCK_REGION_LENGTH__+0x78>
  902. 478: 00 00 nop
  903. /************************************************************************/
  904. /* Set display digits individually */
  905. /************************************************************************/
  906. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  907. {
  908. g_au8Digits[DIGIT_TENS] = u8Tens;
  909. 47a: 52 83 std Z+2, r21 ; 0x02
  910. g_au8Digits[DIGIT_ONES] = u8Ones;
  911. 47c: 91 83 std Z+1, r25 ; 0x01
  912. g_au8Digits[DIGIT_UNIT] = u8Unit;
  913. 47e: 90 83 st Z, r25
  914. 480: af eb ldi r26, 0xBF ; 191
  915. 482: 65 e4 ldi r22, 0x45 ; 69
  916. 484: 74 e0 ldi r23, 0x04 ; 4
  917. 486: a1 50 subi r26, 0x01 ; 1
  918. 488: 60 40 sbci r22, 0x00 ; 0
  919. 48a: 70 40 sbci r23, 0x00 ; 0
  920. 48c: e1 f7 brne .-8 ; 0x486 <__LOCK_REGION_LENGTH__+0x86>
  921. 48e: 00 c0 rjmp .+0 ; 0x490 <__LOCK_REGION_LENGTH__+0x90>
  922. 490: 00 00 nop
  923. /************************************************************************/
  924. /* Set display digits individually */
  925. /************************************************************************/
  926. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  927. {
  928. g_au8Digits[DIGIT_TENS] = u8Tens;
  929. 492: 42 83 std Z+2, r20 ; 0x02
  930. g_au8Digits[DIGIT_ONES] = u8Ones;
  931. 494: 91 83 std Z+1, r25 ; 0x01
  932. g_au8Digits[DIGIT_UNIT] = u8Unit;
  933. 496: 90 83 st Z, r25
  934. 498: af eb ldi r26, 0xBF ; 191
  935. 49a: 65 e4 ldi r22, 0x45 ; 69
  936. 49c: 74 e0 ldi r23, 0x04 ; 4
  937. 49e: a1 50 subi r26, 0x01 ; 1
  938. 4a0: 60 40 sbci r22, 0x00 ; 0
  939. 4a2: 70 40 sbci r23, 0x00 ; 0
  940. 4a4: e1 f7 brne .-8 ; 0x49e <__LOCK_REGION_LENGTH__+0x9e>
  941. 4a6: 00 c0 rjmp .+0 ; 0x4a8 <__LOCK_REGION_LENGTH__+0xa8>
  942. 4a8: 00 00 nop
  943. /************************************************************************/
  944. /* Set display digits individually */
  945. /************************************************************************/
  946. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  947. {
  948. g_au8Digits[DIGIT_TENS] = u8Tens;
  949. 4aa: 82 83 std Z+2, r24 ; 0x02
  950. g_au8Digits[DIGIT_ONES] = u8Ones;
  951. 4ac: 91 83 std Z+1, r25 ; 0x01
  952. g_au8Digits[DIGIT_UNIT] = u8Unit;
  953. 4ae: 90 83 st Z, r25
  954. 4b0: af eb ldi r26, 0xBF ; 191
  955. 4b2: 65 e4 ldi r22, 0x45 ; 69
  956. 4b4: 74 e0 ldi r23, 0x04 ; 4
  957. 4b6: a1 50 subi r26, 0x01 ; 1
  958. 4b8: 60 40 sbci r22, 0x00 ; 0
  959. 4ba: 70 40 sbci r23, 0x00 ; 0
  960. 4bc: e1 f7 brne .-8 ; 0x4b6 <__LOCK_REGION_LENGTH__+0xb6>
  961. 4be: 00 c0 rjmp .+0 ; 0x4c0 <__LOCK_REGION_LENGTH__+0xc0>
  962. 4c0: 00 00 nop
  963. /************************************************************************/
  964. /* Set display digits individually */
  965. /************************************************************************/
  966. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  967. {
  968. g_au8Digits[DIGIT_TENS] = u8Tens;
  969. 4c2: 82 83 std Z+2, r24 ; 0x02
  970. g_au8Digits[DIGIT_ONES] = u8Ones;
  971. 4c4: 51 83 std Z+1, r21 ; 0x01
  972. g_au8Digits[DIGIT_UNIT] = u8Unit;
  973. 4c6: 90 83 st Z, r25
  974. 4c8: af eb ldi r26, 0xBF ; 191
  975. 4ca: 55 e4 ldi r21, 0x45 ; 69
  976. 4cc: 64 e0 ldi r22, 0x04 ; 4
  977. 4ce: a1 50 subi r26, 0x01 ; 1
  978. 4d0: 50 40 sbci r21, 0x00 ; 0
  979. 4d2: 60 40 sbci r22, 0x00 ; 0
  980. 4d4: e1 f7 brne .-8 ; 0x4ce <__LOCK_REGION_LENGTH__+0xce>
  981. 4d6: 00 c0 rjmp .+0 ; 0x4d8 <__LOCK_REGION_LENGTH__+0xd8>
  982. 4d8: 00 00 nop
  983. /************************************************************************/
  984. /* Set display digits individually */
  985. /************************************************************************/
  986. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  987. {
  988. g_au8Digits[DIGIT_TENS] = u8Tens;
  989. 4da: 82 83 std Z+2, r24 ; 0x02
  990. g_au8Digits[DIGIT_ONES] = u8Ones;
  991. 4dc: 41 83 std Z+1, r20 ; 0x01
  992. g_au8Digits[DIGIT_UNIT] = u8Unit;
  993. 4de: 90 83 st Z, r25
  994. 4e0: 7f eb ldi r23, 0xBF ; 191
  995. 4e2: a5 e4 ldi r26, 0x45 ; 69
  996. 4e4: 44 e0 ldi r20, 0x04 ; 4
  997. 4e6: 71 50 subi r23, 0x01 ; 1
  998. 4e8: a0 40 sbci r26, 0x00 ; 0
  999. 4ea: 40 40 sbci r20, 0x00 ; 0
  1000. 4ec: e1 f7 brne .-8 ; 0x4e6 <__LOCK_REGION_LENGTH__+0xe6>
  1001. 4ee: 00 c0 rjmp .+0 ; 0x4f0 <__LOCK_REGION_LENGTH__+0xf0>
  1002. 4f0: 00 00 nop
  1003. /************************************************************************/
  1004. /* Set display digits individually */
  1005. /************************************************************************/
  1006. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1007. {
  1008. g_au8Digits[DIGIT_TENS] = u8Tens;
  1009. 4f2: 82 83 std Z+2, r24 ; 0x02
  1010. g_au8Digits[DIGIT_ONES] = u8Ones;
  1011. 4f4: 81 83 std Z+1, r24 ; 0x01
  1012. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1013. 4f6: 90 83 st Z, r25
  1014. 4f8: 5f eb ldi r21, 0xBF ; 191
  1015. 4fa: 65 e4 ldi r22, 0x45 ; 69
  1016. 4fc: 74 e0 ldi r23, 0x04 ; 4
  1017. 4fe: 51 50 subi r21, 0x01 ; 1
  1018. 500: 60 40 sbci r22, 0x00 ; 0
  1019. 502: 70 40 sbci r23, 0x00 ; 0
  1020. 504: e1 f7 brne .-8 ; 0x4fe <__LOCK_REGION_LENGTH__+0xfe>
  1021. 506: 00 c0 rjmp .+0 ; 0x508 <__stack+0x9>
  1022. 508: 00 00 nop
  1023. /************************************************************************/
  1024. /* Set display digits individually */
  1025. /************************************************************************/
  1026. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1027. {
  1028. g_au8Digits[DIGIT_TENS] = u8Tens;
  1029. 50a: 82 83 std Z+2, r24 ; 0x02
  1030. g_au8Digits[DIGIT_ONES] = u8Ones;
  1031. 50c: 81 83 std Z+1, r24 ; 0x01
  1032. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1033. 50e: 30 83 st Z, r19
  1034. 510: 9f eb ldi r25, 0xBF ; 191
  1035. 512: a5 e4 ldi r26, 0x45 ; 69
  1036. 514: 34 e0 ldi r19, 0x04 ; 4
  1037. 516: 91 50 subi r25, 0x01 ; 1
  1038. 518: a0 40 sbci r26, 0x00 ; 0
  1039. 51a: 30 40 sbci r19, 0x00 ; 0
  1040. 51c: e1 f7 brne .-8 ; 0x516 <__stack+0x17>
  1041. 51e: 00 c0 rjmp .+0 ; 0x520 <__stack+0x21>
  1042. 520: 00 00 nop
  1043. /************************************************************************/
  1044. /* Set display digits individually */
  1045. /************************************************************************/
  1046. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1047. {
  1048. g_au8Digits[DIGIT_TENS] = u8Tens;
  1049. 522: 82 83 std Z+2, r24 ; 0x02
  1050. g_au8Digits[DIGIT_ONES] = u8Ones;
  1051. 524: 81 83 std Z+1, r24 ; 0x01
  1052. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1053. 526: 20 83 st Z, r18
  1054. 528: 4f eb ldi r20, 0xBF ; 191
  1055. 52a: 55 e4 ldi r21, 0x45 ; 69
  1056. 52c: 64 e0 ldi r22, 0x04 ; 4
  1057. 52e: 41 50 subi r20, 0x01 ; 1
  1058. 530: 50 40 sbci r21, 0x00 ; 0
  1059. 532: 60 40 sbci r22, 0x00 ; 0
  1060. 534: e1 f7 brne .-8 ; 0x52e <__stack+0x2f>
  1061. 536: 00 c0 rjmp .+0 ; 0x538 <__stack+0x39>
  1062. 538: 00 00 nop
  1063. /************************************************************************/
  1064. /* Set display digits individually */
  1065. /************************************************************************/
  1066. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1067. {
  1068. g_au8Digits[DIGIT_TENS] = u8Tens;
  1069. 53a: 82 83 std Z+2, r24 ; 0x02
  1070. g_au8Digits[DIGIT_ONES] = u8Ones;
  1071. 53c: 81 83 std Z+1, r24 ; 0x01
  1072. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1073. 53e: 80 83 st Z, r24
  1074. 540: 7f eb ldi r23, 0xBF ; 191
  1075. 542: 85 e4 ldi r24, 0x45 ; 69
  1076. 544: 94 e0 ldi r25, 0x04 ; 4
  1077. 546: 71 50 subi r23, 0x01 ; 1
  1078. 548: 80 40 sbci r24, 0x00 ; 0
  1079. 54a: 90 40 sbci r25, 0x00 ; 0
  1080. 54c: e1 f7 brne .-8 ; 0x546 <__stack+0x47>
  1081. 54e: 00 c0 rjmp .+0 ; 0x550 <__stack+0x51>
  1082. 550: 00 00 nop
  1083. /************************************************************************/
  1084. /* Set display digits individually */
  1085. /************************************************************************/
  1086. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1087. {
  1088. g_au8Digits[DIGIT_TENS] = u8Tens;
  1089. 552: e0 e0 ldi r30, 0x00 ; 0
  1090. 554: f1 e0 ldi r31, 0x01 ; 1
  1091. 556: 80 e1 ldi r24, 0x10 ; 16
  1092. 558: 82 83 std Z+2, r24 ; 0x02
  1093. g_au8Digits[DIGIT_ONES] = u8Ones;
  1094. 55a: 81 83 std Z+1, r24 ; 0x01
  1095. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1096. 55c: 80 83 st Z, r24
  1097. 55e: af eb ldi r26, 0xBF ; 191
  1098. 560: 25 e4 ldi r18, 0x45 ; 69
  1099. 562: 34 e0 ldi r19, 0x04 ; 4
  1100. 564: a1 50 subi r26, 0x01 ; 1
  1101. 566: 20 40 sbci r18, 0x00 ; 0
  1102. 568: 30 40 sbci r19, 0x00 ; 0
  1103. 56a: e1 f7 brne .-8 ; 0x564 <__stack+0x65>
  1104. 56c: 00 c0 rjmp .+0 ; 0x56e <__stack+0x6f>
  1105. 56e: 00 00 nop
  1106. 570: 08 95 ret
  1107. 00000572 <s_u8DS18B20_Reset>:
  1108. uint8_t s_u8DS18B20_Reset( void )
  1109. {
  1110. uint8_t u8Status;
  1111. //low for 480 us
  1112. DS18B20_PORT &= ~ (1<<DS18B20_DQ); //low
  1113. 572: 43 98 cbi 0x08, 3 ; 8
  1114. DS18B20_DDR |= (1<<DS18B20_DQ); //output
  1115. 574: 3b 9a sbi 0x07, 3 ; 7
  1116. #else
  1117. //round up by default
  1118. __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
  1119. #endif
  1120. __builtin_avr_delay_cycles(__ticks_dc);
  1121. 576: 8f e5 ldi r24, 0x5F ; 95
  1122. 578: 99 e0 ldi r25, 0x09 ; 9
  1123. 57a: 01 97 sbiw r24, 0x01 ; 1
  1124. 57c: f1 f7 brne .-4 ; 0x57a <s_u8DS18B20_Reset+0x8>
  1125. 57e: 00 c0 rjmp .+0 ; 0x580 <s_u8DS18B20_Reset+0xe>
  1126. 580: 00 00 nop
  1127. _delay_us(480);
  1128. //release line and wait for 60 us
  1129. DS18B20_DDR &= ~(1<<DS18B20_DQ); //input
  1130. 582: 3b 98 cbi 0x07, 3 ; 7
  1131. 584: eb e2 ldi r30, 0x2B ; 43
  1132. 586: f1 e0 ldi r31, 0x01 ; 1
  1133. 588: 31 97 sbiw r30, 0x01 ; 1
  1134. 58a: f1 f7 brne .-4 ; 0x588 <s_u8DS18B20_Reset+0x16>
  1135. 58c: 00 c0 rjmp .+0 ; 0x58e <s_u8DS18B20_Reset+0x1c>
  1136. 58e: 00 00 nop
  1137. _delay_us(60);
  1138. //get value and wait 420 us
  1139. u8Status = (DS18B20_PIN & (1<<DS18B20_DQ));
  1140. 590: 86 b1 in r24, 0x06 ; 6
  1141. 592: e3 e3 ldi r30, 0x33 ; 51
  1142. 594: f8 e0 ldi r31, 0x08 ; 8
  1143. 596: 31 97 sbiw r30, 0x01 ; 1
  1144. 598: f1 f7 brne .-4 ; 0x596 <s_u8DS18B20_Reset+0x24>
  1145. 59a: 00 c0 rjmp .+0 ; 0x59c <s_u8DS18B20_Reset+0x2a>
  1146. 59c: 00 00 nop
  1147. _delay_us(420);
  1148. //return the read value: 0=okay, 1=error
  1149. return u8Status;
  1150. }
  1151. 59e: 88 70 andi r24, 0x08 ; 8
  1152. 5a0: 08 95 ret
  1153. 000005a2 <s_vDS18B20_WriteBit>:
  1154. /* Write single bit to DS18B20 (61 us) */
  1155. /************************************************************************/
  1156. void s_vDS18B20_WriteBit( uint8_t u8Bit )
  1157. {
  1158. //low for 1 us
  1159. DS18B20_PORT &= ~ (1U<<DS18B20_DQ); //low
  1160. 5a2: 43 98 cbi 0x08, 3 ; 8
  1161. DS18B20_DDR |= (1U<<DS18B20_DQ); //output
  1162. 5a4: 3b 9a sbi 0x07, 3 ; 7
  1163. 5a6: 96 e0 ldi r25, 0x06 ; 6
  1164. 5a8: 9a 95 dec r25
  1165. 5aa: f1 f7 brne .-4 ; 0x5a8 <s_vDS18B20_WriteBit+0x6>
  1166. 5ac: 00 c0 rjmp .+0 ; 0x5ae <s_vDS18B20_WriteBit+0xc>
  1167. _delay_us(1);
  1168. //if we want to write 1, release the line (if not will keep low)
  1169. if (1U == u8Bit )
  1170. 5ae: 81 30 cpi r24, 0x01 ; 1
  1171. 5b0: 09 f4 brne .+2 ; 0x5b4 <s_vDS18B20_WriteBit+0x12>
  1172. {
  1173. DS18B20_DDR &= ~(1<<DS18B20_DQ); //input
  1174. 5b2: 3b 98 cbi 0x07, 3 ; 7
  1175. 5b4: 8b e2 ldi r24, 0x2B ; 43
  1176. 5b6: 91 e0 ldi r25, 0x01 ; 1
  1177. 5b8: 01 97 sbiw r24, 0x01 ; 1
  1178. 5ba: f1 f7 brne .-4 ; 0x5b8 <s_vDS18B20_WriteBit+0x16>
  1179. 5bc: 00 c0 rjmp .+0 ; 0x5be <s_vDS18B20_WriteBit+0x1c>
  1180. 5be: 00 00 nop
  1181. }
  1182. //wait 60 us and release the line
  1183. _delay_us(60);
  1184. DS18B20_DDR &= ~(1<<DS18B20_DQ); //input
  1185. 5c0: 3b 98 cbi 0x07, 3 ; 7
  1186. 5c2: 08 95 ret
  1187. 000005c4 <s_vDS18B20_WriteByte>:
  1188. /************************************************************************/
  1189. /* Write byte to DS18B20 (8 * 61 us = 488 us) */
  1190. /************************************************************************/
  1191. void s_vDS18B20_WriteByte( uint8_t u8Byte )
  1192. {
  1193. 5c4: cf 93 push r28
  1194. 5c6: df 93 push r29
  1195. 5c8: d8 2f mov r29, r24
  1196. 5ca: c8 e0 ldi r28, 0x08 ; 8
  1197. uint8_t u8Bits = 8U;
  1198. while ( u8Bits-- )
  1199. {
  1200. s_vDS18B20_WriteBit( u8Byte & 1U );
  1201. 5cc: 8d 2f mov r24, r29
  1202. 5ce: 81 70 andi r24, 0x01 ; 1
  1203. 5d0: e8 df rcall .-48 ; 0x5a2 <s_vDS18B20_WriteBit>
  1204. u8Byte >>= 1U;
  1205. 5d2: d6 95 lsr r29
  1206. 5d4: c1 50 subi r28, 0x01 ; 1
  1207. /************************************************************************/
  1208. void s_vDS18B20_WriteByte( uint8_t u8Byte )
  1209. {
  1210. uint8_t u8Bits = 8U;
  1211. while ( u8Bits-- )
  1212. 5d6: d1 f7 brne .-12 ; 0x5cc <s_vDS18B20_WriteByte+0x8>
  1213. s_vDS18B20_WriteBit( u8Byte & 1U );
  1214. u8Byte >>= 1U;
  1215. }
  1216. return; //void
  1217. }
  1218. 5d8: df 91 pop r29
  1219. 5da: cf 91 pop r28
  1220. 5dc: 08 95 ret
  1221. 000005de <s_u8DS18B20_ReadBit>:
  1222. uint8_t s_u8DS18B20_ReadBit( void )
  1223. {
  1224. uint8_t u8Bit = 0U;
  1225. //low for 1 us
  1226. DS18B20_PORT &= ~ (1U<<DS18B20_DQ); //low
  1227. 5de: 43 98 cbi 0x08, 3 ; 8
  1228. DS18B20_DDR |= (1U<<DS18B20_DQ); //output
  1229. 5e0: 3b 9a sbi 0x07, 3 ; 7
  1230. 5e2: 86 e0 ldi r24, 0x06 ; 6
  1231. 5e4: 8a 95 dec r24
  1232. 5e6: f1 f7 brne .-4 ; 0x5e4 <s_u8DS18B20_ReadBit+0x6>
  1233. 5e8: 00 c0 rjmp .+0 ; 0x5ea <s_u8DS18B20_ReadBit+0xc>
  1234. _delay_us(1);
  1235. //release line and wait for 14 us
  1236. DS18B20_DDR &= ~(1U<<DS18B20_DQ); //input
  1237. 5ea: 3b 98 cbi 0x07, 3 ; 7
  1238. 5ec: ed e5 ldi r30, 0x5D ; 93
  1239. 5ee: ea 95 dec r30
  1240. 5f0: f1 f7 brne .-4 ; 0x5ee <s_u8DS18B20_ReadBit+0x10>
  1241. 5f2: 00 00 nop
  1242. _delay_us(14);
  1243. //read the value
  1244. if ( DS18B20_PIN & (1U<<DS18B20_DQ) )
  1245. 5f4: 86 b1 in r24, 0x06 ; 6
  1246. 5f6: e0 ee ldi r30, 0xE0 ; 224
  1247. 5f8: f0 e0 ldi r31, 0x00 ; 0
  1248. 5fa: 31 97 sbiw r30, 0x01 ; 1
  1249. 5fc: f1 f7 brne .-4 ; 0x5fa <s_u8DS18B20_ReadBit+0x1c>
  1250. 5fe: 00 c0 rjmp .+0 ; 0x600 <s_u8DS18B20_ReadBit+0x22>
  1251. 600: 00 00 nop
  1252. //wait 45 us and return read value
  1253. _delay_us(45);
  1254. return u8Bit;
  1255. }
  1256. 602: 83 fb bst r24, 3
  1257. 604: 88 27 eor r24, r24
  1258. 606: 80 f9 bld r24, 0
  1259. 608: 08 95 ret
  1260. 0000060a <s_u8DS18B20_ReadByte>:
  1261. /************************************************************************/
  1262. /* Read byte from DS18B20 (8 * 60 us = 480 us) */
  1263. /************************************************************************/
  1264. uint8_t s_u8DS18B20_ReadByte( void )
  1265. {
  1266. 60a: cf 93 push r28
  1267. 60c: df 93 push r29
  1268. 60e: d8 e0 ldi r29, 0x08 ; 8
  1269. uint8_t u8Bits = 8U;
  1270. uint8_t n = 0U;
  1271. 610: c0 e0 ldi r28, 0x00 ; 0
  1272. while ( u8Bits-- )
  1273. {
  1274. n >>= 1U;
  1275. n |= (s_u8DS18B20_ReadBit()<<7U);
  1276. 612: e5 df rcall .-54 ; 0x5de <s_u8DS18B20_ReadBit>
  1277. 614: 20 e8 ldi r18, 0x80 ; 128
  1278. 616: 82 9f mul r24, r18
  1279. 618: c0 01 movw r24, r0
  1280. 61a: 11 24 eor r1, r1
  1281. 61c: c6 95 lsr r28
  1282. 61e: c8 2b or r28, r24
  1283. 620: d1 50 subi r29, 0x01 ; 1
  1284. /************************************************************************/
  1285. uint8_t s_u8DS18B20_ReadByte( void )
  1286. {
  1287. uint8_t u8Bits = 8U;
  1288. uint8_t n = 0U;
  1289. while ( u8Bits-- )
  1290. 622: b9 f7 brne .-18 ; 0x612 <s_u8DS18B20_ReadByte+0x8>
  1291. n >>= 1U;
  1292. n |= (s_u8DS18B20_ReadBit()<<7U);
  1293. }
  1294. return n;
  1295. }
  1296. 624: 8c 2f mov r24, r28
  1297. 626: df 91 pop r29
  1298. 628: cf 91 pop r28
  1299. 62a: 08 95 ret
  1300. 0000062c <main>:
  1301. uint8_t u8TempLo, u8TempHi;
  1302. float f32Temperature;
  1303. uint8_t u8Loop = 0U;
  1304. /* Init I/O: */
  1305. s_vInit();
  1306. 62c: 1f dd rcall .-1474 ; 0x6c <s_vInit>
  1307. /************************************************************************/
  1308. /* Set display digits individually */
  1309. /************************************************************************/
  1310. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1311. {
  1312. g_au8Digits[DIGIT_TENS] = u8Tens;
  1313. 62e: e0 e0 ldi r30, 0x00 ; 0
  1314. 630: f1 e0 ldi r31, 0x01 ; 1
  1315. 632: 80 e1 ldi r24, 0x10 ; 16
  1316. 634: 82 83 std Z+2, r24 ; 0x02
  1317. g_au8Digits[DIGIT_ONES] = u8Ones;
  1318. 636: 81 83 std Z+1, r24 ; 0x01
  1319. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1320. 638: 80 83 st Z, r24
  1321. #else
  1322. //round up by default
  1323. __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
  1324. #endif
  1325. __builtin_avr_delay_cycles(__ticks_dc);
  1326. 63a: af e4 ldi r26, 0x4F ; 79
  1327. 63c: b3 ec ldi r27, 0xC3 ; 195
  1328. 63e: 11 97 sbiw r26, 0x01 ; 1
  1329. 640: f1 f7 brne .-4 ; 0x63e <main+0x12>
  1330. 642: 00 c0 rjmp .+0 ; 0x644 <main+0x18>
  1331. 644: 00 00 nop
  1332. /************************************************************************/
  1333. /* Set display digits individually */
  1334. /************************************************************************/
  1335. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1336. {
  1337. g_au8Digits[DIGIT_TENS] = u8Tens;
  1338. 646: 93 e1 ldi r25, 0x13 ; 19
  1339. 648: 92 83 std Z+2, r25 ; 0x02
  1340. g_au8Digits[DIGIT_ONES] = u8Ones;
  1341. 64a: 81 83 std Z+1, r24 ; 0x01
  1342. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1343. 64c: 80 83 st Z, r24
  1344. 64e: bf e7 ldi r27, 0x7F ; 127
  1345. 650: cf e4 ldi r28, 0x4F ; 79
  1346. 652: 22 e1 ldi r18, 0x12 ; 18
  1347. 654: b1 50 subi r27, 0x01 ; 1
  1348. 656: c0 40 sbci r28, 0x00 ; 0
  1349. 658: 20 40 sbci r18, 0x00 ; 0
  1350. 65a: e1 f7 brne .-8 ; 0x654 <main+0x28>
  1351. 65c: 00 c0 rjmp .+0 ; 0x65e <main+0x32>
  1352. 65e: 00 00 nop
  1353. /************************************************************************/
  1354. /* Set display digits individually */
  1355. /************************************************************************/
  1356. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1357. {
  1358. g_au8Digits[DIGIT_TENS] = u8Tens;
  1359. 660: 92 83 std Z+2, r25 ; 0x02
  1360. g_au8Digits[DIGIT_ONES] = u8Ones;
  1361. 662: 91 83 std Z+1, r25 ; 0x01
  1362. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1363. 664: 80 83 st Z, r24
  1364. 666: 3f e7 ldi r19, 0x7F ; 127
  1365. 668: 4f e4 ldi r20, 0x4F ; 79
  1366. 66a: 82 e1 ldi r24, 0x12 ; 18
  1367. 66c: 31 50 subi r19, 0x01 ; 1
  1368. 66e: 40 40 sbci r20, 0x00 ; 0
  1369. 670: 80 40 sbci r24, 0x00 ; 0
  1370. 672: e1 f7 brne .-8 ; 0x66c <main+0x40>
  1371. 674: 00 c0 rjmp .+0 ; 0x676 <main+0x4a>
  1372. 676: 00 00 nop
  1373. /************************************************************************/
  1374. /* Set display digits individually */
  1375. /************************************************************************/
  1376. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1377. {
  1378. g_au8Digits[DIGIT_TENS] = u8Tens;
  1379. 678: 92 83 std Z+2, r25 ; 0x02
  1380. g_au8Digits[DIGIT_ONES] = u8Ones;
  1381. 67a: 91 83 std Z+1, r25 ; 0x01
  1382. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1383. 67c: 86 e1 ldi r24, 0x16 ; 22
  1384. 67e: 80 83 st Z, r24
  1385. 680: 9f e7 ldi r25, 0x7F ; 127
  1386. 682: af e4 ldi r26, 0x4F ; 79
  1387. 684: b2 e1 ldi r27, 0x12 ; 18
  1388. 686: 91 50 subi r25, 0x01 ; 1
  1389. 688: a0 40 sbci r26, 0x00 ; 0
  1390. 68a: b0 40 sbci r27, 0x00 ; 0
  1391. 68c: e1 f7 brne .-8 ; 0x686 <main+0x5a>
  1392. 68e: 00 c0 rjmp .+0 ; 0x690 <main+0x64>
  1393. 690: 00 00 nop
  1394. 692: 35 e0 ldi r19, 0x05 ; 5
  1395. /************************************************************************/
  1396. /* Set display digits individually */
  1397. /************************************************************************/
  1398. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1399. {
  1400. g_au8Digits[DIGIT_TENS] = u8Tens;
  1401. 694: 80 e1 ldi r24, 0x10 ; 16
  1402. g_au8Digits[DIGIT_ONES] = u8Ones;
  1403. 696: 23 e1 ldi r18, 0x13 ; 19
  1404. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1405. 698: 7c e1 ldi r23, 0x1C ; 28
  1406. 69a: 6d e1 ldi r22, 0x1D ; 29
  1407. 69c: 5e e1 ldi r21, 0x1E ; 30
  1408. /* Set display digits individually */
  1409. /************************************************************************/
  1410. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1411. {
  1412. g_au8Digits[DIGIT_TENS] = u8Tens;
  1413. g_au8Digits[DIGIT_ONES] = u8Ones;
  1414. 69e: 96 e1 ldi r25, 0x16 ; 22
  1415. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1416. 6a0: 4f e1 ldi r20, 0x1F ; 31
  1417. /************************************************************************/
  1418. /* Set display digits individually */
  1419. /************************************************************************/
  1420. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1421. {
  1422. g_au8Digits[DIGIT_TENS] = u8Tens;
  1423. 6a2: 82 83 std Z+2, r24 ; 0x02
  1424. g_au8Digits[DIGIT_ONES] = u8Ones;
  1425. 6a4: 21 83 std Z+1, r18 ; 0x01
  1426. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1427. 6a6: 70 83 st Z, r23
  1428. 6a8: cf eb ldi r28, 0xBF ; 191
  1429. 6aa: a5 e4 ldi r26, 0x45 ; 69
  1430. 6ac: b4 e0 ldi r27, 0x04 ; 4
  1431. 6ae: c1 50 subi r28, 0x01 ; 1
  1432. 6b0: a0 40 sbci r26, 0x00 ; 0
  1433. 6b2: b0 40 sbci r27, 0x00 ; 0
  1434. 6b4: e1 f7 brne .-8 ; 0x6ae <main+0x82>
  1435. 6b6: 00 c0 rjmp .+0 ; 0x6b8 <main+0x8c>
  1436. 6b8: 00 00 nop
  1437. /************************************************************************/
  1438. /* Set display digits individually */
  1439. /************************************************************************/
  1440. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1441. {
  1442. g_au8Digits[DIGIT_TENS] = u8Tens;
  1443. 6ba: 82 83 std Z+2, r24 ; 0x02
  1444. g_au8Digits[DIGIT_ONES] = u8Ones;
  1445. 6bc: 81 83 std Z+1, r24 ; 0x01
  1446. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1447. 6be: 60 83 st Z, r22
  1448. 6c0: cf eb ldi r28, 0xBF ; 191
  1449. 6c2: a5 e4 ldi r26, 0x45 ; 69
  1450. 6c4: b4 e0 ldi r27, 0x04 ; 4
  1451. 6c6: c1 50 subi r28, 0x01 ; 1
  1452. 6c8: a0 40 sbci r26, 0x00 ; 0
  1453. 6ca: b0 40 sbci r27, 0x00 ; 0
  1454. 6cc: e1 f7 brne .-8 ; 0x6c6 <main+0x9a>
  1455. 6ce: 00 c0 rjmp .+0 ; 0x6d0 <main+0xa4>
  1456. 6d0: 00 00 nop
  1457. /************************************************************************/
  1458. /* Set display digits individually */
  1459. /************************************************************************/
  1460. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1461. {
  1462. g_au8Digits[DIGIT_TENS] = u8Tens;
  1463. 6d2: 82 83 std Z+2, r24 ; 0x02
  1464. g_au8Digits[DIGIT_ONES] = u8Ones;
  1465. 6d4: 81 83 std Z+1, r24 ; 0x01
  1466. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1467. 6d6: 50 83 st Z, r21
  1468. 6d8: cf eb ldi r28, 0xBF ; 191
  1469. 6da: a5 e4 ldi r26, 0x45 ; 69
  1470. 6dc: b4 e0 ldi r27, 0x04 ; 4
  1471. 6de: c1 50 subi r28, 0x01 ; 1
  1472. 6e0: a0 40 sbci r26, 0x00 ; 0
  1473. 6e2: b0 40 sbci r27, 0x00 ; 0
  1474. 6e4: e1 f7 brne .-8 ; 0x6de <main+0xb2>
  1475. 6e6: 00 c0 rjmp .+0 ; 0x6e8 <main+0xbc>
  1476. 6e8: 00 00 nop
  1477. /************************************************************************/
  1478. /* Set display digits individually */
  1479. /************************************************************************/
  1480. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1481. {
  1482. g_au8Digits[DIGIT_TENS] = u8Tens;
  1483. 6ea: 82 83 std Z+2, r24 ; 0x02
  1484. g_au8Digits[DIGIT_ONES] = u8Ones;
  1485. 6ec: 91 83 std Z+1, r25 ; 0x01
  1486. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1487. 6ee: 40 83 st Z, r20
  1488. 6f0: cf eb ldi r28, 0xBF ; 191
  1489. 6f2: a5 e4 ldi r26, 0x45 ; 69
  1490. 6f4: b4 e0 ldi r27, 0x04 ; 4
  1491. 6f6: c1 50 subi r28, 0x01 ; 1
  1492. 6f8: a0 40 sbci r26, 0x00 ; 0
  1493. 6fa: b0 40 sbci r27, 0x00 ; 0
  1494. 6fc: e1 f7 brne .-8 ; 0x6f6 <main+0xca>
  1495. 6fe: 00 c0 rjmp .+0 ; 0x700 <main+0xd4>
  1496. 700: 00 00 nop
  1497. /************************************************************************/
  1498. /* Set display digits individually */
  1499. /************************************************************************/
  1500. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1501. {
  1502. g_au8Digits[DIGIT_TENS] = u8Tens;
  1503. 702: 92 83 std Z+2, r25 ; 0x02
  1504. g_au8Digits[DIGIT_ONES] = u8Ones;
  1505. 704: 91 83 std Z+1, r25 ; 0x01
  1506. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1507. 706: 20 83 st Z, r18
  1508. 708: cf eb ldi r28, 0xBF ; 191
  1509. 70a: a5 e4 ldi r26, 0x45 ; 69
  1510. 70c: b4 e0 ldi r27, 0x04 ; 4
  1511. 70e: c1 50 subi r28, 0x01 ; 1
  1512. 710: a0 40 sbci r26, 0x00 ; 0
  1513. 712: b0 40 sbci r27, 0x00 ; 0
  1514. 714: e1 f7 brne .-8 ; 0x70e <main+0xe2>
  1515. 716: 00 c0 rjmp .+0 ; 0x718 <main+0xec>
  1516. 718: 00 00 nop
  1517. /************************************************************************/
  1518. /* Set display digits individually */
  1519. /************************************************************************/
  1520. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1521. {
  1522. g_au8Digits[DIGIT_TENS] = u8Tens;
  1523. 71a: 72 83 std Z+2, r23 ; 0x02
  1524. g_au8Digits[DIGIT_ONES] = u8Ones;
  1525. 71c: 91 83 std Z+1, r25 ; 0x01
  1526. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1527. 71e: 80 83 st Z, r24
  1528. 720: cf eb ldi r28, 0xBF ; 191
  1529. 722: a5 e4 ldi r26, 0x45 ; 69
  1530. 724: b4 e0 ldi r27, 0x04 ; 4
  1531. 726: c1 50 subi r28, 0x01 ; 1
  1532. 728: a0 40 sbci r26, 0x00 ; 0
  1533. 72a: b0 40 sbci r27, 0x00 ; 0
  1534. 72c: e1 f7 brne .-8 ; 0x726 <main+0xfa>
  1535. 72e: 00 c0 rjmp .+0 ; 0x730 <main+0x104>
  1536. 730: 00 00 nop
  1537. /************************************************************************/
  1538. /* Set display digits individually */
  1539. /************************************************************************/
  1540. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1541. {
  1542. g_au8Digits[DIGIT_TENS] = u8Tens;
  1543. 732: 62 83 std Z+2, r22 ; 0x02
  1544. g_au8Digits[DIGIT_ONES] = u8Ones;
  1545. 734: 81 83 std Z+1, r24 ; 0x01
  1546. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1547. 736: 80 83 st Z, r24
  1548. 738: cf eb ldi r28, 0xBF ; 191
  1549. 73a: a5 e4 ldi r26, 0x45 ; 69
  1550. 73c: b4 e0 ldi r27, 0x04 ; 4
  1551. 73e: c1 50 subi r28, 0x01 ; 1
  1552. 740: a0 40 sbci r26, 0x00 ; 0
  1553. 742: b0 40 sbci r27, 0x00 ; 0
  1554. 744: e1 f7 brne .-8 ; 0x73e <main+0x112>
  1555. 746: 00 c0 rjmp .+0 ; 0x748 <main+0x11c>
  1556. 748: 00 00 nop
  1557. /************************************************************************/
  1558. /* Set display digits individually */
  1559. /************************************************************************/
  1560. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1561. {
  1562. g_au8Digits[DIGIT_TENS] = u8Tens;
  1563. 74a: 52 83 std Z+2, r21 ; 0x02
  1564. g_au8Digits[DIGIT_ONES] = u8Ones;
  1565. 74c: 81 83 std Z+1, r24 ; 0x01
  1566. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1567. 74e: 80 83 st Z, r24
  1568. 750: cf eb ldi r28, 0xBF ; 191
  1569. 752: a5 e4 ldi r26, 0x45 ; 69
  1570. 754: b4 e0 ldi r27, 0x04 ; 4
  1571. 756: c1 50 subi r28, 0x01 ; 1
  1572. 758: a0 40 sbci r26, 0x00 ; 0
  1573. 75a: b0 40 sbci r27, 0x00 ; 0
  1574. 75c: e1 f7 brne .-8 ; 0x756 <main+0x12a>
  1575. 75e: 00 c0 rjmp .+0 ; 0x760 <main+0x134>
  1576. 760: 00 00 nop
  1577. /************************************************************************/
  1578. /* Set display digits individually */
  1579. /************************************************************************/
  1580. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1581. {
  1582. g_au8Digits[DIGIT_TENS] = u8Tens;
  1583. 762: 42 83 std Z+2, r20 ; 0x02
  1584. g_au8Digits[DIGIT_ONES] = u8Ones;
  1585. 764: 21 83 std Z+1, r18 ; 0x01
  1586. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1587. 766: 80 83 st Z, r24
  1588. 768: cf eb ldi r28, 0xBF ; 191
  1589. 76a: a5 e4 ldi r26, 0x45 ; 69
  1590. 76c: b4 e0 ldi r27, 0x04 ; 4
  1591. 76e: c1 50 subi r28, 0x01 ; 1
  1592. 770: a0 40 sbci r26, 0x00 ; 0
  1593. 772: b0 40 sbci r27, 0x00 ; 0
  1594. 774: e1 f7 brne .-8 ; 0x76e <main+0x142>
  1595. 776: 00 c0 rjmp .+0 ; 0x778 <main+0x14c>
  1596. 778: 00 00 nop
  1597. /************************************************************************/
  1598. /* Set display digits individually */
  1599. /************************************************************************/
  1600. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1601. {
  1602. g_au8Digits[DIGIT_TENS] = u8Tens;
  1603. 77a: 22 83 std Z+2, r18 ; 0x02
  1604. g_au8Digits[DIGIT_ONES] = u8Ones;
  1605. 77c: 21 83 std Z+1, r18 ; 0x01
  1606. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1607. 77e: 90 83 st Z, r25
  1608. 780: cf eb ldi r28, 0xBF ; 191
  1609. 782: a5 e4 ldi r26, 0x45 ; 69
  1610. 784: b4 e0 ldi r27, 0x04 ; 4
  1611. 786: c1 50 subi r28, 0x01 ; 1
  1612. 788: a0 40 sbci r26, 0x00 ; 0
  1613. 78a: b0 40 sbci r27, 0x00 ; 0
  1614. 78c: e1 f7 brne .-8 ; 0x786 <main+0x15a>
  1615. 78e: 00 c0 rjmp .+0 ; 0x790 <main+0x164>
  1616. 790: 00 00 nop
  1617. 792: 31 50 subi r19, 0x01 ; 1
  1618. s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_OFF );
  1619. _delay_ms(300);
  1620. s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_D );
  1621. _delay_ms(300);
  1622. while ( u8Loop < 5U )
  1623. 794: 09 f0 breq .+2 ; 0x798 <main+0x16c>
  1624. 796: 85 cf rjmp .-246 ; 0x6a2 <main+0x76>
  1625. /************************************************************************/
  1626. /* Set display digits individually */
  1627. /************************************************************************/
  1628. void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit )
  1629. {
  1630. g_au8Digits[DIGIT_TENS] = u8Tens;
  1631. 798: e0 e0 ldi r30, 0x00 ; 0
  1632. 79a: f1 e0 ldi r31, 0x01 ; 1
  1633. 79c: 80 e1 ldi r24, 0x10 ; 16
  1634. 79e: 82 83 std Z+2, r24 ; 0x02
  1635. g_au8Digits[DIGIT_ONES] = u8Ones;
  1636. 7a0: 81 83 std Z+1, r24 ; 0x01
  1637. g_au8Digits[DIGIT_UNIT] = u8Unit;
  1638. 7a2: 80 83 st Z, r24
  1639. while ( 1 )
  1640. {
  1641. /* perform mode action */
  1642. switch ( g_u8Mode )
  1643. 7a4: 80 91 25 01 lds r24, 0x0125 ; 0x800125 <g_u8Mode>
  1644. 7a8: 81 30 cpi r24, 0x01 ; 1
  1645. 7aa: b1 f1 breq .+108 ; 0x818 <main+0x1ec>
  1646. 7ac: 18 f0 brcs .+6 ; 0x7b4 <main+0x188>
  1647. 7ae: 82 30 cpi r24, 0x02 ; 2
  1648. 7b0: c1 f1 breq .+112 ; 0x822 <main+0x1f6>
  1649. 7b2: fa cf rjmp .-12 ; 0x7a8 <main+0x17c>
  1650. {
  1651. case MODE_MEASURE:
  1652. (void) s_u8DS18B20_Reset();
  1653. 7b4: de de rcall .-580 ; 0x572 <s_u8DS18B20_Reset>
  1654. s_vDS18B20_WriteByte( DS18B20_CMD_SKIPROM );
  1655. 7b6: 8c ec ldi r24, 0xCC ; 204
  1656. 7b8: 05 df rcall .-502 ; 0x5c4 <s_vDS18B20_WriteByte>
  1657. s_vDS18B20_WriteByte( DS18B20_CMD_CONVERTTEMP );
  1658. 7ba: 84 e4 ldi r24, 0x44 ; 68
  1659. 7bc: 03 df rcall .-506 ; 0x5c4 <s_vDS18B20_WriteByte>
  1660. while ( !s_u8DS18B20_ReadBit() );
  1661. 7be: 0f df rcall .-482 ; 0x5de <s_u8DS18B20_ReadBit>
  1662. 7c0: 88 23 and r24, r24
  1663. 7c2: e9 f3 breq .-6 ; 0x7be <main+0x192>
  1664. (void) s_u8DS18B20_Reset();
  1665. 7c4: d6 de rcall .-596 ; 0x572 <s_u8DS18B20_Reset>
  1666. s_vDS18B20_WriteByte( DS18B20_CMD_SKIPROM );
  1667. 7c6: 8c ec ldi r24, 0xCC ; 204
  1668. 7c8: fd de rcall .-518 ; 0x5c4 <s_vDS18B20_WriteByte>
  1669. s_vDS18B20_WriteByte( DS18B20_CMD_RSCRATCHPAD );
  1670. 7ca: 8e eb ldi r24, 0xBE ; 190
  1671. 7cc: fb de rcall .-522 ; 0x5c4 <s_vDS18B20_WriteByte>
  1672. u8TempLo = s_u8DS18B20_ReadByte();
  1673. 7ce: 1d df rcall .-454 ; 0x60a <s_u8DS18B20_ReadByte>
  1674. 7d0: c8 2f mov r28, r24
  1675. u8TempHi = s_u8DS18B20_ReadByte();
  1676. 7d2: 1b df rcall .-458 ; 0x60a <s_u8DS18B20_ReadByte>
  1677. f32Temperature = ((u8TempHi << 8) + u8TempLo) * 0.0625;
  1678. s_vSetValue( (uint8_t) f32Temperature, SYM_DEG_CELCIUS );
  1679. 7d4: 68 2f mov r22, r24
  1680. 7d6: 70 e0 ldi r23, 0x00 ; 0
  1681. 7d8: 76 2f mov r23, r22
  1682. 7da: 66 27 eor r22, r22
  1683. 7dc: 6c 0f add r22, r28
  1684. 7de: 71 1d adc r23, r1
  1685. 7e0: 07 2e mov r0, r23
  1686. 7e2: 00 0c add r0, r0
  1687. 7e4: 88 0b sbc r24, r24
  1688. 7e6: 99 0b sbc r25, r25
  1689. 7e8: 4f d0 rcall .+158 ; 0x888 <__floatsisf>
  1690. 7ea: 20 e0 ldi r18, 0x00 ; 0
  1691. 7ec: 30 e0 ldi r19, 0x00 ; 0
  1692. 7ee: 40 e8 ldi r20, 0x80 ; 128
  1693. 7f0: 5d e3 ldi r21, 0x3D ; 61
  1694. 7f2: ae d0 rcall .+348 ; 0x950 <__mulsf3>
  1695. 7f4: 1b d0 rcall .+54 ; 0x82c <__fixunssfsi>
  1696. 7f6: 86 2f mov r24, r22
  1697. 7f8: 6e e0 ldi r22, 0x0E ; 14
  1698. 7fa: 50 dc rcall .-1888 ; 0x9c <s_vSetValue>
  1699. if ( g_u8Mode == MODE_MEASURE )
  1700. 7fc: 80 91 25 01 lds r24, 0x0125 ; 0x800125 <g_u8Mode>
  1701. 800: 81 11 cpse r24, r1
  1702. 802: d0 cf rjmp .-96 ; 0x7a4 <main+0x178>
  1703. 804: cf e7 ldi r28, 0x7F ; 127
  1704. 806: 24 e8 ldi r18, 0x84 ; 132
  1705. 808: 3e e1 ldi r19, 0x1E ; 30
  1706. 80a: c1 50 subi r28, 0x01 ; 1
  1707. 80c: 20 40 sbci r18, 0x00 ; 0
  1708. 80e: 30 40 sbci r19, 0x00 ; 0
  1709. 810: e1 f7 brne .-8 ; 0x80a <main+0x1de>
  1710. 812: 00 c0 rjmp .+0 ; 0x814 <main+0x1e8>
  1711. 814: 00 00 nop
  1712. 816: c6 cf rjmp .-116 ; 0x7a4 <main+0x178>
  1713. {
  1714. _delay_ms(500);
  1715. }
  1716. break;
  1717. case MODE_ANIMATION_1:
  1718. s_vShowAnim(g_u8Mode);
  1719. 818: 81 e0 ldi r24, 0x01 ; 1
  1720. 81a: c5 dc rcall .-1654 ; 0x1a6 <s_vShowAnim>
  1721. g_u8Mode = MODE_MEASURE;
  1722. 81c: 10 92 25 01 sts 0x0125, r1 ; 0x800125 <g_u8Mode>
  1723. break;
  1724. 820: c1 cf rjmp .-126 ; 0x7a4 <main+0x178>
  1725. case MODE_ANIMATION_2:
  1726. s_vShowAnim(g_u8Mode);
  1727. 822: 82 e0 ldi r24, 0x02 ; 2
  1728. 824: c0 dc rcall .-1664 ; 0x1a6 <s_vShowAnim>
  1729. g_u8Mode = MODE_MEASURE;
  1730. 826: 10 92 25 01 sts 0x0125, r1 ; 0x800125 <g_u8Mode>
  1731. break;
  1732. 82a: bc cf rjmp .-136 ; 0x7a4 <main+0x178>
  1733. 0000082c <__fixunssfsi>:
  1734. 82c: 70 d0 rcall .+224 ; 0x90e <__fp_splitA>
  1735. 82e: 88 f0 brcs .+34 ; 0x852 <__fixunssfsi+0x26>
  1736. 830: 9f 57 subi r25, 0x7F ; 127
  1737. 832: 90 f0 brcs .+36 ; 0x858 <__fixunssfsi+0x2c>
  1738. 834: b9 2f mov r27, r25
  1739. 836: 99 27 eor r25, r25
  1740. 838: b7 51 subi r27, 0x17 ; 23
  1741. 83a: a0 f0 brcs .+40 ; 0x864 <__fixunssfsi+0x38>
  1742. 83c: d1 f0 breq .+52 ; 0x872 <__fixunssfsi+0x46>
  1743. 83e: 66 0f add r22, r22
  1744. 840: 77 1f adc r23, r23
  1745. 842: 88 1f adc r24, r24
  1746. 844: 99 1f adc r25, r25
  1747. 846: 1a f0 brmi .+6 ; 0x84e <__fixunssfsi+0x22>
  1748. 848: ba 95 dec r27
  1749. 84a: c9 f7 brne .-14 ; 0x83e <__fixunssfsi+0x12>
  1750. 84c: 12 c0 rjmp .+36 ; 0x872 <__fixunssfsi+0x46>
  1751. 84e: b1 30 cpi r27, 0x01 ; 1
  1752. 850: 81 f0 breq .+32 ; 0x872 <__fixunssfsi+0x46>
  1753. 852: 77 d0 rcall .+238 ; 0x942 <__fp_zero>
  1754. 854: b1 e0 ldi r27, 0x01 ; 1
  1755. 856: 08 95 ret
  1756. 858: 74 c0 rjmp .+232 ; 0x942 <__fp_zero>
  1757. 85a: 67 2f mov r22, r23
  1758. 85c: 78 2f mov r23, r24
  1759. 85e: 88 27 eor r24, r24
  1760. 860: b8 5f subi r27, 0xF8 ; 248
  1761. 862: 39 f0 breq .+14 ; 0x872 <__fixunssfsi+0x46>
  1762. 864: b9 3f cpi r27, 0xF9 ; 249
  1763. 866: cc f3 brlt .-14 ; 0x85a <__fixunssfsi+0x2e>
  1764. 868: 86 95 lsr r24
  1765. 86a: 77 95 ror r23
  1766. 86c: 67 95 ror r22
  1767. 86e: b3 95 inc r27
  1768. 870: d9 f7 brne .-10 ; 0x868 <__fixunssfsi+0x3c>
  1769. 872: 3e f4 brtc .+14 ; 0x882 <__fixunssfsi+0x56>
  1770. 874: 90 95 com r25
  1771. 876: 80 95 com r24
  1772. 878: 70 95 com r23
  1773. 87a: 61 95 neg r22
  1774. 87c: 7f 4f sbci r23, 0xFF ; 255
  1775. 87e: 8f 4f sbci r24, 0xFF ; 255
  1776. 880: 9f 4f sbci r25, 0xFF ; 255
  1777. 882: 08 95 ret
  1778. 00000884 <__floatunsisf>:
  1779. 884: e8 94 clt
  1780. 886: 09 c0 rjmp .+18 ; 0x89a <__floatsisf+0x12>
  1781. 00000888 <__floatsisf>:
  1782. 888: 97 fb bst r25, 7
  1783. 88a: 3e f4 brtc .+14 ; 0x89a <__floatsisf+0x12>
  1784. 88c: 90 95 com r25
  1785. 88e: 80 95 com r24
  1786. 890: 70 95 com r23
  1787. 892: 61 95 neg r22
  1788. 894: 7f 4f sbci r23, 0xFF ; 255
  1789. 896: 8f 4f sbci r24, 0xFF ; 255
  1790. 898: 9f 4f sbci r25, 0xFF ; 255
  1791. 89a: 99 23 and r25, r25
  1792. 89c: a9 f0 breq .+42 ; 0x8c8 <__floatsisf+0x40>
  1793. 89e: f9 2f mov r31, r25
  1794. 8a0: 96 e9 ldi r25, 0x96 ; 150
  1795. 8a2: bb 27 eor r27, r27
  1796. 8a4: 93 95 inc r25
  1797. 8a6: f6 95 lsr r31
  1798. 8a8: 87 95 ror r24
  1799. 8aa: 77 95 ror r23
  1800. 8ac: 67 95 ror r22
  1801. 8ae: b7 95 ror r27
  1802. 8b0: f1 11 cpse r31, r1
  1803. 8b2: f8 cf rjmp .-16 ; 0x8a4 <__floatsisf+0x1c>
  1804. 8b4: fa f4 brpl .+62 ; 0x8f4 <__floatsisf+0x6c>
  1805. 8b6: bb 0f add r27, r27
  1806. 8b8: 11 f4 brne .+4 ; 0x8be <__floatsisf+0x36>
  1807. 8ba: 60 ff sbrs r22, 0
  1808. 8bc: 1b c0 rjmp .+54 ; 0x8f4 <__floatsisf+0x6c>
  1809. 8be: 6f 5f subi r22, 0xFF ; 255
  1810. 8c0: 7f 4f sbci r23, 0xFF ; 255
  1811. 8c2: 8f 4f sbci r24, 0xFF ; 255
  1812. 8c4: 9f 4f sbci r25, 0xFF ; 255
  1813. 8c6: 16 c0 rjmp .+44 ; 0x8f4 <__floatsisf+0x6c>
  1814. 8c8: 88 23 and r24, r24
  1815. 8ca: 11 f0 breq .+4 ; 0x8d0 <__floatsisf+0x48>
  1816. 8cc: 96 e9 ldi r25, 0x96 ; 150
  1817. 8ce: 11 c0 rjmp .+34 ; 0x8f2 <__floatsisf+0x6a>
  1818. 8d0: 77 23 and r23, r23
  1819. 8d2: 21 f0 breq .+8 ; 0x8dc <__floatsisf+0x54>
  1820. 8d4: 9e e8 ldi r25, 0x8E ; 142
  1821. 8d6: 87 2f mov r24, r23
  1822. 8d8: 76 2f mov r23, r22
  1823. 8da: 05 c0 rjmp .+10 ; 0x8e6 <__floatsisf+0x5e>
  1824. 8dc: 66 23 and r22, r22
  1825. 8de: 71 f0 breq .+28 ; 0x8fc <__floatsisf+0x74>
  1826. 8e0: 96 e8 ldi r25, 0x86 ; 134
  1827. 8e2: 86 2f mov r24, r22
  1828. 8e4: 70 e0 ldi r23, 0x00 ; 0
  1829. 8e6: 60 e0 ldi r22, 0x00 ; 0
  1830. 8e8: 2a f0 brmi .+10 ; 0x8f4 <__floatsisf+0x6c>
  1831. 8ea: 9a 95 dec r25
  1832. 8ec: 66 0f add r22, r22
  1833. 8ee: 77 1f adc r23, r23
  1834. 8f0: 88 1f adc r24, r24
  1835. 8f2: da f7 brpl .-10 ; 0x8ea <__floatsisf+0x62>
  1836. 8f4: 88 0f add r24, r24
  1837. 8f6: 96 95 lsr r25
  1838. 8f8: 87 95 ror r24
  1839. 8fa: 97 f9 bld r25, 7
  1840. 8fc: 08 95 ret
  1841. 000008fe <__fp_split3>:
  1842. 8fe: 57 fd sbrc r21, 7
  1843. 900: 90 58 subi r25, 0x80 ; 128
  1844. 902: 44 0f add r20, r20
  1845. 904: 55 1f adc r21, r21
  1846. 906: 59 f0 breq .+22 ; 0x91e <__fp_splitA+0x10>
  1847. 908: 5f 3f cpi r21, 0xFF ; 255
  1848. 90a: 71 f0 breq .+28 ; 0x928 <__fp_splitA+0x1a>
  1849. 90c: 47 95 ror r20
  1850. 0000090e <__fp_splitA>:
  1851. 90e: 88 0f add r24, r24
  1852. 910: 97 fb bst r25, 7
  1853. 912: 99 1f adc r25, r25
  1854. 914: 61 f0 breq .+24 ; 0x92e <__fp_splitA+0x20>
  1855. 916: 9f 3f cpi r25, 0xFF ; 255
  1856. 918: 79 f0 breq .+30 ; 0x938 <__fp_splitA+0x2a>
  1857. 91a: 87 95 ror r24
  1858. 91c: 08 95 ret
  1859. 91e: 12 16 cp r1, r18
  1860. 920: 13 06 cpc r1, r19
  1861. 922: 14 06 cpc r1, r20
  1862. 924: 55 1f adc r21, r21
  1863. 926: f2 cf rjmp .-28 ; 0x90c <__fp_split3+0xe>
  1864. 928: 46 95 lsr r20
  1865. 92a: f1 df rcall .-30 ; 0x90e <__fp_splitA>
  1866. 92c: 08 c0 rjmp .+16 ; 0x93e <__fp_splitA+0x30>
  1867. 92e: 16 16 cp r1, r22
  1868. 930: 17 06 cpc r1, r23
  1869. 932: 18 06 cpc r1, r24
  1870. 934: 99 1f adc r25, r25
  1871. 936: f1 cf rjmp .-30 ; 0x91a <__fp_splitA+0xc>
  1872. 938: 86 95 lsr r24
  1873. 93a: 71 05 cpc r23, r1
  1874. 93c: 61 05 cpc r22, r1
  1875. 93e: 08 94 sec
  1876. 940: 08 95 ret
  1877. 00000942 <__fp_zero>:
  1878. 942: e8 94 clt
  1879. 00000944 <__fp_szero>:
  1880. 944: bb 27 eor r27, r27
  1881. 946: 66 27 eor r22, r22
  1882. 948: 77 27 eor r23, r23
  1883. 94a: cb 01 movw r24, r22
  1884. 94c: 97 f9 bld r25, 7
  1885. 94e: 08 95 ret
  1886. 00000950 <__mulsf3>:
  1887. 950: 0b d0 rcall .+22 ; 0x968 <__mulsf3x>
  1888. 952: 78 c0 rjmp .+240 ; 0xa44 <__fp_round>
  1889. 954: 69 d0 rcall .+210 ; 0xa28 <__fp_pscA>
  1890. 956: 28 f0 brcs .+10 ; 0x962 <__mulsf3+0x12>
  1891. 958: 6e d0 rcall .+220 ; 0xa36 <__fp_pscB>
  1892. 95a: 18 f0 brcs .+6 ; 0x962 <__mulsf3+0x12>
  1893. 95c: 95 23 and r25, r21
  1894. 95e: 09 f0 breq .+2 ; 0x962 <__mulsf3+0x12>
  1895. 960: 5a c0 rjmp .+180 ; 0xa16 <__fp_inf>
  1896. 962: 5f c0 rjmp .+190 ; 0xa22 <__fp_nan>
  1897. 964: 11 24 eor r1, r1
  1898. 966: ee cf rjmp .-36 ; 0x944 <__fp_szero>
  1899. 00000968 <__mulsf3x>:
  1900. 968: ca df rcall .-108 ; 0x8fe <__fp_split3>
  1901. 96a: a0 f3 brcs .-24 ; 0x954 <__mulsf3+0x4>
  1902. 0000096c <__mulsf3_pse>:
  1903. 96c: 95 9f mul r25, r21
  1904. 96e: d1 f3 breq .-12 ; 0x964 <__mulsf3+0x14>
  1905. 970: 95 0f add r25, r21
  1906. 972: 50 e0 ldi r21, 0x00 ; 0
  1907. 974: 55 1f adc r21, r21
  1908. 976: 62 9f mul r22, r18
  1909. 978: f0 01 movw r30, r0
  1910. 97a: 72 9f mul r23, r18
  1911. 97c: bb 27 eor r27, r27
  1912. 97e: f0 0d add r31, r0
  1913. 980: b1 1d adc r27, r1
  1914. 982: 63 9f mul r22, r19
  1915. 984: aa 27 eor r26, r26
  1916. 986: f0 0d add r31, r0
  1917. 988: b1 1d adc r27, r1
  1918. 98a: aa 1f adc r26, r26
  1919. 98c: 64 9f mul r22, r20
  1920. 98e: 66 27 eor r22, r22
  1921. 990: b0 0d add r27, r0
  1922. 992: a1 1d adc r26, r1
  1923. 994: 66 1f adc r22, r22
  1924. 996: 82 9f mul r24, r18
  1925. 998: 22 27 eor r18, r18
  1926. 99a: b0 0d add r27, r0
  1927. 99c: a1 1d adc r26, r1
  1928. 99e: 62 1f adc r22, r18
  1929. 9a0: 73 9f mul r23, r19
  1930. 9a2: b0 0d add r27, r0
  1931. 9a4: a1 1d adc r26, r1
  1932. 9a6: 62 1f adc r22, r18
  1933. 9a8: 83 9f mul r24, r19
  1934. 9aa: a0 0d add r26, r0
  1935. 9ac: 61 1d adc r22, r1
  1936. 9ae: 22 1f adc r18, r18
  1937. 9b0: 74 9f mul r23, r20
  1938. 9b2: 33 27 eor r19, r19
  1939. 9b4: a0 0d add r26, r0
  1940. 9b6: 61 1d adc r22, r1
  1941. 9b8: 23 1f adc r18, r19
  1942. 9ba: 84 9f mul r24, r20
  1943. 9bc: 60 0d add r22, r0
  1944. 9be: 21 1d adc r18, r1
  1945. 9c0: 82 2f mov r24, r18
  1946. 9c2: 76 2f mov r23, r22
  1947. 9c4: 6a 2f mov r22, r26
  1948. 9c6: 11 24 eor r1, r1
  1949. 9c8: 9f 57 subi r25, 0x7F ; 127
  1950. 9ca: 50 40 sbci r21, 0x00 ; 0
  1951. 9cc: 8a f0 brmi .+34 ; 0x9f0 <__mulsf3_pse+0x84>
  1952. 9ce: e1 f0 breq .+56 ; 0xa08 <__mulsf3_pse+0x9c>
  1953. 9d0: 88 23 and r24, r24
  1954. 9d2: 4a f0 brmi .+18 ; 0x9e6 <__mulsf3_pse+0x7a>
  1955. 9d4: ee 0f add r30, r30
  1956. 9d6: ff 1f adc r31, r31
  1957. 9d8: bb 1f adc r27, r27
  1958. 9da: 66 1f adc r22, r22
  1959. 9dc: 77 1f adc r23, r23
  1960. 9de: 88 1f adc r24, r24
  1961. 9e0: 91 50 subi r25, 0x01 ; 1
  1962. 9e2: 50 40 sbci r21, 0x00 ; 0
  1963. 9e4: a9 f7 brne .-22 ; 0x9d0 <__mulsf3_pse+0x64>
  1964. 9e6: 9e 3f cpi r25, 0xFE ; 254
  1965. 9e8: 51 05 cpc r21, r1
  1966. 9ea: 70 f0 brcs .+28 ; 0xa08 <__mulsf3_pse+0x9c>
  1967. 9ec: 14 c0 rjmp .+40 ; 0xa16 <__fp_inf>
  1968. 9ee: aa cf rjmp .-172 ; 0x944 <__fp_szero>
  1969. 9f0: 5f 3f cpi r21, 0xFF ; 255
  1970. 9f2: ec f3 brlt .-6 ; 0x9ee <__mulsf3_pse+0x82>
  1971. 9f4: 98 3e cpi r25, 0xE8 ; 232
  1972. 9f6: dc f3 brlt .-10 ; 0x9ee <__mulsf3_pse+0x82>
  1973. 9f8: 86 95 lsr r24
  1974. 9fa: 77 95 ror r23
  1975. 9fc: 67 95 ror r22
  1976. 9fe: b7 95 ror r27
  1977. a00: f7 95 ror r31
  1978. a02: e7 95 ror r30
  1979. a04: 9f 5f subi r25, 0xFF ; 255
  1980. a06: c1 f7 brne .-16 ; 0x9f8 <__mulsf3_pse+0x8c>
  1981. a08: fe 2b or r31, r30
  1982. a0a: 88 0f add r24, r24
  1983. a0c: 91 1d adc r25, r1
  1984. a0e: 96 95 lsr r25
  1985. a10: 87 95 ror r24
  1986. a12: 97 f9 bld r25, 7
  1987. a14: 08 95 ret
  1988. 00000a16 <__fp_inf>:
  1989. a16: 97 f9 bld r25, 7
  1990. a18: 9f 67 ori r25, 0x7F ; 127
  1991. a1a: 80 e8 ldi r24, 0x80 ; 128
  1992. a1c: 70 e0 ldi r23, 0x00 ; 0
  1993. a1e: 60 e0 ldi r22, 0x00 ; 0
  1994. a20: 08 95 ret
  1995. 00000a22 <__fp_nan>:
  1996. a22: 9f ef ldi r25, 0xFF ; 255
  1997. a24: 80 ec ldi r24, 0xC0 ; 192
  1998. a26: 08 95 ret
  1999. 00000a28 <__fp_pscA>:
  2000. a28: 00 24 eor r0, r0
  2001. a2a: 0a 94 dec r0
  2002. a2c: 16 16 cp r1, r22
  2003. a2e: 17 06 cpc r1, r23
  2004. a30: 18 06 cpc r1, r24
  2005. a32: 09 06 cpc r0, r25
  2006. a34: 08 95 ret
  2007. 00000a36 <__fp_pscB>:
  2008. a36: 00 24 eor r0, r0
  2009. a38: 0a 94 dec r0
  2010. a3a: 12 16 cp r1, r18
  2011. a3c: 13 06 cpc r1, r19
  2012. a3e: 14 06 cpc r1, r20
  2013. a40: 05 06 cpc r0, r21
  2014. a42: 08 95 ret
  2015. 00000a44 <__fp_round>:
  2016. a44: 09 2e mov r0, r25
  2017. a46: 03 94 inc r0
  2018. a48: 00 0c add r0, r0
  2019. a4a: 11 f4 brne .+4 ; 0xa50 <__fp_round+0xc>
  2020. a4c: 88 23 and r24, r24
  2021. a4e: 52 f0 brmi .+20 ; 0xa64 <__fp_round+0x20>
  2022. a50: bb 0f add r27, r27
  2023. a52: 40 f4 brcc .+16 ; 0xa64 <__fp_round+0x20>
  2024. a54: bf 2b or r27, r31
  2025. a56: 11 f4 brne .+4 ; 0xa5c <__fp_round+0x18>
  2026. a58: 60 ff sbrs r22, 0
  2027. a5a: 04 c0 rjmp .+8 ; 0xa64 <__fp_round+0x20>
  2028. a5c: 6f 5f subi r22, 0xFF ; 255
  2029. a5e: 7f 4f sbci r23, 0xFF ; 255
  2030. a60: 8f 4f sbci r24, 0xFF ; 255
  2031. a62: 9f 4f sbci r25, 0xFF ; 255
  2032. a64: 08 95 ret
  2033. 00000a66 <_exit>:
  2034. a66: f8 94 cli
  2035. 00000a68 <__stop_program>:
  2036. a68: ff cf rjmp .-2 ; 0xa68 <__stop_program>