| Line 1... |
Line 1... |
| 1 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 1
|
1 |
GAS LISTING /tmp/cckBHomO.s page 1
|
| 2 |
|
2 |
|
| 3 |
|
3 |
|
| 4 |
1 # 1 "CamInterfaceAsm.S"
|
4 |
1 # 1 "CamInterfaceAsm.S"
|
| 5 |
2 # 1 "<built-in>"
|
5 |
2 # 1 "<built-in>"
|
| 6 |
1 ;
|
6 |
1 ;
|
| 7 |
0
|
7 |
0
|
| 8 |
0
|
8 |
0
|
| 9 |
2 ; Copyright (C) 2004 John Orlando
|
9 |
2 ; Copyright (C) 2004 John Orlando
|
| 10 |
3 ;
|
10 |
3 ;
|
| 11 |
4 ; AVRcam: a small real-time image processing engine.
|
11 |
4 ; AVRcam: a small real-time image processing engine.
|
| 12 |
5
|
12 |
5
|
| 13 |
6 ; This program is free software; you can redistribute it and/or
|
13 |
6 ; This program is free software; you can redistribute it and/or
|
| Line 56... |
Line 56... |
| 56 |
49 ; interrupts, and caused problems. Now,
|
56 |
49 ; interrupts, and caused problems. Now,
|
| 57 |
50 ; the "PCLK" pipe feeds timer1 when needed,
|
57 |
50 ; the "PCLK" pipe feeds timer1 when needed,
|
| 58 |
51 ; and is turned off when it isn't needed.
|
58 |
51 ; and is turned off when it isn't needed.
|
| 59 |
52
|
59 |
52
|
| 60 |
53 #include <avr/io.h>
|
60 |
53 #include <avr/io.h>
|
| 61 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 2
|
61 |
GAS LISTING /tmp/cckBHomO.s page 2
|
| 62 |
|
62 |
|
| 63 |
|
63 |
|
| 64 |
1 /* Copyright (c) 2002,2003 Marek Michalkiewicz, Joerg Wunsch
|
64 |
1 /* Copyright (c) 2002,2003,2005,2006, Marek Michalkiewicz, Joerg Wunsch
|
| 65 |
2 All rights reserved.
|
65 |
2 All rights reserved.
|
| 66 |
3
|
66 |
3
|
| 67 |
4 Redistribution and use in source and binary forms, with or without
|
67 |
4 Redistribution and use in source and binary forms, with or without
|
| 68 |
5 modification, are permitted provided that the following conditions are met:
|
68 |
5 modification, are permitted provided that the following conditions are met:
|
| 69 |
6
|
69 |
6
|
| 70 |
7 * Redistributions of source code must retain the above copyright
|
70 |
7 * Redistributions of source code must retain the above copyright
|
| 71 |
8 notice, this list of conditions and the following disclaimer.
|
71 |
8 notice, this list of conditions and the following disclaimer.
|
| 72 |
9 * Redistributions in binary form must reproduce the above copyright
|
72 |
9
|
| 73 |
10 notice, this list of conditions and the following disclaimer in
|
73 |
10 * Redistributions in binary form must reproduce the above copyright
|
| 74 |
11 the documentation and/or other materials provided with the
|
74 |
11 notice, this list of conditions and the following disclaimer in
|
| 75 |
12 distribution.
|
75 |
12 the documentation and/or other materials provided with the
|
| 76 |
13
|
76 |
13 distribution.
|
| 77 |
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
77 |
14
|
| 78 |
15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
78 |
15 * Neither the name of the copyright holders nor the names of
|
| 79 |
16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
79 |
16 contributors may be used to endorse or promote products derived
|
| 80 |
17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
80 |
17 from this software without specific prior written permission.
|
| 81 |
18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
81 |
18
|
| 82 |
19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
82 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| 83 |
20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
83 |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| 84 |
21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
84 |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| 85 |
22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
85 |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| 86 |
23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
86 |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| 87 |
24 POSSIBILITY OF SUCH DAMAGE. */
|
87 |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| 88 |
25
|
88 |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| 89 |
26 /* $Id: io.h,v 1.10 2003/02/28 23:03:40 marekm Exp $ */
|
89 |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| 90 |
27
|
90 |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| 91 |
28 /** \defgroup avr_io AVR device-specific IO definitions
|
91 |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| 92 |
29 \code #include <avr/io.h> \endcode
|
92 |
29 POSSIBILITY OF SUCH DAMAGE. */
|
| 93 |
30
|
93 |
30
|
| 94 |
31 This header file includes the apropriate IO definitions for the
|
94 |
31 /* $Id: io.h,v 1.24.2.7 2006/04/19 16:53:25 aesok Exp $ */
|
| 95 |
32 device that has been specified by the <tt>-mmcu=</tt> compiler
|
95 |
32
|
| 96 |
33 command-line switch. This is done by diverting to the appropriate
|
96 |
33 /** \defgroup avr_io <avr/io.h>: AVR device-specific IO definitions
|
| 97 |
34 file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should
|
97 |
34 \code #include <avr/io.h> \endcode
|
| 98 |
35 never be included directly. Some register names common to all
|
98 |
35
|
| 99 |
36 AVR devices are defined directly within <tt><avr/io.h></tt>,
|
99 |
36 This header file includes the apropriate IO definitions for the
|
| 100 |
37 but most of the details come from the respective include file.
|
100 |
37 device that has been specified by the <tt>-mmcu=</tt> compiler
|
| 101 |
38
|
101 |
38 command-line switch. This is done by diverting to the appropriate
|
| 102 |
39 Note that this file always includes
|
102 |
39 file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should
|
| 103 |
40 \code #include <avr/sfr_defs.h> \endcode
|
103 |
40 never be included directly. Some register names common to all
|
| 104 |
41 See \ref avr_sfr for the details.
|
104 |
41 AVR devices are defined directly within <tt><avr/io.h></tt>,
|
| 105 |
42
|
105 |
42 but most of the details come from the respective include file.
|
| 106 |
43 Included are definitions of the IO register set and their
|
106 |
43
|
| 107 |
44 respective bit values as specified in the Atmel documentation.
|
107 |
44 Note that this file always includes
|
| 108 |
45 Note that Atmel is not very consistent in its naming conventions,
|
108 |
45 \code #include <avr/sfr_defs.h> \endcode
|
| 109 |
46 so even identical functions sometimes get different names on
|
109 |
46 See \ref avr_sfr for the details.
|
| 110 |
47 different devices.
|
110 |
47
|
| 111 |
48
|
111 |
48 Included are definitions of the IO register set and their
|
| 112 |
49 Also included are the specific names useable for interrupt
|
112 |
49 respective bit values as specified in the Atmel documentation.
|
| 113 |
50 function definitions as documented
|
113 |
50 Note that Atmel is not very consistent in its naming conventions,
|
| 114 |
51 \ref avr_signames "here".
|
114 |
51 so even identical functions sometimes get different names on
|
| 115 |
52
|
115 |
52 different devices.
|
| 116 |
53 Finally, the following macros are defined:
|
116 |
53
|
| 117 |
54
|
117 |
54 Also included are the specific names useable for interrupt
|
| 118 |
55 - \b RAMEND
|
118 |
55 function definitions as documented
|
| 119 |
56 <br>
|
119 |
56 \ref avr_signames "here".
|
| 120 |
57 A constant describing the last on-chip RAM location.
|
120 |
57
|
| 121 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 3
|
121 |
GAS LISTING /tmp/cckBHomO.s page 3
|
| 122 |
|
122 |
|
| 123 |
|
123 |
|
| 124 |
58 <br>
|
124 |
58 Finally, the following macros are defined:
|
| 125 |
59 - \b XRAMEND
|
125 |
59
|
| 126 |
60 <br>
|
126 |
60 - \b RAMEND
|
| 127 |
61 A constant describing the last possible location in RAM.
|
127 |
61 <br>
|
| 128 |
62 This is equal to RAMEND for devices that do not allow for
|
128 |
62 A constant describing the last on-chip RAM location.
|
| 129 |
63 external RAM.
|
129 |
63 <br>
|
| 130 |
64 <br>
|
130 |
64 - \b XRAMEND
|
| 131 |
65 - \b E2END
|
131 |
65 <br>
|
| 132 |
66 <br>
|
132 |
66 A constant describing the last possible location in RAM.
|
| 133 |
67 A constant describing the address of the last EEPROM cell.
|
133 |
67 This is equal to RAMEND for devices that do not allow for
|
| 134 |
68 <br>
|
134 |
68 external RAM.
|
| 135 |
69 - \b FLASHEND
|
135 |
69 <br>
|
| 136 |
70 <br>
|
136 |
70 - \b E2END
|
| 137 |
71 A constant describing the last byte address in flash ROM.
|
137 |
71 <br>
|
| 138 |
72 <br>
|
138 |
72 A constant describing the address of the last EEPROM cell.
|
| 139 |
73 - \b SPM_PAGESIZE
|
139 |
73 <br>
|
| 140 |
74 <br>
|
140 |
74 - \b FLASHEND
|
| 141 |
75 For devices with bootloader support, the flash pagesize
|
141 |
75 <br>
|
| 142 |
76 (in bytes) to be used for the \c SPM instruction. */
|
142 |
76 A constant describing the last byte address in flash ROM.
|
| 143 |
77
|
143 |
77 <br>
|
| 144 |
78 #ifndef _AVR_IO_H_
|
144 |
78 - \b SPM_PAGESIZE
|
| 145 |
79 #define _AVR_IO_H_
|
145 |
79 <br>
|
| 146 |
80
|
146 |
80 For devices with bootloader support, the flash pagesize
|
| 147 |
81 #include <avr/sfr_defs.h>
|
147 |
81 (in bytes) to be used for the \c SPM instruction. */
|
| 148 |
1 /* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl>
|
148 |
82
|
| 149 |
2 All rights reserved.
|
149 |
83 #ifndef _AVR_IO_H_
|
| 150 |
3
|
150 |
84 #define _AVR_IO_H_
|
| 151 |
4 Redistribution and use in source and binary forms, with or without
|
151 |
85
|
| 152 |
5 modification, are permitted provided that the following conditions are met:
|
152 |
86 #include <avr/sfr_defs.h>
|
| 153 |
6
|
153 |
1 /* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl>
|
| 154 |
7 * Redistributions of source code must retain the above copyright
|
154 |
2 All rights reserved.
|
| 155 |
8 notice, this list of conditions and the following disclaimer.
|
155 |
3
|
| 156 |
9 * Redistributions in binary form must reproduce the above copyright
|
156 |
4 Redistribution and use in source and binary forms, with or without
|
| 157 |
10 notice, this list of conditions and the following disclaimer in
|
157 |
5 modification, are permitted provided that the following conditions are met:
|
| 158 |
11 the documentation and/or other materials provided with the
|
158 |
6
|
| 159 |
12 distribution.
|
159 |
7 * Redistributions of source code must retain the above copyright
|
| 160 |
13
|
160 |
8 notice, this list of conditions and the following disclaimer.
|
| 161 |
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
161 |
9
|
| 162 |
15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
162 |
10 * Redistributions in binary form must reproduce the above copyright
|
| 163 |
16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
163 |
11 notice, this list of conditions and the following disclaimer in
|
| 164 |
17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
164 |
12 the documentation and/or other materials provided with the
|
| 165 |
18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
165 |
13 distribution.
|
| 166 |
19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
166 |
14
|
| 167 |
20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
167 |
15 * Neither the name of the copyright holders nor the names of
|
| 168 |
21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
168 |
16 contributors may be used to endorse or promote products derived
|
| 169 |
22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
169 |
17 from this software without specific prior written permission.
|
| 170 |
23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
170 |
18
|
| 171 |
24 POSSIBILITY OF SUCH DAMAGE. */
|
171 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| 172 |
25
|
172 |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| 173 |
26 /* avr/sfr_defs.h - macros for accessing AVR special function registers */
|
173 |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| 174 |
27
|
174 |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| 175 |
28 /* $Id: sfr_defs.h,v 1.10 2003/08/11 21:42:13 troth Exp $ */
|
175 |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| 176 |
29
|
176 |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| 177 |
30 #ifndef _AVR_SFR_DEFS_H_
|
177 |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| 178 |
31 #define _AVR_SFR_DEFS_H_ 1
|
178 |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| 179 |
32
|
179 |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| 180 |
33 /** \defgroup avr_sfr_notes Additional notes from <avr/sfr_defs.h>
|
180 |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| 181 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 4
|
181 |
GAS LISTING /tmp/cckBHomO.s page 4
|
| 182 |
|
182 |
|
| 183 |
|
183 |
|
| 184 |
34 \ingroup avr_sfr
|
184 |
29 POSSIBILITY OF SUCH DAMAGE. */
|
| 185 |
35
|
185 |
30
|
| 186 |
36 The \c <avr/sfr_defs.h> file is included by all of the \c <avr/ioXXXX.h>
|
186 |
31 /* avr/sfr_defs.h - macros for accessing AVR special function registers */
|
| 187 |
37 files, which use macros defined here to make the special function register
|
187 |
32
|
| 188 |
38 definitions look like C variables or simple constants, depending on the
|
188 |
33 /* $Id: sfr_defs.h,v 1.16 2005/09/10 21:31:13 joerg_wunsch Exp $ */
|
| 189 |
39 <tt>_SFR_ASM_COMPAT</tt> define. Some examples from \c <avr/iom128.h> to
|
189 |
34
|
| 190 |
40 show how to define such macros:
|
190 |
35 #ifndef _AVR_SFR_DEFS_H_
|
| 191 |
41
|
191 |
36 #define _AVR_SFR_DEFS_H_ 1
|
| 192 |
42 \code
|
192 |
37
|
| 193 |
43 #define PORTA _SFR_IO8(0x1b)
|
193 |
38 /** \defgroup avr_sfr_notes Additional notes from <avr/sfr_defs.h>
|
| 194 |
44 #define TCNT1 _SFR_IO16(0x2c)
|
194 |
39 \ingroup avr_sfr
|
| 195 |
45 #define PORTF _SFR_MEM8(0x61)
|
195 |
40
|
| 196 |
46 #define TCNT3 _SFR_MEM16(0x88)
|
196 |
41 The \c <avr/sfr_defs.h> file is included by all of the \c <avr/ioXXXX.h>
|
| 197 |
47 \endcode
|
197 |
42 files, which use macros defined here to make the special function register
|
| 198 |
48
|
198 |
43 definitions look like C variables or simple constants, depending on the
|
| 199 |
49 If \c _SFR_ASM_COMPAT is not defined, C programs can use names like
|
199 |
44 <tt>_SFR_ASM_COMPAT</tt> define. Some examples from \c <avr/iom128.h> to
|
| 200 |
50 <tt>PORTA</tt> directly in C expressions (also on the left side of
|
200 |
45 show how to define such macros:
|
| 201 |
51 assignment operators) and GCC will do the right thing (use short I/O
|
201 |
46
|
| 202 |
52 instructions if possible). The \c __SFR_OFFSET definition is not used in
|
202 |
47 \code
|
| 203 |
53 any way in this case.
|
203 |
48 #define PORTA _SFR_IO8(0x1b)
|
| 204 |
54
|
204 |
49 #define TCNT1 _SFR_IO16(0x2c)
|
| 205 |
55 Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants
|
205 |
50 #define PORTF _SFR_MEM8(0x61)
|
| 206 |
56 (addresses of the I/O registers). This is necessary when included in
|
206 |
51 #define TCNT3 _SFR_MEM16(0x88)
|
| 207 |
57 preprocessed assembler (*.S) source files, so it is done automatically if
|
207 |
52 \endcode
|
| 208 |
58 \c __ASSEMBLER__ is defined. By default, all addresses are defined as if
|
208 |
53
|
| 209 |
59 they were memory addresses (used in \c lds/sts instructions). To use these
|
209 |
54 If \c _SFR_ASM_COMPAT is not defined, C programs can use names like
|
| 210 |
60 addresses in \c in/out instructions, you must subtract 0x20 from them.
|
210 |
55 <tt>PORTA</tt> directly in C expressions (also on the left side of
|
| 211 |
61
|
211 |
56 assignment operators) and GCC will do the right thing (use short I/O
|
| 212 |
62 For more backwards compatibility, insert the following at the start of your
|
212 |
57 instructions if possible). The \c __SFR_OFFSET definition is not used in
|
| 213 |
63 old assembler source file:
|
213 |
58 any way in this case.
|
| 214 |
64
|
214 |
59
|
| 215 |
65 \code
|
215 |
60 Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants
|
| 216 |
66 #define __SFR_OFFSET 0
|
216 |
61 (addresses of the I/O registers). This is necessary when included in
|
| 217 |
67 \endcode
|
217 |
62 preprocessed assembler (*.S) source files, so it is done automatically if
|
| 218 |
68
|
218 |
63 \c __ASSEMBLER__ is defined. By default, all addresses are defined as if
|
| 219 |
69 This automatically subtracts 0x20 from I/O space addresses, but it's a
|
219 |
64 they were memory addresses (used in \c lds/sts instructions). To use these
|
| 220 |
70 hack, so it is recommended to change your source: wrap such addresses in
|
220 |
65 addresses in \c in/out instructions, you must subtract 0x20 from them.
|
| 221 |
71 macros defined here, as shown below. After this is done, the
|
221 |
66
|
| 222 |
72 <tt>__SFR_OFFSET</tt> definition is no longer necessary and can be removed.
|
222 |
67 For more backwards compatibility, insert the following at the start of your
|
| 223 |
73
|
223 |
68 old assembler source file:
|
| 224 |
74 Real example - this code could be used in a boot loader that is portable
|
224 |
69
|
| 225 |
75 between devices with \c SPMCR at different addresses.
|
225 |
70 \code
|
| 226 |
76
|
226 |
71 #define __SFR_OFFSET 0
|
| 227 |
77 \verbatim
|
227 |
72 \endcode
|
| 228 |
78 <avr/iom163.h>: #define SPMCR _SFR_IO8(0x37)
|
228 |
73
|
| 229 |
79 <avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68)
|
229 |
74 This automatically subtracts 0x20 from I/O space addresses, but it's a
|
| 230 |
80 \endverbatim
|
230 |
75 hack, so it is recommended to change your source: wrap such addresses in
|
| 231 |
81
|
231 |
76 macros defined here, as shown below. After this is done, the
|
| 232 |
82 \code
|
232 |
77 <tt>__SFR_OFFSET</tt> definition is no longer necessary and can be removed.
|
| 233 |
82
|
233 |
78
|
| 234 |
83 /*
|
234 |
79 Real example - this code could be used in a boot loader that is portable
|
| 235 |
84 * Registers common to all AVR devices.
|
235 |
80 between devices with \c SPMCR at different addresses.
|
| 236 |
85 */
|
236 |
81
|
| 237 |
86
|
237 |
82 \verbatim
|
| 238 |
87 #if __AVR_ARCH__ != 1
|
238 |
83 <avr/iom163.h>: #define SPMCR _SFR_IO8(0x37)
|
| 239 |
88 /*
|
239 |
84 <avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68)
|
| 240 |
89 * AVR architecture 1 has no RAM, thus no stack pointer.
|
240 |
85 \endverbatim
|
| 241 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 5
|
241 |
GAS LISTING /tmp/cckBHomO.s page 5
|
| 242 |
|
242 |
|
| 243 |
|
243 |
|
| 244 |
90 *
|
244 |
86
|
| 245 |
91 * All other archs do have a stack pointer. Some devices have only
|
245 |
87 \code
|
| 246 |
92 * less than 256 bytes of possible RAM locations (128 Bytes of SRAM
|
246 |
87
|
| 247 |
93 * and no option for external RAM), thus SPH is officially "reserved"
|
247 |
88 #ifndef __AVR_HAVE_MOVW__
|
| 248 |
94 * for them. We catch this case below after including the
|
248 |
89 # if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__
|
| 249 |
95 * device-specific ioXXXX.h file, by examining XRAMEND, and
|
249 |
90 # define __AVR_HAVE_MOVW__ 1
|
| 250 |
96 * #undef-ining SP and SPH in that case.
|
250 |
91 # endif
|
| 251 |
97 */
|
251 |
92 #endif
|
| 252 |
98 /* Stack Pointer */
|
252 |
93
|
| 253 |
99 #define SP _SFR_IO16(0x3D)
|
253 |
94 #ifndef __AVR_HAVE_LPMX__
|
| 254 |
100 #define SPL _SFR_IO8(0x3D)
|
254 |
95 # if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__
|
| 255 |
101 #define SPH _SFR_IO8(0x3E)
|
255 |
96 # define __AVR_HAVE_LPMX__ 1
|
| 256 |
102 #endif /* #if __AVR_ARCH__ != 1 */
|
256 |
97 # endif
|
| 257 |
103
|
257 |
98 #endif
|
| 258 |
104 /* Status REGister */
|
258 |
99
|
| 259 |
105 #define SREG _SFR_IO8(0x3F)
|
259 |
100 /*
|
| 260 |
106
|
260 |
101 * Registers common to all AVR devices.
|
| 261 |
107 /* Status Register - SREG */
|
261 |
102 */
|
| 262 |
108 #define SREG_I 7
|
262 |
103
|
| 263 |
109 #define SREG_T 6
|
263 |
104 #if __AVR_ARCH__ != 1
|
| 264 |
110 #define SREG_H 5
|
264 |
105 /*
|
| 265 |
111 #define SREG_S 4
|
265 |
106 * AVR architecture 1 has no RAM, thus no stack pointer.
|
| 266 |
112 #define SREG_V 3
|
266 |
107 *
|
| 267 |
113 #define SREG_N 2
|
267 |
108 * All other archs do have a stack pointer. Some devices have only
|
| 268 |
114 #define SREG_Z 1
|
268 |
109 * less than 256 bytes of possible RAM locations (128 Bytes of SRAM
|
| 269 |
115 #define SREG_C 0
|
269 |
110 * and no option for external RAM), thus SPH is officially "reserved"
|
| 270 |
116
|
270 |
111 * for them. We catch this case below after including the
|
| 271 |
117 /* Pointer definition */
|
271 |
112 * device-specific ioXXXX.h file, by examining XRAMEND, and
|
| 272 |
118 #if __AVR_ARCH__ != 1
|
272 |
113 * #undef-ining SP and SPH in that case.
|
| 273 |
119 /* avr1 has only the Z pointer */
|
273 |
114 */
|
| 274 |
120 #define XL r26
|
274 |
115 /* Stack Pointer */
|
| 275 |
121 #define XH r27
|
275 |
116 #define SP _SFR_IO16(0x3D)
|
| 276 |
122 #define YL r28
|
276 |
117 #define SPL _SFR_IO8(0x3D)
|
| 277 |
123 #define YH r29
|
277 |
118 #define SPH _SFR_IO8(0x3E)
|
| 278 |
124 #endif /* #if __AVR_ARCH__ != 1 */
|
278 |
119 #endif /* #if __AVR_ARCH__ != 1 */
|
| 279 |
125 #define ZL r30
|
279 |
120
|
| 280 |
126 #define ZH r31
|
280 |
121 /* Status REGister */
|
| 281 |
127
|
281 |
122 #define SREG _SFR_IO8(0x3F)
|
| 282 |
128 /*
|
282 |
123
|
| 283 |
129 * Only few devices come without EEPROM. In order to assemble the
|
283 |
124 /* Status Register - SREG */
|
| 284 |
130 * EEPROM library components without defining a specific device, we
|
284 |
125 #define SREG_I 7
|
| 285 |
131 * keep the EEPROM-related definitions here, and catch the devices
|
285 |
126 #define SREG_T 6
|
| 286 |
132 * without EEPROM (E2END == 0) below. Obviously, the EEPROM library
|
286 |
127 #define SREG_H 5
|
| 287 |
133 * functions will not work for them. ;-)
|
287 |
128 #define SREG_S 4
|
| 288 |
134 */
|
288 |
129 #define SREG_V 3
|
| 289 |
135 /* EEPROM Control Register */
|
289 |
130 #define SREG_N 2
|
| 290 |
136 #define EECR _SFR_IO8(0x1C)
|
290 |
131 #define SREG_Z 1
|
| 291 |
137
|
291 |
132 #define SREG_C 0
|
| 292 |
138 /* EEPROM Data Register */
|
292 |
133
|
| 293 |
139 #define EEDR _SFR_IO8(0x1D)
|
293 |
134 /* Pointer definition */
|
| 294 |
140
|
294 |
135 #if __AVR_ARCH__ != 1
|
| 295 |
141 /* EEPROM Address Register */
|
295 |
136 /* avr1 has only the Z pointer */
|
| 296 |
142 #define EEAR _SFR_IO16(0x1E)
|
296 |
137 #define XL r26
|
| 297 |
143 #define EEARL _SFR_IO8(0x1E)
|
297 |
138 #define XH r27
|
| 298 |
144 #define EEARH _SFR_IO8(0x1F)
|
298 |
139 #define YL r28
|
| 299 |
145
|
299 |
140 #define YH r29
|
| 300 |
146 /* EEPROM Control Register */
|
300 |
141 #endif /* #if __AVR_ARCH__ != 1 */
|
| 301 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 6
|
301 |
GAS LISTING /tmp/cckBHomO.s page 6
|
| 302 |
|
302 |
|
| 303 |
|
303 |
|
| 304 |
147 #define EERIE 3
|
304 |
142 #define ZL r30
|
| 305 |
148 #define EEMWE 2
|
305 |
143 #define ZH r31
|
| 306 |
149 #define EEWE 1
|
306 |
144
|
| 307 |
150 #define EERE 0
|
307 |
145 /*
|
| 308 |
151
|
308 |
146 * Only few devices come without EEPROM. In order to assemble the
|
| 309 |
152 #if defined (__AVR_AT94K__)
|
309 |
147 * EEPROM library components without defining a specific device, we
|
| 310 |
153 # include <avr/ioat94k.h>
|
310 |
148 * keep the EEPROM-related definitions here.
|
| 311 |
154 #elif defined (__AVR_AT43USB320__)
|
311 |
149 */
|
| 312 |
155 # include <avr/io43u32x.h>
|
312 |
150 #if defined(__COMPILING_AVR_LIBC__)
|
| 313 |
156 #elif defined (__AVR_AT43USB355__)
|
313 |
151
|
| 314 |
157 # include <avr/io43u35x.h>
|
314 |
152 /* EEPROM Control Register */
|
| 315 |
158 #elif defined (__AVR_AT76C711__)
|
315 |
153 #define EECR _SFR_IO8(0x1C)
|
| 316 |
159 # include <avr/io76c711.h>
|
316 |
154
|
| 317 |
160 #elif defined (__AVR_AT86RF401__)
|
317 |
155 /* EEPROM Data Register */
|
| 318 |
161 # include <avr/io86r401.h>
|
318 |
156 #define EEDR _SFR_IO8(0x1D)
|
| 319 |
162 #elif defined (__AVR_ATmega128__)
|
319 |
157
|
| 320 |
163 # include <avr/iom128.h>
|
320 |
158 /* EEPROM Address Register */
|
| 321 |
164 #elif defined (__AVR_ATmega64__)
|
321 |
159 #define EEAR _SFR_IO16(0x1E)
|
| 322 |
165 # include <avr/iom64.h>
|
322 |
160 #define EEARL _SFR_IO8(0x1E)
|
| 323 |
166 #elif defined (__AVR_ATmega103__)
|
323 |
161 #define EEARH _SFR_IO8(0x1F)
|
| 324 |
167 # include <avr/iom103.h>
|
324 |
162
|
| 325 |
168 #elif defined (__AVR_ATmega32__)
|
325 |
163 /* EEPROM Control Register */
|
| 326 |
169 # include <avr/iom32.h>
|
326 |
164 #define EERIE 3
|
| 327 |
170 #elif defined (__AVR_ATmega323__)
|
327 |
165 #define EEMWE 2
|
| 328 |
171 # include <avr/iom323.h>
|
328 |
166 #define EEWE 1
|
| 329 |
172 #elif defined (__AVR_ATmega16__)
|
329 |
167 #define EERE 0
|
| 330 |
173 # include <avr/iom16.h>
|
330 |
168
|
| 331 |
174 #elif defined (__AVR_ATmega161__)
|
331 |
169 #endif /* __COMPILING_AVR_LIBC__ */
|
| 332 |
175 # include <avr/iom161.h>
|
332 |
170
|
| 333 |
176 #elif defined (__AVR_ATmega162__)
|
333 |
171 #if defined (__AVR_AT94K__)
|
| 334 |
177 # include <avr/iom162.h>
|
334 |
172 # include <avr/ioat94k.h>
|
| 335 |
178 #elif defined (__AVR_ATmega163__)
|
335 |
173 #elif defined (__AVR_AT43USB320__)
|
| 336 |
179 # include <avr/iom163.h>
|
336 |
174 # include <avr/io43u32x.h>
|
| 337 |
180 #elif defined (__AVR_ATmega169__)
|
337 |
175 #elif defined (__AVR_AT43USB355__)
|
| 338 |
181 # include <avr/iom169.h>
|
338 |
176 # include <avr/io43u35x.h>
|
| 339 |
182 #elif defined (__AVR_ATmega8__)
|
339 |
177 #elif defined (__AVR_AT76C711__)
|
| 340 |
183 # include <avr/iom8.h>
|
340 |
178 # include <avr/io76c711.h>
|
| 341 |
1 /* Copyright (c) 2002, Marek Michalkiewicz
|
341 |
179 #elif defined (__AVR_AT86RF401__)
|
| 342 |
2 All rights reserved.
|
342 |
180 # include <avr/io86r401.h>
|
| 343 |
3
|
343 |
181 #elif defined (__AVR_AT90PWM2__)
|
| 344 |
4 Redistribution and use in source and binary forms, with or without
|
344 |
182 # include <avr/io90pwmx.h>
|
| 345 |
5 modification, are permitted provided that the following conditions are met:
|
345 |
183 #elif defined (__AVR_AT90PWM3__)
|
| 346 |
6
|
346 |
184 # include <avr/io90pwmx.h>
|
| 347 |
7 * Redistributions of source code must retain the above copyright
|
347 |
185 #elif defined (__AVR_ATmega128__)
|
| 348 |
8 notice, this list of conditions and the following disclaimer.
|
348 |
186 # include <avr/iom128.h>
|
| 349 |
9 * Redistributions in binary form must reproduce the above copyright
|
349 |
187 #elif defined (__AVR_ATmega1280__)
|
| 350 |
10 notice, this list of conditions and the following disclaimer in
|
350 |
188 # include <avr/iom1280.h>
|
| 351 |
11 the documentation and/or other materials provided with the
|
351 |
189 #elif defined (__AVR_ATmega1281__)
|
| 352 |
12 distribution.
|
352 |
190 # include <avr/iom1281.h>
|
| 353 |
13
|
353 |
191 #elif defined (__AVR_AT90CAN32__)
|
| 354 |
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
354 |
192 # include <avr/iocan32.h>
|
| 355 |
15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
355 |
193 #elif defined (__AVR_AT90CAN64__)
|
| 356 |
16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
356 |
194 # include <avr/iocan64.h>
|
| 357 |
17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
357 |
195 #elif defined (__AVR_AT90CAN128__)
|
| 358 |
18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
358 |
196 # include <avr/iocan128.h>
|
| 359 |
19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
359 |
197 #elif defined (__AVR_AT90USB646__)
|
| 360 |
20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
360 |
198 # include <avr/iousb646.h>
|
| 361 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 7
|
361 |
GAS LISTING /tmp/cckBHomO.s page 7
|
| 362 |
|
362 |
|
| 363 |
|
363 |
|
| 364 |
21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
364 |
199 #elif defined (__AVR_AT90USB647__)
|
| 365 |
22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
365 |
200 # include <avr/iousb647.h>
|
| 366 |
23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
366 |
201 #elif defined (__AVR_AT90USB1286__)
|
| 367 |
24 POSSIBILITY OF SUCH DAMAGE. */
|
367 |
202 # include <avr/iousb1286.h>
|
| 368 |
25
|
368 |
203 #elif defined (__AVR_AT90USB1287__)
|
| 369 |
26 /* $Id: iom8.h,v 1.8 2003/02/17 09:57:28 marekm Exp $ */
|
369 |
204 # include <avr/iousb1287.h>
|
| 370 |
27
|
370 |
205 #elif defined (__AVR_ATmega64__)
|
| 371 |
28 /* avr/iom8.h - definitions for ATmega8 */
|
371 |
206 # include <avr/iom64.h>
|
| 372 |
29
|
372 |
207 #elif defined (__AVR_ATmega640__)
|
| 373 |
30 #ifndef _AVR_IOM8_H_
|
373 |
208 # include <avr/iom640.h>
|
| 374 |
31 #define _AVR_IOM8_H_ 1
|
374 |
209 #elif defined (__AVR_ATmega644__)
|
| 375 |
32
|
375 |
210 # include <avr/iom644.h>
|
| 376 |
33 /* This file should only be included from <avr/io.h>, never directly. */
|
376 |
211 #elif defined (__AVR_ATmega644P__)
|
| 377 |
34
|
377 |
212 # include <avr/iom644.h>
|
| 378 |
35 #ifndef _AVR_IO_H_
|
378 |
213 #elif defined (__AVR_ATmega645__)
|
| 379 |
36 # error "Include <avr/io.h> instead of this file."
|
379 |
214 # include <avr/iom645.h>
|
| 380 |
37 #endif
|
380 |
215 #elif defined (__AVR_ATmega6450__)
|
| 381 |
38
|
381 |
216 # include <avr/iom6450.h>
|
| 382 |
39 #ifndef _AVR_IOXXX_H_
|
382 |
217 #elif defined (__AVR_ATmega649__)
|
| 383 |
40 # define _AVR_IOXXX_H_ "iom8.h"
|
383 |
218 # include <avr/iom649.h>
|
| 384 |
41 #else
|
384 |
219 #elif defined (__AVR_ATmega6490__)
|
| 385 |
42 # error "Attempt to include more than one <avr/ioXXX.h> file."
|
385 |
220 # include <avr/iom6490.h>
|
| 386 |
43 #endif
|
386 |
221 #elif defined (__AVR_ATmega103__)
|
| 387 |
44
|
387 |
222 # include <avr/iom103.h>
|
| 388 |
45 /* I/O registers */
|
388 |
223 #elif defined (__AVR_ATmega32__)
|
| 389 |
46
|
389 |
224 # include <avr/iom32.h>
|
| 390 |
47 /* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */
|
390 |
225 #elif defined (__AVR_ATmega323__)
|
| 391 |
48 #define TWBR _SFR_IO8(0x00)
|
391 |
226 # include <avr/iom323.h>
|
| 392 |
49 #define TWSR _SFR_IO8(0x01)
|
392 |
227 #elif defined (__AVR_ATmega324P__)
|
| 393 |
50 #define TWAR _SFR_IO8(0x02)
|
393 |
228 # include <avr/iom324.h>
|
| 394 |
51 #define TWDR _SFR_IO8(0x03)
|
394 |
229 #elif defined (__AVR_ATmega325__)
|
| 395 |
52
|
395 |
230 # include <avr/iom325.h>
|
| 396 |
53 /* ADC */
|
396 |
231 #elif defined (__AVR_ATmega3250__)
|
| 397 |
54 #define ADCW _SFR_IO16(0x04)
|
397 |
232 # include <avr/iom3250.h>
|
| 398 |
55 #ifndef __ASSEMBLER__
|
398 |
233 #elif defined (__AVR_ATmega329__)
|
| 399 |
56 #define ADC _SFR_IO16(0x04)
|
399 |
234 # include <avr/iom329.h>
|
| 400 |
57 #endif
|
400 |
235 #elif defined (__AVR_ATmega3290__)
|
| 401 |
58 #define ADCL _SFR_IO8(0x04)
|
401 |
236 # include <avr/iom3290.h>
|
| 402 |
59 #define ADCH _SFR_IO8(0x05)
|
402 |
237 #elif defined (__AVR_ATmega406__)
|
| 403 |
60 #define ADCSR _SFR_IO8(0x06)
|
403 |
238 # include <avr/iom406.h>
|
| 404 |
61 #define ADCSRA _SFR_IO8(0x06) /* Changed in 2486H-AVR-09/02 */
|
404 |
239 #elif defined (__AVR_ATmega16__)
|
| 405 |
62 #define ADMUX _SFR_IO8(0x07)
|
405 |
240 # include <avr/iom16.h>
|
| 406 |
63
|
406 |
241 #elif defined (__AVR_ATmega161__)
|
| 407 |
64 /* analog comparator */
|
407 |
242 # include <avr/iom161.h>
|
| 408 |
65 #define ACSR _SFR_IO8(0x08)
|
408 |
243 #elif defined (__AVR_ATmega162__)
|
| 409 |
66
|
409 |
244 # include <avr/iom162.h>
|
| 410 |
67 /* USART */
|
410 |
245 #elif defined (__AVR_ATmega163__)
|
| 411 |
68 #define UBRRL _SFR_IO8(0x09)
|
411 |
246 # include <avr/iom163.h>
|
| 412 |
69 #define UCSRB _SFR_IO8(0x0A)
|
412 |
247 #elif defined (__AVR_ATmega164P__)
|
| 413 |
70 #define UCSRA _SFR_IO8(0x0B)
|
413 |
248 # include <avr/iom164.h>
|
| 414 |
71 #define UDR _SFR_IO8(0x0C)
|
414 |
249 #elif defined (__AVR_ATmega165__)
|
| 415 |
72
|
415 |
250 # include <avr/iom165.h>
|
| 416 |
73 /* SPI */
|
416 |
251 #elif defined (__AVR_ATmega168__)
|
| 417 |
74 #define SPCR _SFR_IO8(0x0D)
|
417 |
252 # include <avr/iom168.h>
|
| 418 |
75 #define SPSR _SFR_IO8(0x0E)
|
418 |
253 #elif defined (__AVR_ATmega169__)
|
| 419 |
76 #define SPDR _SFR_IO8(0x0F)
|
419 |
254 # include <avr/iom169.h>
|
| 420 |
77
|
420 |
255 #elif defined (__AVR_ATmega8__)
|
| 421 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 8
|
421 |
GAS LISTING /tmp/cckBHomO.s page 8
|
| 422 |
|
422 |
|
| 423 |
|
423 |
|
| 424 |
78 /* Port D */
|
424 |
256 # include <avr/iom8.h>
|
| 425 |
79 #define PIND _SFR_IO8(0x10)
|
425 |
1 /* Copyright (c) 2002, Marek Michalkiewicz
|
| 426 |
80 #define DDRD _SFR_IO8(0x11)
|
426 |
2 All rights reserved.
|
| 427 |
81 #define PORTD _SFR_IO8(0x12)
|
427 |
3
|
| 428 |
82
|
428 |
4 Redistribution and use in source and binary forms, with or without
|
| 429 |
83 /* Port C */
|
429 |
5 modification, are permitted provided that the following conditions are met:
|
| 430 |
84 #define PINC _SFR_IO8(0x13)
|
430 |
6
|
| 431 |
85 #define DDRC _SFR_IO8(0x14)
|
431 |
7 * Redistributions of source code must retain the above copyright
|
| 432 |
86 #define PORTC _SFR_IO8(0x15)
|
432 |
8 notice, this list of conditions and the following disclaimer.
|
| 433 |
87
|
433 |
9
|
| 434 |
88 /* Port B */
|
434 |
10 * Redistributions in binary form must reproduce the above copyright
|
| 435 |
89 #define PINB _SFR_IO8(0x16)
|
435 |
11 notice, this list of conditions and the following disclaimer in
|
| 436 |
90 #define DDRB _SFR_IO8(0x17)
|
436 |
12 the documentation and/or other materials provided with the
|
| 437 |
91 #define PORTB _SFR_IO8(0x18)
|
437 |
13 distribution.
|
| 438 |
92
|
438 |
14
|
| 439 |
93 /* 0x1C..0x1F EEPROM */
|
439 |
15 * Neither the name of the copyright holders nor the names of
|
| 440 |
94
|
440 |
16 contributors may be used to endorse or promote products derived
|
| 441 |
95 #define UCSRC _SFR_IO8(0x20)
|
441 |
17 from this software without specific prior written permission.
|
| 442 |
96 #define UBRRH _SFR_IO8(0x20)
|
442 |
18
|
| 443 |
97
|
443 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| 444 |
98 #define WDTCR _SFR_IO8(0x21)
|
444 |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| 445 |
99 #define ASSR _SFR_IO8(0x22)
|
445 |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| 446 |
100
|
446 |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| 447 |
101 /* Timer 2 */
|
447 |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| 448 |
102 #define OCR2 _SFR_IO8(0x23)
|
448 |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| 449 |
103 #define TCNT2 _SFR_IO8(0x24)
|
449 |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| 450 |
104 #define TCCR2 _SFR_IO8(0x25)
|
450 |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| 451 |
105
|
451 |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| 452 |
106 /* Timer 1 */
|
452 |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| 453 |
107 #define ICR1 _SFR_IO16(0x26)
|
453 |
29 POSSIBILITY OF SUCH DAMAGE. */
|
| 454 |
108 #define ICR1L _SFR_IO8(0x26)
|
454 |
30
|
| 455 |
109 #define ICR1H _SFR_IO8(0x27)
|
455 |
31 /* $Id: iom8.h,v 1.13 2005/10/30 22:11:23 joerg_wunsch Exp $ */
|
| 456 |
110 #define OCR1B _SFR_IO16(0x28)
|
456 |
32
|
| 457 |
111 #define OCR1BL _SFR_IO8(0x28)
|
457 |
33 /* avr/iom8.h - definitions for ATmega8 */
|
| 458 |
112 #define OCR1BH _SFR_IO8(0x29)
|
458 |
34
|
| 459 |
113 #define OCR1A _SFR_IO16(0x2A)
|
459 |
35 #ifndef _AVR_IOM8_H_
|
| 460 |
114 #define OCR1AL _SFR_IO8(0x2A)
|
460 |
36 #define _AVR_IOM8_H_ 1
|
| 461 |
115 #define OCR1AH _SFR_IO8(0x2B)
|
461 |
37
|
| 462 |
116 #define TCNT1 _SFR_IO16(0x2C)
|
462 |
38 /* This file should only be included from <avr/io.h>, never directly. */
|
| 463 |
117 #define TCNT1L _SFR_IO8(0x2C)
|
463 |
39
|
| 464 |
118 #define TCNT1H _SFR_IO8(0x2D)
|
464 |
40 #ifndef _AVR_IO_H_
|
| 465 |
119 #define TCCR1B _SFR_IO8(0x2E)
|
465 |
41 # error "Include <avr/io.h> instead of this file."
|
| 466 |
120 #define TCCR1A _SFR_IO8(0x2F)
|
466 |
42 #endif
|
| 467 |
121
|
467 |
43
|
| 468 |
122 #define SFIOR _SFR_IO8(0x30)
|
468 |
44 #ifndef _AVR_IOXXX_H_
|
| 469 |
123
|
469 |
45 # define _AVR_IOXXX_H_ "iom8.h"
|
| 470 |
124 #define OSCCAL _SFR_IO8(0x31)
|
470 |
46 #else
|
| 471 |
125
|
471 |
47 # error "Attempt to include more than one <avr/ioXXX.h> file."
|
| 472 |
126 /* Timer 0 */
|
472 |
48 #endif
|
| 473 |
127 #define TCNT0 _SFR_IO8(0x32)
|
473 |
49
|
| 474 |
128 #define TCCR0 _SFR_IO8(0x33)
|
474 |
50 /* I/O registers */
|
| 475 |
129
|
475 |
51
|
| 476 |
130 #define MCUCSR _SFR_IO8(0x34)
|
476 |
52 /* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */
|
| 477 |
131 #define MCUCR _SFR_IO8(0x35)
|
477 |
53 #define TWBR _SFR_IO8(0x00)
|
| 478 |
132
|
478 |
54 #define TWSR _SFR_IO8(0x01)
|
| 479 |
133 #define TWCR _SFR_IO8(0x36)
|
479 |
55 #define TWAR _SFR_IO8(0x02)
|
| 480 |
134
|
480 |
56 #define TWDR _SFR_IO8(0x03)
|
| 481 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 9
|
481 |
GAS LISTING /tmp/cckBHomO.s page 9
|
| 482 |
|
482 |
|
| 483 |
|
483 |
|
| 484 |
135 #define SPMCR _SFR_IO8(0x37)
|
484 |
57
|
| 485 |
136
|
485 |
58 /* ADC */
|
| 486 |
137 #define TIFR _SFR_IO8(0x38)
|
486 |
59 #define ADCW _SFR_IO16(0x04)
|
| 487 |
138 #define TIMSK _SFR_IO8(0x39)
|
487 |
60 #ifndef __ASSEMBLER__
|
| 488 |
139
|
488 |
61 #define ADC _SFR_IO16(0x04)
|
| 489 |
140 #define GIFR _SFR_IO8(0x3A)
|
489 |
62 #endif
|
| 490 |
141 #define GIMSK _SFR_IO8(0x3B)
|
490 |
63 #define ADCL _SFR_IO8(0x04)
|
| 491 |
142 #define GICR _SFR_IO8(0x3B) /* Changed in 2486H-AVR-09/02 */
|
491 |
64 #define ADCH _SFR_IO8(0x05)
|
| 492 |
143
|
492 |
65 #define ADCSR _SFR_IO8(0x06)
|
| 493 |
144 /* 0x3C reserved (OCR0?) */
|
493 |
66 #define ADCSRA _SFR_IO8(0x06) /* Changed in 2486H-AVR-09/02 */
|
| 494 |
145
|
494 |
67 #define ADMUX _SFR_IO8(0x07)
|
| 495 |
146 /* 0x3D..0x3E SP */
|
495 |
68
|
| 496 |
147
|
496 |
69 /* analog comparator */
|
| 497 |
148 /* 0x3F SREG */
|
497 |
70 #define ACSR _SFR_IO8(0x08)
|
| 498 |
149
|
498 |
71
|
| 499 |
150 /* Interrupt vectors */
|
499 |
72 /* USART */
|
| 500 |
151
|
500 |
73 #define UBRRL _SFR_IO8(0x09)
|
| 501 |
152 #define SIG_INTERRUPT0 _VECTOR(1)
|
501 |
74 #define UCSRB _SFR_IO8(0x0A)
|
| 502 |
153 #define SIG_INTERRUPT1 _VECTOR(2)
|
502 |
75 #define UCSRA _SFR_IO8(0x0B)
|
| 503 |
154 #define SIG_OUTPUT_COMPARE2 _VECTOR(3)
|
503 |
76 #define UDR _SFR_IO8(0x0C)
|
| 504 |
155 #define SIG_OVERFLOW2 _VECTOR(4)
|
504 |
77
|
| 505 |
156 #define SIG_INPUT_CAPTURE1 _VECTOR(5)
|
505 |
78 /* SPI */
|
| 506 |
157 #define SIG_OUTPUT_COMPARE1A _VECTOR(6)
|
506 |
79 #define SPCR _SFR_IO8(0x0D)
|
| 507 |
158 #define SIG_OUTPUT_COMPARE1B _VECTOR(7)
|
507 |
80 #define SPSR _SFR_IO8(0x0E)
|
| 508 |
159 #define SIG_OVERFLOW1 _VECTOR(8)
|
508 |
81 #define SPDR _SFR_IO8(0x0F)
|
| 509 |
160 #define SIG_OVERFLOW0 _VECTOR(9)
|
509 |
82
|
| 510 |
161 #define SIG_SPI _VECTOR(10)
|
510 |
83 /* Port D */
|
| 511 |
162 #define SIG_UART_RECV _VECTOR(11)
|
511 |
84 #define PIND _SFR_IO8(0x10)
|
| 512 |
163 #define SIG_UART_DATA _VECTOR(12)
|
512 |
85 #define DDRD _SFR_IO8(0x11)
|
| 513 |
164 #define SIG_UART_TRANS _VECTOR(13)
|
513 |
86 #define PORTD _SFR_IO8(0x12)
|
| 514 |
165 #define SIG_ADC _VECTOR(14)
|
514 |
87
|
| 515 |
166 #define SIG_EEPROM_READY _VECTOR(15)
|
515 |
88 /* Port C */
|
| 516 |
167 #define SIG_COMPARATOR _VECTOR(16)
|
516 |
89 #define PINC _SFR_IO8(0x13)
|
| 517 |
168 #define SIG_2WIRE_SERIAL _VECTOR(17)
|
517 |
90 #define DDRC _SFR_IO8(0x14)
|
| 518 |
169 #define SIG_SPM_READY _VECTOR(18)
|
518 |
91 #define PORTC _SFR_IO8(0x15)
|
| 519 |
170
|
519 |
92
|
| 520 |
171 #define _VECTORS_SIZE 38
|
520 |
93 /* Port B */
|
| 521 |
172
|
521 |
94 #define PINB _SFR_IO8(0x16)
|
| 522 |
173 /* Bit numbers */
|
522 |
95 #define DDRB _SFR_IO8(0x17)
|
| 523 |
174
|
523 |
96 #define PORTB _SFR_IO8(0x18)
|
| 524 |
175 /* GIMSK / GICR */
|
524 |
97
|
| 525 |
176 #define INT1 7
|
525 |
98 /* EEPROM Control Register */
|
| 526 |
177 #define INT0 6
|
526 |
99 #define EECR _SFR_IO8(0x1C)
|
| 527 |
178 #define IVSEL 1
|
527 |
100
|
| 528 |
179 #define IVCE 0
|
528 |
101 /* EEPROM Data Register */
|
| 529 |
180
|
529 |
102 #define EEDR _SFR_IO8(0x1D)
|
| 530 |
181 /* GIFR */
|
530 |
103
|
| 531 |
182 #define INTF1 7
|
531 |
104 /* EEPROM Address Register */
|
| 532 |
183 #define INTF0 6
|
532 |
105 #define EEAR _SFR_IO16(0x1E)
|
| 533 |
184
|
533 |
106 #define EEARL _SFR_IO8(0x1E)
|
| 534 |
184 #elif defined (__AVR_ATmega8515__)
|
534 |
107 #define EEARH _SFR_IO8(0x1F)
|
| - |
|
535 |
108
|
| - |
|
536 |
109 #define UCSRC _SFR_IO8(0x20)
|
| - |
|
537 |
110 #define UBRRH _SFR_IO8(0x20)
|
| - |
|
538 |
111
|
| - |
|
539 |
112 #define WDTCR _SFR_IO8(0x21)
|
| - |
|
540 |
113 #define ASSR _SFR_IO8(0x22)
|
| - |
|
541 |
GAS LISTING /tmp/cckBHomO.s page 10
|
| - |
|
542 |
|
| - |
|
543 |
|
| - |
|
544 |
114
|
| - |
|
545 |
115 /* Timer 2 */
|
| - |
|
546 |
116 #define OCR2 _SFR_IO8(0x23)
|
| - |
|
547 |
117 #define TCNT2 _SFR_IO8(0x24)
|
| - |
|
548 |
118 #define TCCR2 _SFR_IO8(0x25)
|
| - |
|
549 |
119
|
| - |
|
550 |
120 /* Timer 1 */
|
| - |
|
551 |
121 #define ICR1 _SFR_IO16(0x26)
|
| - |
|
552 |
122 #define ICR1L _SFR_IO8(0x26)
|
| - |
|
553 |
123 #define ICR1H _SFR_IO8(0x27)
|
| - |
|
554 |
124 #define OCR1B _SFR_IO16(0x28)
|
| - |
|
555 |
125 #define OCR1BL _SFR_IO8(0x28)
|
| - |
|
556 |
126 #define OCR1BH _SFR_IO8(0x29)
|
| - |
|
557 |
127 #define OCR1A _SFR_IO16(0x2A)
|
| - |
|
558 |
128 #define OCR1AL _SFR_IO8(0x2A)
|
| - |
|
559 |
129 #define OCR1AH _SFR_IO8(0x2B)
|
| - |
|
560 |
130 #define TCNT1 _SFR_IO16(0x2C)
|
| - |
|
561 |
131 #define TCNT1L _SFR_IO8(0x2C)
|
| - |
|
562 |
132 #define TCNT1H _SFR_IO8(0x2D)
|
| - |
|
563 |
133 #define TCCR1B _SFR_IO8(0x2E)
|
| - |
|
564 |
134 #define TCCR1A _SFR_IO8(0x2F)
|
| - |
|
565 |
135
|
| - |
|
566 |
136 #define SFIOR _SFR_IO8(0x30)
|
| - |
|
567 |
137
|
| - |
|
568 |
138 #define OSCCAL _SFR_IO8(0x31)
|
| - |
|
569 |
139
|
| - |
|
570 |
140 /* Timer 0 */
|
| - |
|
571 |
141 #define TCNT0 _SFR_IO8(0x32)
|
| - |
|
572 |
142 #define TCCR0 _SFR_IO8(0x33)
|
| - |
|
573 |
143
|
| - |
|
574 |
144 #define MCUCSR _SFR_IO8(0x34)
|
| - |
|
575 |
145 #define MCUCR _SFR_IO8(0x35)
|
| - |
|
576 |
146
|
| - |
|
577 |
147 #define TWCR _SFR_IO8(0x36)
|
| - |
|
578 |
148
|
| - |
|
579 |
149 #define SPMCR _SFR_IO8(0x37)
|
| - |
|
580 |
150
|
| - |
|
581 |
151 #define TIFR _SFR_IO8(0x38)
|
| - |
|
582 |
152 #define TIMSK _SFR_IO8(0x39)
|
| - |
|
583 |
153
|
| - |
|
584 |
154 #define GIFR _SFR_IO8(0x3A)
|
| - |
|
585 |
155 #define GIMSK _SFR_IO8(0x3B)
|
| - |
|
586 |
156 #define GICR _SFR_IO8(0x3B) /* Changed in 2486H-AVR-09/02 */
|
| - |
|
587 |
157
|
| - |
|
588 |
158 /* 0x3C reserved (OCR0?) */
|
| - |
|
589 |
159
|
| - |
|
590 |
160 /* 0x3D..0x3E SP */
|
| - |
|
591 |
161
|
| - |
|
592 |
162 /* 0x3F SREG */
|
| - |
|
593 |
163
|
| - |
|
594 |
164 /* Interrupt vectors */
|
| - |
|
595 |
165
|
| - |
|
596 |
166 /* External Interrupt Request 0 */
|
| - |
|
597 |
167 #define INT0_vect _VECTOR(1)
|
| - |
|
598 |
168 #define SIG_INTERRUPT0 _VECTOR(1)
|
| - |
|
599 |
169
|
| - |
|
600 |
170 /* External Interrupt Request 1 */
|
| - |
|
601 |
GAS LISTING /tmp/cckBHomO.s page 11
|
| - |
|
602 |
|
| - |
|
603 |
|
| - |
|
604 |
171 #define INT1_vect _VECTOR(2)
|
| - |
|
605 |
172 #define SIG_INTERRUPT1 _VECTOR(2)
|
| - |
|
606 |
173
|
| - |
|
607 |
174 /* Timer/Counter2 Compare Match */
|
| - |
|
608 |
175 #define TIMER2_COMP_vect _VECTOR(3)
|
| - |
|
609 |
176 #define SIG_OUTPUT_COMPARE2 _VECTOR(3)
|
| - |
|
610 |
177
|
| - |
|
611 |
178 /* Timer/Counter2 Overflow */
|
| - |
|
612 |
179 #define TIMER2_OVF_vect _VECTOR(4)
|
| - |
|
613 |
180 #define SIG_OVERFLOW2 _VECTOR(4)
|
| - |
|
614 |
181
|
| - |
|
615 |
182 /* Timer/Counter1 Capture Event */
|
| - |
|
616 |
183 #define TIMER1_CAPT_vect _VECTOR(5)
|
| - |
|
617 |
184 #define SIG_INPUT_CAPTURE1 _VECTOR(5)
|
| - |
|
618 |
185
|
| - |
|
619 |
186 /* Timer/Counter1 Compare Match A */
|
| - |
|
620 |
187 #define TIMER1_COMPA_vect _VECTOR(6)
|
| - |
|
621 |
188 #define SIG_OUTPUT_COMPARE1A _VECTOR(6)
|
| - |
|
622 |
189
|
| - |
|
623 |
190 /* Timer/Counter1 Compare Match B */
|
| - |
|
624 |
191 #define TIMER1_COMPB_vect _VECTOR(7)
|
| - |
|
625 |
192 #define SIG_OUTPUT_COMPARE1B _VECTOR(7)
|
| - |
|
626 |
193
|
| - |
|
627 |
194 /* Timer/Counter1 Overflow */
|
| - |
|
628 |
195 #define TIMER1_OVF_vect _VECTOR(8)
|
| - |
|
629 |
196 #define SIG_OVERFLOW1 _VECTOR(8)
|
| - |
|
630 |
197
|
| - |
|
631 |
198 /* Timer/Counter0 Overflow */
|
| - |
|
632 |
199 #define TIMER0_OVF_vect _VECTOR(9)
|
| - |
|
633 |
200 #define SIG_OVERFLOW0 _VECTOR(9)
|
| - |
|
634 |
201
|
| - |
|
635 |
202 /* Serial Transfer Complete */
|
| - |
|
636 |
203 #define SPI_STC_vect _VECTOR(10)
|
| - |
|
637 |
204 #define SIG_SPI _VECTOR(10)
|
| - |
|
638 |
205
|
| - |
|
639 |
206 /* USART, Rx Complete */
|
| - |
|
640 |
207 #define USART_RXC_vect _VECTOR(11)
|
| - |
|
641 |
208 #define SIG_UART_RECV _VECTOR(11)
|
| - |
|
642 |
209
|
| - |
|
643 |
210 /* USART Data Register Empty */
|
| - |
|
644 |
211 #define USART_UDRE_vect _VECTOR(12)
|
| - |
|
645 |
212 #define SIG_UART_DATA _VECTOR(12)
|
| - |
|
646 |
213
|
| - |
|
647 |
214 /* USART, Tx Complete */
|
| - |
|
648 |
215 #define USART_TXC_vect _VECTOR(13)
|
| - |
|
649 |
216 #define SIG_UART_TRANS _VECTOR(13)
|
| - |
|
650 |
217
|
| - |
|
651 |
218 /* ADC Conversion Complete */
|
| - |
|
652 |
219 #define ADC_vect _VECTOR(14)
|
| - |
|
653 |
220 #define SIG_ADC _VECTOR(14)
|
| - |
|
654 |
221
|
| - |
|
655 |
222 /* EEPROM Ready */
|
| - |
|
656 |
223 #define EE_RDY_vect _VECTOR(15)
|
| - |
|
657 |
224 #define SIG_EEPROM_READY _VECTOR(15)
|
| - |
|
658 |
225
|
| - |
|
659 |
226 /* Analog Comparator */
|
| - |
|
660 |
227 #define ANA_COMP_vect _VECTOR(16)
|
| - |
|
661 |
GAS LISTING /tmp/cckBHomO.s page 12
|
| - |
|
662 |
|
| - |
|
663 |
|
| - |
|
664 |
228 #define SIG_COMPARATOR _VECTOR(16)
|
| - |
|
665 |
229
|
| - |
|
666 |
230 /* 2-wire Serial Interface */
|
| - |
|
667 |
231 #define TWI_vect _VECTOR(17)
|
| - |
|
668 |
232 #define SIG_2WIRE_SERIAL _VECTOR(17)
|
| - |
|
669 |
233
|
| - |
|
670 |
234 /* Store Program Memory Ready */
|
| - |
|
671 |
235 #define SPM_RDY_vect _VECTOR(18)
|
| - |
|
672 |
236 #define SIG_SPM_READY _VECTOR(18)
|
| - |
|
673 |
237
|
| - |
|
674 |
238 #define _VECTORS_SIZE 38
|
| - |
|
675 |
239
|
| - |
|
676 |
240 /* Bit numbers */
|
| - |
|
677 |
241
|
| - |
|
678 |
242 /* GIMSK / GICR */
|
| - |
|
679 |
243 #define INT1 7
|
| - |
|
680 |
244 #define INT0 6
|
| - |
|
681 |
245 #define IVSEL 1
|
| - |
|
682 |
246 #define IVCE 0
|
| - |
|
683 |
247
|
| - |
|
684 |
248 /* GIFR */
|
| - |
|
685 |
249 #define INTF1 7
|
| - |
|
686 |
250 #define INTF0 6
|
| - |
|
687 |
251
|
| - |
|
688 |
252 /* TIMSK */
|
| - |
|
689 |
253 #define OCIE2 7
|
| - |
|
690 |
254 #define TOIE2 6
|
| - |
|
691 |
255 #define TICIE1 5
|
| - |
|
692 |
256 #define OCIE1A 4
|
| - |
|
693 |
257 #define OCIE1B 3
|
| - |
|
694 |
257 #elif defined (__AVR_ATmega48__)
|
| - |
|
695 |
258 # include <avr/iom48.h>
|
| - |
|
696 |
259 #elif defined (__AVR_ATmega88__)
|
| - |
|
697 |
260 # include <avr/iom88.h>
|
| - |
|
698 |
261 #elif defined (__AVR_ATmega8515__)
|
| - |
|
699 |
262 # include <avr/iom8515.h>
|
| - |
|
700 |
263 #elif defined (__AVR_ATmega8535__)
|
| - |
|
701 |
264 # include <avr/iom8535.h>
|
| - |
|
702 |
265 #elif defined (__AVR_AT90S8535__)
|
| - |
|
703 |
266 # include <avr/io8535.h>
|
| - |
|
704 |
267 #elif defined (__AVR_AT90C8534__)
|
| - |
|
705 |
268 # include <avr/io8534.h>
|
| - |
|
706 |
269 #elif defined (__AVR_AT90S8515__)
|
| - |
|
707 |
270 # include <avr/io8515.h>
|
| - |
|
708 |
271 #elif defined (__AVR_AT90S4434__)
|
| - |
|
709 |
272 # include <avr/io4434.h>
|
| - |
|
710 |
273 #elif defined (__AVR_AT90S4433__)
|
| - |
|
711 |
274 # include <avr/io4433.h>
|
| - |
|
712 |
275 #elif defined (__AVR_AT90S4414__)
|
| - |
|
713 |
276 # include <avr/io4414.h>
|
| - |
|
714 |
277 #elif defined (__AVR_ATtiny22__)
|
| - |
|
715 |
278 # include <avr/iotn22.h>
|
| - |
|
716 |
279 #elif defined (__AVR_ATtiny26__)
|
| - |
|
717 |
280 # include <avr/iotn26.h>
|
| - |
|
718 |
281 #elif defined (__AVR_AT90S2343__)
|
| - |
|
719 |
282 # include <avr/io2343.h>
|
| - |
|
720 |
283 #elif defined (__AVR_AT90S2333__)
|
| - |
|
721 |
GAS LISTING /tmp/cckBHomO.s page 13
|
| - |
|
722 |
|
| - |
|
723 |
|
| - |
|
724 |
284 # include <avr/io2333.h>
|
| - |
|
725 |
285 #elif defined (__AVR_AT90S2323__)
|
| - |
|
726 |
286 # include <avr/io2323.h>
|
| - |
|
727 |
287 #elif defined (__AVR_AT90S2313__)
|
| - |
|
728 |
288 # include <avr/io2313.h>
|
| - |
|
729 |
289 #elif defined (__AVR_ATtiny2313__)
|
| - |
|
730 |
290 # include <avr/iotn2313.h>
|
| - |
|
731 |
291 #elif defined (__AVR_ATtiny13__)
|
| - |
|
732 |
292 # include <avr/iotn13.h>
|
| - |
|
733 |
293 #elif defined (__AVR_ATtiny25__)
|
| - |
|
734 |
294 # include <avr/iotn25.h>
|
| - |
|
735 |
295 #elif defined (__AVR_ATtiny45__)
|
| - |
|
736 |
296 # include <avr/iotn45.h>
|
| - |
|
737 |
297 #elif defined (__AVR_ATtiny85__)
|
| - |
|
738 |
298 # include <avr/iotn85.h>
|
| - |
|
739 |
299 #elif defined (__AVR_ATtiny24__)
|
| - |
|
740 |
300 # include <avr/iotn24.h>
|
| - |
|
741 |
301 #elif defined (__AVR_ATtiny44__)
|
| - |
|
742 |
302 # include <avr/iotn44.h>
|
| - |
|
743 |
303 #elif defined (__AVR_ATtiny84__)
|
| - |
|
744 |
304 # include <avr/iotn84.h>
|
| - |
|
745 |
305 #elif defined (__AVR_ATtiny261__)
|
| - |
|
746 |
306 # include <avr/iotn261.h>
|
| - |
|
747 |
307 #elif defined (__AVR_ATtiny461__)
|
| - |
|
748 |
308 # include <avr/iotn461.h>
|
| - |
|
749 |
309 #elif defined (__AVR_ATtiny861__)
|
| - |
|
750 |
310 # include <avr/iotn861.h>
|
| - |
|
751 |
311 /* avr1: the following only supported for assembler programs */
|
| - |
|
752 |
312 #elif defined (__AVR_ATtiny28__)
|
| - |
|
753 |
313 # include <avr/iotn28.h>
|
| - |
|
754 |
314 #elif defined (__AVR_AT90S1200__)
|
| - |
|
755 |
315 # include <avr/io1200.h>
|
| - |
|
756 |
316 #elif defined (__AVR_ATtiny15__)
|
| - |
|
757 |
317 # include <avr/iotn15.h>
|
| - |
|
758 |
318 #elif defined (__AVR_ATtiny12__)
|
| - |
|
759 |
319 # include <avr/iotn12.h>
|
| - |
|
760 |
320 #elif defined (__AVR_ATtiny11__)
|
| - |
|
761 |
321 # include <avr/iotn11.h>
|
| - |
|
762 |
322 #else
|
| - |
|
763 |
323 # if !defined(__COMPILING_AVR_LIBC__)
|
| - |
|
764 |
324 # warning "device type not defined"
|
| - |
|
765 |
325 # endif
|
| - |
|
766 |
326 #endif
|
| - |
|
767 |
327
|
| - |
|
768 |
328 #include <avr/portpins.h>
|
| - |
|
769 |
1 /* Copyright (c) 2003 Theodore A. Roth
|
| - |
|
770 |
2 All rights reserved.
|
| - |
|
771 |
3
|
| - |
|
772 |
4 Redistribution and use in source and binary forms, with or without
|
| - |
|
773 |
5 modification, are permitted provided that the following conditions are met:
|
| - |
|
774 |
6
|
| - |
|
775 |
7 * Redistributions of source code must retain the above copyright
|
| - |
|
776 |
8 notice, this list of conditions and the following disclaimer.
|
| - |
|
777 |
9
|
| - |
|
778 |
10 * Redistributions in binary form must reproduce the above copyright
|
| - |
|
779 |
11 notice, this list of conditions and the following disclaimer in
|
| - |
|
780 |
12 the documentation and/or other materials provided with the
|
| - |
|
781 |
GAS LISTING /tmp/cckBHomO.s page 14
|
| - |
|
782 |
|
| - |
|
783 |
|
| - |
|
784 |
13 distribution.
|
| - |
|
785 |
14
|
| - |
|
786 |
15 * Neither the name of the copyright holders nor the names of
|
| - |
|
787 |
16 contributors may be used to endorse or promote products derived
|
| - |
|
788 |
17 from this software without specific prior written permission.
|
| - |
|
789 |
18
|
| - |
|
790 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| - |
|
791 |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - |
|
792 |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| - |
|
793 |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| - |
|
794 |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| - |
|
795 |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| - |
|
796 |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| - |
|
797 |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| - |
|
798 |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| - |
|
799 |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| - |
|
800 |
29 POSSIBILITY OF SUCH DAMAGE. */
|
| - |
|
801 |
30
|
| - |
|
802 |
31 /* $Id: portpins.h,v 1.3.4.1 2006/03/10 16:22:38 aesok Exp $ */
|
| - |
|
803 |
32
|
| - |
|
804 |
33 #ifndef _AVR_PORTPINS_H_
|
| - |
|
805 |
34 #define _AVR_PORTPINS_H_ 1
|
| - |
|
806 |
35
|
| - |
|
807 |
36 /* This file should only be included from <avr/io.h>, never directly. */
|
| - |
|
808 |
37
|
| - |
|
809 |
38 #ifndef _AVR_IO_H_
|
| - |
|
810 |
39 # error "Include <avr/io.h> instead of this file."
|
| - |
|
811 |
40 #endif
|
| - |
|
812 |
41
|
| - |
|
813 |
42 /* Define Generic PORTn, DDn, and PINn values. */
|
| - |
|
814 |
43
|
| - |
|
815 |
44 /* Port Data Register (generic) */
|
| - |
|
816 |
45 #define PORT7 7
|
| - |
|
817 |
46 #define PORT6 6
|
| - |
|
818 |
47 #define PORT5 5
|
| - |
|
819 |
48 #define PORT4 4
|
| - |
|
820 |
49 #define PORT3 3
|
| - |
|
821 |
50 #define PORT2 2
|
| - |
|
822 |
51 #define PORT1 1
|
| - |
|
823 |
52 #define PORT0 0
|
| - |
|
824 |
53
|
| - |
|
825 |
54 /* Port Data Direction Register (generic) */
|
| - |
|
826 |
55 #define DD7 7
|
| - |
|
827 |
56 #define DD6 6
|
| - |
|
828 |
57 #define DD5 5
|
| - |
|
829 |
58 #define DD4 4
|
| - |
|
830 |
59 #define DD3 3
|
| - |
|
831 |
60 #define DD2 2
|
| - |
|
832 |
61 #define DD1 1
|
| - |
|
833 |
62 #define DD0 0
|
| - |
|
834 |
63
|
| - |
|
835 |
64 /* Port Input Pins (generic) */
|
| - |
|
836 |
65 #define PIN7 7
|
| - |
|
837 |
66 #define PIN6 6
|
| - |
|
838 |
67 #define PIN5 5
|
| - |
|
839 |
68 #define PIN4 4
|
| - |
|
840 |
69 #define PIN3 3
|
| - |
|
841 |
GAS LISTING /tmp/cckBHomO.s page 15
|
| - |
|
842 |
|
| - |
|
843 |
|
| - |
|
844 |
70 #define PIN2 2
|
| - |
|
845 |
71 #define PIN1 1
|
| - |
|
846 |
72 #define PIN0 0
|
| - |
|
847 |
73
|
| - |
|
848 |
74 /* Define PORTxn values for all possible port pins. */
|
| - |
|
849 |
75
|
| - |
|
850 |
76 /* PORT A */
|
| - |
|
851 |
77
|
| - |
|
852 |
78 #if defined(PA0)
|
| - |
|
853 |
79 # define PORTA0 PA0
|
| - |
|
854 |
80 #endif
|
| - |
|
855 |
81 #if defined(PA1)
|
| - |
|
856 |
82 # define PORTA1 PA1
|
| - |
|
857 |
83 #endif
|
| - |
|
858 |
84 #if defined(PA2)
|
| - |
|
859 |
85 # define PORTA2 PA2
|
| - |
|
860 |
86 #endif
|
| - |
|
861 |
87 #if defined(PA3)
|
| - |
|
862 |
88 # define PORTA3 PA3
|
| - |
|
863 |
89 #endif
|
| - |
|
864 |
90 #if defined(PA4)
|
| - |
|
865 |
91 # define PORTA4 PA4
|
| - |
|
866 |
92 #endif
|
| - |
|
867 |
93 #if defined(PA5)
|
| - |
|
868 |
94 # define PORTA5 PA5
|
| - |
|
869 |
95 #endif
|
| - |
|
870 |
96 #if defined(PA6)
|
| - |
|
871 |
97 # define PORTA6 PA6
|
| - |
|
872 |
98 #endif
|
| - |
|
873 |
99 #if defined(PA7)
|
| - |
|
874 |
100 # define PORTA7 PA7
|
| - |
|
875 |
101 #endif
|
| - |
|
876 |
102
|
| - |
|
877 |
103 /* PORT B */
|
| - |
|
878 |
104
|
| - |
|
879 |
105 #if defined(PB0)
|
| - |
|
880 |
106 # define PORTB0 PB0
|
| - |
|
881 |
107 #endif
|
| - |
|
882 |
108 #if defined(PB1)
|
| - |
|
883 |
109 # define PORTB1 PB1
|
| - |
|
884 |
110 #endif
|
| - |
|
885 |
111 #if defined(PB2)
|
| - |
|
886 |
112 # define PORTB2 PB2
|
| - |
|
887 |
113 #endif
|
| - |
|
888 |
114 #if defined(PB3)
|
| - |
|
889 |
115 # define PORTB3 PB3
|
| - |
|
890 |
116 #endif
|
| - |
|
891 |
117 #if defined(PB4)
|
| - |
|
892 |
118 # define PORTB4 PB4
|
| - |
|
893 |
119 #endif
|
| - |
|
894 |
120 #if defined(PB5)
|
| - |
|
895 |
121 # define PORTB5 PB5
|
| - |
|
896 |
122 #endif
|
| - |
|
897 |
123 #if defined(PB6)
|
| - |
|
898 |
124 # define PORTB6 PB6
|
| - |
|
899 |
125 #endif
|
| - |
|
900 |
126 #if defined(PB7)
|
| - |
|
901 |
GAS LISTING /tmp/cckBHomO.s page 16
|
| - |
|
902 |
|
| - |
|
903 |
|
| - |
|
904 |
127 # define PORTB7 PB7
|
| - |
|
905 |
128 #endif
|
| - |
|
906 |
129
|
| - |
|
907 |
130 /* PORT C */
|
| - |
|
908 |
131
|
| - |
|
909 |
132 #if defined(PC0)
|
| - |
|
910 |
133 # define PORTC0 PC0
|
| - |
|
911 |
134 #endif
|
| - |
|
912 |
135 #if defined(PC1)
|
| - |
|
913 |
136 # define PORTC1 PC1
|
| - |
|
914 |
137 #endif
|
| - |
|
915 |
138 #if defined(PC2)
|
| - |
|
916 |
139 # define PORTC2 PC2
|
| - |
|
917 |
140 #endif
|
| - |
|
918 |
141 #if defined(PC3)
|
| - |
|
919 |
142 # define PORTC3 PC3
|
| - |
|
920 |
143 #endif
|
| - |
|
921 |
144 #if defined(PC4)
|
| - |
|
922 |
145 # define PORTC4 PC4
|
| - |
|
923 |
146 #endif
|
| - |
|
924 |
147 #if defined(PC5)
|
| - |
|
925 |
148 # define PORTC5 PC5
|
| - |
|
926 |
149 #endif
|
| - |
|
927 |
150 #if defined(PC6)
|
| - |
|
928 |
151 # define PORTC6 PC6
|
| - |
|
929 |
152 #endif
|
| - |
|
930 |
153 #if defined(PC7)
|
| - |
|
931 |
154 # define PORTC7 PC7
|
| - |
|
932 |
155 #endif
|
| - |
|
933 |
156
|
| - |
|
934 |
157 /* PORT D */
|
| - |
|
935 |
158
|
| - |
|
936 |
159 #if defined(PD0)
|
| - |
|
937 |
160 # define PORTD0 PD0
|
| - |
|
938 |
161 #endif
|
| - |
|
939 |
162 #if defined(PD1)
|
| - |
|
940 |
163 # define PORTD1 PD1
|
| - |
|
941 |
164 #endif
|
| - |
|
942 |
165 #if defined(PD2)
|
| - |
|
943 |
166 # define PORTD2 PD2
|
| - |
|
944 |
167 #endif
|
| - |
|
945 |
168 #if defined(PD3)
|
| - |
|
946 |
169 # define PORTD3 PD3
|
| - |
|
947 |
170 #endif
|
| - |
|
948 |
171 #if defined(PD4)
|
| - |
|
949 |
172 # define PORTD4 PD4
|
| - |
|
950 |
173 #endif
|
| - |
|
951 |
174 #if defined(PD5)
|
| - |
|
952 |
175 # define PORTD5 PD5
|
| - |
|
953 |
176 #endif
|
| - |
|
954 |
177 #if defined(PD6)
|
| - |
|
955 |
178 # define PORTD6 PD6
|
| - |
|
956 |
179 #endif
|
| - |
|
957 |
180 #if defined(PD7)
|
| - |
|
958 |
181 # define PORTD7 PD7
|
| - |
|
959 |
182 #endif
|
| - |
|
960 |
183
|
| - |
|
961 |
GAS LISTING /tmp/cckBHomO.s page 17
|
| - |
|
962 |
|
| - |
|
963 |
|
| - |
|
964 |
184 /* PORT E */
|
| - |
|
965 |
185
|
| - |
|
966 |
186 #if defined(PE0)
|
| - |
|
967 |
187 # define PORTE0 PE0
|
| - |
|
968 |
188 #endif
|
| - |
|
969 |
189 #if defined(PE1)
|
| - |
|
970 |
190 # define PORTE1 PE1
|
| - |
|
971 |
191 #endif
|
| - |
|
972 |
192 #if defined(PE2)
|
| - |
|
973 |
193 # define PORTE2 PE2
|
| - |
|
974 |
194 #endif
|
| - |
|
975 |
195 #if defined(PE3)
|
| - |
|
976 |
196 # define PORTE3 PE3
|
| - |
|
977 |
197 #endif
|
| - |
|
978 |
198 #if defined(PE4)
|
| - |
|
979 |
199 # define PORTE4 PE4
|
| - |
|
980 |
200 #endif
|
| - |
|
981 |
201 #if defined(PE5)
|
| - |
|
982 |
202 # define PORTE5 PE5
|
| - |
|
983 |
203 #endif
|
| - |
|
984 |
204 #if defined(PE6)
|
| - |
|
985 |
205 # define PORTE6 PE6
|
| - |
|
986 |
206 #endif
|
| - |
|
987 |
207 #if defined(PE7)
|
| - |
|
988 |
208 # define PORTE7 PE7
|
| - |
|
989 |
209 #endif
|
| - |
|
990 |
210
|
| - |
|
991 |
211 /* PORT F */
|
| - |
|
992 |
212
|
| - |
|
993 |
213 #if defined(PF0)
|
| - |
|
994 |
214 # define PORTF0 PF0
|
| - |
|
995 |
215 #endif
|
| - |
|
996 |
216 #if defined(PF1)
|
| - |
|
997 |
217 # define PORTF1 PF1
|
| - |
|
998 |
218 #endif
|
| - |
|
999 |
219 #if defined(PF2)
|
| - |
|
1000 |
220 # define PORTF2 PF2
|
| - |
|
1001 |
221 #endif
|
| - |
|
1002 |
222 #if defined(PF3)
|
| - |
|
1003 |
223 # define PORTF3 PF3
|
| - |
|
1004 |
224 #endif
|
| - |
|
1005 |
225 #if defined(PF4)
|
| - |
|
1006 |
226 # define PORTF4 PF4
|
| - |
|
1007 |
227 #endif
|
| - |
|
1008 |
228 #if defined(PF5)
|
| - |
|
1009 |
229 # define PORTF5 PF5
|
| - |
|
1010 |
230 #endif
|
| - |
|
1011 |
231 #if defined(PF6)
|
| - |
|
1012 |
232 # define PORTF6 PF6
|
| - |
|
1013 |
233 #endif
|
| - |
|
1014 |
234 #if defined(PF7)
|
| - |
|
1015 |
235 # define PORTF7 PF7
|
| - |
|
1016 |
236 #endif
|
| - |
|
1017 |
237
|
| - |
|
1018 |
238 /* PORT G */
|
| - |
|
1019 |
239
|
| - |
|
1020 |
240 #if defined(PG0)
|
| - |
|
1021 |
GAS LISTING /tmp/cckBHomO.s page 18
|
| - |
|
1022 |
|
| - |
|
1023 |
|
| - |
|
1024 |
241 # define PORTG0 PG0
|
| - |
|
1025 |
242 #endif
|
| - |
|
1026 |
243 #if defined(PG1)
|
| - |
|
1027 |
244 # define PORTG1 PG1
|
| - |
|
1028 |
245 #endif
|
| - |
|
1029 |
246 #if defined(PG2)
|
| - |
|
1030 |
247 # define PORTG2 PG2
|
| - |
|
1031 |
248 #endif
|
| - |
|
1032 |
249 #if defined(PG3)
|
| - |
|
1033 |
250 # define PORTG3 PG3
|
| - |
|
1034 |
251 #endif
|
| - |
|
1035 |
252 #if defined(PG4)
|
| - |
|
1036 |
253 # define PORTG4 PG4
|
| - |
|
1037 |
254 #endif
|
| - |
|
1038 |
255 #if defined(PG5)
|
| - |
|
1039 |
256 # define PORTG5 PG5
|
| - |
|
1040 |
257 #endif
|
| - |
|
1041 |
258 #if defined(PG6)
|
| - |
|
1042 |
259 # define PORTG6 PG6
|
| - |
|
1043 |
260 #endif
|
| - |
|
1044 |
261 #if defined(PG7)
|
| - |
|
1045 |
262 # define PORTG7 PG7
|
| - |
|
1046 |
263 #endif
|
| - |
|
1047 |
264
|
| - |
|
1048 |
265 /* PORT H */
|
| - |
|
1049 |
266
|
| - |
|
1050 |
267 #if defined(PH0)
|
| - |
|
1051 |
268 # define PORTH0 PH0
|
| - |
|
1052 |
269 #endif
|
| - |
|
1053 |
270 #if defined(PH1)
|
| - |
|
1054 |
271 # define PORTH1 PH1
|
| - |
|
1055 |
272 #endif
|
| - |
|
1056 |
273 #if defined(PH2)
|
| - |
|
1057 |
274 # define PORTH2 PH2
|
| - |
|
1058 |
275 #endif
|
| - |
|
1059 |
276 #if defined(PH3)
|
| - |
|
1060 |
277 # define PORTH3 PH3
|
| - |
|
1061 |
278 #endif
|
| - |
|
1062 |
279 #if defined(PH4)
|
| - |
|
1063 |
280 # define PORTH4 PH4
|
| - |
|
1064 |
281 #endif
|
| - |
|
1065 |
282 #if defined(PH5)
|
| - |
|
1066 |
283 # define PORTH5 PH5
|
| - |
|
1067 |
284 #endif
|
| - |
|
1068 |
285 #if defined(PH6)
|
| - |
|
1069 |
286 # define PORTH6 PH6
|
| - |
|
1070 |
287 #endif
|
| - |
|
1071 |
288 #if defined(PH7)
|
| - |
|
1072 |
289 # define PORTH7 PH7
|
| - |
|
1073 |
290 #endif
|
| - |
|
1074 |
291
|
| - |
|
1075 |
292 /* PORT J */
|
| - |
|
1076 |
293
|
| - |
|
1077 |
294 #if defined(PJ0)
|
| - |
|
1078 |
295 # define PORTJ0 PJ0
|
| - |
|
1079 |
296 #endif
|
| - |
|
1080 |
297 #if defined(PJ1)
|
| - |
|
1081 |
GAS LISTING /tmp/cckBHomO.s page 19
|
| - |
|
1082 |
|
| - |
|
1083 |
|
| - |
|
1084 |
298 # define PORTJ1 PJ1
|
| - |
|
1085 |
299 #endif
|
| - |
|
1086 |
300 #if defined(PJ2)
|
| - |
|
1087 |
301 # define PORTJ2 PJ2
|
| - |
|
1088 |
302 #endif
|
| - |
|
1089 |
303 #if defined(PJ3)
|
| - |
|
1090 |
304 # define PORTJ3 PJ3
|
| - |
|
1091 |
305 #endif
|
| - |
|
1092 |
306 #if defined(PJ4)
|
| - |
|
1093 |
307 # define PORTJ4 PJ4
|
| - |
|
1094 |
308 #endif
|
| - |
|
1095 |
309 #if defined(PJ5)
|
| - |
|
1096 |
310 # define PORTJ5 PJ5
|
| - |
|
1097 |
311 #endif
|
| - |
|
1098 |
312 #if defined(PJ6)
|
| - |
|
1099 |
313 # define PORTJ6 PJ6
|
| - |
|
1100 |
314 #endif
|
| - |
|
1101 |
315 #if defined(PJ7)
|
| - |
|
1102 |
316 # define PORTJ7 PJ7
|
| - |
|
1103 |
317 #endif
|
| - |
|
1104 |
318
|
| - |
|
1105 |
319 /* PORT K */
|
| - |
|
1106 |
320
|
| - |
|
1107 |
321 #if defined(PK0)
|
| - |
|
1108 |
322 # define PORTK0 PK0
|
| - |
|
1109 |
323 #endif
|
| - |
|
1110 |
324 #if defined(PK1)
|
| - |
|
1111 |
325 # define PORTK1 PK1
|
| - |
|
1112 |
326 #endif
|
| - |
|
1113 |
327 #if defined(PK2)
|
| - |
|
1114 |
328 # define PORTK2 PK2
|
| - |
|
1115 |
329 #endif
|
| - |
|
1116 |
329
|
| - |
|
1117 |
330 #if __AVR_ARCH__ != 1
|
| - |
|
1118 |
331 # if XRAMEND < 0x100 && !defined(__COMPILING_AVR_LIBC__)
|
| - |
|
1119 |
332 # undef SP
|
| - |
|
1120 |
333 # define SP _SFR_IO8(0x3D)
|
| - |
|
1121 |
334 # undef SPH
|
| - |
|
1122 |
335 # endif
|
| - |
|
1123 |
336 #endif
|
| - |
|
1124 |
337
|
| - |
|
1125 |
338 #include <avr/version.h>
|
| - |
|
1126 |
1 /* Copyright (c) 2005, Joerg Wunsch -*- c -*-
|
| - |
|
1127 |
2 All rights reserved.
|
| - |
|
1128 |
3
|
| - |
|
1129 |
4 Redistribution and use in source and binary forms, with or without
|
| - |
|
1130 |
5 modification, are permitted provided that the following conditions are met:
|
| - |
|
1131 |
6
|
| - |
|
1132 |
7 * Redistributions of source code must retain the above copyright
|
| - |
|
1133 |
8 notice, this list of conditions and the following disclaimer.
|
| - |
|
1134 |
9
|
| - |
|
1135 |
10 * Redistributions in binary form must reproduce the above copyright
|
| - |
|
1136 |
11 notice, this list of conditions and the following disclaimer in
|
| - |
|
1137 |
12 the documentation and/or other materials provided with the
|
| - |
|
1138 |
13 distribution.
|
| - |
|
1139 |
14
|
| - |
|
1140 |
15 * Neither the name of the copyright holders nor the names of
|
| - |
|
1141 |
GAS LISTING /tmp/cckBHomO.s page 20
|
| - |
|
1142 |
|
| - |
|
1143 |
|
| - |
|
1144 |
16 contributors may be used to endorse or promote products derived
|
| - |
|
1145 |
17 from this software without specific prior written permission.
|
| - |
|
1146 |
18
|
| - |
|
1147 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| - |
|
1148 |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - |
|
1149 |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| - |
|
1150 |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| - |
|
1151 |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| - |
|
1152 |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| - |
|
1153 |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| - |
|
1154 |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| - |
|
1155 |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| - |
|
1156 |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| - |
|
1157 |
29 POSSIBILITY OF SUCH DAMAGE. */
|
| - |
|
1158 |
30
|
| - |
|
1159 |
31 /* $Id: version.h.in,v 1.1 2005/09/12 20:18:12 joerg_wunsch Exp $ */
|
| - |
|
1160 |
32
|
| - |
|
1161 |
33 /** \defgroup avr_version <avr/version.h>: avr-libc version macros
|
| - |
|
1162 |
34 \code #include <avr/version.h> \endcode
|
| - |
|
1163 |
35
|
| - |
|
1164 |
36 This header file defines macros that contain version numbers and
|
| - |
|
1165 |
37 strings describing the current version of avr-libc.
|
| - |
|
1166 |
38
|
| - |
|
1167 |
39 The version number itself basically consists of three pieces that
|
| - |
|
1168 |
40 are separated by a dot: the major number, the minor number, and
|
| - |
|
1169 |
41 the revision number. For development versions (which use an odd
|
| - |
|
1170 |
42 minor number), the string representation additionally gets the
|
| - |
|
1171 |
43 date code (YYYYMMDD) appended.
|
| - |
|
1172 |
44
|
| - |
|
1173 |
45 This file will also be included by \c <avr/io.h>. That way,
|
| - |
|
1174 |
46 portable tests can be implemented using \c <avr/io.h> that can be
|
| - |
|
1175 |
47 used in code that wants to remain backwards-compatible to library
|
| - |
|
1176 |
48 versions prior to the date when the library version API had been
|
| - |
|
1177 |
49 added, as referenced but undefined C preprocessor macros
|
| - |
|
1178 |
50 automatically evaluate to 0.
|
| - |
|
1179 |
51 */
|
| - |
|
1180 |
52
|
| - |
|
1181 |
53 #ifndef _AVR_VERSION_H_
|
| - |
|
1182 |
54 #define _AVR_VERSION_H_
|
| - |
|
1183 |
55
|
| - |
|
1184 |
56 /** \ingroup avr_version
|
| - |
|
1185 |
57 String literal representation of the current library version. */
|
| - |
|
1186 |
58 #define __AVR_LIBC_VERSION_STRING__ "1.4.4"
|
| - |
|
1187 |
59
|
| - |
|
1188 |
60 /** \ingroup avr_version
|
| - |
|
1189 |
61 Numerical representation of the current library version.
|
| - |
|
1190 |
62
|
| - |
|
1191 |
63 In the numerical representation, the major number is multiplied by
|
| - |
|
1192 |
64 10000, the minor number by 100, and all three parts are then
|
| - |
|
1193 |
65 added. It is intented to provide a monotonically increasing
|
| - |
|
1194 |
66 numerical value that can easily be used in numerical checks.
|
| - |
|
1195 |
67 */
|
| - |
|
1196 |
68 #define __AVR_LIBC_VERSION__ 10404UL
|
| - |
|
1197 |
69
|
| - |
|
1198 |
70 /** \ingroup avr_version
|
| - |
|
1199 |
71 String literal representation of the release date. */
|
| - |
|
1200 |
72 #define __AVR_LIBC_DATE_STRING__ "20060420"
|
| - |
|
1201 |
GAS LISTING /tmp/cckBHomO.s page 21
|
| - |
|
1202 |
|
| - |
|
1203 |
|
| - |
|
1204 |
73
|
| - |
|
1205 |
74 /** \ingroup avr_version
|
| - |
|
1206 |
75 Numerical representation of the release date. */
|
| - |
|
1207 |
76 #define __AVR_LIBC_DATE_ 20060420UL
|
| - |
|
1208 |
77
|
| - |
|
1209 |
78 /** \ingroup avr_version
|
| - |
|
1210 |
79 Library major version number. */
|
| - |
|
1211 |
80 #define __AVR_LIBC_MAJOR__ 1
|
| - |
|
1212 |
81
|
| - |
|
1213 |
82 /** \ingroup avr_version
|
| - |
|
1214 |
83 Library minor version number. */
|
| - |
|
1215 |
84 #define __AVR_LIBC_MINOR__ 4
|
| - |
|
1216 |
85
|
| - |
|
1217 |
86 /** \ingroup avr_version
|
| - |
|
1218 |
87 Library revision number. */
|
| - |
|
1219 |
88 #define __AVR_LIBC_REVISION__ 4
|
| - |
|
1220 |
89
|
| - |
|
1221 |
90 #endif /* _AVR_VERSION_H_ */
|
| - |
|
1222 |
91 ...
|
| - |
|
1223 |
339
|
| 535 |
54 #include "Events.h"
|
1224 |
54 #include "Events.h"
|
| 536 |
1 #ifndef EVENTS_H
|
1225 |
1 #ifndef EVENTS_H
|
| 537 |
2 #define EVENTS_H
|
1226 |
2 #define EVENTS_H
|
| 538 |
3
|
1227 |
3
|
| 539 |
4 /*
|
1228 |
4 /*
|
| 540 |
5 Copyright (C) 2004 John Orlando
|
1229 |
5 Copyright (C) 2004 John Orlando
|
| 541 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 10
|
- |
|
| 542 |
|
- |
|
| 543 |
|
- |
|
| 544 |
6
|
1230 |
6
|
| 545 |
7 AVRcam: a small real-time image processing engine.
|
1231 |
7 AVRcam: a small real-time image processing engine.
|
| 546 |
8
|
1232 |
8
|
| 547 |
9 This program is free software; you can redistribute it and/or
|
1233 |
9 This program is free software; you can redistribute it and/or
|
| 548 |
10 modify it under the terms of the GNU General Public
|
1234 |
10 modify it under the terms of the GNU General Public
|
| Line 570... |
Line 1256... |
| 570 |
32 Module Auth: John Orlando
|
1256 |
32 Module Auth: John Orlando
|
| 571 |
33
|
1257 |
33
|
| 572 |
34 Description: This file provides the external interface
|
1258 |
34 Description: This file provides the external interface
|
| 573 |
35 to the events that can be published/processed in the
|
1259 |
35 to the events that can be published/processed in the
|
| 574 |
36 system. It is specifically by itself (and nothing
|
1260 |
36 system. It is specifically by itself (and nothing
|
| - |
|
1261 |
GAS LISTING /tmp/cckBHomO.s page 22
|
| - |
|
1262 |
|
| - |
|
1263 |
|
| 575 |
37 else should be defined in here) so that both .c and
|
1264 |
37 else should be defined in here) so that both .c and
|
| 576 |
38 .S (assembly) files can include this file without
|
1265 |
38 .S (assembly) files can include this file without
|
| 577 |
39 a problem.
|
1266 |
39 a problem.
|
| 578 |
40
|
1267 |
40
|
| 579 |
41 Revision History:
|
1268 |
41 Revision History:
|
| Line 596... |
Line 1285... |
| 596 |
57 ; of the system that the line is complete
|
1285 |
57 ; of the system that the line is complete
|
| 597 |
58
|
1286 |
58
|
| 598 |
59 #define HREF_INTERRUPT_ENABLE_MASK 0x80
|
1287 |
59 #define HREF_INTERRUPT_ENABLE_MASK 0x80
|
| 599 |
60 #define HREF_INTERRUPT_DISABLE_MASK 0x7F
|
1288 |
60 #define HREF_INTERRUPT_DISABLE_MASK 0x7F
|
| 600 |
61 #define ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK 0x04
|
1289 |
61 #define ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK 0x04
|
| 601 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 11
|
- |
|
| 602 |
|
- |
|
| 603 |
|
- |
|
| 604 |
62 #define DISABLE_PCLK_TIMER1_OVERFLOW_BITMASK 0xFB
|
1290 |
62 #define DISABLE_PCLK_TIMER1_OVERFLOW_BITMASK 0xFB
|
| 605 |
63 #define G_PORT _SFR_IO_ADDR(PINC)
|
1291 |
63 #define G_PORT _SFR_IO_ADDR(PINC)
|
| 606 |
64 #define RB_PORT _SFR_IO_ADDR(PINB)
|
1292 |
64 #define RB_PORT _SFR_IO_ADDR(PINB)
|
| 607 |
65 #define PIXEL_RUN_START_INITIAL 0x50 ; This value causes our pixel counter (TCNT1)
|
1293 |
65 #define PIXEL_RUN_START_INITIAL 0x50 ; This value causes our pixel counter (TCNT1)
|
| 608 |
66 ; to overflow after 176 (horizontal) pixels
|
1294 |
66 ; to overflow after 176 (horizontal) pixels
|
| Line 630... |
Line 1316... |
| 630 |
88 ; | |--this is sampled
|
1316 |
88 ; | |--this is sampled
|
| 631 |
89 ; |--this is sampled
|
1317 |
89 ; |--this is sampled
|
| 632 |
90
|
1318 |
90
|
| 633 |
91 ; As pixel blocks are sampled, the red, green, and blue values are
|
1319 |
91 ; As pixel blocks are sampled, the red, green, and blue values are
|
| 634 |
92 ; used to index into their respective color maps. The color maps
|
1320 |
92 ; used to index into their respective color maps. The color maps
|
| - |
|
1321 |
GAS LISTING /tmp/cckBHomO.s page 23
|
| - |
|
1322 |
|
| - |
|
1323 |
|
| 635 |
93 ; return values that can be logically ANDed together so that a
|
1324 |
93 ; return values that can be logically ANDed together so that a
|
| 636 |
94 ; particular RGB triplet will result in a single bit being set
|
1325 |
94 ; particular RGB triplet will result in a single bit being set
|
| 637 |
95 ; after the AND operation. This single bit indicates which color
|
1326 |
95 ; after the AND operation. This single bit indicates which color
|
| 638 |
96 ; the RGB triplet represents. It is also possible for no bits to
|
1327 |
96 ; the RGB triplet represents. It is also possible for no bits to
|
| 639 |
97 ; be set after the AND process, indicating that the RGB triplet
|
1328 |
97 ; be set after the AND process, indicating that the RGB triplet
|
| Line 656... |
Line 1345... |
| 656 |
114 ; in to the colorMap look-up code below to make it work.
|
1345 |
114 ; in to the colorMap look-up code below to make it work.
|
| 657 |
115
|
1346 |
115
|
| 658 |
116
|
1347 |
116
|
| 659 |
117 ; These are the registers that will be used throughout this
|
1348 |
117 ; These are the registers that will be used throughout this
|
| 660 |
118 ; module for acquiring each line of pixel data
|
1349 |
118 ; module for acquiring each line of pixel data
|
| 661 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 12
|
- |
|
| 662 |
|
- |
|
| 663 |
|
- |
|
| 664 |
119 pixelCount = 16
|
1350 |
119 pixelCount = 16
|
| 665 |
120 pixelRunStart = 17
|
1351 |
120 pixelRunStart = 17
|
| 666 |
121 lastColor = 18
|
1352 |
121 lastColor = 18
|
| 667 |
122 tmp1 = 19 ; be sure to not use tmp1 and color simultaneously
|
1353 |
122 tmp1 = 19 ; be sure to not use tmp1 and color simultaneously
|
| 668 |
123 tmp2 = 20
|
1354 |
123 tmp2 = 20
|
| Line 690... |
Line 1376... |
| 690 |
145 .global SIG_OVERFLOW1
|
1376 |
145 .global SIG_OVERFLOW1
|
| 691 |
146
|
1377 |
146
|
| 692 |
147 ;*****************************************************************
|
1378 |
147 ;*****************************************************************
|
| 693 |
148 ; Function Name: CamIntAsm_waitForNewTrackingFrame
|
1379 |
148 ; Function Name: CamIntAsm_waitForNewTrackingFrame
|
| 694 |
149 ; Function Description: This function is responsible for
|
1380 |
149 ; Function Description: This function is responsible for
|
| - |
|
1381 |
GAS LISTING /tmp/cckBHomO.s page 24
|
| - |
|
1382 |
|
| - |
|
1383 |
|
| 695 |
150 ; going to sleep until a new frame begins (indicated by
|
1384 |
150 ; going to sleep until a new frame begins (indicated by
|
| 696 |
151 ; VSYNC transitioning from low to high. This will wake
|
1385 |
151 ; VSYNC transitioning from low to high. This will wake
|
| 697 |
152 ; the "VSYNC sleep" up and allow it to continue with
|
1386 |
152 ; the "VSYNC sleep" up and allow it to continue with
|
| 698 |
153 ; the acquireLine function, where the system waits for
|
1387 |
153 ; the acquireLine function, where the system waits for
|
| 699 |
154 ; an "HREF sleep" that we use to synchronize with the
|
1388 |
154 ; an "HREF sleep" that we use to synchronize with the
|
| Line 716... |
Line 1405... |
| 716 |
171:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6
|
1405 |
171:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6
|
| 717 |
172:CamInterfaceAsm.S **** sleep
|
1406 |
172:CamInterfaceAsm.S **** sleep
|
| 718 |
173
|
1407 |
173
|
| 719 |
174 ;*****************************************************************
|
1408 |
174 ;*****************************************************************
|
| 720 |
175 ; REMEMBER...everything from here on out is critically timed to be
|
1409 |
175 ; REMEMBER...everything from here on out is critically timed to be
|
| 721 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 13
|
- |
|
| 722 |
|
- |
|
| 723 |
|
- |
|
| 724 |
176 ; synchronized with the flow of pixel data from the camera...
|
1410 |
176 ; synchronized with the flow of pixel data from the camera...
|
| 725 |
177 ;*****************************************************************
|
1411 |
177 ;*****************************************************************
|
| 726 |
178
|
1412 |
178
|
| 727 |
179 CamIntAsm_acquireTrackingLine:
|
1413 |
179 CamIntAsm_acquireTrackingLine:
|
| 728 |
180:CamInterfaceAsm.S **** brts _cleanUp
|
1414 |
180:CamInterfaceAsm.S **** brts _cleanUp
|
| Line 750... |
Line 1436... |
| 750 |
202:CamInterfaceAsm.S **** in tmp1, _SFR_IO_ADDR(TIMSK) ; enable TIMER1 to start counting
|
1436 |
202:CamInterfaceAsm.S **** in tmp1, _SFR_IO_ADDR(TIMSK) ; enable TIMER1 to start counting
|
| 751 |
203:CamInterfaceAsm.S **** ori tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses and interrupt on
|
1437 |
203:CamInterfaceAsm.S **** ori tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses and interrupt on
|
| 752 |
204:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TIMSK),tmp1 ; overflow
|
1438 |
204:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TIMSK),tmp1 ; overflow
|
| 753 |
205
|
1439 |
205
|
| 754 |
206:CamInterfaceAsm.S **** ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (and
|
1440 |
206:CamInterfaceAsm.S **** ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (and
|
| - |
|
1441 |
GAS LISTING /tmp/cckBHomO.s page 25
|
| - |
|
1442 |
|
| - |
|
1443 |
|
| 755 |
207:CamInterfaceAsm.S **** ldi tmp2,0xFF ; interrupts) after 176 pixels
|
1444 |
207:CamInterfaceAsm.S **** ldi tmp2,0xFF ; interrupts) after 176 pixels
|
| 756 |
208:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TCNT1H),tmp2
|
1445 |
208:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TCNT1H),tmp2
|
| 757 |
209:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TCNT1L),tmp1
|
1446 |
209:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TCNT1L),tmp1
|
| 758 |
210
|
1447 |
210
|
| 759 |
211:CamInterfaceAsm.S **** mov YL,colorMapLow
|
1448 |
211:CamInterfaceAsm.S **** mov YL,colorMapLow
|
| Line 776... |
Line 1465... |
| 776 |
228 ; 14 clock cycles (7 to wakeup from idle sleep, 3 to vector, and 4 to return)
|
1465 |
228 ; 14 clock cycles (7 to wakeup from idle sleep, 3 to vector, and 4 to return)
|
| 777 |
229
|
1466 |
229
|
| 778 |
230 ; Disable the HREF interrupt
|
1467 |
230 ; Disable the HREF interrupt
|
| 779 |
231:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6
|
1468 |
231:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6
|
| 780 |
232:CamInterfaceAsm.S **** in tmp1, _SFR_IO_ADDR(GICR)
|
1469 |
232:CamInterfaceAsm.S **** in tmp1, _SFR_IO_ADDR(GICR)
|
| 781 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 14
|
- |
|
| 782 |
|
- |
|
| 783 |
|
- |
|
| 784 |
233:CamInterfaceAsm.S **** andi tmp1, HREF_INTERRUPT_DISABLE_MASK
|
1470 |
233:CamInterfaceAsm.S **** andi tmp1, HREF_INTERRUPT_DISABLE_MASK
|
| 785 |
234:CamInterfaceAsm.S **** out _SFR_IO_ADDR(GICR), tmp1
|
1471 |
234:CamInterfaceAsm.S **** out _SFR_IO_ADDR(GICR), tmp1
|
| 786 |
235
|
1472 |
235
|
| 787 |
236 ; A couple of NOPs are needed here to sync up the pixel data...the number (2)
|
1473 |
236 ; A couple of NOPs are needed here to sync up the pixel data...the number (2)
|
| 788 |
237 ; of NOPs was determined emperically by trial and error.
|
1474 |
237 ; of NOPs was determined emperically by trial and error.
|
| Line 810... |
Line 1496... |
| 810 |
259
|
1496 |
259
|
| 811 |
260 ; Toggle the debug line to indicate a color change
|
1497 |
260 ; Toggle the debug line to indicate a color change
|
| 812 |
261:CamInterfaceAsm.S **** sbi _SFR_IO_ADDR(PORTD),PD6
|
1498 |
261:CamInterfaceAsm.S **** sbi _SFR_IO_ADDR(PORTD),PD6
|
| 813 |
262:CamInterfaceAsm.S **** nop
|
1499 |
262:CamInterfaceAsm.S **** nop
|
| 814 |
263:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6
|
1500 |
263:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6
|
| - |
|
1501 |
GAS LISTING /tmp/cckBHomO.s page 26
|
| - |
|
1502 |
|
| - |
|
1503 |
|
| 815 |
264
|
1504 |
264
|
| 816 |
265:CamInterfaceAsm.S **** mov tmp2,pixelRunStart ; get the count value of the
|
1505 |
265:CamInterfaceAsm.S **** mov tmp2,pixelRunStart ; get the count value of the
|
| 817 |
266 ; current pixel run
|
1506 |
266 ; current pixel run
|
| 818 |
267:CamInterfaceAsm.S **** in pixelCount,_SFR_IO_ADDR(TCNT1L) ; get the current TCNT1 value
|
1507 |
267:CamInterfaceAsm.S **** in pixelCount,_SFR_IO_ADDR(TCNT1L) ; get the current TCNT1 value
|
| 819 |
268:CamInterfaceAsm.S **** mov pixelRunStart,pixelCount ; reload pixelRunStart for the
|
1508 |
268:CamInterfaceAsm.S **** mov pixelRunStart,pixelCount ; reload pixelRunStart for the
|
| Line 836... |
Line 1525... |
| 836 |
285:CamInterfaceAsm.S **** inc pixelCount ; increment pixelCount since we actually need to account
|
1525 |
285:CamInterfaceAsm.S **** inc pixelCount ; increment pixelCount since we actually need to account
|
| 837 |
286 ; for the overflow of TCNT1
|
1526 |
286 ; for the overflow of TCNT1
|
| 838 |
287
|
1527 |
287
|
| 839 |
288:CamInterfaceAsm.S **** st X+,color ; record the color run in the current line buffer
|
1528 |
288:CamInterfaceAsm.S **** st X+,color ; record the color run in the current line buffer
|
| 840 |
289:CamInterfaceAsm.S **** st X,pixelCount
|
1529 |
289:CamInterfaceAsm.S **** st X,pixelCount
|
| 841 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 15
|
- |
|
| 842 |
|
- |
|
| 843 |
|
- |
|
| 844 |
290:CamInterfaceAsm.S **** rjmp _cleanUp
|
1530 |
290:CamInterfaceAsm.S **** rjmp _cleanUp
|
| 845 |
291
|
1531 |
291
|
| 846 |
292 _cleanUpDumpLine:
|
1532 |
292 _cleanUpDumpLine:
|
| 847 |
293 ; NOTE: If serial data is received, to interrupt the tracking of a line, we'll
|
1533 |
293 ; NOTE: If serial data is received, to interrupt the tracking of a line, we'll
|
| 848 |
294 ; get a EV_SERIAL_DATA_RECEIVED event, and the T bit set so we will end the
|
1534 |
294 ; get a EV_SERIAL_DATA_RECEIVED event, and the T bit set so we will end the
|
| Line 870... |
Line 1556... |
| 870 |
316 _exit:
|
1556 |
316 _exit:
|
| 871 |
317:CamInterfaceAsm.S **** ret
|
1557 |
317:CamInterfaceAsm.S **** ret
|
| 872 |
318
|
1558 |
318
|
| 873 |
319 ;*****************************************************************
|
1559 |
319 ;*****************************************************************
|
| 874 |
320 ; Function Name: CamIntAsm_waitForNewDumpFrame
|
1560 |
320 ; Function Name: CamIntAsm_waitForNewDumpFrame
|
| - |
|
1561 |
GAS LISTING /tmp/cckBHomO.s page 27
|
| - |
|
1562 |
|
| - |
|
1563 |
|
| 875 |
321 ; Function Description: This function is responsible for
|
1564 |
321 ; Function Description: This function is responsible for
|
| 876 |
322 ; going to sleep until a new frame begins (indicated by
|
1565 |
322 ; going to sleep until a new frame begins (indicated by
|
| 877 |
323 ; VSYNC transitioning from low to high. This will wake
|
1566 |
323 ; VSYNC transitioning from low to high. This will wake
|
| 878 |
324 ; the "VSYNC sleep" up and allow it to continue with
|
1567 |
324 ; the "VSYNC sleep" up and allow it to continue with
|
| 879 |
325 ; acquiring a line of pixel data to dump out to the UI.
|
1568 |
325 ; acquiring a line of pixel data to dump out to the UI.
|
| Line 896... |
Line 1585... |
| 896 |
342 ; synchronized with the flow of pixel data from the camera...
|
1585 |
342 ; synchronized with the flow of pixel data from the camera...
|
| 897 |
343 ;*****************************************************************
|
1586 |
343 ;*****************************************************************
|
| 898 |
344
|
1587 |
344
|
| 899 |
345 CamIntAsm_acquireDumpLine:
|
1588 |
345 CamIntAsm_acquireDumpLine:
|
| 900 |
346:CamInterfaceAsm.S **** brts _cleanUp
|
1589 |
346:CamInterfaceAsm.S **** brts _cleanUp
|
| 901 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 16
|
- |
|
| 902 |
|
- |
|
| 903 |
|
- |
|
| 904 |
347 ;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...
|
1590 |
347 ;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...
|
| 905 |
348 ;cbi _SFR_IO_ADDR(PORTD),PD6
|
1591 |
348 ;cbi _SFR_IO_ADDR(PORTD),PD6
|
| 906 |
349
|
1592 |
349
|
| 907 |
350:CamInterfaceAsm.S **** mov XH,currLineBuffHigh ; Load the pointer to the current line
|
1593 |
350:CamInterfaceAsm.S **** mov XH,currLineBuffHigh ; Load the pointer to the current line
|
| 908 |
351:CamInterfaceAsm.S **** mov XL,currLineBuffLow ; buffer into the X pointer regs
|
1594 |
351:CamInterfaceAsm.S **** mov XL,currLineBuffLow ; buffer into the X pointer regs
|
| Line 930... |
Line 1616... |
| 930 |
373:CamInterfaceAsm.S **** ori tmp1, HREF_INTERRUPT_ENABLE_MASK
|
1616 |
373:CamInterfaceAsm.S **** ori tmp1, HREF_INTERRUPT_ENABLE_MASK
|
| 931 |
374:CamInterfaceAsm.S **** out _SFR_IO_ADDR(GICR), tmp1
|
1617 |
374:CamInterfaceAsm.S **** out _SFR_IO_ADDR(GICR), tmp1
|
| 932 |
375
|
1618 |
375
|
| 933 |
376 ;*******************************************************************************************
|
1619 |
376 ;*******************************************************************************************
|
| 934 |
377 ; Dump Frame handler
|
1620 |
377 ; Dump Frame handler
|
| - |
|
1621 |
GAS LISTING /tmp/cckBHomO.s page 28
|
| - |
|
1622 |
|
| - |
|
1623 |
|
| 935 |
378 ;*******************************************************************************************
|
1624 |
378 ;*******************************************************************************************
|
| 936 |
379
|
1625 |
379
|
| 937 |
380 _dumpFrame:
|
1626 |
380 _dumpFrame:
|
| 938 |
381:CamInterfaceAsm.S **** sbi _SFR_IO_ADDR(PORTD),PD6
|
1627 |
381:CamInterfaceAsm.S **** sbi _SFR_IO_ADDR(PORTD),PD6
|
| 939 |
382:CamInterfaceAsm.S **** sleep ; ...And we wait...
|
1628 |
382:CamInterfaceAsm.S **** sleep ; ...And we wait...
|
| Line 956... |
Line 1645... |
| 956 |
399 ; do that here (only 8 instruction cycles :-) )
|
1645 |
399 ; do that here (only 8 instruction cycles :-) )
|
| 957 |
400 _sampleDumpPixel:
|
1646 |
400 _sampleDumpPixel:
|
| 958 |
401:CamInterfaceAsm.S **** in tmp1,G_PORT ; sample the G value (1)
|
1647 |
401:CamInterfaceAsm.S **** in tmp1,G_PORT ; sample the G value (1)
|
| 959 |
402:CamInterfaceAsm.S **** in tmp2,RB_PORT ; sample the R/B value (1)
|
1648 |
402:CamInterfaceAsm.S **** in tmp2,RB_PORT ; sample the R/B value (1)
|
| 960 |
403:CamInterfaceAsm.S **** st X+,tmp1 ; store to the currLineBuff and inc ptrs(2)
|
1649 |
403:CamInterfaceAsm.S **** st X+,tmp1 ; store to the currLineBuff and inc ptrs(2)
|
| 961 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 17
|
- |
|
| 962 |
|
- |
|
| 963 |
|
- |
|
| 964 |
404:CamInterfaceAsm.S **** st Y+,tmp2 ; store to the prevLineBuff and inc ptrs(2)
|
1650 |
404:CamInterfaceAsm.S **** st Y+,tmp2 ; store to the prevLineBuff and inc ptrs(2)
|
| 965 |
405:CamInterfaceAsm.S **** brtc _sampleDumpPixel ; loop back unless flag is set (2...if not set)
|
1651 |
405:CamInterfaceAsm.S **** brtc _sampleDumpPixel ; loop back unless flag is set (2...if not set)
|
| 966 |
406 ; ___________
|
1652 |
406 ; ___________
|
| 967 |
407 ; 8 cycles normally
|
1653 |
407 ; 8 cycles normally
|
| 968 |
408
|
1654 |
408
|
| Line 990... |
Line 1676... |
| 990 |
430 ; for handling a falling edge on the Ext Interrupt 1. This
|
1676 |
430 ; for handling a falling edge on the Ext Interrupt 1. This
|
| 991 |
431 ; routine simply returns, since we just want to wake up
|
1677 |
431 ; routine simply returns, since we just want to wake up
|
| 992 |
432 ; whenever the HREF transitions (meaning the pixels
|
1678 |
432 ; whenever the HREF transitions (meaning the pixels
|
| 993 |
433 ; are starting after VSYNC transitioned, and we need to
|
1679 |
433 ; are starting after VSYNC transitioned, and we need to
|
| 994 |
434 ; start acquiring the pixel blocks
|
1680 |
434 ; start acquiring the pixel blocks
|
| - |
|
1681 |
GAS LISTING /tmp/cckBHomO.s page 29
|
| - |
|
1682 |
|
| - |
|
1683 |
|
| 995 |
435 ; Inputs: none
|
1684 |
435 ; Inputs: none
|
| 996 |
436 ; Outputs: none
|
1685 |
436 ; Outputs: none
|
| 997 |
437 ;***********************************************************
|
1686 |
437 ;***********************************************************
|
| 998 |
438 SIG_INTERRUPT1:
|
1687 |
438 SIG_INTERRUPT1:
|
| 999 |
439 ; This will wake us up when HREF transitions high...we just want to return
|
1688 |
439 ; This will wake us up when HREF transitions high...we just want to return
|
| Line 1016... |
Line 1705... |
| 1016 |
456 ;***********************************************************
|
1705 |
456 ;***********************************************************
|
| 1017 |
457 ;SIG_OVERFLOW0:
|
1706 |
457 ;SIG_OVERFLOW0:
|
| 1018 |
458 ; set ; set the T bit in SREG
|
1707 |
458 ; set ; set the T bit in SREG
|
| 1019 |
459 ; lds tmp1,eventBitmask
|
1708 |
459 ; lds tmp1,eventBitmask
|
| 1020 |
460 ; ori tmp1,EV_ACQUIRE_FRAME_COMPLETE
|
1709 |
460 ; ori tmp1,EV_ACQUIRE_FRAME_COMPLETE
|
| 1021 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 18
|
- |
|
| 1022 |
|
- |
|
| 1023 |
|
- |
|
| 1024 |
461 ; sts eventBitmask,tmp1
|
1710 |
461 ; sts eventBitmask,tmp1
|
| 1025 |
462 ; reti
|
1711 |
462 ; reti
|
| 1026 |
463
|
1712 |
463
|
| 1027 |
464 ;***********************************************************
|
1713 |
464 ;***********************************************************
|
| 1028 |
465 ; Function Name: <interrupt handler for Timer1 overflow>
|
1714 |
465 ; Function Name: <interrupt handler for Timer1 overflow>
|
| Line 1049... |
Line 1735... |
| 1049 |
486 .global __vector_default
|
1735 |
486 .global __vector_default
|
| 1050 |
487 __vector_default:
|
1736 |
487 __vector_default:
|
| 1051 |
488:CamInterfaceAsm.S **** reti
|
1737 |
488:CamInterfaceAsm.S **** reti
|
| 1052 |
489
|
1738 |
489
|
| 1053 |
490 .end
|
1739 |
490 .end
|
| 1054 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 19
|
1740 |
GAS LISTING /tmp/cckBHomO.s page 30
|
| 1055 |
|
1741 |
|
| 1056 |
|
1742 |
|
| 1057 |
DEFINED SYMBOLS
|
1743 |
DEFINED SYMBOLS
|
| 1058 |
*ABS*:00000000 CamInterfaceAsm.S
|
- |
|
| 1059 |
*ABS*:00000000 Events.h
|
- |
|
| 1060 |
*ABS*:00000000 CamInterfaceAsm.S
|
- |
|
| 1061 |
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h
|
- |
|
| 1062 |
*ABS*:00000000 C:/WinAVR/avr/include/avr/iom8.h
|
- |
|
| 1063 |
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h
|
- |
|
| 1064 |
*ABS*:00000000 C:/WinAVR/avr/include/avr/sfr_defs.h
|
- |
|
| 1065 |
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h
|
- |
|
| 1066 |
*ABS*:00000000 CamInterfaceAsm.S
|
- |
|
| 1067 |
*ABS*:00000000 <command line>
|
- |
|
| 1068 |
*ABS*:00000000 <built-in>
|
- |
|
| 1069 |
*ABS*:00000000 CamInterfaceAsm.S
|
1744 |
*ABS*:00000000 CamInterfaceAsm.S
|
| 1070 |
*ABS*:00000010 pixelCount
|
1745 |
CamInterfaceAsm.S:119 *ABS*:00000010 pixelCount
|
| 1071 |
*ABS*:00000011 pixelRunStart
|
1746 |
CamInterfaceAsm.S:120 *ABS*:00000011 pixelRunStart
|
| 1072 |
*ABS*:00000012 lastColor
|
1747 |
CamInterfaceAsm.S:121 *ABS*:00000012 lastColor
|
| 1073 |
*ABS*:00000013 tmp1
|
1748 |
CamInterfaceAsm.S:122 *ABS*:00000013 tmp1
|
| 1074 |
*ABS*:00000014 tmp2
|
1749 |
CamInterfaceAsm.S:123 *ABS*:00000014 tmp2
|
| 1075 |
*ABS*:00000013 color
|
1750 |
CamInterfaceAsm.S:124 *ABS*:00000013 color
|
| 1076 |
*ABS*:00000014 greenData
|
1751 |
CamInterfaceAsm.S:125 *ABS*:00000014 greenData
|
| 1077 |
*ABS*:00000015 blueData
|
1752 |
CamInterfaceAsm.S:126 *ABS*:00000015 blueData
|
| 1078 |
*ABS*:00000016 colorMapLow
|
1753 |
CamInterfaceAsm.S:127 *ABS*:00000016 colorMapLow
|
| 1079 |
*ABS*:00000017 colorMapHigh
|
1754 |
CamInterfaceAsm.S:128 *ABS*:00000017 colorMapHigh
|
| 1080 |
*ABS*:00000016 prevLineBuffLow
|
1755 |
CamInterfaceAsm.S:129 *ABS*:00000016 prevLineBuffLow
|
| 1081 |
*ABS*:00000017 prevLineBuffHigh
|
1756 |
CamInterfaceAsm.S:130 *ABS*:00000017 prevLineBuffHigh
|
| 1082 |
*ABS*:00000018 currLineBuffLow
|
1757 |
CamInterfaceAsm.S:131 *ABS*:00000018 currLineBuffLow
|
| 1083 |
*ABS*:00000019 currLineBuffHigh
|
1758 |
CamInterfaceAsm.S:132 *ABS*:00000019 currLineBuffHigh
|
| 1084 |
CamInterfaceAsm.S:169 .text:00000000 CamIntAsm_waitForNewTrackingFrame
|
1759 |
CamInterfaceAsm.S:169 .text:00000000 CamIntAsm_waitForNewTrackingFrame
|
| 1085 |
CamInterfaceAsm.S:335 .text:0000008e CamIntAsm_waitForNewDumpFrame
|
1760 |
CamInterfaceAsm.S:335 .text:0000008e CamIntAsm_waitForNewDumpFrame
|
| 1086 |
CamInterfaceAsm.S:345 .text:00000094 CamIntAsm_acquireDumpLine
|
1761 |
CamInterfaceAsm.S:345 .text:00000094 CamIntAsm_acquireDumpLine
|
| 1087 |
CamInterfaceAsm.S:179 .text:00000006 CamIntAsm_acquireTrackingLine
|
1762 |
CamInterfaceAsm.S:179 .text:00000006 CamIntAsm_acquireTrackingLine
|
| 1088 |
CamInterfaceAsm.S:423 .text:000000d4 __vector_1
|
1763 |
CamInterfaceAsm.S:423 .text:000000d4 __vector_1
|
| 1089 |
CamInterfaceAsm.S:438 .text:000000d6 __vector_2
|
1764 |
CamInterfaceAsm.S:438 .text:000000d6 __vector_2
|
| 1090 |
CamInterfaceAsm.S:474 .text:000000d8 __vector_8
|
1765 |
CamInterfaceAsm.S:474 .text:000000d8 __vector_8
|
| 1091 |
CamInterfaceAsm.S:305 .text:00000080 _cleanUp
|
1766 |
CamInterfaceAsm.S:305 .text:00000080 _cleanUp
|
| 1092 |
CamInterfaceAsm.S:223 .text:00000034 _trackFrame
|
1767 |
CamInterfaceAsm.S:223 .text:00000034 _trackFrame
|
| 1093 |
CamInterfaceAsm.S:240 .text:00000044 _acquirePixelBlock
|
1768 |
CamInterfaceAsm.S:240 .text:00000044 _acquirePixelBlock
|
| 1094 |
CamInterfaceAsm.S:281 .text:00000074 _cleanUpTrackingLine
|
1769 |
CamInterfaceAsm.S:281 .text:00000074 _cleanUpTrackingLine
|
| 1095 |
CamInterfaceAsm.S:292 .text:00000080 _cleanUpDumpLine
|
1770 |
CamInterfaceAsm.S:292 .text:00000080 _cleanUpDumpLine
|
| 1096 |
CamInterfaceAsm.S:316 .text:0000008c _exit
|
1771 |
CamInterfaceAsm.S:316 .text:0000008c _exit
|
| 1097 |
CamInterfaceAsm.S:380 .text:000000ba _dumpFrame
|
1772 |
CamInterfaceAsm.S:380 .text:000000ba _dumpFrame
|
| 1098 |
CamInterfaceAsm.S:400 .text:000000c8 _sampleDumpPixel
|
1773 |
CamInterfaceAsm.S:400 .text:000000c8 _sampleDumpPixel
|
| 1099 |
CamInterfaceAsm.S:487 .text:000000e6 __vector_default
|
1774 |
CamInterfaceAsm.S:487 .text:000000e6 __vector_default
|
| 1100 |
|
1775 |
|
| 1101 |
UNDEFINED SYMBOLS
|
1776 |
UNDEFINED SYMBOLS
|
| 1102 |
__vector_9
|
1777 |
__vector_9
|
| 1103 |
fastEventBitmask
|
1778 |
fastEventBitmask
|