📄 adc.lss
字号:
Adc.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000007d0 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000010 00800060 000007d0 00000864 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000c 00800070 00800070 00000874 2**0
ALLOC
3 .noinit 00000000 0080007c 0080007c 00000874 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000874 2**0
CONTENTS
5 .stab 000007c8 00000000 00000000 00000874 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 000007a2 00000000 00000000 0000103c 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26
2: 2b c0 rjmp .+86 ; 0x5a
4: 2a c0 rjmp .+84 ; 0x5a
6: 29 c0 rjmp .+82 ; 0x5a
8: 28 c0 rjmp .+80 ; 0x5a
a: 27 c0 rjmp .+78 ; 0x5a
c: 26 c0 rjmp .+76 ; 0x5a
e: 25 c0 rjmp .+74 ; 0x5a
10: 24 c0 rjmp .+72 ; 0x5a
12: 23 c0 rjmp .+70 ; 0x5a
14: 22 c0 rjmp .+68 ; 0x5a
16: 21 c0 rjmp .+66 ; 0x5a
18: 20 c0 rjmp .+64 ; 0x5a
1a: 1f c0 rjmp .+62 ; 0x5a
1c: 1f c0 rjmp .+62 ; 0x5c
1e: 1d c0 rjmp .+58 ; 0x5a
20: 1c c0 rjmp .+56 ; 0x5a
22: 1b c0 rjmp .+54 ; 0x5a
24: 1a c0 rjmp .+52 ; 0x5a
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: e0 ed ldi r30, 0xD0 ; 208
3a: f7 e0 ldi r31, 0x07 ; 7
3c: 02 c0 rjmp .+4 ; 0x42
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: a0 37 cpi r26, 0x70 ; 112
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e
00000048 <__do_clear_bss>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: a0 e7 ldi r26, 0x70 ; 112
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: ac 37 cpi r26, 0x7C ; 124
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50
58: 66 c0 rjmp .+204 ; 0x126
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0
0000005c <__vector_14>:
//A/D转换完成中断
SIGNAL(SIG_ADC)
{
5c: 1f 92 push r1
5e: 0f 92 push r0
60: 0f b6 in r0, 0x3f ; 63
62: 0f 92 push r0
64: 11 24 eor r1, r1
66: 2f 93 push r18
68: 3f 93 push r19
6a: 8f 93 push r24
6c: 9f 93 push r25
g_nAdValue = ADCL;
6e: 84 b1 in r24, 0x04 ; 4
70: 28 2f mov r18, r24
72: 33 27 eor r19, r19
g_nAdValue |= (uint)(ADCH<<8);
74: 85 b1 in r24, 0x05 ; 5
76: 99 27 eor r25, r25
78: 98 2f mov r25, r24
7a: 88 27 eor r24, r24
7c: 28 2b or r18, r24
7e: 39 2b or r19, r25
80: 30 93 71 00 sts 0x0071, r19
84: 20 93 70 00 sts 0x0070, r18
88: 9f 91 pop r25
8a: 8f 91 pop r24
8c: 3f 91 pop r19
8e: 2f 91 pop r18
90: 0f 90 pop r0
92: 0f be out 0x3f, r0 ; 63
94: 0f 90 pop r0
96: 1f 90 pop r1
98: 18 95 reti
0000009a <CInt>:
}
int CInt(float ki)
{
9a: cf 92 push r12
9c: df 92 push r13
9e: ef 92 push r14
a0: ff 92 push r15
a2: 0f 93 push r16
a4: 1f 93 push r17
a6: cf 93 push r28
a8: df 93 push r29
aa: 6b 01 movw r12, r22
ac: 7c 01 movw r14, r24
int tmpki;
int retint;
if(ki == 0) return 0;
ae: 20 e0 ldi r18, 0x00 ; 0
b0: 30 e0 ldi r19, 0x00 ; 0
b2: 40 e0 ldi r20, 0x00 ; 0
b4: 50 e0 ldi r21, 0x00 ; 0
b6: b2 d2 rcall .+1380 ; 0x61c
b8: 88 23 and r24, r24
ba: 19 f4 brne .+6 ; 0xc2
bc: 80 e0 ldi r24, 0x00 ; 0
be: 90 e0 ldi r25, 0x00 ; 0
c0: 29 c0 rjmp .+82 ; 0x114
tmpki=(int)fabs(ki*10) % 10;
c2: 20 e0 ldi r18, 0x00 ; 0
c4: 30 e0 ldi r19, 0x00 ; 0
c6: 40 e2 ldi r20, 0x20 ; 32
c8: 51 e4 ldi r21, 0x41 ; 65
ca: c7 01 movw r24, r14
cc: b6 01 movw r22, r12
ce: 0b d3 rcall .+1558 ; 0x6e6
d0: dc 01 movw r26, r24
d2: cb 01 movw r24, r22
d4: bf 77 andi r27, 0x7F ; 127
d6: bc 01 movw r22, r24
d8: cd 01 movw r24, r26
da: 79 d2 rcall .+1266 ; 0x5ce
dc: dc 01 movw r26, r24
de: cb 01 movw r24, r22
e0: 6a e0 ldi r22, 0x0A ; 10
e2: 70 e0 ldi r23, 0x00 ; 0
e4: 62 d3 rcall .+1732 ; 0x7aa
e6: 8c 01 movw r16, r24
retint=(int)ki;
e8: c7 01 movw r24, r14
ea: b6 01 movw r22, r12
ec: 70 d2 rcall .+1248 ; 0x5ce
ee: dc 01 movw r26, r24
f0: cb 01 movw r24, r22
f2: ec 01 movw r28, r24
if( tmpki >= 5)
f4: 05 30 cpi r16, 0x05 ; 5
f6: 11 05 cpc r17, r1
f8: 64 f0 brlt .+24 ; 0x112
{
if(ki>0)
fa: 20 e0 ldi r18, 0x00 ; 0
fc: 30 e0 ldi r19, 0x00 ; 0
fe: 40 e0 ldi r20, 0x00 ; 0
100: 50 e0 ldi r21, 0x00 ; 0
102: c7 01 movw r24, r14
104: b6 01 movw r22, r12
106: 8d d2 rcall .+1306 ; 0x622
108: 18 16 cp r1, r24
10a: 14 f4 brge .+4 ; 0x110
retint=retint+1;
10c: 21 96 adiw r28, 0x01 ; 1
10e: 01 c0 rjmp .+2 ; 0x112
else
retint=retint-1;
110: 21 97 sbiw r28, 0x01 ; 1
}
return retint;
112: ce 01 movw r24, r28
114: df 91 pop r29
116: cf 91 pop r28
118: 1f 91 pop r17
11a: 0f 91 pop r16
11c: ff 90 pop r15
11e: ef 90 pop r14
120: df 90 pop r13
122: cf 90 pop r12
124: 08 95 ret
00000126 <main>:
}
int main(void)
{
126: cf e5 ldi r28, 0x5F ; 95
128: d4 e0 ldi r29, 0x04 ; 4
12a: de bf out 0x3e, r29 ; 62
12c: cd bf out 0x3d, r28 ; 61
uchar i;
//内部2.65v参考电压,0通道
//DDRC = _BV(PC0);
//PORTC = _BV(PC0);
OSCCAL = 0x7d;
12e: 8d e7 ldi r24, 0x7D ; 125
130: 81 bf out 0x31, r24 ; 49
DDRC = 0x00;
132: 14 ba out 0x14, r1 ; 20
PORTC = 0x00;
134: 15 ba out 0x15, r1 ; 21
//ADMUX = 0xc0; //11 00 0000
ADMUX = _BV(REFS1)|_BV(REFS0);
136: 80 ec ldi r24, 0xC0 ; 192
138: 87 b9 out 0x07, r24 ; 7
ACSR = (1<<ACD);
13a: 80 e8 ldi r24, 0x80 ; 128
13c: 88 b9 out 0x08, r24 ; 8
/*
ADMUX ADC多路复其选择寄存器 - ADMUX
7 6 5 4 3 2 1 0
REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0
REFS1,REFS0:
0 0 外部引脚AREF,断开内部参考源连接
0 1 AVcc,Aref外部并接电容
1 0 保留
1 1 内部2.56V,AREF外部并接电容
//此处11为内部2.56V
ADLAR=0右对齐
MUX3..0:0000 - ADC0
*/
//使能ADC,终端允许,自由模式,时钟CLK/8
ADCSRA = _BV(ADEN)|_BV(ADIE)|_BV(ADFR)|_BV(ADPS1)|_BV(ADPS0);
13e: 8b ea ldi r24, 0xAB ; 171
140: 86 b9 out 0x06, r24 ; 6
/*
7 - ADEN: ADC使能
6 - ADSN:ADC开始转换
5 - ADFR:ADC连续转换模式选择
4 - ADIF:ADC中断标志位
3 - ADIE:ADC中断允许
2 ..0 - ADPS2:0:ADC预分频选择
000 - 2 ; 001 - 2;010 - 4; 011 - 8;
100 - 16;101 - 32;110 - 64;111 - 128
*/
/*计算公式
ADC(ADCH+ADCL) = (Vin * 1024)/Vref
Vin :选定的输入因交上的电压,Vref选定的参考电源的电压
*/
char* TmpStr = "0.000 V ";
142: c0 e6 ldi r28, 0x60 ; 96
144: d0 e0 ldi r29, 0x00 ; 0
float TmpVal;
unsigned int TmpPP;
TmpStr[7]='\n';
146: 8a e0 ldi r24, 0x0A ; 10
148: 80 93 67 00 sts 0x0067, r24
Uart_Init(25);
14c: 89 e1 ldi r24, 0x19 ; 25
14e: 90 e0 ldi r25, 0x00 ; 0
150: 60 d0 rcall .+192 ; 0x212
ADCSRA |= _BV(ADSC);//自由模式开始转换
152: 36 9a sbi 0x06, 6 ; 6
154: 23 e6 ldi r18, 0x63 ; 99
milliseconds can be achieved.
*/
static __inline__ void
_delay_loop_2(uint16_t __count)
{
156: 88 ee ldi r24, 0xE8 ; 232
158: 93 e0 ldi r25, 0x03 ; 3
__asm__ volatile (
15a: 01 97 sbiw r24, 0x01 ; 1
15c: f1 f7 brne .-4 ; 0x15a
while(1)
{
for(i=0;i<100;i++)
15e: 21 50 subi r18, 0x01 ; 1
160: 27 ff sbrs r18, 7
162: f9 cf rjmp .-14 ; 0x156
_delay_loop_2(4*250*1);//10ms
cli();
164: f8 94 cli
//TmpVal = (float) ( (float)(Vref/1023) * (ADC&0X3ff) )/1000.00;
TmpVal = (float)/*CInt(*/ (float)(((float)((Vref/1023)))*( ADC &0X3FF))/1000.00/*)*/;
166: 84 b1 in r24, 0x04 ; 4
168: 95 b1 in r25, 0x05 ; 5
16a: 93 70 andi r25, 0x03 ; 3
16c: aa 27 eor r26, r26
16e: 97 fd sbrc r25, 7
170: a0 95 com r26
172: ba 2f mov r27, r26
174: bc 01 movw r22, r24
176: cd 01 movw r24, r26
178: 47 d2 rcall .+1166 ; 0x608
17a: dc 01 movw r26, r24
17c: cb 01 movw r24, r22
17e: 20 e0 ldi r18, 0x00 ; 0
180: 30 e0 ldi r19, 0x00 ; 0
182: 48 ec ldi r20, 0xC8 ; 200
184: 51 e4 ldi r21, 0x41 ; 65
186: bc 01 movw r22, r24
188: cd 01 movw r24, r26
18a: ad d2 rcall .+1370 ; 0x6e6
18c: dc 01 movw r26, r24
18e: cb 01 movw r24, r22
190: 20 e0 ldi r18, 0x00 ; 0
192: 30 e0 ldi r19, 0x00 ; 0
194: 4a e7 ldi r20, 0x7A ; 122
196: 54 e4 ldi r21, 0x44 ; 68
198: bc 01 movw r22, r24
19a: cd 01 movw r24, r26
19c: d2 d1 rcall .+932 ; 0x542
19e: dc 01 movw r26, r24
1a0: cb 01 movw r24, r22
TmpPP = fabs(TmpVal * 100);
1a2: 20 e0 ldi r18, 0x00 ; 0
1a4: 30 e0 ldi r19, 0x00 ; 0
1a6: 48 ec ldi r20, 0xC8 ; 200
1a8: 52 e4 ldi r21, 0x42 ; 66
1aa: bc 01 movw r22, r24
1ac: cd 01 movw r24, r26
1ae: 9b d2 rcall .+1334 ; 0x6e6
1b0: dc 01 movw r26, r24
1b2: cb 01 movw r24, r22
1b4: bf 77 andi r27, 0x7F ; 127
1b6: bc 01 movw r22, r24
1b8: cd 01 movw r24, r26
1ba: 09 d2 rcall .+1042 ; 0x5ce
1bc: 8b 01 movw r16, r22
1be: 9c 01 movw r18, r24
//TmpPP = TmpVal * 100;
//TmpPP = 0xffff-TmpPP;
//intf("%X %x\n",(int)(TmpVal * 100),TmpPP);
TmpStr[0] =TmpPP/1000 + 0x30;
1c0: cb 01 movw r24, r22
1c2: 68 ee ldi r22, 0xE8 ; 232
1c4: 73 e0 ldi r23, 0x03 ; 3
1c6: dd d2 rcall .+1466 ; 0x782
1c8: cb 01 movw r24, r22
1ca: 80 5d subi r24, 0xD0 ; 208
1cc: 80 93 60 00 sts 0x0060, r24
TmpPP =TmpPP % 1000;
1d0: c8 01 movw r24, r16
1d2: 68 ee ldi r22, 0xE8 ; 232
1d4: 73 e0 ldi r23, 0x03 ; 3
1d6: d5 d2 rcall .+1450 ; 0x782
1d8: 9c 01 movw r18, r24
TmpStr[2] = TmpPP/100 + 0x30;
1da: 64 e6 ldi r22, 0x64 ; 100
1dc: 70 e0 ldi r23, 0x00 ; 0
1de: d1 d2 rcall .+1442 ; 0x782
1e0: cb 01 movw r24, r22
1e2: 80 5d subi r24, 0xD0 ; 208
1e4: 8a 83 std Y+2, r24 ; 0x02
TmpPP = TmpPP % 100;
1e6: c9 01 movw r24, r18
1e8: 64 e6 ldi r22, 0x64 ; 100
1ea: 70 e0 ldi r23, 0x00 ; 0
1ec: ca d2 rcall .+1428 ; 0x782
1ee: 9c 01 movw r18, r24
TmpStr[3] =TmpPP/10 + 0x30;
1f0: 6a e0 ldi r22, 0x0A ; 10
1f2: 70 e0 ldi r23, 0x00 ; 0
1f4: c6 d2 rcall .+1420 ; 0x782
1f6: cb 01 movw r24, r22
1f8: 80 5d subi r24, 0xD0 ; 208
1fa: 8b 83 std Y+3, r24 ; 0x03
TmpPP= TmpPP% 10;
1fc: c9 01 movw r24, r18
1fe: 6a e0 ldi r22, 0x0A ; 10
200: 70 e0 ldi r23, 0x00 ; 0
202: bf d2 rcall .+1406 ; 0x782
TmpStr[4] =TmpPP + 0x30;
204: 80 5d subi r24, 0xD0 ; 208
206: 8c 83 std Y+4, r24 ; 0x04
Uart_PutStr(TmpStr);
208: 80 e6 ldi r24, 0x60 ; 96
20a: 90 e0 ldi r25, 0x00 ; 0
20c: 29 d0 rcall .+82 ; 0x260
//printf("%d,%s\n",g_nAdValue,TmpStr );
sei();
20e: 78 94 sei
210: a1 cf rjmp .-190 ; 0x154
00000212 <Uart_Init>:
14.4K 86 68 34 16 8 3
*/
//初始化
void Uart_Init(unsigned int ucBaudRate) //9600 :25/4m 38/6m
{
212: 9c 01 movw r18, r24
// 晶振频率 : 4.0MHz
// 通信参数: 8 Data, 1 Stop, No Parity
// 波特率:
// UBRRL= 0x0C 19200;
// UBRRL= 0x19 9600;
// UBRRL= 0x33 4800;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -