resource.lst
来自「cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表」· LST 代码 · 共 310 行
LST
310 行
1 .file "Resource.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:
101 .global Os_Enter_Sum
102 .global Os_Enter_Sum
103 .section .bss
106 Os_Enter_Sum:
107 0000 00 .skip 1,0
108 .text
112 .global HexToBcd
114 HexToBcd:
1:driver/Resource.c **** /**********************************************
2:driver/Resource.c **** 公司名称:
3:driver/Resource.c **** 文 件 名:
4:driver/Resource.c **** 版 本 号:
5:driver/Resource.c **** 程序设计:
6:driver/Resource.c **** 说 明:几种不同的延时、BCD处理、小数点处理函数
7:driver/Resource.c **** 完成日期:
8:driver/Resource.c **** 修改日期:
9:driver/Resource.c **** 功能摘要:
10:driver/Resource.c **** ***********************************************/
11:driver/Resource.c **** #define _Resource
12:driver/Resource.c **** #include"Includes.h"
13:driver/Resource.c ****
14:driver/Resource.c **** volatile uint8 Os_Enter_Sum = 0;
15:driver/Resource.c **** void HexToBcd(uint8 *pBuf,uint16 temp); //十六进制BCD码转换
16:driver/Resource.c **** void DealZero(uint8 *pBuf);
17:driver/Resource.c **** void DoPot(uint8 *pBuf,uint32 temp);
18:driver/Resource.c **** uint16 DealRms(uint8 *pBuf,uint32 Kval);
19:driver/Resource.c ****
20:driver/Resource.c **** //--------------------------------
21:driver/Resource.c **** void HexToBcd(uint8 *pBuf,uint16 temp)
22:driver/Resource.c **** {
116 .LM1:
117 /* prologue: frame size=0 */
118 /* prologue end (size=0) */
119 0000 FC01 movw r30,r24
120 0002 DC01 movw r26,r24
121 0004 83E0 ldi r24,lo8(3)
122 .L5:
23:driver/Resource.c **** uint8 i;
24:driver/Resource.c **** for (i=0; i<4; i++) {pBuf[i] = 0;}
124 .LM2:
125 0006 1D92 st X+,__zero_reg__
126 0008 8150 subi r24,lo8(-(-1))
127 000a 87FF sbrs r24,7
128 000c FCCF rjmp .L5
25:driver/Resource.c **** while (temp >= 1000){temp -= 1000; pBuf[3]++;}
130 .LM3:
131 000e 83E0 ldi r24,hi8(1000)
132 0010 683E cpi r22,lo8(1000)
133 0012 7807 cpc r23,r24
134 0014 48F0 brlo .L18
135 0016 8381 ldd r24,Z+3
136 .L8:
137 0018 685E subi r22,lo8(-(-1000))
138 001a 7340 sbci r23,hi8(-(-1000))
139 001c 8F5F subi r24,lo8(-(1))
140 001e 93E0 ldi r25,hi8(1000)
141 0020 683E cpi r22,lo8(1000)
142 0022 7907 cpc r23,r25
143 0024 C8F7 brsh .L8
144 0026 8383 std Z+3,r24
145 .L18:
26:driver/Resource.c **** while (temp >= 100) {temp -= 100; pBuf[2]++;}
147 .LM4:
148 0028 6436 cpi r22,100
149 002a 7105 cpc r23,__zero_reg__
150 002c 40F0 brlo .L20
151 002e 8281 ldd r24,Z+2
152 .L11:
153 0030 6456 subi r22,lo8(-(-100))
154 0032 7040 sbci r23,hi8(-(-100))
155 0034 8F5F subi r24,lo8(-(1))
156 0036 6436 cpi r22,100
157 0038 7105 cpc r23,__zero_reg__
158 003a D0F7 brsh .L11
159 003c 8283 std Z+2,r24
160 .L20:
27:driver/Resource.c **** while (temp >= 10) {temp -= 10; pBuf[1]++;}
162 .LM5:
163 003e 6A30 cpi r22,10
164 0040 7105 cpc r23,__zero_reg__
165 0042 40F0 brlo .L22
166 0044 8181 ldd r24,Z+1
167 .L14:
168 0046 6A50 subi r22,lo8(-(-10))
169 0048 7040 sbci r23,hi8(-(-10))
170 004a 8F5F subi r24,lo8(-(1))
171 004c 6A30 cpi r22,10
172 004e 7105 cpc r23,__zero_reg__
173 0050 D0F7 brsh .L14
174 0052 8183 std Z+1,r24
175 .L22:
28:driver/Resource.c **** pBuf[0] = temp;
177 .LM6:
178 0054 6083 st Z,r22
179 /* epilogue: frame size=0 */
180 0056 0895 ret
181 /* epilogue end (size=1) */
182 /* function HexToBcd size 44 (43) */
187 .Lscope0:
190 .global DealZero
192 DealZero:
29:driver/Resource.c **** }
30:driver/Resource.c **** //---------------------------------
31:driver/Resource.c **** void DealZero(uint8 *pBuf)
32:driver/Resource.c **** {
194 .LM7:
195 /* prologue: frame size=0 */
196 /* prologue end (size=0) */
33:driver/Resource.c **** uint8 i;
34:driver/Resource.c ****
35:driver/Resource.c **** for(i=3;i!=0;i--)
198 .LM8:
199 0058 23E0 ldi r18,lo8(3)
200 005a 3FE2 ldi r19,lo8(47)
201 005c FC01 movw r30,r24
202 005e 3396 adiw r30,3
203 .L32:
36:driver/Resource.c **** {
37:driver/Resource.c **** if (pBuf[i] == 0)
205 .LM9:
206 0060 8081 ld r24,Z
207 0062 8823 tst r24
208 0064 29F4 brne .L28
38:driver/Resource.c **** {
39:driver/Resource.c **** pBuf[i] = HIDE;
210 .LM10:
211 0066 3083 st Z,r19
213 .LM11:
214 0068 2150 subi r18,lo8(-(-1))
215 006a 3197 sbiw r30,1
216 006c 2223 tst r18
217 006e C1F7 brne .L32
218 .L28:
219 0070 0895 ret
220 /* epilogue: frame size=0 */
221 /* epilogue: noreturn */
222 /* epilogue end (size=0) */
223 /* function DealZero size 13 (13) */
228 .Lscope1:
232 .global DoPot
234 DoPot:
40:driver/Resource.c **** }
41:driver/Resource.c **** else
42:driver/Resource.c **** {
43:driver/Resource.c **** break;
44:driver/Resource.c **** }
45:driver/Resource.c **** }
46:driver/Resource.c **** }
47:driver/Resource.c **** //---------------------------------
48:driver/Resource.c **** void DoPot(uint8 *pBuf,uint32 temp)
49:driver/Resource.c **** {
236 .LM12:
237 /* prologue: frame size=0 */
238 0072 1F93 push r17
239 0074 CF93 push r28
240 0076 DF93 push r29
241 /* prologue end (size=3) */
242 0078 EC01 movw r28,r24
243 007a 9A01 movw r18,r20
244 007c AB01 movw r20,r22
50:driver/Resource.c **** uint8 i = 3;
246 .LM13:
247 007e 13E0 ldi r17,lo8(3)
248 .L41:
51:driver/Resource.c ****
52:driver/Resource.c **** while (temp >= 10000) //小数点处理
53:driver/Resource.c **** {
54:driver/Resource.c **** temp /= 10;
55:driver/Resource.c **** i--;
250 .LM14:
251 0080 2031 cpi r18,lo8(10000)
252 0082 87E2 ldi r24,hi8(10000)
253 0084 3807 cpc r19,r24
254 0086 80E0 ldi r24,hlo8(10000)
255 0088 4807 cpc r20,r24
256 008a 80E0 ldi r24,hhi8(10000)
257 008c 5807 cpc r21,r24
258 008e 48F0 brlo .L40
260 .LM15:
261 0090 CA01 movw r24,r20
262 0092 B901 movw r22,r18
263 0094 2AE0 ldi r18,lo8(10)
264 0096 30E0 ldi r19,hi8(10)
265 0098 40E0 ldi r20,hlo8(10)
266 009a 50E0 ldi r21,hhi8(10)
267 009c 00D0 rcall __udivmodsi4
269 .LM16:
270 009e 1150 subi r17,lo8(-(-1))
271 00a0 EFCF rjmp .L41
272 .L40:
56:driver/Resource.c **** }
57:driver/Resource.c **** HexToBcd(pBuf,temp);
274 .LM17:
275 00a2 B901 movw r22,r18
276 00a4 CE01 movw r24,r28
277 00a6 ACDF rcall HexToBcd
58:driver/Resource.c **** if (i != 0)
279 .LM18:
280 00a8 1123 tst r17
281 00aa 31F0 breq .L34
59:driver/Resource.c **** {
60:driver/Resource.c **** pBuf[i] += 10; //添加小数点
283 .LM19:
284 00ac FE01 movw r30,r28
285 00ae E10F add r30,r17
286 00b0 F11D adc r31,__zero_reg__
287 00b2 8081 ld r24,Z
288 00b4 865F subi r24,lo8(-(10))
289 00b6 8083 st Z,r24
290 .L34:
291 /* epilogue: frame size=0 */
292 00b8 DF91 pop r29
293 00ba CF91 pop r28
294 00bc 1F91 pop r17
295 00be 0895 ret
296 /* epilogue end (size=4) */
297 /* function DoPot size 39 (32) */
302 .Lscope2:
306 .global DealRms
308 DealRms:
61:driver/Resource.c **** }
62:driver/Resource.c **** }
63:driver/Resource.c **** //----------------------------------
64:driver/Resource.c **** uint16 DealRms(uint8 *pBuf,uint32 Kval)
65:driver/Resource.c **** {
310 .LM20:
311 /* prologue: frame size=0 */
312 00c0 EF92 push r14
313 00c2 FF92 push r15
314 00c4 0F93 push r16
315 00c6 1F93 push r17
316 /* prologue end (size=4) */
317 00c8 FC01 movw r30,r24
318 00ca 7A01 movw r14,r20
319 00cc 8B01 movw r16,r22
66:driver/Resource.c **** uint16 temp1;
67:driver/Resource.c **** uint32 temp2;
68:driver/Resource.c ****
69:driver/Resource.c **** temp1 = (uint16)(*pBuf) << 8;
321 .LM21:
322 00ce 8191 ld r24,Z+
323 00d0 9927 clr r25
324 00d2 982F mov r25,r24
325 00d4 8827 clr r24
70:driver/Resource.c **** pBuf++;
71:driver/Resource.c **** temp1 += *pBuf;
327 .LM22:
328 00d6 2081 ld r18,Z
329 00d8 820F add r24,r18
330 00da 911D adc r25,__zero_reg__
72:driver/Resource.c ****
73:driver/Resource.c **** temp2 = temp1 * Kval;
332 .LM23:
333 00dc AA27 clr r26
334 00de BB27 clr r27
335 00e0 BC01 movw r22,r24
336 00e2 CD01 movw r24,r26
337 00e4 A801 movw r20,r16
338 00e6 9701 movw r18,r14
339 00e8 00D0 rcall __mulsi3
340 00ea DC01 movw r26,r24
341 00ec CB01 movw r24,r22
74:driver/Resource.c **** temp1 = temp2 >> 16;
343 .LM24:
344 00ee CD01 movw r24,r26
345 00f0 AA27 clr r26
346 00f2 BB27 clr r27
347 /* epilogue: frame size=0 */
348 00f4 1F91 pop r17
349 00f6 0F91 pop r16
350 00f8 FF90 pop r15
351 00fa EF90 pop r14
352 00fc 0895 ret
353 /* epilogue end (size=5) */
354 /* function DealRms size 31 (22) */
360 .Lscope3:
362 .text
364 Letext:
365 /* File "driver/Resource.c": code 127 = 0x007f ( 110), prologues 7, epilogues 10 */
DEFINED SYMBOLS
*ABS*:00000000 Resource.c
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:3 *ABS*:0000003f __SREG__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:106 .bss:00000000 Os_Enter_Sum
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:114 .text:00000000 HexToBcd
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:192 .text:00000058 DealZero
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:234 .text:00000072 DoPot
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:308 .text:000000c0 DealRms
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:364 .text:000000fe Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__udivmodsi4
__mulsi3
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?