📄 main.lss
字号:
1e0: ff 92 push r15
1e2: 0f 93 push r16
1e4: 1f 93 push r17
1e6: cf 93 push r28
1e8: df 93 push r29
1ea: 3b 01 movw r6, r22
1ec: 4c 01 movw r8, r24
uchar i=8,j,dot_position,count=0 ;
long temp=10000000,dot_temp ;
//当temp=10000000时,显示8位整数
dp=0 ;
1ee: 10 92 73 00 sts 0x0073, r1
long integer ;
float dot ;
integer=(long)m_lData ;
1f2: 0e 94 c1 02 call 0x582 ; 0x582 <__fixsfsi>
1f6: 7b 01 movw r14, r22
1f8: 8c 01 movw r16, r24
dot=m_lData-(float)integer ;
if(integer==0)
1fa: 61 15 cp r22, r1
1fc: 71 05 cpc r23, r1
1fe: 81 05 cpc r24, r1
200: 91 05 cpc r25, r1
202: 31 f4 brne .+12 ; 0x210 <PrintFloat+0x44>
204: aa 24 eor r10, r10
206: bb 24 eor r11, r11
208: 65 01 movw r12, r10
20a: 27 e0 ldi r18, 0x07 ; 7
20c: 52 2e mov r5, r18
20e: 1a c0 rjmp .+52 ; 0x244 <PrintFloat+0x78>
210: 5b 01 movw r10, r22
212: 6c 01 movw r12, r24
214: 55 24 eor r5, r5
216: 0b c0 rjmp .+22 ; 0x22e <PrintFloat+0x62>
{
integer=0 ;
count=7 ;
}
else
while(integer/10000000==0)
{
integer*=10 ;
218: c6 01 movw r24, r12
21a: b5 01 movw r22, r10
21c: 2a e0 ldi r18, 0x0A ; 10
21e: 30 e0 ldi r19, 0x00 ; 0
220: 40 e0 ldi r20, 0x00 ; 0
222: 50 e0 ldi r21, 0x00 ; 0
224: 0e 94 7e 03 call 0x6fc ; 0x6fc <__mulsi3>
228: 5b 01 movw r10, r22
22a: 6c 01 movw r12, r24
count++;
22c: 53 94 inc r5
22e: d6 01 movw r26, r12
230: c5 01 movw r24, r10
232: 81 58 subi r24, 0x81 ; 129
234: 99 46 sbci r25, 0x69 ; 105
236: a7 46 sbci r26, 0x67 ; 103
238: bf 4f sbci r27, 0xFF ; 255
23a: 8f 5f subi r24, 0xFF ; 255
23c: 9c 42 sbci r25, 0x2C ; 44
23e: a1 43 sbci r26, 0x31 ; 49
240: b1 40 sbci r27, 0x01 ; 1
242: 50 f3 brcs .-44 ; 0x218 <PrintFloat+0x4c>
244: c8 01 movw r24, r16
246: b7 01 movw r22, r14
248: 0e 94 de 02 call 0x5bc ; 0x5bc <__floatsisf>
24c: 9b 01 movw r18, r22
24e: ac 01 movw r20, r24
250: c4 01 movw r24, r8
252: b3 01 movw r22, r6
254: 0e 94 7e 02 call 0x4fc ; 0x4fc <__subsf3>
258: 10 e0 ldi r17, 0x00 ; 0
25a: 07 c0 rjmp .+14 ; 0x26a <PrintFloat+0x9e>
}
for(j=0;j<count;j++)
dot=dot*10 ;
25c: 20 e0 ldi r18, 0x00 ; 0
25e: 30 e0 ldi r19, 0x00 ; 0
260: 40 e2 ldi r20, 0x20 ; 32
262: 51 e4 ldi r21, 0x41 ; 65
264: 0e 94 33 03 call 0x666 ; 0x666 <__mulsf3>
268: 1f 5f subi r17, 0xFF ; 255
26a: 15 15 cp r17, r5
26c: b9 f7 brne .-18 ; 0x25c <PrintFloat+0x90>
dot_temp=(long)dot ;
integer+=dot_temp ;
26e: 0e 94 c1 02 call 0x582 ; 0x582 <__fixsfsi>
272: 7b 01 movw r14, r22
274: 8c 01 movw r16, r24
276: ea 0c add r14, r10
278: fb 1c adc r15, r11
27a: 0c 1d adc r16, r12
27c: 1d 1d adc r17, r13
dot_position=count+1 ;
27e: 53 94 inc r5
280: 90 e8 ldi r25, 0x80 ; 128
282: a9 2e mov r10, r25
284: 96 e9 ldi r25, 0x96 ; 150
286: b9 2e mov r11, r25
288: 98 e9 ldi r25, 0x98 ; 152
28a: c9 2e mov r12, r25
28c: d1 2c mov r13, r1
28e: c8 e0 ldi r28, 0x08 ; 8
290: d0 e0 ldi r29, 0x00 ; 0
while(temp)
{
if(i==dot_position)
292: 5c 16 cp r5, r28
294: 19 f4 brne .+6 ; 0x29c <PrintFloat+0xd0>
dp=1;
296: 81 e0 ldi r24, 0x01 ; 1
298: 80 93 73 00 sts 0x0073, r24
i--;
send_byte(disp_table[(uchar)(integer/temp)]);
29c: c8 01 movw r24, r16
29e: b7 01 movw r22, r14
2a0: a6 01 movw r20, r12
2a2: 95 01 movw r18, r10
2a4: 0e 94 b0 03 call 0x760 ; 0x760 <__divmodsi4>
2a8: da 01 movw r26, r20
2aa: c9 01 movw r24, r18
2ac: 99 27 eor r25, r25
2ae: 80 5a subi r24, 0xA0 ; 160
2b0: 9f 4f sbci r25, 0xFF ; 255
2b2: fc 01 movw r30, r24
2b4: 80 81 ld r24, Z
2b6: 0e 94 53 00 call 0xa6 ; 0xa6 <send_byte>
integer=integer%temp ;
temp/=10 ;
2ba: c6 01 movw r24, r12
2bc: b5 01 movw r22, r10
2be: 2a e0 ldi r18, 0x0A ; 10
2c0: 30 e0 ldi r19, 0x00 ; 0
2c2: 40 e0 ldi r20, 0x00 ; 0
2c4: 50 e0 ldi r21, 0x00 ; 0
2c6: 0e 94 b0 03 call 0x760 ; 0x760 <__divmodsi4>
2ca: 39 01 movw r6, r18
2cc: 4a 01 movw r8, r20
dp=0 ;
2ce: 10 92 73 00 sts 0x0073, r1
2d2: 21 97 sbiw r28, 0x01 ; 1
2d4: 59 f0 breq .+22 ; 0x2ec <PrintFloat+0x120>
2d6: c8 01 movw r24, r16
2d8: b7 01 movw r22, r14
2da: a6 01 movw r20, r12
2dc: 95 01 movw r18, r10
2de: 0e 94 b0 03 call 0x760 ; 0x760 <__divmodsi4>
2e2: 7b 01 movw r14, r22
2e4: 8c 01 movw r16, r24
2e6: 64 01 movw r12, r8
2e8: 53 01 movw r10, r6
2ea: d3 cf rjmp .-90 ; 0x292 <PrintFloat+0xc6>
2ec: df 91 pop r29
2ee: cf 91 pop r28
2f0: 1f 91 pop r17
2f2: 0f 91 pop r16
2f4: ff 90 pop r15
2f6: ef 90 pop r14
2f8: df 90 pop r13
2fa: cf 90 pop r12
2fc: bf 90 pop r11
2fe: af 90 pop r10
300: 9f 90 pop r9
302: 8f 90 pop r8
304: 7f 90 pop r7
306: 6f 90 pop r6
308: 5f 90 pop r5
30a: 08 95 ret
0000030c <PrintChar>:
}
}
/*void PrintFloat(long m_lData,uchar dot_position)
{
uchar i=3;
long temp=100; //当temp=10000000时,显示8位整数
dp=0;
while(temp)
{
if(i==dot_position)
dp=1;
i--;
send_byte(disp_table[m_lData/temp]);
m_lData=m_lData%temp;
temp/=10;
dp=0;
}
}*/
//用于显示字符******************************************************************
void PrintChar(uchar m_Char)
{
30c: e8 2f mov r30, r24
if((m_Char>='0')&&(m_Char<='9'))
30e: 80 53 subi r24, 0x30 ; 48
310: 8a 30 cpi r24, 0x0A ; 10
312: 20 f4 brcc .+8 ; 0x31c <PrintChar+0x10>
send_byte(disp_table[m_Char-'0']);
314: ff 27 eor r31, r31
316: e0 5d subi r30, 0xD0 ; 208
318: ff 4f sbci r31, 0xFF ; 255
31a: 07 c0 rjmp .+14 ; 0x32a <PrintChar+0x1e>
else if((m_Char>='A')&&m_Char<='F')
31c: 8e 2f mov r24, r30
31e: 81 54 subi r24, 0x41 ; 65
320: 86 30 cpi r24, 0x06 ; 6
322: 38 f4 brcc .+14 ; 0x332 <PrintChar+0x26>
send_byte(disp_table[m_Char-'A'+10]);
324: ff 27 eor r31, r31
326: e7 5d subi r30, 0xD7 ; 215
328: ff 4f sbci r31, 0xFF ; 255
32a: 80 81 ld r24, Z
32c: 0e 94 53 00 call 0xa6 ; 0xa6 <send_byte>
330: 08 95 ret
else if((m_Char>='a')&&m_Char<='f')
332: 8e 2f mov r24, r30
334: 81 56 subi r24, 0x61 ; 97
336: 86 30 cpi r24, 0x06 ; 6
338: 30 f4 brcc .+12 ; 0x346 <PrintChar+0x3a>
send_byte(disp_table[m_Char-'a'+10]);
33a: ff 27 eor r31, r31
33c: e7 5f subi r30, 0xF7 ; 247
33e: ff 4f sbci r31, 0xFF ; 255
340: 80 81 ld r24, Z
342: 0e 94 53 00 call 0xa6 ; 0xa6 <send_byte>
346: 08 95 ret
00000348 <PrintString>:
}
//用于显示字符串****************************************************************
void PrintString(uchar*str)
{
348: ef 92 push r14
34a: ff 92 push r15
34c: 0f 93 push r16
34e: 1f 93 push r17
350: cf 93 push r28
352: df 93 push r29
354: 8c 01 movw r16, r24
uchar i=0,j=0 ;
ClearAll();
356: 0e 94 75 00 call 0xea ; 0xea <ClearAll>
35a: 38 e0 ldi r19, 0x08 ; 8
35c: f3 2e mov r15, r19
35e: ee 24 eor r14, r14
360: e8 01 movw r28, r16
362: 27 96 adiw r28, 0x07 ; 7
for(i=8;i>0;i--)
{
if(*(str+i-1))PrintChar(*(str+8-j-i));
364: 2f 2d mov r18, r15
366: 33 27 eor r19, r19
368: 88 81 ld r24, Y
36a: 21 97 sbiw r28, 0x01 ; 1
36c: 88 23 and r24, r24
36e: 49 f0 breq .+18 ; 0x382 <PrintString+0x3a>
370: f8 01 movw r30, r16
372: ee 19 sub r30, r14
374: f1 09 sbc r31, r1
376: e2 1b sub r30, r18
378: f3 0b sbc r31, r19
37a: 80 85 ldd r24, Z+8 ; 0x08
37c: 0e 94 86 01 call 0x30c ; 0x30c <PrintChar>
380: 04 c0 rjmp .+8 ; 0x38a <PrintString+0x42>
else
{
send_byte(0x00);
382: 80 e0 ldi r24, 0x00 ; 0
384: 0e 94 53 00 call 0xa6 ; 0xa6 <send_byte>
j++;
388: e3 94 inc r14
38a: fa 94 dec r15
38c: 59 f7 brne .-42 ; 0x364 <PrintString+0x1c>
38e: df 91 pop r29
390: cf 91 pop r28
392: 1f 91 pop r17
394: 0f 91 pop r16
396: ff 90 pop r15
398: ef 90 pop r14
39a: 08 95 ret
0000039c <Reset_DS18B20>:
//DS18B20初始化函数*******************************************************//
uchar Reset_DS18B20(void)
{
39c: 8c 9a sbi 0x11, 4 ; 17
uchar t=6,temp;
Set_DS18B20_dq_DDR();
Clr_DS18B20_dq();
39e: 94 98 cbi 0x12, 4 ; 18
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
3a0: 90 ef ldi r25, 0xF0 ; 240
3a2: 89 2f mov r24, r25
3a4: 8a 95 dec r24
3a6: f1 f7 brne .-4 ; 0x3a4 <Reset_DS18B20+0x8>
3a8: 89 2f mov r24, r25
3aa: 8a 95 dec r24
3ac: f1 f7 brne .-4 ; 0x3aa <Reset_DS18B20+0xe>
3ae: 89 2f mov r24, r25
3b0: 8a 95 dec r24
3b2: f1 f7 brne .-4 ; 0x3b0 <Reset_DS18B20+0x14>
3b4: 89 2f mov r24, r25
3b6: 8a 95 dec r24
3b8: f1 f7 brne .-4 ; 0x3b6 <Reset_DS18B20+0x1a>
3ba: 89 2f mov r24, r25
3bc: 8a 95 dec r24
3be: f1 f7 brne .-4 ; 0x3bc <Reset_DS18B20+0x20>
3c0: 89 2f mov r24, r25
3c2: 8a 95 dec r24
3c4: f1 f7 brne .-4 ; 0x3c2 <Reset_DS18B20+0x26>
while(t--)
{
_delay_us(90);
}
Set_DS18B20_dq();
3c6: 94 9a sbi 0x12, 4 ; 18
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
3c8: 88 ec ldi r24, 0xC8 ; 200
3ca: 8a 95 dec r24
3cc: f1 f7 brne .-4 ; 0x3ca <Reset_DS18B20+0x2e>
_delay_us(75);
temp=In_DS18B20_dq();
3ce: 80 b3 in r24, 0x10 ; 16
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
3d0: 29 2f mov r18, r25
3d2: 2a 95 dec r18
3d4: f1 f7 brne .-4 ; 0x3d2 <Reset_DS18B20+0x36>
_delay_us(90);
_delay_us(90);
_delay_us(90);
if(temp)
return 0;
else return 1;
}
3d6: 29 2f mov r18, r25
3d8: 2a 95 dec r18
3da: f1 f7 brne .-4 ; 0x3d8 <Reset_DS18B20+0x3c>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -