📄 utility.lst
字号:
1 .file "Utility.c"
2 .arch atmega128
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:
60 .global Utility_delay
62 Utility_delay:
1:Utility.c **** /*
2:Utility.c **** Copyright (C) 2004 John Orlando
3:Utility.c ****
4:Utility.c **** AVRcam: a small real-time image processing engine.
5:Utility.c ****
6:Utility.c **** This program is free software; you can redistribute it and/or
7:Utility.c **** modify it under the terms of the GNU General Public
8:Utility.c **** License as published by the Free Software Foundation; either
9:Utility.c **** version 2 of the License, or (at your option) any later version.
10:Utility.c ****
11:Utility.c **** This program is distributed in the hope that it will be useful,
12:Utility.c **** but WITHOUT ANY WARRANTY; without even the implied warranty of
13:Utility.c **** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14:Utility.c **** General Public License for more details.
15:Utility.c ****
16:Utility.c **** You should have received a copy of the GNU General Public
17:Utility.c **** License along with this program; if not, write to the Free Software
18:Utility.c **** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19:Utility.c ****
20:Utility.c **** For more information on the AVRcam, please contact:
21:Utility.c ****
22:Utility.c **** john@jrobot.net
23:Utility.c ****
24:Utility.c **** or go to www.jrobot.net for more details regarding the system.
25:Utility.c **** */
26:Utility.c **** /***********************************************************
27:Utility.c **** Module Name: Utility.c
28:Utility.c **** Module Date: 04/13/2004
29:Utility.c **** Module Auth: John Orlando
30:Utility.c ****
31:Utility.c **** Description: This module provides a basic set of
32:Utility.c **** general purpose utilities that can be used by any
33:Utility.c **** module needing them.
34:Utility.c ****
35:Utility.c **** Revision History:
36:Utility.c **** Date Rel Ver. Notes
37:Utility.c **** 4/10/2004 0.1 Module created
38:Utility.c **** 6/30/2004 1.0 Initial release for Circuit Cellar
39:Utility.c **** contest.
40:Utility.c **** ***********************************************************/
41:Utility.c ****
42:Utility.c **** /* Includes */
43:Utility.c **** #include "CommonDefs.h"
44:Utility.c ****
45:Utility.c **** /* Local Variables */
46:Utility.c ****
47:Utility.c **** /* Local Structures and Typedefs */
48:Utility.c ****
49:Utility.c **** /* Extern Variables */
50:Utility.c ****
51:Utility.c **** /* Definitions */
52:Utility.c ****
53:Utility.c **** /***********************************************************
54:Utility.c **** Function Name: Utility_delay
55:Utility.c **** Function Description: This function provides a busy-wait
56:Utility.c **** delay for a specified number of milliseconds.
57:Utility.c **** Inputs: numMs - the number of milliseconds to delay
58:Utility.c **** Outputs: none
59:Utility.c **** NOTES: The delay_loop_1 and delay_loop_2 functions found
60:Utility.c **** in avr/delay.h provide accurate 3 and 4 cycle delay loops
61:Utility.c **** if needed...this isn't really a millisecond, so DON'T
62:Utility.c **** depend on it for exact timing...
63:Utility.c **** ***********************************************************/
64:Utility.c **** void Utility_delay(unsigned short numMs)
65:Utility.c **** {
64 .LM1:
65 /* prologue: frame size=4 */
66 0000 CF93 push r28
67 0002 DF93 push r29
68 0004 CDB7 in r28,__SP_L__
69 0006 DEB7 in r29,__SP_H__
70 0008 2497 sbiw r28,4
71 000a 0FB6 in __tmp_reg__,__SREG__
72 000c F894 cli
73 000e DEBF out __SP_H__,r29
74 0010 0FBE out __SREG__,__tmp_reg__
75 0012 CDBF out __SP_L__,r28
76 /* prologue end (size=10) */
77 0014 9C01 movw r18,r24
66:Utility.c **** volatile unsigned short i=0,j=0;
79 .LM2:
80 0016 1982 std Y+1,__zero_reg__
81 0018 1A82 std Y+2,__zero_reg__
82 001a 1B82 std Y+3,__zero_reg__
83 001c 1C82 std Y+4,__zero_reg__
67:Utility.c **** #ifndef SIMULATION
68:Utility.c **** for (i=0; i<numMs; i++)
85 .LM3:
86 001e 1982 std Y+1,__zero_reg__
87 0020 1A82 std Y+2,__zero_reg__
88 0022 8981 ldd r24,Y+1
89 0024 9A81 ldd r25,Y+2
90 0026 8217 cp r24,r18
91 0028 9307 cpc r25,r19
92 002a E0F4 brsh .L11
93 .L9:
69:Utility.c **** {
70:Utility.c **** for (j=0; j<1000; j++)
95 .LM4:
96 002c 1B82 std Y+3,__zero_reg__
97 002e 1C82 std Y+4,__zero_reg__
98 0030 8B81 ldd r24,Y+3
99 0032 9C81 ldd r25,Y+4
100 0034 885E subi r24,lo8(1000)
101 0036 9340 sbci r25,hi8(1000)
102 0038 58F4 brsh .L13
103 .L8:
71:Utility.c **** {
72:Utility.c **** asm volatile("nop"::);
105 .LM5:
106 /* #APP */
107 003a 0000 nop
109 .LM6:
110 /* #NOAPP */
111 003c 8B81 ldd r24,Y+3
112 003e 9C81 ldd r25,Y+4
113 0040 0196 adiw r24,1
114 0042 8B83 std Y+3,r24
115 0044 9C83 std Y+4,r25
116 0046 8B81 ldd r24,Y+3
117 0048 9C81 ldd r25,Y+4
118 004a 885E subi r24,lo8(1000)
119 004c 9340 sbci r25,hi8(1000)
120 004e A8F3 brlo .L8
121 .L13:
123 .LM7:
124 0050 8981 ldd r24,Y+1
125 0052 9A81 ldd r25,Y+2
126 0054 0196 adiw r24,1
127 0056 8983 std Y+1,r24
128 0058 9A83 std Y+2,r25
129 005a 8981 ldd r24,Y+1
130 005c 9A81 ldd r25,Y+2
131 005e 8217 cp r24,r18
132 0060 9307 cpc r25,r19
133 0062 20F3 brlo .L9
134 .L11:
135 /* epilogue: frame size=4 */
136 0064 2496 adiw r28,4
137 0066 0FB6 in __tmp_reg__,__SREG__
138 0068 F894 cli
139 006a DEBF out __SP_H__,r29
140 006c 0FBE out __SREG__,__tmp_reg__
141 006e CDBF out __SP_L__,r28
142 0070 DF91 pop r29
143 0072 CF91 pop r28
144 0074 0895 ret
145 /* epilogue end (size=9) */
146 /* function Utility_delay size 62 (43) */
152 .Lscope0:
153 .text
155 Letext:
156 /* File "Utility.c": code 62 = 0x003e ( 43), prologues 10, epilogues 9 */
DEFINED SYMBOLS
*ABS*:00000000 Utility.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSQaaaa.s:62 .text:00000000 Utility_delay
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSQaaaa.s:155 .text:00000076 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -