⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.lis

📁 Atmeag162-k9f5608-pdiusbd12-u usb接口 u盘源码 包括fat文件源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r id 16 i
 0036                   .dbend
 0036                   .dbfunc e Erase_Cluster _Erase_Cluster fc
 0036           ;              v -> R20
 0036           ;      blockPage -> R20,R21
 0036           ;        cluster -> R20,R21
                        .even
 0036           _Erase_Cluster::
 0036 0E940000          xcall push_gset1
 003A A801              movw R20,R16
 003C                   .dbline -1
 003C                   .dbline 46
 003C           ; }
 003C           ; BOOL Erase_Cluster(unsigned int cluster)
 003C           ; {
 003C                   .dbline 48
 003C           ;   unsigned char v;
 003C           ;   unsigned int blockPage=cluster*32;
 003C 00E2              ldi R16,32
 003E 10E0              ldi R17,0
 0040 9A01              movw R18,R20
 0042 0E940000          xcall empy16s
 0046 A801              movw R20,R16
 0048                   .dbline 49
 0048           ;   fWPs;
 0048 959A              SBI 0x12,5
 004A                   .dbline 49
 004A                   .dbline 50
 004A           ;   FC_CMD=BLOCK_ERASE_1C;
 004A 80E6              ldi R24,96
 004C 809300A0          sts 40960,R24
 0050                   .dbline 51
 0050           ;   FC_ADDR=blockPage%256;
 0050 CA01              movw R24,R20
 0052 9070              andi R25,0
 0054 80930090          sts 36864,R24
 0058                   .dbline 52
 0058           ;   FC_ADDR=blockPage/256;
 0058 1A01              movw R2,R20
 005A 232C              mov R2,R3
 005C 3324              clr R3
 005E 20920090          sts 36864,R2
 0062                   .dbline 53
 0062           ;   FC_CMD=BLOCK_ERASE_2C;
 0062 80ED              ldi R24,208
 0064 809300A0          sts 40960,R24
 0068                   .dbline 54
 0068           ;   asm("nop \n nop");
 0068 0000              nop 
 006A 0000               nop
 006C           L7:
 006C                   .dbline 55
 006C           L8:
 006C                   .dbline 55
 006C           ;   WAITRB;
 006C 849B              sbis 0x10,4
 006E FECF              rjmp L7
 0070                   .dbline 56
 0070           ;   FC_CMD=READSTATUS;
 0070 80E7              ldi R24,112
 0072 809300A0          sts 40960,R24
 0076                   .dbline 57
 0076           ;   v=FC_DATA;
 0076 40910080          lds R20,32768
 007A                   .dbline 58
 007A           ;   FC_INACTIVE
 007A 609301FC          sts 0xfc01,R22
 007E                   .dbline 59
 007E           ;   fWPc;
 007E 9598              CBI 0x12,5
 0080                   .dbline 59
 0080                   .dbline 60
 0080           ;   if(v&0x01)
 0080 40FF              sbrs R20,0
 0082 02C0              rjmp L10
 0084                   .dbline 61
 0084           ;        return FALSE;
 0084 0027              clr R16
 0086 01C0              xjmp L6
 0088           L10:
 0088                   .dbline 62
 0088           ;   return TRUE;
 0088 01E0              ldi R16,1
 008A                   .dbline -2
 008A           L6:
 008A 0E940000          xcall pop_gset1
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbsym r v 20 c
 0090                   .dbsym r blockPage 20 i
 0090                   .dbsym r cluster 20 i
 0090                   .dbend
 0090                   .dbfunc e ReadPage _ReadPage fV
 0090           ;      blockPage -> R10,R11
 0090           ;              i -> R20,R21
 0090           ;          pPage -> R22,R23
 0090           ;           page -> R10,R11
 0090           ;          block -> R12,R13
                        .even
 0090           _ReadPage::
 0090 0E940000          xcall push_gset4
 0094 5901              movw R10,R18
 0096 6801              movw R12,R16
 0098 6885              ldd R22,y+8
 009A 7985              ldd R23,y+9
 009C                   .dbline -1
 009C                   .dbline 66
 009C           ; }
 009C           ; 
 009C           ; void ReadPage(unsigned int block,unsigned int page,unsigned char *pPage)
 009C           ; {
 009C                   .dbline 67
 009C           ;   unsigned int i=512;
 009C 40E0              ldi R20,512
 009E 52E0              ldi R21,2
 00A0                   .dbline 68
 00A0           ;   unsigned int blockPage=block*32+page;
 00A0 00E2              ldi R16,32
 00A2 10E0              ldi R17,0
 00A4 9601              movw R18,R12
 00A6 0E940000          xcall empy16s
 00AA 1801              movw R2,R16
 00AC 2A0C              add R2,R10
 00AE 3B1C              adc R3,R11
 00B0 5101              movw R10,R2
 00B2                   .dbline 69
 00B2           ;   FC_CMD=READ0;
 00B2 2224              clr R2
 00B4 209200A0          sts 40960,R2
 00B8                   .dbline 70
 00B8           ;   FC_ADDR=0x00;
 00B8 20920090          sts 36864,R2
 00BC                   .dbline 71
 00BC           ;   FC_ADDR=blockPage%256;
 00BC C501              movw R24,R10
 00BE 9070              andi R25,0
 00C0 80930090          sts 36864,R24
 00C4                   .dbline 72
 00C4           ;   FC_ADDR=blockPage/256;
 00C4 1501              movw R2,R10
 00C6 232C              mov R2,R3
 00C8 3324              clr R3
 00CA 20920090          sts 36864,R2
 00CE                   .dbline 73
 00CE           ;   asm("nop \n nop");
 00CE 0000              nop 
 00D0 0000               nop
 00D2           L13:
 00D2                   .dbline 74
 00D2           L14:
 00D2                   .dbline 74
 00D2           ;   WAITRB;
 00D2 849B              sbis 0x10,4
 00D4 FECF              rjmp L13
 00D6 05C0              xjmp L17
 00D8           L16:
 00D8                   .dbline 75
 00D8                   .dbline 75
 00D8 20900080          lds R2,32768
 00DC FB01              movw R30,R22
 00DE 2192              st Z+,R2
 00E0 BF01              movw R22,R30
 00E2                   .dbline 75
 00E2           L17:
 00E2                   .dbline 75
 00E2           ;   while(i--){*pPage++=FC_DATA;}
 00E2 1A01              movw R2,R20
 00E4 4150              subi R20,1
 00E6 5040              sbci R21,0
 00E8 2220              tst R2
 00EA B1F7              brne L16
 00EC 3320              tst R3
 00EE A1F7              brne L16
 00F0           X0:
 00F0                   .dbline 76
 00F0           ;   asm("nop \n nop");
 00F0 0000              nop 
 00F2 0000               nop
 00F4           L19:
 00F4                   .dbline 77
 00F4           L20:
 00F4                   .dbline 77
 00F4           ;   WAITRB;  
 00F4 849B              sbis 0x10,4
 00F6 FECF              rjmp L19
 00F8                   .dbline 78
 00F8           ;   FC_INACTIVE
 00F8 609301FC          sts 0xfc01,R22
 00FC                   .dbline -2
 00FC                   .dbline 79
 00FC           ; }
 00FC           L12:
 00FC 0E940000          xcall pop_gset4
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbsym r blockPage 10 i
 0102                   .dbsym r i 20 i
 0102                   .dbsym r pPage 22 pc
 0102                   .dbsym r page 10 i
 0102                   .dbsym r block 12 i
 0102                   .dbend
 0102                   .dbfunc e WritePage _WritePage fc
 0102           ;              v -> R10
 0102           ;      blockPage -> R10,R11
 0102           ;              i -> R20,R21
 0102           ;          pPage -> R22,R23
 0102           ;           page -> R10,R11
 0102           ;          block -> R12,R13
                        .even
 0102           _WritePage::
 0102 0E940000          xcall push_gset4
 0106 5901              movw R10,R18
 0108 6801              movw R12,R16
 010A 6885              ldd R22,y+8
 010C 7985              ldd R23,y+9
 010E                   .dbline -1
 010E                   .dbline 81
 010E           ; BOOL WritePage(unsigned int block,unsigned int page,unsigned char *pPage)
 010E           ; {
 010E                   .dbline 83
 010E           ;   unsigned char v;
 010E           ;   int i=512;
 010E 40E0              ldi R20,512
 0110 52E0              ldi R21,2
 0112                   .dbline 84
 0112           ;   unsigned int blockPage=block*32+page;
 0112 00E2              ldi R16,32
 0114 10E0              ldi R17,0
 0116 9601              movw R18,R12
 0118 0E940000          xcall empy16s
 011C 1801              movw R2,R16
 011E 2A0C              add R2,R10
 0120 3B1C              adc R3,R11
 0122 5101              movw R10,R2
 0124                   .dbline 85
 0124           ;   fWPs;
 0124 959A              SBI 0x12,5
 0126                   .dbline 85
 0126                   .dbline 86
 0126           ;   FC_CMD=PAGEPROGRAM_1C;
 0126 80E8              ldi R24,128
 0128 809300A0          sts 40960,R24
 012C                   .dbline 87
 012C           ;   FC_ADDR=0x00;
 012C 2224              clr R2
 012E 20920090          sts 36864,R2
 0132                   .dbline 88
 0132           ;   FC_ADDR=blockPage%256;
 0132 C501              movw R24,R10
 0134 9070              andi R25,0
 0136 80930090          sts 36864,R24
 013A                   .dbline 89
 013A           ;   FC_ADDR=blockPage/256;
 013A 1501              movw R2,R10
 013C 232C              mov R2,R3
 013E 3324              clr R3
 0140 20920090          sts 36864,R2
 0144 05C0              xjmp L24
 0146           L23:
 0146                   .dbline 90
 0146                   .dbline 90
 0146 FB01              movw R30,R22
 0148 2190              ld R2,Z+
 014A BF01              movw R22,R30
 014C 20920080          sts 32768,R2
 0150                   .dbline 90
 0150           L24:
 0150                   .dbline 90
 0150           ;   while(i--){FC_DATA=*pPage++;}
 0150 1A01              movw R2,R20
 0152 4150              subi R20,1
 0154 5040              sbci R21,0
 0156 2220              tst R2
 0158 B1F7              brne L23
 015A 3320              tst R3
 015C A1F7              brne L23
 015E           X1:
 015E                   .dbline 91
 015E           ;   FC_CMD=PAGEPROGRAM_2C;
 015E 80E1              ldi R24,16
 0160 809300A0          sts 40960,R24
 0164                   .dbline 92
 0164           ;   asm("nop \n nop");
 0164 0000              nop 
 0166 0000               nop
 0168           L26:
 0168                   .dbline 93
 0168           L27:
 0168                   .dbline 93
 0168           ;   WAITRB;
 0168 849B              sbis 0x10,4
 016A FECF              rjmp L26
 016C                   .dbline 94
 016C           ;   FC_CMD=READSTATUS;   
 016C 80E7              ldi R24,112
 016E 809300A0          sts 40960,R24
 0172                   .dbline 95
 0172           ;   v=FC_DATA;
 0172 A0900080          lds R10,32768
 0176                   .dbline 96
 0176           ;   FC_INACTIVE
 0176 609301FC          sts 0xfc01,R22
 017A                   .dbline 97
 017A           ;   fWPc;  
 017A 9598              CBI 0x12,5
 017C                   .dbline 97
 017C                   .dbline 98
 017C           ;   if(v&0x1)
 017C A0FE              sbrs R10,0
 017E 02C0              rjmp L29
 0180                   .dbline 99
 0180           ;     return FALSE;
 0180 0027              clr R16
 0182 01C0              xjmp L22
 0184           L29:
 0184                   .dbline 100
 0184           ;   return TRUE;
 0184 01E0              ldi R16,1
 0186                   .dbline -2
 0186           L22:
 0186 0E940000          xcall pop_gset4
 018A                   .dbline 0 ; func end
 018A 0895              ret
 018C                   .dbsym r v 10 c
 018C                   .dbsym r blockPage 10 i
 018C                   .dbsym r i 20 I
 018C                   .dbsym r pPage 22 pc
 018C                   .dbsym r page 10 i
 018C                   .dbsym r block 12 i
 018C                   .dbend
 018C                   .dbfunc e CopyBlack _CopyBlack fc
 018C           ;              v -> R12
 018C           ;      blockPage -> R20,R21
 018C           ;          dpage -> R22,R23
 018C           ;         dblock -> R10,R11
 018C           ;          spage -> R20,R21
 018C           ;         sblock -> R12,R13
                        .even
 018C           _CopyBlack::
 018C 0E940000          xcall push_gset4
 0190 A901              movw R20,R18
 0192 6801              movw R12,R16
 0194 A884              ldd R10,y+8
 0196 B984              ldd R11,y+9
 0198 6A85              ldd R22,y+10
 019A 7B85              ldd R23,y+11
 019C                   .dbline -1
 019C                   .dbline 105
 019C           ;      
 019C           ; }
 019C           ; BOOL CopyBlack(unsigned int sblock,unsigned int spage,
 019C           ;                unsigned int dblock,unsigned int dpage)
 019C           ; {
 019C                   .dbline 107

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -