📄 nflash32.lis
字号:
0238 L39:
0238 .dbline 159
; flashCopyBLack(Sour_two_addh,Sour_two_addl,Dest_two_addh,Dest_two_addl);
; Sour_two_addl ++;
; Dest_two_addl ++;
; }
; for(i=0;i<Erase_Count;i++){
0238 .dbline 160
; flashErase(Erase_addh, Erase_addl);
0238 2D85 ldd R18,y+13
023A 0E2D mov R16,R14
023C 6F92 push R6
023E 7F92 push R7
0240 DFDE rcall _flashErase
0242 7F90 pop R7
0244 6F90 pop R6
0246 .dbline 161
; if(Erase_addl == 224){
0246 8D85 ldd R24,y+13
0248 803E cpi R24,224
024A 21F4 brne L43
024C .dbline 161
024C .dbline 162
; Erase_addl = 0x00;
024C 0024 clr R0
024E 0D86 std y+13,R0
0250 .dbline 163
; Erase_addh ++;
0250 E394 inc R14
0252 .dbline 164
; }else
0252 03C0 rjmp L44
0254 L43:
0254 .dbline 165
; Erase_addl += 0x20;
0254 8D85 ldd R24,y+13
0256 805E subi R24,224 ; addi 32
0258 8D87 std y+13,R24
025A L44:
025A .dbline 166
025A L40:
025A .dbline 159
025A 862D mov R24,R6
025C 972D mov R25,R7
025E 0196 adiw R24,1
0260 682E mov R6,R24
0262 792E mov R7,R25
0264 L42:
0264 .dbline 159
0264 2B80 ldd R2,y+3
0266 3C80 ldd R3,y+4
0268 6214 cp R6,R2
026A 7304 cpc R7,R3
026C 28F3 brlo L39
026E .dbline 167
026E 6624 clr R6
0270 7724 clr R7
0272 16C0 rjmp L48
0274 L45:
0274 .dbline 167
0274 .dbline 168
0274 0B84 ldd R0,y+11
0276 0A94 dec R0
0278 0B86 std y+11,R0
027A .dbline 169
027A 0C84 ldd R0,y+12
027C 0A94 dec R0
027E 0C86 std y+12,R0
0280 .dbline 170
0280 0B84 ldd R0,y+11
0282 0A82 std y+2,R0
0284 0A88 ldd R0,y+18
0286 0882 std y+0,R0
0288 2C85 ldd R18,y+12
028A 0B89 ldd R16,y+19
028C 6F92 push R6
028E 7F92 push R7
0290 9ED0 rcall _flashCopyBLack
0292 7F90 pop R7
0294 6F90 pop R6
0296 .dbline 171
0296 L46:
0296 .dbline 167
0296 862D mov R24,R6
0298 972D mov R25,R7
029A 0196 adiw R24,1
029C 682E mov R6,R24
029E 792E mov R7,R25
02A0 L48:
02A0 .dbline 167
; }
; for(i=0;i<CopyBack_Count;i++){
02A0 0E84 ldd R0,y+14
02A2 1F84 ldd R1,y+15
02A4 6014 cp R6,R0
02A6 7104 cpc R7,R1
02A8 28F3 brlo L45
02AA .dbline 172
02AA 6624 clr R6
02AC 7724 clr R7
02AE 10C0 rjmp L52
02B0 L49:
02B0 .dbline 172
02B0 .dbline 173
02B0 4A95 dec R20
02B2 .dbline 174
02B2 CA94 dec R12
02B4 .dbline 175
02B4 4A83 std y+2,R20
02B6 A882 std y+0,R10
02B8 2C2D mov R18,R12
02BA 062F mov R16,R22
02BC 6F92 push R6
02BE 7F92 push R7
02C0 86D0 rcall _flashCopyBLack
02C2 7F90 pop R7
02C4 6F90 pop R6
02C6 .dbline 176
02C6 L50:
02C6 .dbline 172
02C6 862D mov R24,R6
02C8 972D mov R25,R7
02CA 0196 adiw R24,1
02CC 682E mov R6,R24
02CE 792E mov R7,R25
02D0 L52:
02D0 .dbline 172
; Sour_addl --;
; Dest_addl --;
; flashCopyBLack(Dest_addh,Dest_addl,Sour_addh,Sour_addl);
; }
; for(i=0;i<CopyBack_two_count;i++){
02D0 0888 ldd R0,y+16
02D2 1988 ldd R1,y+17
02D4 6014 cp R6,R0
02D6 7104 cpc R7,R1
02D8 58F3 brlo L49
02DA .dbline 177
; Sour_two_addl --;
; Dest_two_addl --;
; flashCopyBLack(Dest_two_addh,Dest_two_addl,Sour_two_addh,Sour_two_addl);
; }
; Flash_Write_Sec= 0x00;
02DA 2224 clr R2
02DC 20920200 sts _Flash_Write_Sec,R2
02E0 .dbline 178
; Flash_Write_Col= 0x00;
02E0 20920300 sts _Flash_Write_Col,R2
02E4 .dbline 179
; Flash_Write_addl= XmtBuff.b[20];
02E4 20901400 lds R2,_XmtBuff+20
02E8 20920400 sts _Flash_Write_addl,R2
02EC .dbline 180
; Flash_Write_addh= XmtBuff.b[19];
02EC 20901300 lds R2,_XmtBuff+19
02F0 20920500 sts _Flash_Write_addh,R2
02F4 .dbline 181
; WriteResidueVal=(XmtBuff.b[22]<<8)+XmtBuff.b[23];
02F4 20901700 lds R2,_XmtBuff+23
02F8 3324 clr R3
02FA 40901600 lds R4,_XmtBuff+22
02FE 5524 clr R5
0300 542C mov R5,R4
0302 4424 clr R4
0304 420C add R4,R2
0306 531C adc R5,R3
0308 50920100 sts _WriteResidueVal+1,R5
030C 40920000 sts _WriteResidueVal,R4
0310 .dbline -2
0310 .dbline 182
; }
0310 L9:
0310 6496 adiw R28,20
0312 00D0 rcall pop_gset5
0314 .dbline 0 ; func end
0314 0895 ret
0316 .dbsym l Start_add 9 X
0316 .dbsym l End_add 7 X
0316 .dbsym l WritePageNum 5 i
0316 .dbsym l Erase_Count 3 i
0316 .dbsym r Erase_addh 14 c
0316 .dbsym r Dest_two_addh 22 c
0316 .dbsym r Sour_two_addh 10 c
0316 .dbsym l Dest_addh 19 c
0316 .dbsym l Sour_addh 18 c
0316 .dbsym l CopyBack_two_count 16 i
0316 .dbsym l CopyBack_Count 14 i
0316 .dbsym l Erase_addl 13 c
0316 .dbsym r Dest_two_addl 12 c
0316 .dbsym r Sour_two_addl 20 c
0316 .dbsym l Dest_addl 12 c
0316 .dbsym l Sour_addl 11 c
0316 .dbsym r i 6 i
0316 .dbfunc s flashWrite _flashWrite fI
; i -> R20,R21
; PageBuff -> R16,R17
.even
0316 _flashWrite::
0316 00D0 rcall push_gset1
0318 .dbline -1
0318 .dbline 205
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:写FLASH函数
; **函数输入参数及说明:写入数据
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void flashWrite(unsigned char * PageBuff)
; {
0318 .dbline 207
; unsigned int i;
; if(WriteResidueVal > 0)
0318 30900100 lds R3,_WriteResidueVal+1
031C 20900000 lds R2,_WriteResidueVal
0320 2220 tst R2
0322 19F4 brne X0
0324 3320 tst R3
0326 09F4 brne X1
0328 50C0 rjmp L58
032A X1:
032A X0:
032A .dbline 208
; {
032A .dbline 209
; fWPs;//打开写保护
032A 959A SBI 0x12,5
032C .dbline 209
032C .dbline 210
; fCOMMAND = 0x00;//从FRIST部分开始
032C 2224 clr R2
032E 209200A0 sts 40960,R2
0332 .dbline 211
; fCOMMAND = 0x80;//写FLASH命令
0332 80E8 ldi R24,128
0334 809300A0 sts 40960,R24
0338 .dbline 212
; fADD = 0x00;//从0列开始
0338 2224 clr R2
033A 20920090 sts 36864,R2
033E .dbline 213
; fADD = Flash_Write_addl;//页地址低位
033E 20900400 lds R2,_Flash_Write_addl
0342 20920090 sts 36864,R2
0346 .dbline 214
; fADD = Flash_Write_addh;//页地址高位
0346 20900500 lds R2,_Flash_Write_addh
034A 20920090 sts 36864,R2
034E .dbline 216
;
; for(i=0;i<512;i++)
034E 4427 clr R20
0350 5527 clr R21
0352 09C0 rjmp L63
0354 L60:
0354 .dbline 217
0354 .dbline 218
0354 E42F mov R30,R20
0356 F52F mov R31,R21
0358 E00F add R30,R16
035A F11F adc R31,R17
035C 2080 ldd R2,z+0
035E 20920080 sts 32768,R2
0362 .dbline 219
0362 L61:
0362 .dbline 216
0362 4F5F subi R20,255 ; offset = 1
0364 5F4F sbci R21,255
0366 L63:
0366 .dbline 216
0366 4030 cpi R20,0
0368 E2E0 ldi R30,2
036A 5E07 cpc R21,R30
036C 98F3 brlo L60
036E .dbline 221
; {
; fDATA = PageBuff[i];//写数据到FLASH指定页里
; }
;
; fCOMMAND = 0x10;
036E 80E1 ldi R24,16
0370 809300A0 sts 40960,R24
0374 .dbline 222
; asm("nop \n nop");
0374 0000 nop
0376 0000 nop
0378 L64:
0378 .dbline 223
0378 L65:
0378 .dbline 223
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -