www.pudn.com > usbcode.rar > NFlash32.lis


                         .module NFlash32.c 
                         .area data(ram, con, rel) 
 0000                 _WriteResidueVal:: 
 0000                   .blkb 2 
                         .area idata 
 0000 0000              .word 0 
                         .area data(ram, con, rel) 
 0002                   .dbfile G:\source\NFlash32.c 
 0002                   .dbsym s WriteResidueVal _WriteResidueVal i 
 0002                 _Flash_Write_Sec:: 
 0002                   .blkb 1 
                         .area idata 
 0002 00                .byte 0 
                         .area data(ram, con, rel) 
 0003                   .dbfile G:\source\NFlash32.c 
 0003                   .dbsym s Flash_Write_Sec _Flash_Write_Sec c 
 0003                 _Flash_Write_Col:: 
 0003                   .blkb 1 
                         .area idata 
 0003 00                .byte 0 
                         .area data(ram, con, rel) 
 0004                   .dbfile G:\source\NFlash32.c 
 0004                   .dbsym s Flash_Write_Col _Flash_Write_Col c 
 0004                 _Flash_Write_addl:: 
 0004                   .blkb 1 
                         .area idata 
 0004 00                .byte 0 
                         .area data(ram, con, rel) 
 0005                   .dbfile G:\source\NFlash32.c 
 0005                   .dbsym s Flash_Write_addl _Flash_Write_addl c 
 0005                 _Flash_Write_addh:: 
 0005                   .blkb 1 
                         .area idata 
 0005 00                .byte 0 
                         .area data(ram, con, rel) 
 0006                   .dbfile G:\source\NFlash32.c 
 0006                   .dbsym s Flash_Write_addh _Flash_Write_addh c 
 0006                 _ReadResidueVal:: 
 0006                   .blkb 4 
                         .area idata 
 0006 00000000          .word 0,0 
                         .area data(ram, con, rel) 
 000A                   .dbfile G:\source\NFlash32.c 
 000A                   .dbsym s ReadResidueVal _ReadResidueVal l 
 000A                 _Flash_Read_Sec:: 
 000A                   .blkb 1 
                         .area idata 
 000A 00                .byte 0 
                         .area data(ram, con, rel) 
 000B                   .dbfile G:\source\NFlash32.c 
 000B                   .dbsym s Flash_Read_Sec _Flash_Read_Sec c 
 000B                 _Flash_Read_Col:: 
 000B                   .blkb 1 
                         .area idata 
 000B 00                .byte 0 
                         .area data(ram, con, rel) 
 000C                   .dbfile G:\source\NFlash32.c 
 000C                   .dbsym s Flash_Read_Col _Flash_Read_Col c 
 000C                 _Flash_Read_addl:: 
 000C                   .blkb 1 
                         .area idata 
 000C 00                .byte 0 
                         .area data(ram, con, rel) 
 000D                   .dbfile G:\source\NFlash32.c 
 000D                   .dbsym s Flash_Read_addl _Flash_Read_addl c 
 000D                 _Flash_Read_addh:: 
 000D                   .blkb 1 
                         .area idata 
 000D 00                .byte 0 
                         .area data(ram, con, rel) 
 000E                   .dbfile G:\source\NFlash32.c 
 000E                   .dbsym s Flash_Read_addh _Flash_Read_addh c 
                         .area text(rom, con, rel) 
 0000                   .dbfile G:\source\NFlash32.c 
 0000                   .dbfunc s flashErase _flashErase fI 
                       ;              i -> R20 
                       ;           addl -> R22 
                       ;           addh -> R10 
                         .even 
 0000                 _flashErase:: 
 0000 00D0              rcall push_gset3 
 0002 622F              mov R22,R18 
 0004 A02E              mov R10,R16 
 0006 2497              sbiw R28,4 
 0008                   .dbline -1 
 0008                   .dbline 61 
                       ; /*++ 
                       ;  
                       ; Module Name: 
                       ;  
                       ;          NFlash32.c 
                       ;  
                       ; Abstract: 
                       ;  
                       ;          Header file related to D12 module 
                       ;  
                       ; Environment: 
                       ;  
                       ;         ICCAVR 6.29 
                       ;  
                       ; Revision History: 
                       ;  
                       ;         04/23/2004      chenchi   created 
                       ;  
                       ; --*/ 
                       ; /******************************************************************/ 
                       ; #include "io8515v.h" 
                       ; #include "d12.h" 
                       ; #include "scsi.h" 
                       ; #include "nflash32.h" 
                       ;  
                       ; unsigned int WriteResidueVal = 0; 
                       ; unsigned char Flash_Write_Sec = 0x00; 
                       ; unsigned char Flash_Write_Col = 0x00; 
                       ; unsigned char Flash_Write_addl = 0x00; 
                       ; unsigned char Flash_Write_addh = 0x00; 
                       ; unsigned long ReadResidueVal = 0; 
                       ; unsigned char Flash_Read_Sec = 0x00; 
                       ; unsigned char Flash_Read_Col = 0x00; 
                       ; unsigned char Flash_Read_addl = 0x00; 
                       ; unsigned char Flash_Read_addh = 0x00; 
                       ;  
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:块擦除函数 
                       ; **函数输入参数及说明: 
                       ;   addh:高地址 
                       ;   addl:低地址 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量:fCOMMAND,fADD,fWPs,fWPc,fRB 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void flashErase(unsigned char addh,unsigned char addl) 
                       ; { 
 0008                   .dbline 62 
                       ;     unsigned char i=0; 
 0008 4427              clr R20 
 000A                   .dbline 63 
                       ;     fWPs;//打开写保护 
 000A 959A              SBI 0x12,5 
 000C                   .dbline 63 
 000C                   .dbline 64 
                       ;     fCOMMAND = 0x60;//块擦除命令 
 000C 80E6              ldi R24,96 
 000E 809300A0          sts 40960,R24 
 0012                   .dbline 65 
                       ;     fADD = addl;//低地址 
 0012 60930090          sts 36864,R22 
 0016                   .dbline 66 
                       ;     fADD = addh;//高地址 
 0016 A0920090          sts 36864,R10 
 001A                   .dbline 67 
                       ;     fCOMMAND = 0xd0;//处理命令 
 001A 80ED              ldi R24,208 
 001C 809300A0          sts 40960,R24 
 0020                   .dbline 68 
                       ;     asm("nop \n nop"); 
 0020 0000              nop  
 0022 0000               nop 
 0024                 L5: 
 0024                   .dbline 69 
 0024                 L6: 
 0024                   .dbline 69 
                       ;     while(!fRB); 
 0024 849B              sbis 0x10,4 
 0026 FECF              rjmp L5 
 0028                   .dbline 70 
                       ;     fCOMMAND = 0x70;//读状态命令 
 0028 80E7              ldi R24,112 
 002A 809300A0          sts 40960,R24 
 002E                   .dbline 71 
                       ;     i = fDATA;//读状态值 
 002E 40910080          lds R20,32768 
 0032                   .dbline 72 
                       ;     csram; 
 0032 609301FC          sts 0xfc01,R22 
 0036                   .dbline 72 
 0036                   .dbline 73 
                       ;     fWPc;//写保护 
 0036 9598              CBI 0x12,5 
 0038                   .dbline 73 
 0038                   .dbline 74 
                       ;     printf("%x,%x erase is %x",addh,addl,i);//串口打印 
 0038 242E              mov R2,R20 
 003A 3324              clr R3 
 003C 2A82              std y+2,R2 
 003E 3B82              std y+3,R3 
 0040 262E              mov R2,R22 
 0042 3324              clr R3 
 0044 2882              std y+0,R2 
 0046 3982              std y+1,R3 
 0048 2A2D              mov R18,R10 
 004A 3327              clr R19 
 004C 00E0              ldi R16,L8 
 0050 00D0              rcall _printf 
 0052                   .dbline -2 
 0052                   .dbline 75 
                       ; } 
 0052                 L4: 
 0052 2496              adiw R28,4 
 0054 00D0              rcall pop_gset3 
 0056                   .dbline 0 ; func end 
 0056 0895              ret 
 0058                   .dbsym r i 20 c 
 0058                   .dbsym r addl 22 c 
 0058                   .dbsym r addh 10 c 
 0058                   .dbfunc s flashWritecmd _flashWritecmd fI 
                       ;      Start_add -> y+9 
                       ;        End_add -> y+7 
                       ;   WritePageNum -> y+5 
                       ;    Erase_Count -> y+3 
                       ;     Erase_addh -> R14 
                       ;  Dest_two_addh -> R22 
                       ;  Sour_two_addh -> R10 
                       ;      Dest_addh -> y+19 
                       ;      Sour_addh -> y+18 
                       ; CopyBack_two_count -> y+16 
                       ; CopyBack_Count -> y+14 
                       ;     Erase_addl -> y+13 
                       ;  Dest_two_addl -> R12 
                       ;  Sour_two_addl -> R20 
                       ;      Dest_addl -> y+12 
                       ;      Sour_addl -> y+11 
                       ;              i -> R6,R7 
                         .even 
 0058                 _flashWritecmd:: 
 0058 00D0              rcall push_gset5 
 005A 6497              sbiw R28,20 
 005C                   .dbline -1 
 005C                   .dbline 98 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:写FLASH预处理函数 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void flashWritecmd(void) 
                       ; { 
 005C                   .dbline 102 
                       ;     unsigned char Erase_addh,Erase_addl; 
                       ;     unsigned char Sour_addh,Sour_addl,Dest_addh,Dest_addl; 
                       ;     unsigned char Sour_two_addh,Sour_two_addl,Dest_two_addh,Dest_two_addl; 
                       ;     unsigned int Erase_Count = 0,i = 0; 
 005C 2224              clr R2 
 005E 3324              clr R3 
 0060 2B82              std y+3,R2 
 0062 3C82              std y+4,R3 
 0064                   .dbline 102 
 0064 6624              clr R6 
 0066 7724              clr R7 
 0068                   .dbline 103 
                       ;     unsigned int CopyBack_Count = 0; 
 0068 0024              clr R0 
 006A 1124              clr R1 
 006C 0E86              std y+14,R0 
 006E 1F86              std y+15,R1 
 0070                   .dbline 104 
                       ;     unsigned int CopyBack_two_count = 0; 
 0070 088A              std y+16,R0 
 0072 198A              std y+17,R1 
 0074                   .dbline 105 
                       ;     unsigned int WritePageNum = 0; 
 0074 2224              clr R2 
 0076 2D82              std y+5,R2 
 0078 3E82              std y+6,R3 
 007A                   .dbline 124 
                       ;     union{ 
                       ;         unsigned char c[2]; 
                       ;         unsigned int add; 
                       ;     }Start_add; 
                       ;     union{ 
                       ;         unsigned char c[2]; 
                       ;         unsigned int add; 
                       ;     }End_add; 
                       ;     /************说明***************** 
                       ;       对于FLASH的写操作原理是,写之前 
                       ;       必须擦除,FLASH写是按页写,但是擦 
                       ;       除是按块擦除,1块 = 32页,所以在 
                       ;       一块内只有部分页被写入时就需要先 
                       ;       将块内其他页保存,代整块擦除后一起 
                       ;       写入,这里用0XFA,0X00作为头块缓冲, 
                       ;       0XFB,0X00作为最后块缓冲,中间块采 
                       ;       用直接擦除处理 
                       ;     **********************************/ 
                       ;     flashErase(0xfa, 0x00); 
 007A 2227              clr R18 
 007C 0AEF              ldi R16,250 
 007E 6F92              push R6 
 0080 7F92              push R7 
 0082 BEDF              rcall _flashErase 
 0084 7F90              pop R7 
 0086 6F90              pop R6 
 0088                   .dbline 125 
                       ;     Sour_addh = XmtBuff.b[19]; 
 0088 20901300          lds R2,_XmtBuff+19 
 008C 2A8A              std y+18,R2 
 008E                   .dbline 126 
                       ;     Sour_addl = (XmtBuff.b[20]/0x20) * 0x20; 
 008E 10E2              ldi R17,32 
 0090 00911400          lds R16,_XmtBuff+20 
 0094 00D0              rcall div8u 
 0096 202E              mov R2,R16 
 0098 220C              lsl R2 
 009A 220C              lsl R2 
 009C 220C              lsl R2 
 009E 220C              lsl R2 
 00A0 220C              lsl R2 
 00A2 2B86              std y+11,R2 
 00A4                   .dbline 127 
                       ;     Dest_addh = 0xfa; 
 00A4 8AEF              ldi R24,250 
 00A6 8B8B              std y+19,R24 
 00A8                   .dbline 128 
                       ;     Dest_addl = (XmtBuff.b[20]/0x20) * 0x20; 
 00A8 10E2              ldi R17,32 
 00AA 00911400          lds R16,_XmtBuff+20 
 00AE 00D0              rcall div8u 
 00B0 202E              mov R2,R16 
 00B2 220C              lsl R2 
 00B4 220C              lsl R2 
 00B6 220C              lsl R2 
 00B8 220C              lsl R2 
 00BA 220C              lsl R2 
 00BC 2C86              std y+12,R2 
 00BE                   .dbline 129 
                       ;     CopyBack_Count = XmtBuff.b[20]%0x20; 
 00BE 20E2              ldi R18,32 
 00C0 30E0              ldi R19,0 
 00C2 00911400          lds R16,_XmtBuff+20 
 00C6 1127              clr R17 
 00C8 00D0              rcall mod16s 
 00CA 0E87              std y+14,R16 
 00CC 1F87              std y+15,R17 
 00CE                   .dbline 130 
 00CE 6624              clr R6 
 00D0 7724              clr R7 
 00D2 16C0              rjmp L19 
 00D4                 L16: 
 00D4                   .dbline 130 
 00D4                   .dbline 131 
 00D4 0C84              ldd R0,y+12 
 00D6 0A82              std y+2,R0 
 00D8 0B88              ldd R0,y+19 
 00DA 0882              std y+0,R0 
 00DC 2B85              ldd R18,y+11 
 00DE 0A89              ldd R16,y+18 
 00E0 6F92              push R6 
 00E2 7F92              push R7 
 00E4 74D1              rcall _flashCopyBLack 
 00E6 7F90              pop R7 
 00E8 6F90              pop R6 
 00EA                   .dbline 132 
 00EA 0B84              ldd R0,y+11 
 00EC 0394              inc R0 
 00EE 0B86              std y+11,R0 
 00F0                   .dbline 133 
 00F0 0C84              ldd R0,y+12 
 00F2 0394              inc R0 
 00F4 0C86              std y+12,R0 
 00F6                   .dbline 134 
 00F6                 L17: 
 00F6                   .dbline 130 
 00F6 862D              mov R24,R6 
 00F8 972D              mov R25,R7 
 00FA 0196              adiw R24,1 
 00FC 682E              mov R6,R24 
 00FE 792E              mov R7,R25 
 0100                 L19: 
 0100                   .dbline 130 
                       ;     for(i=0;i (0x20 - (XmtBuff.b[20] % 0x20))) 
 0162 20E2              ldi R18,32 
 0164 30E0              ldi R19,0 
 0166 00911400          lds R16,_XmtBuff+20 
 016A 1127              clr R17 
 016C 00D0              rcall mod16s 
 016E 80E2              ldi R24,32 
 0170 90E0              ldi R25,0 
 0172 801B              sub R24,R16 
 0174 910B              sbc R25,R17 
 0176 ED81              ldd R30,y+5 
 0178 FE81              ldd R31,y+6 
 017A EF71              andi R30,31 
 017C F070              andi R31,0 
 017E 8E17              cp R24,R30 
 0180 9F07              cpc R25,R31 
 0182 88F4              brsh L25 
 0184                   .dbline 142 
                       ;             Erase_Count ++; 
 0184 8B81              ldd R24,y+3 
 0186 9C81              ldd R25,y+4 
 0188 0196              adiw R24,1 
 018A 8B83              std y+3,R24 
 018C 9C83              std y+4,R25 
 018E                   .dbline 143 
 018E 0BC0              rjmp L25 
 0190                 L24: 
 0190                   .dbline 143 
                       ;     }else if(XmtBuff.b[20] % 0x20){ 
 0190 10E2              ldi R17,32 
 0192 00911400          lds R16,_XmtBuff+20 
 0196 00D0              rcall mod8u 
 0198 0023              tst R16 
 019A 29F0              breq L29 
 019C                   .dbline 143 
 019C                   .dbline 144 
                       ;         Erase_Count ++; 
 019C 8B81              ldd R24,y+3 
 019E 9C81              ldd R25,y+4 
 01A0 0196              adiw R24,1 
 01A2 8B83              std y+3,R24 
 01A4 9C83              std y+4,R25 
 01A6                   .dbline 145 
                       ;     } 
 01A6                 L29: 
 01A6                 L25: 
 01A6                   .dbline 146 
                       ;     Start_add.add = (XmtBuff.b[19]<<8)+XmtBuff.b[20]; 
 01A6 20901400          lds R2,_XmtBuff+20 
 01AA 3324              clr R3 
 01AC 40901300          lds R4,_XmtBuff+19 
 01B0 5524              clr R5 
 01B2 542C              mov R5,R4 
 01B4 4424              clr R4 
 01B6 420C              add R4,R2 
 01B8 531C              adc R5,R3 
 01BA 4986              std y+9,R4 
 01BC 5A86              std y+10,R5 
 01BE                   .dbline 147 
                       ;     End_add.add = Start_add.add + WritePageNum; 
 01BE 2D80              ldd R2,y+5 
 01C0 3E80              ldd R3,y+6 
 01C2 420C              add R4,R2 
 01C4 531C              adc R5,R3 
 01C6 4F82              std y+7,R4 
 01C8 5886              std y+8,R5 
 01CA                   .dbline 148 
                       ;     flashErase(0xfb, 0x00); 
 01CA 2227              clr R18 
 01CC 0BEF              ldi R16,251 
 01CE 6F92              push R6 
 01D0 7F92              push R7 
 01D2 16DF              rcall _flashErase 
 01D4 7F90              pop R7 
 01D6 6F90              pop R6 
 01D8                   .dbline 149 
                       ;     Sour_two_addh = End_add.c[1]; 
 01D8 A884              ldd R10,y+8 
 01DA                   .dbline 150 
                       ;     Sour_two_addl = End_add.c[0]; 
 01DA 4F81              ldd R20,y+7 
 01DC                   .dbline 151 
                       ;     Dest_two_addh = 0xfb; 
 01DC 6BEF              ldi R22,251 
 01DE                   .dbline 152 
                       ;     Dest_two_addl = End_add.c[0]; 
 01DE CF80              ldd R12,y+7 
 01E0                   .dbline 153 
                       ;     CopyBack_two_count = (Erase_Count * 0x20) - CopyBack_Count -WritePageNum; 
 01E0 25E0              ldi R18,5 
 01E2 30E0              ldi R19,0 
 01E4 0B81              ldd R16,y+3 
 01E6 1C81              ldd R17,y+4 
 01E8 00D0              rcall lsl16 
 01EA 202E              mov R2,R16 
 01EC 312E              mov R3,R17 
 01EE 0E84              ldd R0,y+14 
 01F0 1F84              ldd R1,y+15 
 01F2 2018              sub R2,R0 
 01F4 3108              sbc R3,R1 
 01F6 4D80              ldd R4,y+5 
 01F8 5E80              ldd R5,y+6 
 01FA 2418              sub R2,R4 
 01FC 3508              sbc R3,R5 
 01FE 288A              std y+16,R2 
 0200 398A              std y+17,R3 
 0202                   .dbline 154 
 0202 6624              clr R6 
 0204 7724              clr R7 
 0206 10C0              rjmp L38 
 0208                 L35: 
 0208                   .dbline 154 
 0208                   .dbline 155 
 0208 CA82              std y+2,R12 
 020A 6883              std y+0,R22 
 020C 242F              mov R18,R20 
 020E 0A2D              mov R16,R10 
 0210 6F92              push R6 
 0212 7F92              push R7 
 0214 DCD0              rcall _flashCopyBLack 
 0216 7F90              pop R7 
 0218 6F90              pop R6 
 021A                   .dbline 156 
 021A 4395              inc R20 
 021C                   .dbline 157 
 021C C394              inc R12 
 021E                   .dbline 158 
 021E                 L36: 
 021E                   .dbline 154 
 021E 862D              mov R24,R6 
 0220 972D              mov R25,R7 
 0222 0196              adiw R24,1 
 0224 682E              mov R6,R24 
 0226 792E              mov R7,R25 
 0228                 L38: 
 0228                   .dbline 154 
                       ;     for(i=0;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 
                       ;         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 
 04A2                 _flashRead:: 
 04A2 00D0              rcall push_gset4 
 04A4                   .dbline -1 
 04A4                   .dbline 348 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:读FLASH函数 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void flashRead(void) 
                       ; { 
 04A4                   .dbline 351 
                       ;     unsigned char i; 
                       ;     unsigned char  temp; 
                       ;     if(ReadResidueVal > 0){ 
 04A4 00E0              ldi R16,L87 
 04A8 00D0              rcall lpm32 
 04AA 50900900          lds R5,_ReadResidueVal+2+1 
 04AE 40900800          lds R4,_ReadResidueVal+2 
 04B2 30900700          lds R3,_ReadResidueVal+1 
 04B6 20900600          lds R2,_ReadResidueVal 
 04BA 2016              cp R2,R16 
 04BC 3106              cpc R3,R17 
 04BE 4206              cpc R4,R18 
 04C0 5306              cpc R5,R19 
 04C2 09F4              brne X3 
 04C4 8DC0              rjmp L85 
 04C6                 X3: 
 04C6                   .dbline 351 
 04C6                   .dbline 352 
                       ;         ReadResidueVal -= 64; 
 04C6 00E0              ldi R16,L88 
 04CA 00D0              rcall lpm32 
 04CC 50900900          lds R5,_ReadResidueVal+2+1 
 04D0 40900800          lds R4,_ReadResidueVal+2 
 04D4 30900700          lds R3,_ReadResidueVal+1 
 04D8 20900600          lds R2,_ReadResidueVal 
 04DC 201A              sub R2,R16 
 04DE 310A              sbc R3,R17 
 04E0 420A              sbc R4,R18 
 04E2 530A              sbc R5,R19 
 04E4 30920700          sts _ReadResidueVal+1,R3 
 04E8 20920600          sts _ReadResidueVal,R2 
 04EC 50920900          sts _ReadResidueVal+2+1,R5 
 04F0 40920800          sts _ReadResidueVal+2,R4 
 04F4                   .dbline 353 
                       ;         temp = (unsigned char)(Flash_Read_Col + 64); 
 04F4 80910B00          lds R24,_Flash_Read_Col 
 04F8 9927              clr R25 
 04FA 805C              subi R24,192  ; offset = 64 
 04FC 9F4F              sbci R25,255 
 04FE A82E              mov R10,R24 
 0500                   .dbline 354 
                       ;         fCOMMAND = Flash_Read_Sec; 
 0500 20900A00          lds R2,_Flash_Read_Sec 
 0504 209200A0          sts 40960,R2 
 0508                   .dbline 355 
                       ;         fADD = Flash_Read_Col; 
 0508 20900B00          lds R2,_Flash_Read_Col 
 050C 20920090          sts 36864,R2 
 0510                   .dbline 356 
                       ;         fADD = Flash_Read_addl; 
 0510 20900C00          lds R2,_Flash_Read_addl 
 0514 20920090          sts 36864,R2 
 0518                   .dbline 357 
                       ;         fADD = Flash_Read_addh; 
 0518 20900D00          lds R2,_Flash_Read_addh 
 051C 20920090          sts 36864,R2 
 0520                   .dbline 358 
                       ;         asm("nop \n nop"); 
 0520 0000              nop  
 0522 0000               nop 
 0524                 L89: 
 0524                   .dbline 359 
 0524                 L90: 
 0524                   .dbline 359 
                       ;         while(!fRB); 
 0524 849B              sbis 0x10,4 
 0526 FECF              rjmp L89 
 0528                   .dbline 360 
                       ;         switch (Flash_Read_Sec) 
 0528 C0900A00          lds R12,_Flash_Read_Sec 
 052C DD24              clr R13 
 052E CC20              tst R12 
 0530 11F4              brne X4 
 0532 DD20              tst R13 
 0534 31F0              breq L95 
 0536                 X4: 
 0536 81E0              ldi R24,1 
 0538 90E0              ldi R25,0 
 053A C816              cp R12,R24 
 053C D906              cpc R13,R25 
 053E 81F0              breq L98 
 0540 2EC0              rjmp L92 
 0542                 X2: 
 0542                   .dbline 361 
                       ;         { 
 0542                 L95: 
 0542                   .dbline 363 
                       ;             case 0x00: 
                       ;                 if(temp == 0) 
 0542 AA20              tst R10 
 0544 39F4              brne L96 
 0546                   .dbline 364 
                       ;                 { 
 0546                   .dbline 365 
                       ;                     Flash_Read_Sec = 0x01; 
 0546 81E0              ldi R24,1 
 0548 80930A00          sts _Flash_Read_Sec,R24 
 054C                   .dbline 366 
                       ;                     Flash_Read_Col = 0x00; 
 054C 2224              clr R2 
 054E 20920B00          sts _Flash_Read_Col,R2 
 0552                   .dbline 367 
                       ;                 }else 
 0552 25C0              rjmp L93 
 0554                 L96: 
 0554                   .dbline 368 
                       ;                 { 
 0554                   .dbline 369 
                       ;                     Flash_Read_Col += 64; 
 0554 80910B00          lds R24,_Flash_Read_Col 
 0558 805C              subi R24,192    ; addi 64 
 055A 80930B00          sts _Flash_Read_Col,R24 
 055E                   .dbline 370 
                       ;                 } 
 055E                   .dbline 371 
                       ;                 break; 
 055E 1FC0              rjmp L93 
 0560                 L98: 
 0560                   .dbline 373 
                       ;             case 0x01: 
                       ;                 if(temp == 0) 
 0560 AA20              tst R10 
 0562 C1F4              brne L99 
 0564                   .dbline 374 
                       ;                 { 
 0564                   .dbline 375 
                       ;                     if(Flash_Read_addl == 255){ 
 0564 80910C00          lds R24,_Flash_Read_addl 
 0568 8F3F              cpi R24,255 
 056A 49F4              brne L101 
 056C                   .dbline 375 
 056C                   .dbline 376 
                       ;                         Flash_Read_addl = 0x00; 
 056C 2224              clr R2 
 056E 20920C00          sts _Flash_Read_addl,R2 
 0572                   .dbline 377 
                       ;                         Flash_Read_addh ++; 
 0572 80910D00          lds R24,_Flash_Read_addh 
 0576 8F5F              subi R24,255    ; addi 1 
 0578 80930D00          sts _Flash_Read_addh,R24 
 057C                   .dbline 378 
                       ;                     }else 
 057C 05C0              rjmp L102 
 057E                 L101: 
 057E                   .dbline 379 
                       ;                         Flash_Read_addl ++; 
 057E 80910C00          lds R24,_Flash_Read_addl 
 0582 8F5F              subi R24,255    ; addi 1 
 0584 80930C00          sts _Flash_Read_addl,R24 
 0588                 L102: 
 0588                   .dbline 380 
                       ;                     Flash_Read_Sec = 0x00; 
 0588 2224              clr R2 
 058A 20920A00          sts _Flash_Read_Sec,R2 
 058E                   .dbline 381 
                       ;                     Flash_Read_Col = 0x00; 
 058E 20920B00          sts _Flash_Read_Col,R2 
 0592                   .dbline 382 
                       ;                 }else 
 0592 05C0              rjmp L93 
 0594                 L99: 
 0594                   .dbline 383 
                       ;                 { 
 0594                   .dbline 384 
                       ;                     Flash_Read_Col += 64; 
 0594 80910B00          lds R24,_Flash_Read_Col 
 0598 805C              subi R24,192    ; addi 64 
 059A 80930B00          sts _Flash_Read_Col,R24 
 059E                   .dbline 385 
                       ;                 } 
 059E                   .dbline 386 
                       ;                 break; 
 059E                 L92: 
 059E                 L93: 
 059E                   .dbline 389 
                       ;         } 
                       ;          
                       ;         D12_COMMAND = 0x05;//选择端点(指针指向0位置) 
 059E 85E0              ldi R24,5 
 05A0 8093017C          sts 31745,R24 
 05A4                   .dbline 390 
                       ;         cwait; 
 05A4 0000              nop 
 05A6                   .dbline 391 
                       ;         D12_COMMAND = 0xf0;//写缓冲区 
 05A6 80EF              ldi R24,240 
 05A8 8093017C          sts 31745,R24 
 05AC                   .dbline 392 
                       ;         cwait; 
 05AC 0000              nop 
 05AE                   .dbline 400 
                       ;         /**************************** 
                       ;           缓冲区数据结构: 
                       ;           字节1:保留,可为任意值 
                       ;           字节2:数据字节的数目/长度 
                       ;           字节3:数据字节1 
                       ;           字节4:数据字节2 
                       ;         *****************************/ 
                       ;         D12_DATA = 0x00;//字节1 
 05AE 2224              clr R2 
 05B0 2092007C          sts 31744,R2 
 05B4                   .dbline 401 
                       ;         cwait; 
 05B4 0000              nop 
 05B6                   .dbline 402 
                       ;         D12_DATA = 64;//字节2 
 05B6 80E4              ldi R24,64 
 05B8 8093007C          sts 31744,R24 
 05BC                   .dbline 403 
                       ;         csram; 
 05BC 609301FC          sts 0xfc01,R22 
 05C0                   .dbline 403 
 05C0                   .dbline 404 
                       ;         for(i=0;i<64;i++) 
 05C0 AA24              clr R10 
 05C2 06C0              rjmp L106 
 05C4                 L103: 
 05C4                   .dbline 405 
 05C4                   .dbline 406 
 05C4 20900080          lds R2,32768 
 05C8 2092007C          sts 31744,R2 
 05CC                   .dbline 407 
 05CC 0000              nop 
 05CE                   .dbline 408 
 05CE                 L104: 
 05CE                   .dbline 404 
 05CE A394              inc R10 
 05D0                 L106: 
 05D0                   .dbline 404 
 05D0 8A2D              mov R24,R10 
 05D2 8034              cpi R24,64 
 05D4 B8F3              brlo L103 
 05D6                   .dbline 409 
 05D6 8AEF              ldi R24,250 
 05D8 8093017C          sts 31745,R24 
 05DC                   .dbline 410 
 05DC 609301FC          sts 0xfc01,R22 
 05E0                   .dbline 410 
 05E0                   .dbline 411 
 05E0                 L85: 
 05E0                   .dbline -2 
 05E0                   .dbline 412 
                       ;         { 
                       ;             D12_DATA = fDATA;//写数据 
                       ;             cwait; 
                       ;         } 
                       ;         D12_COMMAND = 0xfa;//设置缓冲区有效(满标志) 
                       ;         csram; 
                       ;     } 
                       ; } 
 05E0                 L84: 
 05E0 00D0              rcall pop_gset4 
 05E2                   .dbline 0 ; func end 
 05E2 0895              ret 
 05E4                   .dbsym r temp 10 c 
 05E4                   .dbsym r i 10 c 
                         .area lit(rom, con, rel) 
 0000                 L88: 
 0000 40000000          .word 64,0 
 0004                 L87: 
 0004 00000000          .word 0,0 
                         .area data(ram, con, rel) 
 000E                   .dbfile G:\source\NFlash32.c 
 000E                 L8: 
 000E                   .blkb 18 
                         .area idata 
 000E 25782C25782065726173652069732025   .byte 37,'x,44,37,'x,32,'e,'r,'a,'s,'e,32,'i,'s,32,37 
 001E 7800              .byte 'x,0 
                         .area data(ram, con, rel) 
 0020                   .dbfile G:\source\NFlash32.c