📄 main.lss
字号:
00000531 <c.0>:
531: 44 53 31 38 58 32 30 5f 72 65 63 61 6c 6c 5f 45 DS18X20_recall_E
541: 32 3a 20 53 68 6f 72 74 20 43 69 72 63 75 69 74 2: Short Circuit
551: 20 21 0d 00 00 !...
00000556 <__init>:
556: 11 24 eor r1, r1
558: 1f be out 0x3f, r1 ; 63
55a: cf e5 ldi r28, 0x5F ; 95
55c: d4 e0 ldi r29, 0x04 ; 4
55e: de bf out 0x3e, r29 ; 62
560: cd bf out 0x3d, r28 ; 61
00000562 <__do_copy_data>:
562: 10 e0 ldi r17, 0x00 ; 0
564: a0 e6 ldi r26, 0x60 ; 96
566: b0 e0 ldi r27, 0x00 ; 0
568: e0 e9 ldi r30, 0x90 ; 144
56a: f8 e1 ldi r31, 0x18 ; 24
56c: 02 c0 rjmp .+4 ; 0x572 <.do_copy_data_start>
0000056e <.do_copy_data_loop>:
56e: 05 90 lpm r0, Z+
570: 0d 92 st X+, r0
00000572 <.do_copy_data_start>:
572: aa 36 cpi r26, 0x6A ; 106
574: b1 07 cpc r27, r17
576: d9 f7 brne .-10 ; 0x56e <.do_copy_data_loop>
00000578 <__do_clear_bss>:
578: 10 e0 ldi r17, 0x00 ; 0
57a: aa e6 ldi r26, 0x6A ; 106
57c: b0 e0 ldi r27, 0x00 ; 0
57e: 01 c0 rjmp .+2 ; 0x582 <.do_clear_bss_start>
00000580 <.do_clear_bss_loop>:
580: 1d 92 st X+, r1
00000582 <.do_clear_bss_start>:
582: ae 3d cpi r26, 0xDE ; 222
584: b1 07 cpc r27, r17
586: e1 f7 brne .-8 ; 0x580 <.do_clear_bss_loop>
588: 0c 94 92 03 jmp 0x724 <main>
0000058c <__bad_interrupt>:
58c: 0c 94 00 00 jmp 0x0 <__vectors>
00000590 <search_sensors>:
uint8_t gSensorIDs[MAXSENSORS][OW_ROMCODE_SIZE];
uint8_t search_sensors(void)
{
590: 1f 93 push r17
592: cf 93 push r28
594: df 93 push r29
596: cd b7 in r28, 0x3d ; 61
598: de b7 in r29, 0x3e ; 62
59a: 29 97 sbiw r28, 0x09 ; 9
59c: 0f b6 in r0, 0x3f ; 63
59e: f8 94 cli
5a0: de bf out 0x3e, r29 ; 62
5a2: 0f be out 0x3f, r0 ; 63
5a4: cd bf out 0x3d, r28 ; 61
uint8_t i;
uint8_t id[OW_ROMCODE_SIZE];
uint8_t diff, nSensors;
uart_puts_P( "\rScanning Bus for DS18X20\r" );
5a6: 84 e5 ldi r24, 0x54 ; 84
5a8: 90 e0 ldi r25, 0x00 ; 0
5aa: 0e 94 8e 0b call 0x171c <uart_puts_p>
nSensors = 0;
5ae: 10 e0 ldi r17, 0x00 ; 0
for( diff = OW_SEARCH_FIRST;
5b0: 8f ef ldi r24, 0xFF ; 255
5b2: 89 87 std Y+9, r24 ; 0x09
diff != OW_LAST_DEVICE && nSensors < MAXSENSORS ; )
{
DS18X20_find_sensor( &diff, &id[0] );
5b4: be 01 movw r22, r28
5b6: 6f 5f subi r22, 0xFF ; 255
5b8: 7f 4f sbci r23, 0xFF ; 255
5ba: ce 01 movw r24, r28
5bc: 09 96 adiw r24, 0x09 ; 9
5be: 0e 94 3a 09 call 0x1274 <DS18X20_find_sensor>
if( diff == OW_PRESENCE_ERR ) {
5c2: 29 85 ldd r18, Y+9 ; 0x09
5c4: 2f 3f cpi r18, 0xFF ; 255
5c6: 19 f4 brne .+6 ; 0x5ce <search_sensors+0x3e>
uart_puts_P( "No Sensor found\r" );
5c8: 8f e6 ldi r24, 0x6F ; 111
5ca: 90 e0 ldi r25, 0x00 ; 0
5cc: 04 c0 rjmp .+8 ; 0x5d6 <search_sensors+0x46>
break;
}
if( diff == OW_DATA_ERR ) {
5ce: 2e 3f cpi r18, 0xFE ; 254
5d0: 29 f4 brne .+10 ; 0x5dc <search_sensors+0x4c>
uart_puts_P( "Bus Error\r" );
5d2: 80 e8 ldi r24, 0x80 ; 128
5d4: 90 e0 ldi r25, 0x00 ; 0
5d6: 0e 94 8e 0b call 0x171c <uart_puts_p>
break;
5da: 16 c0 rjmp .+44 ; 0x608 <search_sensors+0x78>
5dc: e1 2f mov r30, r17
5de: ff 27 eor r31, r31
5e0: 83 e0 ldi r24, 0x03 ; 3
5e2: ee 0f add r30, r30
5e4: ff 1f adc r31, r31
5e6: 8a 95 dec r24
5e8: e1 f7 brne .-8 ; 0x5e2 <search_sensors+0x52>
5ea: e1 55 subi r30, 0x51 ; 81
5ec: ff 4f sbci r31, 0xFF ; 255
5ee: de 01 movw r26, r28
5f0: 11 96 adiw r26, 0x01 ; 1
5f2: 97 e0 ldi r25, 0x07 ; 7
}
for (i=0;i<OW_ROMCODE_SIZE;i++)
gSensorIDs[nSensors][i]=id[i];
5f4: 8d 91 ld r24, X+
5f6: 81 93 st Z+, r24
5f8: 91 50 subi r25, 0x01 ; 1
5fa: 97 ff sbrs r25, 7
5fc: fb cf rjmp .-10 ; 0x5f4 <search_sensors+0x64>
nSensors++;
5fe: 1f 5f subi r17, 0xFF ; 255
600: 22 23 and r18, r18
602: 11 f0 breq .+4 ; 0x608 <search_sensors+0x78>
604: 15 30 cpi r17, 0x05 ; 5
606: b0 f2 brcs .-84 ; 0x5b4 <search_sensors+0x24>
}
return nSensors;
}
608: 81 2f mov r24, r17
60a: 99 27 eor r25, r25
60c: 29 96 adiw r28, 0x09 ; 9
60e: 0f b6 in r0, 0x3f ; 63
610: f8 94 cli
612: de bf out 0x3e, r29 ; 62
614: 0f be out 0x3f, r0 ; 63
616: cd bf out 0x3d, r28 ; 61
618: df 91 pop r29
61a: cf 91 pop r28
61c: 1f 91 pop r17
61e: 08 95 ret
00000620 <uart_put_temp>:
void uart_put_temp(const uint8_t subzero, uint8_t cel,
uint8_t cel_frac_bits)
{
620: df 92 push r13
622: ef 92 push r14
624: ff 92 push r15
626: 0f 93 push r16
628: 1f 93 push r17
62a: cf 93 push r28
62c: df 93 push r29
62e: cd b7 in r28, 0x3d ; 61
630: de b7 in r29, 0x3e ; 62
632: 61 97 sbiw r28, 0x11 ; 17
634: 0f b6 in r0, 0x3f ; 63
636: f8 94 cli
638: de bf out 0x3e, r29 ; 62
63a: 0f be out 0x3f, r0 ; 63
63c: cd bf out 0x3d, r28 ; 61
63e: f8 2e mov r15, r24
640: d6 2e mov r13, r22
642: e4 2e mov r14, r20
uint8_t buffer[sizeof(int)*8+1];
uint16_t decicelsius;
uint8_t i, j;
uart_putc((subzero)?'-':'+');
644: 88 23 and r24, r24
646: 11 f0 breq .+4 ; 0x64c <uart_put_temp+0x2c>
648: 8d e2 ldi r24, 0x2D ; 45
64a: 01 c0 rjmp .+2 ; 0x64e <uart_put_temp+0x2e>
64c: 8b e2 ldi r24, 0x2B ; 43
64e: 0e 94 6d 0b call 0x16da <uart_putc>
uart_puti((int)cel);
652: 8d 2d mov r24, r13
654: 99 27 eor r25, r25
656: 0e 94 a0 0b call 0x1740 <uart_puti>
uart_puts_P(".");
65a: 8b e8 ldi r24, 0x8B ; 139
65c: 90 e0 ldi r25, 0x00 ; 0
65e: 0e 94 8e 0b call 0x171c <uart_puts_p>
itoa((cel_frac_bits*DS18X20_FRACCONV),buffer,10);
662: 2e 2d mov r18, r14
664: 33 27 eor r19, r19
666: 4a e0 ldi r20, 0x0A ; 10
668: 50 e0 ldi r21, 0x00 ; 0
66a: be 01 movw r22, r28
66c: 6f 5f subi r22, 0xFF ; 255
66e: 7f 4f sbci r23, 0xFF ; 255
670: 81 e7 ldi r24, 0x71 ; 113
672: 92 e0 ldi r25, 0x02 ; 2
674: 28 9f mul r18, r24
676: f0 01 movw r30, r0
678: 29 9f mul r18, r25
67a: f0 0d add r31, r0
67c: 38 9f mul r19, r24
67e: f0 0d add r31, r0
680: 11 24 eor r1, r1
682: cf 01 movw r24, r30
684: 0e 94 f0 0b call 0x17e0 <itoa>
j=4-strlen(buffer);
688: de 01 movw r26, r28
68a: 11 96 adiw r26, 0x01 ; 1
68c: fd 01 movw r30, r26
68e: 01 90 ld r0, Z+
690: 00 20 and r0, r0
692: e9 f7 brne .-6 ; 0x68e <uart_put_temp+0x6e>
694: 31 97 sbiw r30, 0x01 ; 1
696: ea 1b sub r30, r26
698: fb 0b sbc r31, r27
69a: 14 e0 ldi r17, 0x04 ; 4
69c: 1e 1b sub r17, r30
for (i=0;i<j;i++) uart_puts_P("0");
69e: 00 e0 ldi r16, 0x00 ; 0
6a0: 01 17 cp r16, r17
6a2: 30 f4 brcc .+12 ; 0x6b0 <uart_put_temp+0x90>
6a4: 8d e8 ldi r24, 0x8D ; 141
6a6: 90 e0 ldi r25, 0x00 ; 0
6a8: 0e 94 8e 0b call 0x171c <uart_puts_p>
6ac: 0f 5f subi r16, 0xFF ; 255
6ae: f8 cf rjmp .-16 ; 0x6a0 <uart_put_temp+0x80>
uart_puts(buffer);
6b0: ce 01 movw r24, r28
6b2: 01 96 adiw r24, 0x01 ; 1
6b4: 0e 94 7f 0b call 0x16fe <uart_puts>
uart_puts_P("癈 [");
6b8: 8f e8 ldi r24, 0x8F ; 143
6ba: 90 e0 ldi r25, 0x00 ; 0
6bc: 0e 94 8e 0b call 0x171c <uart_puts_p>
// "rounding"
uart_putc((subzero)?'-':'+');
6c0: ff 20 and r15, r15
6c2: 11 f0 breq .+4 ; 0x6c8 <uart_put_temp+0xa8>
6c4: 8d e2 ldi r24, 0x2D ; 45
6c6: 01 c0 rjmp .+2 ; 0x6ca <uart_put_temp+0xaa>
6c8: 8b e2 ldi r24, 0x2B ; 43
6ca: 0e 94 6d 0b call 0x16da <uart_putc>
decicelsius = DS18X20_temp_to_decicel(subzero, cel, cel_frac_bits);
6ce: 4e 2d mov r20, r14
6d0: 6d 2d mov r22, r13
6d2: 8f 2d mov r24, r15
6d4: 0e 94 d4 08 call 0x11a8 <DS18X20_temp_to_decicel>
6d8: 8c 01 movw r16, r24
uart_puti( (int)(decicelsius/10) );
6da: 6a e0 ldi r22, 0x0A ; 10
6dc: 70 e0 ldi r23, 0x00 ; 0
6de: 0e 94 21 0c call 0x1842 <__udivmodhi4>
6e2: cb 01 movw r24, r22
6e4: 0e 94 a0 0b call 0x1740 <uart_puti>
uart_puts_P(".");
6e8: 84 e9 ldi r24, 0x94 ; 148
6ea: 90 e0 ldi r25, 0x00 ; 0
6ec: 0e 94 8e 0b call 0x171c <uart_puts_p>
uart_putc( (decicelsius%10) + '0');
6f0: c8 01 movw r24, r16
6f2: 6a e0 ldi r22, 0x0A ; 10
6f4: 70 e0 ldi r23, 0x00 ; 0
6f6: 0e 94 21 0c call 0x1842 <__udivmodhi4>
6fa: 80 5d subi r24, 0xD0 ; 208
6fc: 0e 94 6d 0b call 0x16da <uart_putc>
uart_puts_P("癈]");
700: 86 e9 ldi r24, 0x96 ; 150
702: 90 e0 ldi r25, 0x00 ; 0
704: 0e 94 8e 0b call 0x171c <uart_puts_p>
708: 61 96 adiw r28, 0x11 ; 17
70a: 0f b6 in r0, 0x3f ; 63
70c: f8 94 cli
70e: de bf out 0x3e, r29 ; 62
710: 0f be out 0x3f, r0 ; 63
712: cd bf out 0x3d, r28 ; 61
714: df 91 pop r29
716: cf 91 pop r28
718: 1f 91 pop r17
71a: 0f 91 pop r16
71c: ff 90 pop r15
71e: ef 90 pop r14
720: df 90 pop r13
722: 08 95 ret
00000724 <main>:
}
#ifdef DS18X20_EEPROMSUPPORT
static void eeprom_test(void)
{
uint8_t sp[DS18X20_SP_SIZE], th, tl;
uart_puts_P( "\rDS18x20 EEPROM support test for fist sensor\r" );
// DS18X20_recall_E2(&gSensorIDs[0][0]); // already done at power-on
DS18X20_read_scratchpad( &gSensorIDs[0][0], sp);
th = sp[DS18X20_TH_REG];
tl = sp[DS18X20_TL_REG];
uart_puts_P( "TH/TL from EEPROM sensor 1 : " );
uart_puti(th);
uart_puts_P( " / " );
uart_puti(tl);
uart_puts_P( "\r" );
tl++; th++;
DS18X20_write_scratchpad( &gSensorIDs[0][0],
th, tl, DS18B20_12_BIT);
uart_puts_P( "TH+1 and TL+1 written to scratchpad\r" );
DS18X20_copy_scratchpad( DS18X20_POWER_PARASITE,
&gSensorIDs[0][0] );
uart_puts_P( "scratchpad copied to DS18x20 EEPROM\r" );
DS18X20_recall_E2(&gSensorIDs[0][0]);
uart_puts_P( "DS18x20 EEPROM copied back to scratchpad\r" );
DS18X20_read_scratchpad( &gSensorIDs[0][0], sp);
if ( (th == sp[DS18X20_TH_REG]) && (tl == sp[DS18X20_TL_REG]) )
uart_puts_P( "TH and TL verified\r" );
else
uart_puts_P( "verify failed\r" );
th = sp[DS18X20_TH_REG];
tl = sp[DS18X20_TL_REG];
uart_puts_P( "TH/TL from EEPROM sensor 1 now : " );
uart_puti(th);
uart_puts_P( " / " );
uart_puti(tl);
uart_puts_P( "\r" );
}
#endif
int main( void )
{
724: c3 e5 ldi r28, 0x53 ; 83
726: d4 e0 ldi r29, 0x04 ; 4
728: de bf out 0x3e, r29 ; 62
72a: cd bf out 0x3d, r28 ; 61
uint8_t nSensors, i;
uint8_t subzero, cel, cel_frac_bits;
uart_init((UART_BAUD_SELECT((BAUD),F_OSC)));
72c: 89 e1 ldi r24, 0x19 ; 25
72e: 90 e0 ldi r25, 0x00 ; 0
730: 0e 94 3f 0b call 0x167e <uart_init>
OSCCAL=0xBB;
734: 8b eb ldi r24, 0xBB ; 187
736: 81 bf out 0x31, r24 ; 49
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -