📄 adc.lst
字号:
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 + -