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

📄 adc.lst

📁 avr c 模拟数据采集的程序设计方法 本程序为模数转换的例程
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"Adc.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:
  62               		.lcomm g_nAdValue,2
  64               	.global	__vector_14
  66               	__vector_14:
   1:Adc.c         **** /*
   2:Adc.c         **** Mega8 中断方式 A/D 转换测试程序
   3:Adc.c         **** main.c
   4:Adc.c         **** 硬件:CA-M8
   5:Adc.c         **** 编译:WinAVR-20040720
   6:Adc.c         **** 芯艺 2004-09-19
   7:Adc.c         **** */
   8:Adc.c         **** 
   9:Adc.c         **** #include <avr/io.h>
  10:Adc.c         **** #include <avr/interrupt.h>
  11:Adc.c         **** #include <avr/signal.h>
  12:Adc.c         **** #include <avr/delay.h>
  13:Adc.c         **** #include <stdio.h>
  14:Adc.c         **** #include <math.h>
  15:Adc.c         **** 
  16:Adc.c         **** #include "Uart.h"
  17:Adc.c         **** 
  18:Adc.c         **** #define uchar unsigned char
  19:Adc.c         **** #define uint unsigned int
  20:Adc.c         **** 
  21:Adc.c         **** #define  Vref   25630
  22:Adc.c         **** 
  23:Adc.c         **** static uint g_nAdValue=0;
  24:Adc.c         **** 
  25:Adc.c         **** 
  26:Adc.c         **** 
  27:Adc.c         **** //A/D转换完成中断
  28:Adc.c         **** SIGNAL(SIG_ADC)
  29:Adc.c         **** {
  68               	.LM1:
  69               	/* prologue: frame size=0 */
  70 0000 1F92      		push __zero_reg__
  71 0002 0F92      		push __tmp_reg__
  72 0004 0FB6      		in __tmp_reg__,__SREG__
  73 0006 0F92      		push __tmp_reg__
  74 0008 1124      		clr __zero_reg__
  75 000a 2F93      		push r18
  76 000c 3F93      		push r19
  77 000e 8F93      		push r24
  78 0010 9F93      		push r25
  79               	/* prologue end (size=9) */
  30:Adc.c         **** 	g_nAdValue = ADCL;
  81               	.LM2:
  82 0012 84B1      		in r24,36-0x20
  83 0014 282F      		mov r18,r24
  84 0016 3327      		clr r19
  31:Adc.c         **** 	g_nAdValue |= (uint)(ADCH<<8);
  86               	.LM3:
  87 0018 85B1      		in r24,37-0x20
  88 001a 9927      		clr r25
  89 001c 982F      		mov r25,r24
  90 001e 8827      		clr r24
  91 0020 282B      		or r18,r24
  92 0022 392B      		or r19,r25
  93 0024 3093 0000 		sts (g_nAdValue)+1,r19
  94 0028 2093 0000 		sts g_nAdValue,r18
  95               	/* epilogue: frame size=0 */
  96 002c 9F91      		pop r25
  97 002e 8F91      		pop r24
  98 0030 3F91      		pop r19
  99 0032 2F91      		pop r18
 100 0034 0F90      		pop __tmp_reg__
 101 0036 0FBE      		out __SREG__,__tmp_reg__
 102 0038 0F90      		pop __tmp_reg__
 103 003a 1F90      		pop __zero_reg__
 104 003c 1895      		reti
 105               	/* epilogue end (size=9) */
 106               	/* function __vector_14 size 31 (13) */
 108               	.Lscope0:
 111               	.global	CInt
 113               	CInt:
  32:Adc.c         **** }
  33:Adc.c         **** 
  34:Adc.c         **** int CInt(float ki)
  35:Adc.c         **** {	
 115               	.LM4:
 116               	/* prologue: frame size=0 */
 117 003e CF92      		push r12
 118 0040 DF92      		push r13
 119 0042 EF92      		push r14
 120 0044 FF92      		push r15
 121 0046 0F93      		push r16
 122 0048 1F93      		push r17
 123 004a CF93      		push r28
 124 004c DF93      		push r29
 125               	/* prologue end (size=8) */
 126 004e 6B01      		movw r12,r22
 127 0050 7C01      		movw r14,r24
  36:Adc.c         **** 	int tmpki;
  37:Adc.c         **** 	int retint;
  38:Adc.c         **** 
  39:Adc.c         **** 	if(ki == 0) return 0;
 129               	.LM5:
 130 0052 20E0      		ldi r18,lo8(0x0)
 131 0054 30E0      		ldi r19,hi8(0x0)
 132 0056 40E0      		ldi r20,hlo8(0x0)
 133 0058 50E0      		ldi r21,hhi8(0x0)
 134 005a 00D0      		rcall __eqsf2
 135 005c 8823      		tst r24
 136 005e 19F4      		brne .L3
 138               	.LM6:
 139 0060 80E0      		ldi r24,lo8(0)
 140 0062 90E0      		ldi r25,hi8(0)
 141 0064 29C0      		rjmp .L2
 142               	.L3:
  40:Adc.c         **** 
  41:Adc.c         **** 	tmpki=(int)fabs(ki*10) % 10;
 144               	.LM7:
 145 0066 20E0      		ldi r18,lo8(0x41200000)
 146 0068 30E0      		ldi r19,hi8(0x41200000)
 147 006a 40E2      		ldi r20,hlo8(0x41200000)
 148 006c 51E4      		ldi r21,hhi8(0x41200000)
 149 006e C701      		movw r24,r14
 150 0070 B601      		movw r22,r12
 151 0072 00D0      		rcall __mulsf3
 152 0074 DC01      		movw r26,r24
 153 0076 CB01      		movw r24,r22
 154 0078 BF77      		andi r27,0x7f
 155 007a BC01      		movw r22,r24
 156 007c CD01      		movw r24,r26
 157 007e 00D0      		rcall __fixsfsi
 158 0080 DC01      		movw r26,r24
 159 0082 CB01      		movw r24,r22
 160 0084 6AE0      		ldi r22,lo8(10)
 161 0086 70E0      		ldi r23,hi8(10)
 162 0088 00D0      		rcall __divmodhi4
 163 008a 8C01      		movw r16,r24
  42:Adc.c         **** 	retint=(int)ki;
 165               	.LM8:
 166 008c C701      		movw r24,r14
 167 008e B601      		movw r22,r12
 168 0090 00D0      		rcall __fixsfsi
 169 0092 DC01      		movw r26,r24
 170 0094 CB01      		movw r24,r22
 171 0096 EC01      		movw r28,r24
  43:Adc.c         **** 	if( tmpki >= 5)
 173               	.LM9:
 174 0098 0530      		cpi r16,5
 175 009a 1105      		cpc r17,__zero_reg__
 176 009c 64F0      		brlt .L5
  44:Adc.c         **** 	{
  45:Adc.c         ****        if(ki>0)
 178               	.LM10:
 179 009e 20E0      		ldi r18,lo8(0x0)
 180 00a0 30E0      		ldi r19,hi8(0x0)
 181 00a2 40E0      		ldi r20,hlo8(0x0)
 182 00a4 50E0      		ldi r21,hhi8(0x0)
 183 00a6 C701      		movw r24,r14
 184 00a8 B601      		movw r22,r12
 185 00aa 00D0      		rcall __gtsf2
 186 00ac 1816      		cp __zero_reg__,r24
 187 00ae 14F4      		brge .L6
  46:Adc.c         **** 			retint=retint+1;
 189               	.LM11:
 190 00b0 2196      		adiw r28,1
 191 00b2 01C0      		rjmp .L5
 192               	.L6:
  47:Adc.c         **** 	    else
  48:Adc.c         **** 			retint=retint-1;
 194               	.LM12:
 195 00b4 2197      		sbiw r28,1
 196               	.L5:
  49:Adc.c         **** 	}
  50:Adc.c         **** 	return retint;
 198               	.LM13:
 199 00b6 CE01      		movw r24,r28
 200               	.L2:
 201               	/* epilogue: frame size=0 */
 202 00b8 DF91      		pop r29
 203 00ba CF91      		pop r28
 204 00bc 1F91      		pop r17
 205 00be 0F91      		pop r16
 206 00c0 FF90      		pop r15
 207 00c2 EF90      		pop r14
 208 00c4 DF90      		pop r13
 209 00c6 CF90      		pop r12
 210 00c8 0895      		ret
 211               	/* epilogue end (size=9) */
 212               	/* function CInt size 71 (54) */
 217               	.Lscope1:
 218               		.data
 219               	.LC0:
 220 0000 302E 3030 		.string	"0.000 V "
 220      3020 5620 
 220      00
 221               		.text
 223               	.global	main

⌨️ 快捷键说明

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