📄 avr_ds18b20.lss
字号:
avr_ds18b20.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000004b4 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000005c 00800060 000004b4 00000548 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000009 008000bc 008000bc 000005a4 2**0
ALLOC
3 .noinit 00000000 008000c5 008000c5 000005a4 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000005a4 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 000005a4 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 00000175 00000000 00000000 000005b8 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 000004b4 00000000 00000000 0000072d 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000187 00000000 00000000 00000be1 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000054e 00000000 00000000 00000d68 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000001ae 00000000 00000000 000012b6 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54
4: 0c 94 45 00 jmp 0x8a
8: 0c 94 45 00 jmp 0x8a
c: 0c 94 45 00 jmp 0x8a
10: 0c 94 45 00 jmp 0x8a
14: 0c 94 45 00 jmp 0x8a
18: 0c 94 45 00 jmp 0x8a
1c: 0c 94 45 00 jmp 0x8a
20: 0c 94 45 00 jmp 0x8a
24: 0c 94 45 00 jmp 0x8a
28: 0c 94 45 00 jmp 0x8a
2c: 0c 94 45 00 jmp 0x8a
30: 0c 94 45 00 jmp 0x8a
34: 0c 94 45 00 jmp 0x8a
38: 0c 94 45 00 jmp 0x8a
3c: 0c 94 45 00 jmp 0x8a
40: 0c 94 45 00 jmp 0x8a
44: 0c 94 45 00 jmp 0x8a
48: 0c 94 45 00 jmp 0x8a
4c: 0c 94 45 00 jmp 0x8a
50: 0c 94 45 00 jmp 0x8a
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 eb ldi r30, 0xB4 ; 180
68: f4 e0 ldi r31, 0x04 ; 4
6a: 02 c0 rjmp .+4 ; 0x70
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: ac 3b cpi r26, 0xBC ; 188
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: ac eb ldi r26, 0xBC ; 188
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a5 3c cpi r26, 0xC5 ; 197
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 33 02 jmp 0x466
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <delay_nms>:
/********************************************************/
void delay_nms(uint n)
{
uint i=0 ;
for (i=0 ;i<n ;i++)
8e: 00 97 sbiw r24, 0x00 ; 0
90: 41 f0 breq .+16 ; 0xa2
92: 9c 01 movw r18, r24
milliseconds can be achieved.
*/
static __inline__ void
_delay_loop_2(uint16_t __count)
{
94: 80 ed ldi r24, 0xD0 ; 208
96: 97 e0 ldi r25, 0x07 ; 7
__asm__ volatile (
98: 01 97 sbiw r24, 0x01 ; 1
9a: f1 f7 brne .-4 ; 0x98
9c: 21 50 subi r18, 0x01 ; 1
9e: 30 40 sbci r19, 0x00 ; 0
a0: c9 f7 brne .-14 ; 0x94
a2: 08 95 ret
000000a4 <Delay>:
milliseconds can be achieved.
*/
static __inline__ void
_delay_loop_2(uint16_t __count)
{
a4: 88 0f add r24, r24
a6: 99 1f adc r25, r25
__asm__ volatile (
a8: 01 97 sbiw r24, 0x01 ; 1
aa: f1 f7 brne .-4 ; 0xa8
ac: 08 95 ret
000000ae <beep>:
_delay_loop_2(250*FREQ) ;
}
/********************************************************/
/* */
/* y*us延时函数 */
/* */
/********************************************************/
void Delay(uint y)
{
_delay_loop_2(2*y);
}
/********************************************************/
/* */
/* 蜂鸣器驱动函数 */
/* */
/********************************************************/
void beep(void)
{
ae: cf 93 push r28
b0: c3 e6 ldi r28, 0x63 ; 99
uchar i;
for (i=0;i<100;i++)
{
PORTD&=~_BV(BEEP);
b2: 97 98 cbi 0x12, 7 ; 18
Delay(500);
b4: 84 ef ldi r24, 0xF4 ; 244
b6: 91 e0 ldi r25, 0x01 ; 1
b8: 0e 94 52 00 call 0xa4
PORTD=_BV(BEEP);
bc: 80 e8 ldi r24, 0x80 ; 128
be: 82 bb out 0x12, r24 ; 18
Delay(500);
c0: 84 ef ldi r24, 0xF4 ; 244
c2: 91 e0 ldi r25, 0x01 ; 1
c4: 0e 94 52 00 call 0xa4
c8: c1 50 subi r28, 0x01 ; 1
ca: c7 ff sbrs r28, 7
cc: f2 cf rjmp .-28 ; 0xb2
}
PORTD|=_BV(BEEP); //关闭蜂鸣器
ce: 97 9a sbi 0x12, 7 ; 18
delay_nms(200);
d0: 88 ec ldi r24, 0xC8 ; 200
d2: 90 e0 ldi r25, 0x00 ; 0
d4: 0e 94 47 00 call 0x8e
d8: cf 91 pop r28
da: 08 95 ret
000000dc <init_io>:
}
/********************************************************/
/* */
/* IO口初始化 */
/* */
/********************************************************/
void init_io(void)
{
DDRA=0xFF; //置PA口输出
dc: 8f ef ldi r24, 0xFF ; 255
de: 8a bb out 0x1a, r24 ; 26
PORTA=0xFF; //PA口设置内部上拉电阻
e0: 8b bb out 0x1b, r24 ; 27
DDRB=0xFF; //置PB口输出
e2: 87 bb out 0x17, r24 ; 23
PORTB=0xFF; //PB口设置内部上拉电阻
e4: 88 bb out 0x18, r24 ; 24
DDRC=0xFF; //置PC口输出
e6: 84 bb out 0x14, r24 ; 20
PORTC=0xFF; //PC口设置内部上拉电阻
e8: 85 bb out 0x15, r24 ; 21
DDRD=0xFF; //置PD口输出
ea: 81 bb out 0x11, r24 ; 17
PORTD=0xFF; //PD口设置内部上拉电阻
ec: 82 bb out 0x12, r24 ; 18
ee: 08 95 ret
000000f0 <Init_DS18B20>:
}
/*********************************************************/
/* */
/* 初始化DS18B20 */
/* */
/*********************************************************/
int Init_DS18B20(void)
{
PORTD|=_BV(DQ); //DQ复位
f0: 93 9a sbi 0x12, 3 ; 18
Delay(70); //稍做延时70us
f2: 86 e4 ldi r24, 0x46 ; 70
f4: 90 e0 ldi r25, 0x00 ; 0
f6: 0e 94 52 00 call 0xa4
PORTD&=~_BV(DQ); //将DQ拉低
fa: 93 98 cbi 0x12, 3 ; 18
Delay(780); //精确延时780us 大于 480us
fc: 8c e0 ldi r24, 0x0C ; 12
fe: 93 e0 ldi r25, 0x03 ; 3
100: 0e 94 52 00 call 0xa4
PORTD|=_BV(DQ); //拉高总线
104: 93 9a sbi 0x12, 3 ; 18
DDRD&=~_BV(DQ); //置PD3为输入
106: 8b 98 cbi 0x11, 3 ; 17
Delay(70); //稍做延时
108: 86 e4 ldi r24, 0x46 ; 70
10a: 90 e0 ldi r25, 0x00 ; 0
10c: 0e 94 52 00 call 0xa4
if(PIND&_BV(DQ)) //如果=0则初始化成功 =1则初始化失败
110: 83 9b sbis 0x10, 3 ; 16
112: 04 c0 rjmp .+8 ; 0x11c
presence = 1;
114: 81 e0 ldi r24, 0x01 ; 1
116: 80 93 c3 00 sts 0x00C3, r24
11a: 02 c0 rjmp .+4 ; 0x120
else
presence = 0;
11c: 10 92 c3 00 sts 0x00C3, r1
Delay(870); //精确延时870us
120: 86 e6 ldi r24, 0x66 ; 102
122: 93 e0 ldi r25, 0x03 ; 3
124: 0e 94 52 00 call 0xa4
DDRD |=_BV(DQ); //置PD3为输出
128: 8b 9a sbi 0x11, 3 ; 17
PORTD |=_BV(DQ); //释放总线
12a: 93 9a sbi 0x12, 3 ; 18
return(presence); //返回信号,0=presence,1= no presence
12c: 80 91 c3 00 lds r24, 0x00C3
}
130: 99 27 eor r25, r25
132: 08 95 ret
00000134 <ReadOneChar>:
/*********************************************************/
/* */
/* 读一个字节 */
/* */
/*********************************************************/
int ReadOneChar(void)
{
134: 1f 93 push r17
136: cf 93 push r28
uchar i = 0;
138: c0 e0 ldi r28, 0x00 ; 0
uchar dat = 0;
for (i = 8; i > 0; i--)
13a: 18 e0 ldi r17, 0x08 ; 8
{
PORTD&=~_BV(DQ); //总线为低电平
13c: 93 98 cbi 0x12, 3 ; 18
dat >>= 1;
13e: c6 95 lsr r28
PORTD|=_BV(DQ); //总线为高电平(释放总线)
140: 93 9a sbi 0x12, 3 ; 18
DDRD&=~_BV(DQ); //置PD3为输入
142: 8b 98 cbi 0x11, 3 ; 17
if(PIND&_BV(DQ))
144: 83 99 sbic 0x10, 3 ; 16
dat |= 0x80;
146: c0 68 ori r28, 0x80 ; 128
Delay(70);
148: 86 e4 ldi r24, 0x46 ; 70
14a: 90 e0 ldi r25, 0x00 ; 0
14c: 0e 94 52 00 call 0xa4
DDRD |=_BV(DQ);
150: 8b 9a sbi 0x11, 3 ; 17
PORTD|=_BV(DQ);
152: 93 9a sbi 0x12, 3 ; 18
154: 11 50 subi r17, 0x01 ; 1
156: 91 f7 brne .-28 ; 0x13c
}
return (dat);
}
158: 8c 2f mov r24, r28
15a: 99 27 eor r25, r25
15c: cf 91 pop r28
15e: 1f 91 pop r17
160: 08 95 ret
00000162 <WriteOneChar>:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -