📄 extflash.lst
字号:
1 .file "extflash.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
118 .global extflash_ini
120 extflash_ini:
1:extflash.c **** //----------------------------------------------------//
2:extflash.c **** //-------Institute Of Computing Technology-----------//
3:extflash.c **** //------------Chinese Academic Science---------------//
4:extflash.c **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
5:extflash.c **** //----------------------------------------------------//
6:extflash.c ****
7:extflash.c **** /**
8:extflash.c **** * @copyright:nbicc_lpp
9:extflash.c **** * @this is this is extflash support code
10:extflash.c **** * @author
11:extflash.c **** * zhouqiang (zhouhongren@163.com)
12:extflash.c **** *
13:extflash.c **** * @data:2005.12.29
14:extflash.c **** * @version:0.0.1
15:extflash.c **** * @updata:$
16:extflash.c **** *
17:extflash.c **** */
18:extflash.c **** #include "extflash.h"
19:extflash.c **** //--------------------------------
20:extflash.c **** //FLASH_IN--so
21:extflash.c **** //FLASH_OUT--si
22:extflash.c **** //FLASH_CLK--sck
23:extflash.c **** //FLASH_SELECT----cs
24:extflash.c **** //--------------------------------
25:extflash.c ****
26:extflash.c ****
27:extflash.c **** //OS_SET_FLASH_SELECT_PIN();
28:extflash.c **** inline void extflash_ini(void)
29:extflash.c **** {
122 .LM1:
123 /* prologue: frame size=0 */
124 /* prologue end (size=0) */
30:extflash.c **** );
126 .LM2:
127 0000 0E94 0000 call OS_MAKE_FLASH_SELECT_OUTPUT
31:extflash.c **** OS_MAKE_FLASH_OUT_OUTPUT();
129 .LM3:
130 0004 0E94 0000 call OS_MAKE_FLASH_OUT_OUTPUT
32:extflash.c **** OS_MAKE_FLASH_IN_INPUT();
132 .LM4:
133 0008 0E94 0000 call OS_MAKE_FLASH_IN_INPUT
33:extflash.c **** OS_MAKE_FLASH_CLK_OUTPUT();
135 .LM5:
136 000c 0E94 0000 call OS_MAKE_FLASH_CLK_OUTPUT
34:extflash.c ****
35:extflash.c **** OS_SET_FLASH_SELECT_PIN();
138 .LM6:
139 0010 0E94 0000 call OS_SET_FLASH_SELECT_PIN
36:extflash.c **** lash_busy=0;
141 .LM7:
142 0014 1092 0000 sts flash_busy,__zero_reg__
143 /* epilogue: frame size=0 */
144 0018 0895 ret
145 /* epilogue end (size=1) */
146 /* function extflash_ini size 13 (12) */
153 .global Continuous_Array_Read
155 Continuous_Array_Read:
37:extflash.c **** /*another method
38:extflash.c **** //----------------------------
39:extflash.c **** //initial uart1 to syn model
40:extflash.c **** //----------------------------
41:extflash.c ****
42:extflash.c **** UCSR1B = 0x00; //disable while setting baud rate
43:extflash.c **** UCSR1A = 0x03;
44:extflash.c **** UCSR1C = 0x41;
45:extflash.c **** UBRR1L = 0x22; //set baud rate lo
46:extflash.c **** UBRR1H = 0x00; //set baud rate hi
47:extflash.c **** UCSR1B = 0x18;
48:extflash.c **** //115200
49:extflash.c **** //----------------------------
50:extflash.c **** */
51:extflash.c **** }
52:extflash.c **** inline static void sendonebyte(uint8_t byte)
53:extflash.c **** {
54:extflash.c ****
55:extflash.c **** uint8_t tempbyte;
56:extflash.c **** tempbyte=byte;
57:extflash.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
58:extflash.c **** {
59:extflash.c **** for (int i=0;i<8;i++)
60:extflash.c **** {
61:extflash.c ****
62:extflash.c **** OS_CLR_FLASH_CLK_PIN();
63:extflash.c ****
64:extflash.c **** if (tempbyte&0x80)
65:extflash.c **** {
66:extflash.c ****
67:extflash.c **** PORTD|=_BV(PIND3);
68:extflash.c ****
69:extflash.c **** }
70:extflash.c **** else
71:extflash.c **** {
72:extflash.c ****
73:extflash.c **** PORTD&=~_BV(PIND3);
74:extflash.c ****
75:extflash.c **** }
76:extflash.c ****
77:extflash.c **** //printf("\nPD is %02x\n",PORTD);
78:extflash.c **** OS_SET_FLASH_CLK_PIN();
79:extflash.c ****
80:extflash.c ****
81:extflash.c **** tempbyte<<=1;
82:extflash.c **** }
83:extflash.c ****
84:extflash.c **** }
85:extflash.c **** os_atomic_end(_nesc_atomic); }
86:extflash.c **** }
87:extflash.c ****
88:extflash.c **** inline static uint8_t readonebyte(void)
89:extflash.c **** {
90:extflash.c ****
91:extflash.c **** uint8_t tempbyte=0;
92:extflash.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
93:extflash.c **** {
94:extflash.c **** for (int i=0;i<7;i++)
95:extflash.c **** {
96:extflash.c **** OS_CLR_FLASH_CLK_PIN();
97:extflash.c **** OS_SET_FLASH_CLK_PIN();
98:extflash.c **** //printf("\nPD is %02x\n",PIND);
99:extflash.c **** if (PIND&_BV(PIND2))
100:extflash.c **** tempbyte|=0x01;
101:extflash.c **** else
102:extflash.c **** tempbyte&=0xfe;
103:extflash.c **** //OS_CLR_FLASH_CLK_PIN();
104:extflash.c ****
105:extflash.c **** tempbyte<<=1;
106:extflash.c **** }
107:extflash.c **** OS_CLR_FLASH_CLK_PIN();
108:extflash.c **** OS_SET_FLASH_CLK_PIN();
109:extflash.c ****
110:extflash.c ****
111:extflash.c **** //printf("\nPD is %02x\n",PIND);
112:extflash.c **** if (PIND&_BV(PIND2))
113:extflash.c **** tempbyte|=0x01;
114:extflash.c **** else
115:extflash.c **** tempbyte&=0xfe;
116:extflash.c **** //OS_CLR_FLASH_CLK_PIN();
117:extflash.c **** //printf("\ntempbyte is %02x\n",tempbyte);
118:extflash.c **** }
119:extflash.c **** os_atomic_end(_nesc_atomic); }
120:extflash.c **** return tempbyte;
121:extflash.c ****
122:extflash.c ****
123:extflash.c ****
124:extflash.c **** }
125:extflash.c **** void Continuous_Array_Read(uint16_t address,uint16_t page,uint8_t * buffer,uint16_t numbers)
126:extflash.c **** {
157 .LM8:
158 /* prologue: frame size=0 */
159 001a 8F92 push r8
160 001c 9F92 push r9
161 001e AF92 push r10
162 0020 BF92 push r11
163 0022 CF92 push r12
164 0024 DF92 push r13
165 0026 EF92 push r14
166 0028 FF92 push r15
167 002a 0F93 push r16
168 002c 1F93 push r17
169 002e CF93 push r28
170 0030 DF93 push r29
171 /* prologue end (size=12) */
172 0032 EE24 clr r14
173 0034 FF24 clr r15
174 0036 8701 movw r16,r14
175 0038 4A01 movw r8,r20
176 003a 5901 movw r10,r18
127:extflash.c ****
128:extflash.c **** tempnumbers=numbers;
129:extflash.c **** temphead._extflash_head.opcode=Continuou_Array_Read;
130:extflash.c **** temphead._extflash_head.page=page&0x07ff;
131:extflash.c **** temphead._extflash_head.block_byte=address&0x01ff;
132:extflash.c ****
178 .LM9:
179 003c 18E6 ldi r17,lo8(104)
133:extflash.c **** _CLR_FLASH_CLK_PIN();
181 .LM10:
182 003e 9B01 movw r18,r22
183 0040 4427 clr r20
184 0042 5527 clr r21
185 0044 3770 andi r19,hi8(2047)
186 0046 4070 andi r20,hlo8(2047)
187 0048 5070 andi r21,hhi8(2047)
188 004a 722F mov r23,r18
189 004c 770F lsl r23
190 004e 6F2D mov r22,r15
191 0050 6170 andi r22,lo8(1)
192 0052 F62E mov r15,r22
193 0054 F72A or r15,r23
194 0056 722F mov r23,r18
195 0058 771F rol r23
196 005a 7727 clr r23
197 005c 771F rol r23
198 005e 602F mov r22,r16
199 0060 6E7F andi r22,lo8(-2)
200 0062 062F mov r16,r22
201 0064 072B or r16,r23
202 0066 232F mov r18,r19
203 0068 2770 andi r18,lo8(7)
204 006a 220F lsl r18
205 006c 302F mov r19,r16
206 006e 317F andi r19,lo8(-15)
207 0070 032F mov r16,r19
208 0072 022B or r16,r18
134:extflash.c ****
210 .LM11:
211 0074 AA27 clr r26
212 0076 BB27 clr r27
213 0078 9170 andi r25,hi8(511)
214 007a A070 andi r26,hlo8(511)
215 007c B070 andi r27,hhi8(511)
216 007e E82E mov r14,r24
217 0080 9170 andi r25,lo8(1)
218 0082 8F2D mov r24,r15
219 0084 8E7F andi r24,lo8(-2)
220 0086 F82E mov r15,r24
221 0088 F92A or r15,r25
135:extflash.c **** OS_CLR_FLASH_SELECT_PIN();//选通flash
136:extflash.c **** sendonebyte(temphead.v[3]);
137:extflash.c **** sendonebyte(temphead.v[2]);
138:extflash.c **** sendonebyte(temphead.v[1]);
223 .LM12:
224 008a 0E94 0000 call OS_CLR_FLASH_SELECT_PIN
225 .LBB2:
227 .LM13:
228 008e D12E mov r13,r17
229 .LBB3:
230 .LBB4:
232 .LM14:
233 0090 0E94 0000 call os_atomic_start
234 0094 C82E mov r12,r24
235 0096 C7E0 ldi r28,lo8(7)
236 0098 D0E0 ldi r29,hi8(7)
237 .L8:
238 .LBB5:
240 .LM15:
241 009a 0E94 0000 call OS_CLR_FLASH_CLK_PIN
243 .LM16:
244 009e D7FE sbrs r13,7
245 00a0 02C0 rjmp .L6
247 .LM17:
248 00a2 939A sbi 50-0x20,3
249 00a4 01C0 rjmp .L7
250 .L6:
252 .LM18:
253 00a6 9398 cbi 50-0x20,3
254 .L7:
256 .LM19:
257 00a8 0E94 0000 call OS_SET_FLASH_CLK_PIN
259 .LM20:
260 00ac DD0C lsl r13
262 .LM21:
263 00ae 2197 sbiw r28,1
264 00b0 D7FF sbrs r29,7
265 00b2 F3CF rjmp .L8
266 .LBE5:
268 .LM22:
269 00b4 8C2D mov r24,r12
270 00b6 0E94 0000 call os_atomic_end
271 .LBE4:
272 .LBE3:
273 .LBE2:
274 .LBB6:
276 .LM23:
277 00ba D02E mov r13,r16
278 .LBB7:
279 .LBB8:
281 .LM24:
282 00bc 0E94 0000 call os_atomic_start
283 00c0 C82E mov r12,r24
284 00c2 C7E0 ldi r28,lo8(7)
285 00c4 D0E0 ldi r29,hi8(7)
286 .L15:
287 .LBB9:
289 .LM25:
290 00c6 0E94 0000 call OS_CLR_FLASH_CLK_PIN
292 .LM26:
293 00ca D7FE sbrs r13,7
294 00cc 02C0 rjmp .L13
296 .LM27:
297 00ce 939A sbi 50-0x20,3
298 00d0 01C0 rjmp .L14
299 .L13:
301 .LM28:
302 00d2 9398 cbi 50-0x20,3
303 .L14:
305 .LM29:
306 00d4 0E94 0000 call OS_SET_FLASH_CLK_PIN
308 .LM30:
309 00d8 DD0C lsl r13
311 .LM31:
312 00da 2197 sbiw r28,1
313 00dc D7FF sbrs r29,7
314 00de F3CF rjmp .L15
315 .LBE9:
317 .LM32:
318 00e0 8C2D mov r24,r12
319 00e2 0E94 0000 call os_atomic_end
320 .LBE8:
321 .LBE7:
322 .LBE6:
323 .LBB10:
325 .LM33:
326 00e6 DF2C mov r13,r15
327 .LBB11:
328 .LBB12:
330 .LM34:
331 00e8 0E94 0000 call os_atomic_start
332 00ec C82E mov r12,r24
333 00ee C7E0 ldi r28,lo8(7)
334 00f0 D0E0 ldi r29,hi8(7)
335 .L22:
336 .LBB13:
338 .LM35:
339 00f2 0E94 0000 call OS_CLR_FLASH_CLK_PIN
341 .LM36:
342 00f6 D7FE sbrs r13,7
343 00f8 02C0 rjmp .L20
345 .LM37:
346 00fa 939A sbi 50-0x20,3
347 00fc 01C0 rjmp .L21
348 .L20:
350 .LM38:
351 00fe 9398 cbi 50-0x20,3
352 .L21:
354 .LM39:
355 0100 0E94 0000 call OS_SET_FLASH_CLK_PIN
357 .LM40:
358 0104 DD0C lsl r13
360 .LM41:
361 0106 2197 sbiw r28,1
362 0108 D7FF sbrs r29,7
363 010a F3CF rjmp .L22
364 .LBE13:
366 .LM42:
367 010c 8C2D mov r24,r12
368 010e 0E94 0000 call os_atomic_end
369 .LBE12:
370 .LBE11:
371 .LBE10:
372 .LBB14:
373 .LBB15:
375 .LM43:
376 0112 1E2D mov r17,r14
377 .LBB16:
379 .LM44:
380 0114 0E94 0000 call os_atomic_start
381 0118 082F mov r16,r24
382 011a C7E0 ldi r28,lo8(7)
383 011c D0E0 ldi r29,hi8(7)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -