📄 tem.lss
字号:
tem.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000494 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000001a 00800060 00000494 00000528 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 0080007a 000004ae 00000542 2**0
ALLOC
3 .noinit 00000000 0080007a 0080007a 00000542 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000542 2**0
CONTENTS
5 .stab 00001344 00000000 00000000 00000544 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000ad7 00000000 00000000 00001888 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e4 e9 ldi r30, 0x94 ; 148
68: f4 e0 ldi r31, 0x04 ; 4
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: aa 37 cpi r26, 0x7A ; 122
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: aa e7 ldi r26, 0x7A ; 122
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: aa 37 cpi r26, 0x7A ; 122
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 b8 01 jmp 0x370 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <delay>:
void delay(uint t) //1mS延时7.3728M
{ulong i;
while(t--)
{for(i=0;i<50000;i++)
8e: 01 97 sbiw r24, 0x01 ; 1
90: 2f ef ldi r18, 0xFF ; 255
92: 8f 3f cpi r24, 0xFF ; 255
94: 92 07 cpc r25, r18
96: 59 f0 breq .+22 ; 0xae <delay+0x20>
98: 2f e4 ldi r18, 0x4F ; 79
9a: 33 ec ldi r19, 0xC3 ; 195
9c: 40 e0 ldi r20, 0x00 ; 0
9e: 50 e0 ldi r21, 0x00 ; 0
a0: 22 53 subi r18, 0x32 ; 50
a2: 30 40 sbci r19, 0x00 ; 0
a4: 40 40 sbci r20, 0x00 ; 0
a6: 50 40 sbci r21, 0x00 ; 0
a8: 57 ff sbrs r21, 7
aa: fa cf rjmp .-12 ; 0xa0 <delay+0x12>
ac: f0 cf rjmp .-32 ; 0x8e <delay>
ae: 08 95 ret
000000b0 <busy>:
;}
}
void busy(void) //检查BF信号
{DR=0x00; //设置为输入
b0: 17 ba out 0x17, r1 ; 23
do
{rs_c;rw_s;e_s;}
b2: df 98 cbi 0x1b, 7 ; 27
b4: de 9a sbi 0x1b, 6 ; 27
b6: dd 9a sbi 0x1b, 5 ; 27
b8: b7 99 sbic 0x16, 7 ; 22
ba: fb cf rjmp .-10 ; 0xb2 <busy+0x2>
while((PP&0x80)!=0); //BUSY
e_c;
bc: dd 98 cbi 0x1b, 5 ; 27
delay(3);
be: 83 e0 ldi r24, 0x03 ; 3
c0: 90 e0 ldi r25, 0x00 ; 0
c2: 0e 94 47 00 call 0x8e <delay>
DR=0xff;
c6: 8f ef ldi r24, 0xFF ; 255
c8: 87 bb out 0x17, r24 ; 23
ca: 08 95 ret
000000cc <w_lcd>:
}
void w_lcd(uchar a,uchar dat_com) //向LCD写命令或数据,由dat_com决定
{busy();
cc: 1f 93 push r17
ce: cf 93 push r28
d0: c8 2f mov r28, r24
d2: 16 2f mov r17, r22
d4: 0e 94 58 00 call 0xb0 <busy>
if(dat_com==0)
d8: 11 23 and r17, r17
da: 11 f4 brne .+4 ; 0xe0 <w_lcd+0x14>
rs_c;
dc: df 98 cbi 0x1b, 7 ; 27
de: 01 c0 rjmp .+2 ; 0xe2 <w_lcd+0x16>
else rs_s;
e0: df 9a sbi 0x1b, 7 ; 27
rw_c;
e2: de 98 cbi 0x1b, 6 ; 27
DP=a;
e4: c8 bb out 0x18, r28 ; 24
e_s;
e6: dd 9a sbi 0x1b, 5 ; 27
e_c;
e8: dd 98 cbi 0x1b, 5 ; 27
ea: cf 91 pop r28
ec: 1f 91 pop r17
ee: 08 95 ret
000000f0 <ww>:
}
void ww(uchar word[16]) //写n个字符
{uchar i;
f0: 1f 93 push r17
f2: cf 93 push r28
f4: df 93 push r29
f6: ec 01 movw r28, r24
for(i=0;word[i]!='\0';i++)
f8: 10 e0 ldi r17, 0x00 ; 0
fa: 88 81 ld r24, Y
fc: 88 23 and r24, r24
fe: 71 f0 breq .+28 ; 0x11c <ww+0x2c>
w_lcd(word[i],dat);
100: fe 01 movw r30, r28
102: e1 0f add r30, r17
104: f1 1d adc r31, r1
106: 61 e0 ldi r22, 0x01 ; 1
108: 80 81 ld r24, Z
10a: 0e 94 66 00 call 0xcc <w_lcd>
10e: 1f 5f subi r17, 0xFF ; 255
110: fe 01 movw r30, r28
112: e1 0f add r30, r17
114: f1 1d adc r31, r1
116: 80 81 ld r24, Z
118: 88 23 and r24, r24
11a: 91 f7 brne .-28 ; 0x100 <ww+0x10>
11c: df 91 pop r29
11e: cf 91 pop r28
120: 1f 91 pop r17
122: 08 95 ret
00000124 <wn>:
}
void wn(uchar num) //写数字
{w_lcd(num+0x30,dat);
124: 61 e0 ldi r22, 0x01 ; 1
126: 80 5d subi r24, 0xD0 ; 208
128: 0e 94 66 00 call 0xcc <w_lcd>
12c: 08 95 ret
0000012e <go>:
}
void go(uchar xxx,uchar yyy) //光标移到(xxxx,yyy)
{ uchar tmp;
12e: 98 2f mov r25, r24
if(yyy==0)
130: 66 23 and r22, r22
132: 19 f4 brne .+6 ; 0x13a <go+0xc>
tmp=0x80+xxx;
134: 89 2f mov r24, r25
136: 80 58 subi r24, 0x80 ; 128
138: 02 c0 rjmp .+4 ; 0x13e <go+0x10>
else
tmp=0xc0+xxx;
13a: 89 2f mov r24, r25
13c: 80 54 subi r24, 0x40 ; 64
w_lcd(tmp,com);
13e: 60 e0 ldi r22, 0x00 ; 0
140: 0e 94 66 00 call 0xcc <w_lcd>
144: 08 95 ret
00000146 <ini>:
}
void ini(void) //初始化
{ delay(15);
146: 8f e0 ldi r24, 0x0F ; 15
148: 90 e0 ldi r25, 0x00 ; 0
14a: 0e 94 47 00 call 0x8e <delay>
w_lcd(0x38,com);
14e: 60 e0 ldi r22, 0x00 ; 0
150: 88 e3 ldi r24, 0x38 ; 56
152: 0e 94 66 00 call 0xcc <w_lcd>
delay(5);
156: 85 e0 ldi r24, 0x05 ; 5
158: 90 e0 ldi r25, 0x00 ; 0
15a: 0e 94 47 00 call 0x8e <delay>
w_lcd(0x38,com);
15e: 60 e0 ldi r22, 0x00 ; 0
160: 88 e3 ldi r24, 0x38 ; 56
162: 0e 94 66 00 call 0xcc <w_lcd>
delay(5);
166: 85 e0 ldi r24, 0x05 ; 5
168: 90 e0 ldi r25, 0x00 ; 0
16a: 0e 94 47 00 call 0x8e <delay>
w_lcd(0x38,com);
16e: 60 e0 ldi r22, 0x00 ; 0
170: 88 e3 ldi r24, 0x38 ; 56
172: 0e 94 66 00 call 0xcc <w_lcd>
delay(10);
176: 8a e0 ldi r24, 0x0A ; 10
178: 90 e0 ldi r25, 0x00 ; 0
17a: 0e 94 47 00 call 0x8e <delay>
w_lcd(0x01,com); //显示清0
17e: 60 e0 ldi r22, 0x00 ; 0
180: 81 e0 ldi r24, 0x01 ; 1
182: 0e 94 66 00 call 0xcc <w_lcd>
186: 08 95 ret
00000188 <set>:
}
/*显视方式参数说明:
0:关显视
1:不显示光标,写一个字符光标加1,指针加1
2:显示光标,写一个字符光标加1,指针加1
3:不显示光标,写一个字符光标不变,指针加1,整屏显视左移
4:显示光标,写一个字符光标不变,指针加1,整屏显视左移
*/
void set(uchar way) //显视方式设置,其中way是方式参数
{if(way==0) //关显视
188: 68 2f mov r22, r24
18a: 88 23 and r24, r24
18c: 11 f4 brne .+4 ; 0x192 <set+0xa>
w_lcd(0x08,com);
18e: 88 e0 ldi r24, 0x08 ; 8
190: 08 c0 rjmp .+16 ; 0x1a2 <set+0x1a>
else if(way==1) //不显视光标,光标、数据指针加1
192: 81 30 cpi r24, 0x01 ; 1
194: 49 f4 brne .+18 ; 0x1a8 <set+0x20>
w_lcd(0x0c,com),
196: 60 e0 ldi r22, 0x00 ; 0
198: 8c e0 ldi r24, 0x0C ; 12
19a: 0e 94 66 00 call 0xcc <w_lcd>
19e: 60 e0 ldi r22, 0x00 ; 0
1a0: 86 e0 ldi r24, 0x06 ; 6
1a2: 0e 94 66 00 call 0xcc <w_lcd>
1a6: 08 95 ret
w_lcd(0x06,com);
else if(way==2) //显视光标,光标交烁,光标、数据指针加1;
1a8: 82 30 cpi r24, 0x02 ; 2
1aa: 19 f4 brne .+6 ; 0x1b2 <set+0x2a>
w_lcd(0x0f,com),
1ac: 60 e0 ldi r22, 0x00 ; 0
1ae: 8f e0 ldi r24, 0x0F ; 15
1b0: f4 cf rjmp .-24 ; 0x19a <set+0x12>
w_lcd(0x06,com);
else if(way==3) //不显视光标,光标不移动,屏幕左移
1b2: 83 30 cpi r24, 0x03 ; 3
1b4: 39 f4 brne .+14 ; 0x1c4 <set+0x3c>
w_lcd(0x0c,com),
1b6: 60 e0 ldi r22, 0x00 ; 0
1b8: 8c e0 ldi r24, 0x0C ; 12
1ba: 0e 94 66 00 call 0xcc <w_lcd>
1be: 60 e0 ldi r22, 0x00 ; 0
1c0: 87 e0 ldi r24, 0x07 ; 7
1c2: ef cf rjmp .-34 ; 0x1a2 <set+0x1a>
w_lcd(0x07,com);
else if(way==4) //显视光标,光标不移动,屏幕左移
1c4: 84 30 cpi r24, 0x04 ; 4
1c6: 41 f4 brne .+16 ; 0x1d8 <set+0x50>
w_lcd(0x0f,com),
1c8: 60 e0 ldi r22, 0x00 ; 0
1ca: 8f e0 ldi r24, 0x0F ; 15
1cc: 0e 94 66 00 call 0xcc <w_lcd>
1d0: 60 e0 ldi r22, 0x00 ; 0
1d2: 87 e0 ldi r24, 0x07 ; 7
1d4: 0e 94 66 00 call 0xcc <w_lcd>
1d8: 08 95 ret
000001da <wsc>:
w_lcd(0x07,com);
}
/*void ws(uchar str0[40],char str1[40]) //写字符串
{ uchar i;
ini(); //初始化
set(1); //设置显视方式
go(0,0);
for(i=0;str0[i]!='\0';i++)
w_lcd(str0[i],dat);
go(0,1);
for(i=0;str1[i]!='\0';i++)
w_lcd(str1[i],dat);
} //*/
void wsc(const char str0[40],const char str1[40]) //写字符串
{ uchar i;
1da: ef 92 push r14
1dc: ff 92 push r15
1de: 1f 93 push r17
1e0: cf 93 push r28
1e2: df 93 push r29
1e4: ec 01 movw r28, r24
1e6: 7b 01 movw r14, r22
ini(); //初始化
1e8: 0e 94 a3 00 call 0x146 <ini>
set(1); //设置显视方式
1ec: 81 e0 ldi r24, 0x01 ; 1
1ee: 0e 94 c4 00 call 0x188 <set>
go(0,0);
1f2: 60 e0 ldi r22, 0x00 ; 0
1f4: 86 2f mov r24, r22
1f6: 0e 94 97 00 call 0x12e <go>
for(i=0;str0[i]!='\0';i++)
1fa: 10 e0 ldi r17, 0x00 ; 0
1fc: 88 81 ld r24, Y
1fe: 88 23 and r24, r24
200: 69 f0 breq .+26 ; 0x21c <wsc+0x42>
w_lcd(str0[i],dat);
202: fe 01 movw r30, r28
204: e1 0f add r30, r17
206: f1 1d adc r31, r1
208: 61 e0 ldi r22, 0x01 ; 1
20a: 80 81 ld r24, Z
20c: 0e 94 66 00 call 0xcc <w_lcd>
210: 1f 5f subi r17, 0xFF ; 255
212: fe 01 movw r30, r28
214: e1 0f add r30, r17
216: f1 1d adc r31, r1
218: 80 81 ld r24, Z
21a: f1 cf rjmp .-30 ; 0x1fe <wsc+0x24>
go(0,1);
21c: 61 e0 ldi r22, 0x01 ; 1
21e: 80 e0 ldi r24, 0x00 ; 0
220: 0e 94 97 00 call 0x12e <go>
for(i=0;str1[i]!='\0';i++)
224: 10 e0 ldi r17, 0x00 ; 0
226: f7 01 movw r30, r14
228: 80 81 ld r24, Z
22a: 88 23 and r24, r24
22c: 71 f0 breq .+28 ; 0x24a <wsc+0x70>
w_lcd(str1[i],dat);
22e: f7 01 movw r30, r14
230: e1 0f add r30, r17
232: f1 1d adc r31, r1
234: 61 e0 ldi r22, 0x01 ; 1
236: 80 81 ld r24, Z
238: 0e 94 66 00 call 0xcc <w_lcd>
23c: 1f 5f subi r17, 0xFF ; 255
23e: f7 01 movw r30, r14
240: e1 0f add r30, r17
242: f1 1d adc r31, r1
244: 80 81 ld r24, Z
246: 88 23 and r24, r24
248: 91 f7 brne .-28 ; 0x22e <wsc+0x54>
24a: df 91 pop r29
24c: cf 91 pop r28
24e: 1f 91 pop r17
250: ff 90 pop r15
252: ef 90 pop r14
254: 08 95 ret
00000256 <ini_ds>:
#define Q_c DDRD|=0x08 //DQ =0
#define Q_a (PIND&0x08) //read DQ
void ini_ds(void)
{ DDRD &= ~0x08; // 输入模式(上电时为高电平)
256: 8b 98 cbi 0x11, 3 ; 17
PORTD &= ~0x08; // 输出锁存器写0,以后不再更改
258: 93 98 cbi 0x12, 3 ; 18
25a: 08 95 ret
0000025c <rt_ds>:
}
uchar rt_ds(void) //rest ds18b20
{uchar ret; //return data
ret=0;
Q_c;
25c: 8b 9a sbi 0x11, 3 ; 17
milliseconds can be achieved.
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -