⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.lst

📁 avr c 模拟数据采集的程序设计方法 本程序为模数转换的例程
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -