📄 adc.lst
字号:
225 main:
51:Adc.c **** }
52:Adc.c ****
53:Adc.c **** int main(void)
54:Adc.c **** {
227 .LM14:
228 /* prologue: frame size=0 */
229 00ca C0E0 ldi r28,lo8(__stack - 0)
230 00cc D0E0 ldi r29,hi8(__stack - 0)
231 00ce DEBF out __SP_H__,r29
232 00d0 CDBF out __SP_L__,r28
233 /* prologue end (size=4) */
55:Adc.c **** uchar i;
56:Adc.c ****
57:Adc.c **** //内部2.65v参考电压,0通道
58:Adc.c **** //DDRC = _BV(PC0);
59:Adc.c **** //PORTC = _BV(PC0);
60:Adc.c ****
61:Adc.c **** OSCCAL = 0x7d;
235 .LM15:
236 00d2 8DE7 ldi r24,lo8(125)
237 00d4 81BF out 81-0x20,r24
62:Adc.c **** DDRC = 0x00;
239 .LM16:
240 00d6 14BA out 52-0x20,__zero_reg__
63:Adc.c **** PORTC = 0x00;
242 .LM17:
243 00d8 15BA out 53-0x20,__zero_reg__
64:Adc.c ****
65:Adc.c ****
66:Adc.c **** //ADMUX = 0xc0; //11 00 0000
67:Adc.c **** ADMUX = _BV(REFS1)|_BV(REFS0);
245 .LM18:
246 00da 80EC ldi r24,lo8(-64)
247 00dc 87B9 out 39-0x20,r24
68:Adc.c **** ACSR = (1<<ACD);
249 .LM19:
250 00de 80E8 ldi r24,lo8(-128)
251 00e0 88B9 out 40-0x20,r24
69:Adc.c **** /*
70:Adc.c **** ADMUX ADC多路复其选择寄存器 - ADMUX
71:Adc.c **** 7 6 5 4 3 2 1 0
72:Adc.c **** REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0
73:Adc.c **** REFS1,REFS0:
74:Adc.c **** 0 0 外部引脚AREF,断开内部参考源连接
75:Adc.c **** 0 1 AVcc,Aref外部并接电容
76:Adc.c **** 1 0 保留
77:Adc.c **** 1 1 内部2.56V,AREF外部并接电容
78:Adc.c **** //此处11为内部2.56V
79:Adc.c **** ADLAR=0右对齐
80:Adc.c **** MUX3..0:0000 - ADC0
81:Adc.c ****
82:Adc.c **** */
83:Adc.c ****
84:Adc.c **** //使能ADC,终端允许,自由模式,时钟CLK/8
85:Adc.c **** ADCSRA = _BV(ADEN)|_BV(ADIE)|_BV(ADFR)|_BV(ADPS1)|_BV(ADPS0);
253 .LM20:
254 00e2 8BEA ldi r24,lo8(-85)
255 00e4 86B9 out 38-0x20,r24
86:Adc.c **** /*
87:Adc.c **** 7 - ADEN: ADC使能
88:Adc.c **** 6 - ADSN:ADC开始转换
89:Adc.c **** 5 - ADFR:ADC连续转换模式选择
90:Adc.c **** 4 - ADIF:ADC中断标志位
91:Adc.c **** 3 - ADIE:ADC中断允许
92:Adc.c **** 2 ..0 - ADPS2:0:ADC预分频选择
93:Adc.c **** 000 - 2 ; 001 - 2;010 - 4; 011 - 8;
94:Adc.c **** 100 - 16;101 - 32;110 - 64;111 - 128
95:Adc.c ****
96:Adc.c **** */
97:Adc.c ****
98:Adc.c **** /*计算公式
99:Adc.c **** ADC(ADCH+ADCL) = (Vin * 1024)/Vref
100:Adc.c **** Vin :选定的输入因交上的电压,Vref选定的参考电源的电压
101:Adc.c ****
102:Adc.c **** */
103:Adc.c ****
104:Adc.c **** char* TmpStr = "0.000 V ";
257 .LM21:
258 00e6 C0E0 ldi r28,lo8(.LC0)
259 00e8 D0E0 ldi r29,hi8(.LC0)
105:Adc.c **** float TmpVal;
106:Adc.c **** unsigned int TmpPP;
107:Adc.c ****
108:Adc.c ****
109:Adc.c **** TmpStr[7]='\n';
261 .LM22:
262 00ea 8AE0 ldi r24,lo8(10)
263 00ec 8093 0000 sts .LC0+7,r24
110:Adc.c ****
111:Adc.c **** Uart_Init(25);
265 .LM23:
266 00f0 89E1 ldi r24,lo8(25)
267 00f2 90E0 ldi r25,hi8(25)
268 00f4 00D0 rcall Uart_Init
112:Adc.c ****
113:Adc.c **** ADCSRA |= _BV(ADSC);//自由模式开始转换
270 .LM24:
271 00f6 369A sbi 38-0x20,6
272 .L10:
273 00f8 23E6 ldi r18,lo8(99)
274 .L16:
275 .LBB2:
277 .Ltext1:
1:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Copyright (c) 2004, Joerg Wunsch
3:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** All rights reserved.
4:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
5:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Redistribution and use in source and binary forms, with or without
6:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** modification, are permitted provided that the following conditions are met:
7:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
8:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** * Redistributions of source code must retain the above copyright
9:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer.
10:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
11:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** * Redistributions in binary form must reproduce the above copyright
12:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer in
13:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** the documentation and/or other materials provided with the
14:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** distribution.
15:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
16:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** * Neither the name of the copyright holders nor the names of
17:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** contributors may be used to endorse or promote products derived
18:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** from this software without specific prior written permission.
19:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
20:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
31:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
32:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /* $Id: delay.h,v 1.9 2004/12/22 10:16:54 joerg_wunsch Exp $ */
33:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
34:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /*
35:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** avr/delay.h - loops for small accurate delays
36:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
37:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
38:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
39:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
40:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
41:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
42:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
43:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \defgroup avr_delay Busy-wait delay loops
44:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \code
45:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #define F_CPU 1000000UL // 1 MHz
46:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** //#define F_CPU 14.7456E6
47:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #include <avr/delay.h>
48:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \endcode
49:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
50:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The functions in this header file implement simple delay loops
51:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** that perform a busy-waiting. They are typically used to
52:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** facilitate short delays in the program execution. They are
53:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** implemented as count-down loops with a well-known CPU cycle
54:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** count per loop iteration. As such, no other processing can
55:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** occur simultaneously. It should be kept in mind that the
56:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** functions described here do not disable interrupts.
57:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
58:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** In general, for long delays, the use of hardware timers is
59:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** much preferrable, as they free the CPU, and allow for
60:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** concurrent processing of other events while the timer is
61:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** running. However, in particular for very short delays, the
62:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** overhead of setting up a hardware timer is too much compared
63:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** to the overall delay time.
64:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
65:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Two inline functions are provided for the actual delay algorithms.
66:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
67:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Two wrapper functions allow the specification of microsecond, and
68:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** millisecond delays directly, using the application-supplied macro
69:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** F_CPU as the CPU clock frequency (in Hertz). These functions
70:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** operate on double typed arguments, however when optimization is
71:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** turned on, the entire floating-point calculation will be done at
72:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** compile-time.
73:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
74:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
75:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \ingroup avr_delay
76:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
77:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Delay loop using an 8-bit counter \c __count, so up to 256
78:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** iterations are possible. (The value 256 would have to be passed
79:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** as 0.) The loop executes three CPU cycles per iteration, not
80:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** including the overhead the compiler needs to setup the counter
81:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** register.
82:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
83:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
84:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** can be achieved.
85:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
86:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
87:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
88:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
89:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __asm__ volatile (
90:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "1: dec %0" "\n\t"
91:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "brne 1b"
92:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "=r" (__count)
93:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "0" (__count)
94:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** );
95:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** }
96:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
97:f:/SoftwareXP/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \ingroup avr_delay
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -