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

📄 main.lis

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第三部分
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 018A           L47:
 018A                   .dbline 180
 018A           ;       TempInt = read_program_memory(PageAddress + i,0x00);
 018A 2227              clr R18
 018C 00910200          lds R16,_PageAddress
 0190 10910300          lds R17,_PageAddress+1
 0194 040F              add R16,R20
 0196 151F              adc R17,R21
 0198 0E940000          xcall _read_program_memory
 019C 5801              movw R10,R16
 019E                   .dbline 181
 019E           ;       RAMPZ = 0;
 019E 2224              clr R2
 01A0 2BBE              out 0x3b,R2
 01A2                   .dbline 182
 01A2           ;       TempInt2 = PageBuffer[i] +(PageBuffer[i+1]<<8);
 01A2 80E0              ldi R24,<_PageBuffer
 01A4 90E0              ldi R25,>_PageBuffer
 01A6 FA01              movw R30,R20
 01A8 3196              adiw R30,1
 01AA E80F              add R30,R24
 01AC F91F              adc R31,R25
 01AE 2080              ldd R2,z+0
 01B0 3324              clr R3
 01B2 322C              mov R3,R2
 01B4 2224              clr R2
 01B6 FA01              movw R30,R20
 01B8 E80F              add R30,R24
 01BA F91F              adc R31,R25
 01BC 6081              ldd R22,z+0
 01BE 7727              clr R23
 01C0 620D              add R22,R2
 01C2 731D              adc R23,R3
 01C4                   .dbline 183
 01C4           ;       if (TempInt != TempInt2) return 0;
 01C4 0617              cp R16,R22
 01C6 1707              cpc R17,R23
 01C8 11F0              breq L49
 01CA                   .dbline 183
 01CA 0027              clr R16
 01CC 07C0              xjmp L42
 01CE           L49:
 01CE                   .dbline 184
 01CE           L44:
 01CE                   .dbline 177
 01CE 4E5F              subi R20,254  ; offset = 2
 01D0 5F4F              sbci R21,255
 01D2           L46:
 01D2                   .dbline 177
 01D2 4030              cpi R20,0
 01D4 E1E0              ldi R30,1
 01D6 5E07              cpc R21,R30
 01D8 90F2              brlo L43
 01DA                   .dbline 185
 01DA           ;     }
 01DA           ; return 1;
 01DA 01E0              ldi R16,1
 01DC                   .dbline -2
 01DC           L42:
 01DC 0E940000          xcall pop_gset3
 01E0                   .dbline 0 ; func end
 01E0 0895              ret
 01E2                   .dbsym r TempInt2 22 i
 01E2                   .dbsym r TempInt 10 i
 01E2                   .dbsym r i 20 i
 01E2                   .dbend
 01E2                   .dbfunc e IsChar _IsChar fc
                        .even
 01E2           _IsChar::
 01E2                   .dbline -1
 01E2                   .dbline 191
 01E2           ; }
 01E2           ; 
 01E2           ; /*********************************************************/
 01E2           ; 
 01E2           ; unsigned char IsChar(void)
 01E2           ; {
 01E2                   .dbline 192
 01E2           ; if (UCSR0A & 0x80) return 1;
 01E2 5F9B              sbis 0xb,7
 01E4 02C0              rjmp L52
 01E6                   .dbline 192
 01E6 01E0              ldi R16,1
 01E8 01C0              xjmp L51
 01EA           L52:
 01EA                   .dbline 193
 01EA           ; return 0;
 01EA 0027              clr R16
 01EC                   .dbline -2
 01EC           L51:
 01EC                   .dbline 0 ; func end
 01EC 0895              ret
 01EE                   .dbend
 01EE                   .dbfunc e RxChar _RxChar fc
                        .even
 01EE           _RxChar::
 01EE                   .dbline -1
 01EE                   .dbline 199
 01EE           ; }
 01EE           ; 
 01EE           ; /*********************************************************/
 01EE           ; 
 01EE           ; unsigned char RxChar(void)
 01EE           ; {
 01EE                   .dbline 200
 01EE           ; return UDR0;                            // Read char
 01EE 0CB1              in R16,0xc
 01F0                   .dbline -2
 01F0           L54:
 01F0                   .dbline 0 ; func end
 01F0 0895              ret
 01F2                   .dbend
 01F2                   .dbfunc e TxChar _TxChar fV
 01F2           ;             ch -> R16
                        .even
 01F2           _TxChar::
 01F2                   .dbline -1
 01F2                   .dbline 206
 01F2           ; }
 01F2           ; 
 01F2           ; /*********************************************************/
 01F2           ; 
 01F2           ; void TxChar(unsigned char ch)
 01F2           ; {
 01F2           L56:
 01F2                   .dbline 207
 01F2           L57:
 01F2                   .dbline 207
 01F2           ; while (!(UCSR0A & 0x20)); // Wait for empty transmit buffer
 01F2 5D9B              sbis 0xb,5
 01F4 FECF              rjmp L56
 01F6                   .dbline 208
 01F6           ; UDR0 = ch;                                      // Write char
 01F6 0CB9              out 0xc,R16
 01F8                   .dbline -2
 01F8                   .dbline 209
 01F8           ; }
 01F8           L55:
 01F8                   .dbline 0 ; func end
 01F8 0895              ret
 01FA                   .dbsym r ch 16 c
 01FA                   .dbend
 01FA                   .dbfunc e Wait _Wait fV
 01FA           ;              i -> R16,R17
                        .even
 01FA           _Wait::
 01FA                   .dbline -1
 01FA                   .dbline 214
 01FA           ; 
 01FA           ; /*********************************************************/
 01FA           ; 
 01FA           ; void Wait()
 01FA           ; {
 01FA                   .dbline 217
 01FA 00E0              ldi R16,-32000
 01FC 13E8              ldi R17,-125
 01FE           L60:
 01FE                   .dbline 217
 01FE           L61:
 01FE                   .dbline 217
 01FE           ; int i;
 01FE           ; 
 01FE           ; for (i=-32000;i<32000;i++); // Minimum for 16Mhz
 01FE 0F5F              subi R16,255  ; offset = 1
 0200 1F4F              sbci R17,255
 0202                   .dbline 217
 0202 0030              cpi R16,0
 0204 EDE7              ldi R30,125
 0206 1E07              cpc R17,R30
 0208 D4F3              brlt L60
 020A                   .dbline -2
 020A                   .dbline 218
 020A           ; }
 020A           L59:
 020A                   .dbline 0 ; func end
 020A 0895              ret
 020C                   .dbsym r i 16 I
 020C                   .dbend
 020C                   .dbfunc e main _main fV
                        .even
 020C           _main::
 020C                   .dbline -1
 020C                   .dbline 223
 020C           ; 
 020C           ; /*********************************************************/
 020C           ; 
 020C           ; void main(void)
 020C           ; {
 020C                   .dbline 224
 020C           ; DDRF = 0xff;   // for ata
 020C 8FEF              ldi R24,255
 020E 80936100          sts 97,R24
 0212                   .dbline 225
 0212           ; PORTF = 0xff;
 0212 80936200          sts 98,R24
 0216                   .dbline 226
 0216           ; DDRG = 0x02;
 0216 82E0              ldi R24,2
 0218 80936400          sts 100,R24
 021C                   .dbline 227
 021C           ; PORTG = 0x02;
 021C 80936500          sts 101,R24
 0220                   .dbline 229
 0220           ; 
 0220           ; PORTE  = 0x01;        // Pull up on RX line
 0220 81E0              ldi R24,1
 0222 83B9              out 0x3,R24
 0224                   .dbline 230
 0224           ; UCSR0C = 0x86;  // Asyn,NoParity,1StopBit,8Bit,
 0224 86E8              ldi R24,134
 0226 80939500          sts 149,R24
 022A                   .dbline 231
 022A           ; UBRR0L = 16;    // 8->115200 at 16Mhz // 16->57600 at 16Mhz // 25->38400bps at 16Mhz
 022A 80E1              ldi R24,16
 022C 89B9              out 0x9,R24
 022E                   .dbline 232
 022E           ; UCSR0B = 0x18;  // Rx enable Tx Enable
 022E 88E1              ldi R24,24
 0230 8AB9              out 0xa,R24
 0232                   .dbline 234
 0232           ; 
 0232           ; RxChar();
 0232 DDDF              xcall _RxChar
 0234                   .dbline 235
 0234           ; TxChar('>');
 0234 0EE3              ldi R16,62
 0236 DDDF              xcall _TxChar
 0238                   .dbline 236
 0238           ; Wait();
 0238 E0DF              xcall _Wait
 023A                   .dbline 237
 023A           ; if (RxChar() == '<') 
 023A D9DF              xcall _RxChar
 023C 0C33              cpi R16,60
 023E 11F4              brne L65
 0240                   .dbline 238
 0240           ;    {
 0240                   .dbline 239
 0240           ;    BootLoad();
 0240 DFDE              xcall _BootLoad
 0242                   .dbline 240
 0242           ;    ExecCode();
 0242 2CDF              xcall _ExecCode
 0244                   .dbline 241
 0244           ;    }
 0244           L65:
 0244                   .dbline 242
 0244           ; ExecCode();
 0244                   .dbline -2
 0244                   .dbline 243
 0244           ; }
 0244           L64:
 0244                   .dbline 0 ; func end
 0244 2BCF              xjmp _ExecCode
 0246                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DATA\MP3\BootLoader\main.c
 0000           _RealPageAddress::
 0000                   .blkb 2
 0002                   .dbsym e RealPageAddress _RealPageAddress i
 0002           _PageAddress::
 0002                   .blkb 2
 0004                   .dbsym e PageAddress _PageAddress i
 0004           _PageBuffer::
 0004                   .blkb 256
 0104                   .dbsym e PageBuffer _PageBuffer A[256:256]c

⌨️ 快捷键说明

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