📄 nflash32.lis
字号:
; while(!fRB);
0378 849B sbis 0x10,4
037A FECF rjmp L64
037C .dbline 224
; fCOMMAND = 0x70;//读状态值命令
037C 80E7 ldi R24,112
037E 809300A0 sts 40960,R24
0382 .dbline 225
; i = fDATA;//读状态值
0382 40910080 lds R20,32768
0386 5527 clr R21
0388 .dbline 226
; D12_COMMAND = 0xf2;//清端点缓冲区
0388 82EF ldi R24,242
038A 8093017C sts 31745,R24
038E .dbline 227
; csram;
038E 609301FC sts 0xfc01,R22
0392 .dbline 227
0392 .dbline 228
; fWPc;//写保护
0392 9598 CBI 0x12,5
0394 .dbline 228
0394 .dbline 230
;
; WriteResidueVal = WriteResidueVal - 1;
0394 90910100 lds R25,_WriteResidueVal+1
0398 80910000 lds R24,_WriteResidueVal
039C 0197 sbiw R24,1
039E 90930100 sts _WriteResidueVal+1,R25
03A2 80930000 sts _WriteResidueVal,R24
03A6 .dbline 231
; if(Flash_Write_addl== 255){
03A6 80910400 lds R24,_Flash_Write_addl
03AA 8F3F cpi R24,255
03AC 49F4 brne L67
03AE .dbline 231
03AE .dbline 232
; Flash_Write_addl= 0x00;
03AE 2224 clr R2
03B0 20920400 sts _Flash_Write_addl,R2
03B4 .dbline 233
; Flash_Write_addh++;
03B4 80910500 lds R24,_Flash_Write_addh
03B8 8F5F subi R24,255 ; addi 1
03BA 80930500 sts _Flash_Write_addh,R24
03BE .dbline 234
; }else
03BE 05C0 rjmp L68
03C0 L67:
03C0 .dbline 235
; Flash_Write_addl++;
03C0 80910400 lds R24,_Flash_Write_addl
03C4 8F5F subi R24,255 ; addi 1
03C6 80930400 sts _Flash_Write_addl,R24
03CA L68:
03CA .dbline 236
03CA L58:
03CA .dbline -2
03CA .dbline 237
; }
; }
03CA L57:
03CA 00D0 rcall pop_gset1
03CC .dbline 0 ; func end
03CC 0895 ret
03CE .dbsym r i 20 i
03CE .dbsym r PageBuff 16 pc
03CE .dbfunc s flashCopyBLack _flashCopyBLack fI
; i -> R20
; Destination_addl -> R22
; Destination_addh -> R10
; Source_addl -> R18
; Source_addh -> R16
.even
03CE _flashCopyBLack::
03CE 00D0 rcall push_gset3
03D0 AE80 ldd R10,y+6
03D2 BF80 ldd R11,y+7
03D4 6885 ldd R22,y+8
03D6 7985 ldd R23,y+9
03D8 .dbline -1
03D8 .dbline 264
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:FLASH页拷贝命令
; **函数输入参数及说明:
; Source_addh:源地址高位
; Source_addl:源地址低位
; Destination_addh:目的地址高位
; Destination_addl:目的地址低位
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void flashCopyBLack(unsigned char Source_addh,unsigned char Source_addl,unsigned char Destination_addh,unsigned char Destination_addl)
; {
03D8 .dbline 266
; unsigned char i;
; fWPs;//打开写保护
03D8 959A SBI 0x12,5
03DA .dbline 266
03DA .dbline 267
; fCOMMAND = 0x00;//页拷贝命令
03DA 2224 clr R2
03DC 209200A0 sts 40960,R2
03E0 .dbline 269
; /*源地址*/
; fADD = 0x00;
03E0 20920090 sts 36864,R2
03E4 .dbline 270
; fADD = Source_addl;
03E4 20930090 sts 36864,R18
03E8 .dbline 271
; fADD = Source_addh;
03E8 00930090 sts 36864,R16
03EC .dbline 272
; asm("nop \n nop");
03EC 0000 nop
03EE 0000 nop
03F0 L70:
03F0 .dbline 273
03F0 L71:
03F0 .dbline 273
; while(!fRB);
03F0 849B sbis 0x10,4
03F2 FECF rjmp L70
03F4 .dbline 275
;
; fCOMMAND = 0x8a;//页拷贝命令
03F4 8AE8 ldi R24,138
03F6 809300A0 sts 40960,R24
03FA .dbline 277
; /*目的地址*/
; fADD = 0x00;
03FA 2224 clr R2
03FC 20920090 sts 36864,R2
0400 .dbline 278
; fADD = Destination_addl;
0400 60930090 sts 36864,R22
0404 .dbline 279
; fADD = Destination_addh;
0404 A0920090 sts 36864,R10
0408 .dbline 280
; asm("nop \n nop");
0408 0000 nop
040A 0000 nop
040C L73:
040C .dbline 281
040C L74:
040C .dbline 281
; while(!fRB);
040C 849B sbis 0x10,4
040E FECF rjmp L73
0410 .dbline 283
;
; fCOMMAND = 0x70;//读状态命令
0410 80E7 ldi R24,112
0412 809300A0 sts 40960,R24
0416 .dbline 284
; i = fDATA;//读状态值
0416 40910080 lds R20,32768
041A .dbline 285
; csram;
041A 609301FC sts 0xfc01,R22
041E .dbline 285
041E .dbline 286
; fWPc;//写保护
041E 9598 CBI 0x12,5
0420 .dbline 286
0420 .dbline -2
0420 .dbline 287
; }
0420 L69:
0420 00D0 rcall pop_gset3
0422 .dbline 0 ; func end
0422 0895 ret
0424 .dbsym r i 20 c
0424 .dbsym r Destination_addl 22 c
0424 .dbsym r Destination_addh 10 c
0424 .dbsym r Source_addl 18 c
0424 .dbsym r Source_addh 16 c
0424 .dbfunc s flashReadcmd _flashReadcmd fI
.even
0424 _flashReadcmd::
0424 .dbline -1
0424 .dbline 310
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:读FLASH预处理函数
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void flashReadcmd(void)
; {
0424 .dbline 316
; /****************说明************
; 对于FLASH的读原理为:FLASH的读
; 可以是随机读取,所以这里只要给
; 定读数据的首地址和读写长度
; ********************************/
; Flash_Read_Sec = 0x00;
0424 2224 clr R2
0426 20920A00 sts _Flash_Read_Sec,R2
042A .dbline 317
; Flash_Read_Col = 0x00;
042A 20920B00 sts _Flash_Read_Col,R2
042E .dbline 318
; Flash_Read_addl = XmtBuff.b[20];
042E 20901400 lds R2,_XmtBuff+20
0432 20920C00 sts _Flash_Read_addl,R2
0436 .dbline 319
; Flash_Read_addh = XmtBuff.b[19];
0436 20901300 lds R2,_XmtBuff+19
043A 20920D00 sts _Flash_Read_addh,R2
043E .dbline 320
; ReadResidueVal = (XmtBuff.b[22]<<8) + XmtBuff.b[23];
043E 20901700 lds R2,_XmtBuff+23
0442 3324 clr R3
0444 40901600 lds R4,_XmtBuff+22
0448 5524 clr R5
044A 542C mov R5,R4
044C 4424 clr R4
044E 420C add R4,R2
0450 531C adc R5,R3
0452 242C mov R2,R4
0454 352C mov R3,R5
0456 4424 clr R4
0458 37FC sbrc R3,7
045A 4094 com R4
045C 5524 clr R5
045E 47FC sbrc R4,7
0460 5094 com R5
0462 30920700 sts _ReadResidueVal+1,R3
0466 20920600 sts _ReadResidueVal,R2
046A 50920900 sts _ReadResidueVal+2+1,R5
046E 40920800 sts _ReadResidueVal+2,R4
0472 .dbline 321
; ReadResidueVal = 512 * ReadResidueVal;
0472 89E0 ldi R24,9
0474 90E0 ldi R25,0
0476 8A93 st -y,R24
0478 022D mov R16,R2
047A 132D mov R17,R3
047C 242D mov R18,R4
047E 352D mov R19,R5
0480 00D0 rcall lsl32
0482 10930700 sts _ReadResidueVal+1,R17
0486 00930600 sts _ReadResidueVal,R16
048A 30930900 sts _ReadResidueVal+2+1,R19
048E 20930800 sts _ReadResidueVal+2,R18
0492 .dbline 322
; fCOMMAND = 0xff;
0492 8FEF ldi R24,255
0494 809300A0 sts 40960,R24
0498 .dbline 323
; asm("nop \n nop");
0498 0000 nop
049A 0000 nop
049C L81:
049C .dbline 324
049C L82:
049C .dbline 324
; while(!fRB);
049C 849B sbis 0x10,4
049E FECF rjmp L81
04A0 .dbline -2
04A0 .dbline 325
; }
04A0 L76:
04A0 .dbline 0 ; func end
04A0 0895 ret
04A2 .dbfunc s flashRead _flashRead fI
; temp -> R10
; i -> R10
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -