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

📄 main.lst

📁 单片机源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"main.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  65               	.global	AdcConvert
  67               	AdcConvert:
   1:main.c        **** /*
   2:main.c        **** 	Mega8 查询方式 A/D转换测试程序
   3:main.c        **** 	main.c
   4:main.c        **** 	MCU:atmega8
   5:main.c        **** 	编译:WinAVR-20040720
   6:main.c        **** 	
   7:main.c        **** 	
   8:main.c        **** 	芯艺 2004-09-19
   9:main.c        **** */
  10:main.c        **** 
  11:main.c        **** #include <avr/io.h>
  12:main.c        **** #include <avr/delay.h>
  13:main.c        **** #include <stdio.h>
  14:main.c        **** 
  15:main.c        **** #define uchar unsigned char
  16:main.c        **** #define uint  unsigned int
  17:main.c        **** 
  18:main.c        **** static uint g_aAdValue[8];	//A/D转换缓冲区
  19:main.c        **** 
  20:main.c        **** void IoInit(void);
  21:main.c        **** 
  22:main.c        **** 
  23:main.c        **** uint AdcConvert(void)
  24:main.c        **** {
  69               	.LM1:
  70               	/* prologue: frame size=0 */
  71 0000 CF93      		push r28
  72               	/* prologue end (size=1) */
  25:main.c        **** 	uchar i;
  26:main.c        **** 	uint ret;
  27:main.c        **** 	uchar max_id,min_id,max_value,min_value;
  28:main.c        **** 	
  29:main.c        **** 	ADMUX=0Xc0;//内部2.56V参考电压,0通道
  74               	.LM2:
  75               	.LBB2:
  76 0002 80EC      		ldi r24,lo8(-64)
  77 0004 87B9      		out 39-0x20,r24
  30:main.c        **** 	ADCSRA=_BV(ADEN);//使能ADC,单次转换模式
  79               	.LM3:
  80 0006 80E8      		ldi r24,lo8(-128)
  81 0008 86B9      		out 38-0x20,r24
  31:main.c        **** 	
  32:main.c        **** 	//连续转换8次
  33:main.c        **** 	for(i=0;i<8;i++)
  83               	.LM4:
  84 000a 40E0      		ldi r20,lo8(0)
  85 000c E0E0      		ldi r30,lo8(g_aAdValue)
  86 000e F0E0      		ldi r31,hi8(g_aAdValue)
  87               	.L12:
  34:main.c        **** 	{
  35:main.c        **** 		ADCSRA|=_BV(ADSC);
  89               	.LM5:
  90 0010 369A      		sbi 38-0x20,6
  36:main.c        **** 		_delay_loop_1(60);
  92               	.LM6:
  94               	.Ltext1:
   1:C:/WinAVR/avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:C:/WinAVR/avr/include/avr/delay.h ****    All rights reserved.
   3:C:/WinAVR/avr/include/avr/delay.h **** 
   4:C:/WinAVR/avr/include/avr/delay.h ****    Redistribution and use in source and binary forms, with or without
   5:C:/WinAVR/avr/include/avr/delay.h ****    modification, are permitted provided that the following conditions are met:
   6:C:/WinAVR/avr/include/avr/delay.h **** 
   7:C:/WinAVR/avr/include/avr/delay.h ****    * Redistributions of source code must retain the above copyright
   8:C:/WinAVR/avr/include/avr/delay.h ****      notice, this list of conditions and the following disclaimer.
   9:C:/WinAVR/avr/include/avr/delay.h ****    * Redistributions in binary form must reproduce the above copyright
  10:C:/WinAVR/avr/include/avr/delay.h ****      notice, this list of conditions and the following disclaimer in
  11:C:/WinAVR/avr/include/avr/delay.h ****      the documentation and/or other materials provided with the
  12:C:/WinAVR/avr/include/avr/delay.h ****      distribution.
  13:C:/WinAVR/avr/include/avr/delay.h **** 
  14:C:/WinAVR/avr/include/avr/delay.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  15:C:/WinAVR/avr/include/avr/delay.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  16:C:/WinAVR/avr/include/avr/delay.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  17:C:/WinAVR/avr/include/avr/delay.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  18:C:/WinAVR/avr/include/avr/delay.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  19:C:/WinAVR/avr/include/avr/delay.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  20:C:/WinAVR/avr/include/avr/delay.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  21:C:/WinAVR/avr/include/avr/delay.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  22:C:/WinAVR/avr/include/avr/delay.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  23:C:/WinAVR/avr/include/avr/delay.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  24:C:/WinAVR/avr/include/avr/delay.h ****   POSSIBILITY OF SUCH DAMAGE. */
  25:C:/WinAVR/avr/include/avr/delay.h **** 
  26:C:/WinAVR/avr/include/avr/delay.h **** /* $Id: delay.h,v 1.2 2002/12/12 11:41:01 joerg_wunsch Exp $ */
  27:C:/WinAVR/avr/include/avr/delay.h **** 
  28:C:/WinAVR/avr/include/avr/delay.h **** /*
  29:C:/WinAVR/avr/include/avr/delay.h ****    avr/delay.h - loops for small accurate delays
  30:C:/WinAVR/avr/include/avr/delay.h ****  */
  31:C:/WinAVR/avr/include/avr/delay.h **** 
  32:C:/WinAVR/avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
  33:C:/WinAVR/avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
  34:C:/WinAVR/avr/include/avr/delay.h **** 
  35:C:/WinAVR/avr/include/avr/delay.h **** /* 8-bit count, 3 cycles/loop */
  36:C:/WinAVR/avr/include/avr/delay.h **** static inline void
  37:C:/WinAVR/avr/include/avr/delay.h **** _delay_loop_1(unsigned char __count)
  38:C:/WinAVR/avr/include/avr/delay.h **** {
  96               	.LM7:
  97               	.LBB3:
  98 0012 8CE3      		ldi r24,lo8(60)
  39:C:/WinAVR/avr/include/avr/delay.h **** 	asm volatile (
 100               	.LM8:
 101               	/* #APP */
 102 0014 8A95      		1: dec r24
 103 0016 F1F7      		brne 1b
 105               	.Ltext2:
  37:main.c        **** 		while(ADCSRA&_BV(ADSC))
 107               	.LM9:
 108               	/* #NOAPP */
 109               	.LBE3:
 110 0018 369B      		sbis 38-0x20,6
 111 001a 05C0      		rjmp .L38
 112               	.L11:
 114               	.Ltext3:
 116               	.LM10:
 117               	.LBB4:
 118 001c 8CE3      		ldi r24,lo8(60)
 120               	.LM11:
 121               	/* #APP */
 122 001e 8A95      		1: dec r24
 123 0020 F1F7      		brne 1b
 124               	/* #NOAPP */
 125               	.LBE4:
 126 0022 3699      		sbic 38-0x20,6
 127 0024 FBCF      		rjmp .L11
 128               	.L38:
 130               	.Ltext4:
  38:main.c        **** 			_delay_loop_1(60);
  39:main.c        **** 		ret=ADCL;
 132               	.LM12:
 133 0026 84B1      		in r24,36-0x20
 134 0028 682F      		mov r22,r24
 135 002a 7727      		clr r23
  40:main.c        **** 		ret|=(uint)(ADCH<<8);
 137               	.LM13:
 138 002c 85B1      		in r24,37-0x20
 139 002e 9927      		clr r25
 140 0030 982F      		mov r25,r24
 141 0032 8827      		clr r24
 142 0034 862B      		or r24,r22
 143 0036 972B      		or r25,r23
  41:main.c        **** 		g_aAdValue[i]=ret;
 145               	.LM14:
 146 0038 8193      		st Z+,r24
 147 003a 9193      		st Z+,r25
 149               	.LM15:
 150 003c 4F5F      		subi r20,lo8(-(1))
 151 003e 4830      		cpi r20,lo8(8)
 152 0040 38F3      		brlo .L12
  42:main.c        **** 	}
  43:main.c        **** 	ret=0;
 154               	.LM16:
 155 0042 60E0      		ldi r22,lo8(0)
 156 0044 70E0      		ldi r23,hi8(0)
  44:main.c        **** 	for(i=1;i<8;i++)
 158               	.LM17:
 159 0046 41E0      		ldi r20,lo8(1)
 160 0048 E0E0      		ldi r30,lo8(g_aAdValue+2)
 161 004a F0E0      		ldi r31,hi8(g_aAdValue+2)
 162               	.L17:
  45:main.c        **** 		ret+=g_aAdValue[i];
 164               	.LM18:
 165 004c 8191      		ld r24,Z+
 166 004e 9191      		ld r25,Z+
 167 0050 680F      		add r22,r24
 168 0052 791F      		adc r23,r25
 170               	.LM19:
 171 0054 4F5F      		subi r20,lo8(-(1))
 172 0056 4830      		cpi r20,lo8(8)
 173 0058 C8F3      		brlo .L17
  46:main.c        **** 	
  47:main.c        **** 	//找到最大和最小值索引	
  48:main.c        **** 	ret/=7;
 175               	.LM20:
 176 005a CB01      		movw r24,r22
 177 005c 67E0      		ldi r22,lo8(7)
 178 005e 70E0      		ldi r23,hi8(7)
 179 0060 00D0      		rcall __udivmodhi4
  49:main.c        **** 	max_id=min_id=1;
 181               	.LM21:
 182 0062 B1E0      		ldi r27,lo8(1)
 183 0064 CB2F      		mov r28,r27
  50:main.c        **** 	max_value=min_value=0;
 185               	.LM22:
 186 0066 50E0      		ldi r21,lo8(0)
 187 0068 A52F      		mov r26,r21
  51:main.c        **** 	for(i=1;i<8;i++)
 189               	.LM23:
 190 006a 4B2F      		mov r20,r27
 191 006c E0E0      		ldi r30,lo8(g_aAdValue+2)
 192 006e F0E0      		ldi r31,hi8(g_aAdValue+2)
 193               	.L26:
  52:main.c        **** 	{
  53:main.c        **** 		if(g_aAdValue[i]>ret)
 195               	.LM24:
 196 0070 2081      		ld r18,Z
 197 0072 3181      		ldd r19,Z+1
 198 0074 6217      		cp r22,r18
 199 0076 7307      		cpc r23,r19
 200 0078 58F4      		brsh .L22
  54:main.c        **** 		{
  55:main.c        **** 			if(g_aAdValue[i]-ret>max_value)
 202               	.LM25:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -