?? adcurrent.lss
字號:
ADCurrent.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000002e8 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 000002e8 0000037c 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000b 00800060 00800060 0000037c 2**0
ALLOC
3 .noinit 00000000 0080006b 0080006b 0000037c 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 0000037c 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 0000037c 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 000006e8 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 0000003c 00000000 00000000 0000076c 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 0000011e 00000000 00000000 000007a8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000361 00000000 00000000 000008c6 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000001fb 00000000 00000000 00000c27 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 000003b8 00000000 00000000 00000e22 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000126 00000000 00000000 000011da 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 e6 00 jmp 0x1cc <__vector_3>
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 8d 00 jmp 0x11a <__vector_14>
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: e8 ee ldi r30, 0xE8 ; 232
68: f2 e0 ldi r31, 0x02 ; 2
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: a0 36 cpi r26, 0x60 ; 96
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: a0 e6 ldi r26, 0x60 ; 96
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: ab 36 cpi r26, 0x6B ; 107
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 03 01 jmp 0x206 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <ADInit>:
影響的全局變量:無
***************************************************/
void ADInit(void)
{
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);//使能ADC,不允許中斷
8e: 87 e8 ldi r24, 0x87 ; 135
90: 86 b9 out 0x06, r24 ; 6
ADMUX = (1<<REFS0)|(1<<REFS0)|(1<<MUX4); //0xD0
92: 80 e5 ldi r24, 0x50 ; 80
94: 87 b9 out 0x07, r24 ; 7
96: 08 95 ret
00000098 <ReadVoltage>:
}
/***************************************************
函數名稱:ReadVoltage()
函數功能:讀取AD轉換的電壓值,轉換一次要312us
輸入參數:通道號:channal,為0、1、2、3、4
返回參數:轉換出來的電壓值:十位有效值
影響的全局變量:無
***************************************************/
uint16_t ReadVoltage(uint8_t channal)
{
uint16_t temp;
uint8_t i;
temp=0;
while (ADCSRA&(1<<ADSC)) ; //等待ADC空閑
98: 36 99 sbic 0x06, 6 ; 6
9a: fe cf rjmp .-4 ; 0x98 <ReadVoltage>
ADMUX = (0xD0|channal); //設定轉換通道
9c: 80 6d ori r24, 0xD0 ; 208
9e: 87 b9 out 0x07, r24 ; 7
for(i=0;i<=2;i++)
a0: 80 e0 ldi r24, 0x00 ; 0
{
ADCSRA |= (1<<ADSC); //開始轉換
a2: 36 9a sbi 0x06, 6 ; 6
loop_until_bit_is_set(ADCSRA,ADIF); //等待轉換結束
a4: 34 9b sbis 0x06, 4 ; 6
a6: fe cf rjmp .-4 ; 0xa4 <ReadVoltage+0xc>
ADCSRA |= (1<<ADIF); //清標志位
a8: 34 9a sbi 0x06, 4 ; 6
temp = ADC;
aa: 24 b1 in r18, 0x04 ; 4
ac: 35 b1 in r19, 0x05 ; 5
ae: 8f 5f subi r24, 0xFF ; 255
b0: 83 30 cpi r24, 0x03 ; 3
b2: b8 f3 brcs .-18 ; 0xa2 <ReadVoltage+0xa>
}
if (temp >= 0x200) //如果為負數,補碼形式
b4: 82 e0 ldi r24, 0x02 ; 2
b6: 20 30 cpi r18, 0x00 ; 0
b8: 38 07 cpc r19, r24
ba: 38 f0 brcs .+14 ; 0xca <ReadVoltage+0x32>
{
temp = 0x3FF - temp;
bc: 8f ef ldi r24, 0xFF ; 255
be: 93 e0 ldi r25, 0x03 ; 3
c0: 82 1b sub r24, r18
c2: 93 0b sbc r25, r19
c4: 9c 01 movw r18, r24
temp ++; //加一后為原碼
c6: 2f 5f subi r18, 0xFF ; 255
c8: 3f 4f sbci r19, 0xFF ; 255
}
return temp; //8位精度
}
ca: c9 01 movw r24, r18
cc: 08 95 ret
000000ce <SetADC>:
/***************************************************
函數名稱:SIGNAL(SIG_ADC)
函數功能:ADC轉換完成中斷
輸入參數:無
返回參數:無
影響的全局變量:
***************************************************/
SIGNAL(SIG_ADC)
{
uint16_t temp;
temp = ADC;
if (SampleList >= 0x20) //第三次采樣
{
if (temp >= 0x200) //如果為負數,補碼形式
{
temp = 0x3FF - temp;
temp ++; //加一后為原碼
}
*PADCData = temp; //更新數據
SetADC(); //更換通道
}
else //第一次采樣
{
ADCSRA |= (1<<ADSC); //開始轉換
SampleList += 0x10;
}
}
/***************************************************
函數名稱:SetADC()
函數功能:設置ADC轉換通道并啟動轉換,轉換一次要208us
輸入參數:無。通道設置通過查采樣等待列表得出
返回參數:無。在中斷中讀取數據
相關說明:該子程序是在中斷中調用的
影響的全局變量:無
***************************************************/
void SetADC(void)
{
SampleList ++;
ce: 80 91 60 00 lds r24, 0x0060
d2: 8f 5f subi r24, 0xFF ; 255
d4: 80 93 60 00 sts 0x0060, r24
SampleList &= 0x0F; //高字節清空
d8: 80 91 60 00 lds r24, 0x0060
dc: 8f 70 andi r24, 0x0F ; 15
de: 80 93 60 00 sts 0x0060, r24
if ((SampleList >= 5)||(SampleList < 2))
e2: 80 91 60 00 lds r24, 0x0060
e6: 85 30 cpi r24, 0x05 ; 5
e8: 20 f4 brcc .+8 ; 0xf2 <SetADC+0x24>
ea: 80 91 60 00 lds r24, 0x0060
ee: 82 30 cpi r24, 0x02 ; 2
f0: 18 f4 brcc .+6 ; 0xf8 <SetADC+0x2a>
{
SampleList = 2; //實現循環
f2: 82 e0 ldi r24, 0x02 ; 2
f4: 80 93 60 00 sts 0x0060, r24
}
PADCData = &Current[SampleList-2]; //更新數據存放地址指針
f8: 80 91 60 00 lds r24, 0x0060
fc: 99 27 eor r25, r25
fe: 88 0f add r24, r24
100: 99 1f adc r25, r25
102: 83 5a subi r24, 0xA3 ; 163
104: 9f 4f sbci r25, 0xFF ; 255
106: 90 93 68 00 sts 0x0068, r25
10a: 80 93 67 00 sts 0x0067, r24
ADMUX = (0xD0|SampleList); //設定轉換通道
10e: 80 91 60 00 lds r24, 0x0060
112: 80 6d ori r24, 0xD0 ; 208
114: 87 b9 out 0x07, r24 ; 7
ADCSRA |= (1<<ADSC); //開始轉換
116: 36 9a sbi 0x06, 6 ; 6
118: 08 95 ret
0000011a <__vector_14>:
11a: 1f 92 push r1
11c: 0f 92 push r0
11e: 0f b6 in r0, 0x3f ; 63
120: 0f 92 push r0
122: 11 24 eor r1, r1
124: 2f 93 push r18
126: 3f 93 push r19
128: 4f 93 push r20
12a: 5f 93 push r21
12c: 6f 93 push r22
12e: 7f 93 push r23
130: 8f 93 push r24
132: 9f 93 push r25
134: af 93 push r26
136: bf 93 push r27
138: ef 93 push r30
13a: ff 93 push r31
13c: 24 b1 in r18, 0x04 ; 4
13e: 35 b1 in r19, 0x05 ; 5
140: 80 91 60 00 lds r24, 0x0060
144: 80 32 cpi r24, 0x20 ; 32
146: a0 f0 brcs .+40 ; 0x170 <__vector_14+0x56>
148: 82 e0 ldi r24, 0x02 ; 2
14a: 20 30 cpi r18, 0x00 ; 0
14c: 38 07 cpc r19, r24
14e: 38 f0 brcs .+14 ; 0x15e <__vector_14+0x44>
150: 8f ef ldi r24, 0xFF ; 255
152: 93 e0 ldi r25, 0x03 ; 3
154: 82 1b sub r24, r18
156: 93 0b sbc r25, r19
158: 9c 01 movw r18, r24
15a: 2f 5f subi r18, 0xFF ; 255
15c: 3f 4f sbci r19, 0xFF ; 255
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -