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

📄 main.lis

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第三部分
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 009A 0895              ret
 009C                   .dbsym r PageAddressLow 22 c
 009C                   .dbsym r PageAddressHigh 20 c
 009C                   .dbend
 009C                   .dbfunc e ExecCode _ExecCode fV
                        .even
 009C           _ExecCode::
 009C                   .dbline -1
 009C                   .dbline 120
 009C           ; 
 009C           ; /*********************************************************/
 009C           ; 
 009C           ; void ExecCode(void)
 009C           ; {
 009C                   .dbline 121
 009C           ; RAMPZ = 0;
 009C 2224              clr R2
 009E 2BBE              out 0x3b,R2
 00A0                   .dbline 122
 00A0           ; MCUCR = 0x01;         // Enable interrupt vector select
 00A0 81E0              ldi R24,1
 00A2 85BF              out 0x35,R24
 00A4                   .dbline 123
 00A4           ; MCUCR = 0x00;         // Move interrupt vector to flash
 00A4 25BE              out 0x35,R2
 00A6                   .dbline 124
 00A6           ; asm("jmp 0x0000"); // Run application code   
 00A6 0C940000          jmp 0x0000
 00AA                   .dbline -2
 00AA                   .dbline 125
 00AA           ; }
 00AA           L21:
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbend
 00AC                   .dbfunc e GetPage _GetPage fc
 00AC           ;       CheckSum -> R22
 00AC           ;  LocalCheckSum -> R10
 00AC           ;              i -> R20,R21
                        .even
 00AC           _GetPage::
 00AC 0E940000          xcall push_gset3
 00B0                   .dbline -1
 00B0                   .dbline 130
 00B0           ; 
 00B0           ; /*********************************************************/
 00B0           ; 
 00B0           ; char GetPage(void)
 00B0           ; {
 00B0                   .dbline 132
 00B0           ; unsigned int i;
 00B0           ; unsigned char LocalCheckSum = 0;
 00B0 AA24              clr R10
 00B2                   .dbline 133
 00B2           ; unsigned char CheckSum = 0;
 00B2 6627              clr R22
 00B4                   .dbline 135
 00B4           ; 
 00B4           ; for (i=0;i<PageByte;i++)
 00B4 4427              clr R20
 00B6 5527              clr R21
 00B8 11C0              xjmp L26
 00BA           X1:
 00BA                   .dbline 136
 00BA           ;       {
 00BA           L27:
 00BA                   .dbline 137
 00BA           L28:
 00BA                   .dbline 137
 00BA 93D0              xcall _IsChar
 00BC 0023              tst R16
 00BE E9F3              breq L27
 00C0                   .dbline 138
 00C0 96D0              xcall _RxChar
 00C2 80E0              ldi R24,<_PageBuffer
 00C4 90E0              ldi R25,>_PageBuffer
 00C6 FA01              movw R30,R20
 00C8 E80F              add R30,R24
 00CA F91F              adc R31,R25
 00CC 0083              std z+0,R16
 00CE                   .dbline 139
 00CE FA01              movw R30,R20
 00D0 E80F              add R30,R24
 00D2 F91F              adc R31,R25
 00D4 2080              ldd R2,z+0
 00D6 A20C              add R10,R2
 00D8                   .dbline 140
 00D8           L24:
 00D8                   .dbline 135
 00D8 4F5F              subi R20,255  ; offset = 1
 00DA 5F4F              sbci R21,255
 00DC           L26:
 00DC                   .dbline 135
 00DC 4030              cpi R20,0
 00DE E1E0              ldi R30,1
 00E0 5E07              cpc R21,R30
 00E2 58F3              brlo L28
 00E4           L30:
 00E4                   .dbline 142
 00E4           L31:
 00E4                   .dbline 142
 00E4           ;       while(!IsChar());
 00E4           ;       PageBuffer[i]=RxChar();
 00E4           ;       LocalCheckSum += PageBuffer[i];
 00E4           ;       }
 00E4           ;                  
 00E4           ; while(!IsChar());
 00E4 7ED0              xcall _IsChar
 00E6 0023              tst R16
 00E8 E9F3              breq L30
 00EA                   .dbline 143
 00EA           ; CheckSum = RxChar(); 
 00EA 81D0              xcall _RxChar
 00EC 602F              mov R22,R16
 00EE                   .dbline 144
 00EE           ; if (LocalCheckSum == CheckSum) return 1;
 00EE A016              cp R10,R16
 00F0 11F4              brne L33
 00F2                   .dbline 144
 00F2 01E0              ldi R16,1
 00F4 01C0              xjmp L22
 00F6           L33:
 00F6                   .dbline 145
 00F6           ; else return 0;
 00F6 0027              clr R16
 00F8                   .dbline -2
 00F8           L22:
 00F8 0E940000          xcall pop_gset3
 00FC                   .dbline 0 ; func end
 00FC 0895              ret
 00FE                   .dbsym r CheckSum 22 c
 00FE                   .dbsym r LocalCheckSum 10 c
 00FE                   .dbsym r i 20 i
 00FE                   .dbend
 00FE                   .dbfunc e WriteFlash _WriteFlash fV
 00FE           ;        TempInt -> R22,R23
 00FE           ;              i -> R20,R21
                        .even
 00FE           _WriteFlash::
 00FE 0E940000          xcall push_gset2
 0102                   .dbline -1
 0102                   .dbline 151
 0102           ; }
 0102           ; 
 0102           ; /*********************************************************/
 0102           ; 
 0102           ; void WriteFlash(void)
 0102           ; {
 0102                   .dbline 155
 0102           ; unsigned int i;
 0102           ; unsigned int TempInt;
 0102           ; 
 0102           ; for (i=0;i<PageByte;i+=2)
 0102 4427              clr R20
 0104 5527              clr R21
 0106 17C0              xjmp L39
 0108           L36:
 0108                   .dbline 156
 0108                   .dbline 157
 0108 80E0              ldi R24,<_PageBuffer
 010A 90E0              ldi R25,>_PageBuffer
 010C FA01              movw R30,R20
 010E 3196              adiw R30,1
 0110 E80F              add R30,R24
 0112 F91F              adc R31,R25
 0114 2080              ldd R2,z+0
 0116 3324              clr R3
 0118 322C              mov R3,R2
 011A 2224              clr R2
 011C FA01              movw R30,R20
 011E E80F              add R30,R24
 0120 F91F              adc R31,R25
 0122 6081              ldd R22,z+0
 0124 7727              clr R23
 0126 620D              add R22,R2
 0128 731D              adc R23,R3
 012A                   .dbline 158
 012A 9A01              movw R18,R20
 012C 8B01              movw R16,R22
 012E 0E940000          xcall _fill_temp_buffer
 0132                   .dbline 159
 0132           L37:
 0132                   .dbline 155
 0132 4E5F              subi R20,254  ; offset = 2
 0134 5F4F              sbci R21,255
 0136           L39:
 0136                   .dbline 155
 0136 4030              cpi R20,0
 0138 E1E0              ldi R30,1
 013A 5E07              cpc R21,R30
 013C 28F3              brlo L36
 013E                   .dbline 160
 013E           ;       {
 013E           ;       TempInt=PageBuffer[i]+(PageBuffer[i+1]<<8);
 013E           ;       fill_temp_buffer(TempInt,i); //call asm routine.
 013E           ;       }
 013E           ; if (PageAddress16) RAMPZ = 1;
 013E 20900000          lds R2,_PageAddress16
 0142 2220              tst R2
 0144 11F0              breq L40
 0146                   .dbline 160
 0146 81E0              ldi R24,1
 0148 8BBF              out 0x3b,R24
 014A           L40:
 014A                   .dbline 162
 014A           ; 
 014A           ; write_page(PageAddress,0x03);       //Perform page ERASE
 014A 23E0              ldi R18,3
 014C 00910200          lds R16,_PageAddress
 0150 10910300          lds R17,_PageAddress+1
 0154 0E940000          xcall _write_page
 0158                   .dbline 163
 0158           ; write_page(PageAddress,0x05);       //Perform page write
 0158 25E0              ldi R18,5
 015A 00910200          lds R16,_PageAddress
 015E 10910300          lds R17,_PageAddress+1
 0162 0E940000          xcall _write_page
 0166                   .dbline 165
 0166           ;    
 0166           ; enableRWW();
 0166 0E940000          xcall _enableRWW
 016A                   .dbline 166
 016A           ; RAMPZ = 0;
 016A 2224              clr R2
 016C 2BBE              out 0x3b,R2
 016E                   .dbline -2
 016E                   .dbline 167
 016E           ; }
 016E           L35:
 016E 0E940000          xcall pop_gset2
 0172                   .dbline 0 ; func end
 0172 0895              ret
 0174                   .dbsym r TempInt 22 i
 0174                   .dbsym r i 20 i
 0174                   .dbend
 0174                   .dbfunc e CheckFlash _CheckFlash fc
 0174           ;       TempInt2 -> R22,R23
 0174           ;        TempInt -> R10,R11
 0174           ;              i -> R20,R21
                        .even
 0174           _CheckFlash::
 0174 0E940000          xcall push_gset3
 0178                   .dbline -1
 0178                   .dbline 172
 0178           ; 
 0178           ; /*********************************************************/
 0178           ; 
 0178           ; char CheckFlash(void)
 0178           ; {
 0178                   .dbline 177
 0178           ; unsigned int i;                                                       
 0178           ; unsigned int TempInt;
 0178           ; unsigned int TempInt2;
 0178           ; 
 0178           ; for (i=0;i<PageByte;i+=2)
 0178 4427              clr R20
 017A 5527              clr R21
 017C 2AC0              xjmp L46
 017E           L43:
 017E                   .dbline 178
 017E           ;     {
 017E                   .dbline 179
 017E           ;       if (PageAddress16) RAMPZ = 1;
 017E 20900000          lds R2,_PageAddress16
 0182 2220              tst R2
 0184 11F0              breq L47
 0186                   .dbline 179
 0186 81E0              ldi R24,1
 0188 8BBF              out 0x3b,R24

⌨️ 快捷键说明

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