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

📄 main.lis

📁 Atmeag16 bootloader 测试程序 测试通过
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00B6 EA2D              mov R30,R10
 00B8 FF27              clr R31
 00BA E80F              add R30,R24
 00BC F91F              adc R31,R25
 00BE 2080              ldd R2,z+0
 00C0 6225              eor R22,R2
 00C2                   .dbline 123
 00C2           L21:
 00C2                   .dbline 118
 00C2 A394              inc R10
 00C4           L23:
 00C4                   .dbline 118
 00C4 8A2D              mov R24,R10
 00C6 8034              cpi R24,64
 00C8 58F3              brlo L25
 00CA                   .dbline 124
 00CA           ;        while(!IsChar());
 00CA           ;        PageBuffer[i+PageByte/2]=RecChar();
 00CA           ;        LocalCheckSum ^= PageBuffer[i+PageByte/2];
 00CA           ;       }          
 00CA           ;     CheckSum = RecChar(); 
 00CA 70D0              rcall _RecChar
 00CC 402F              mov R20,R16
 00CE                   .dbline 126
 00CE           ;       
 00CE           ;     if (LocalCheckSum == CheckSum) 
 00CE 6017              cp R22,R16
 00D0 11F4              brne L29
 00D2                   .dbline 127
 00D2           ;         return 1;
 00D2 01E0              ldi R16,1
 00D4 01C0              rjmp L12
 00D6           L29:
 00D6                   .dbline 129
 00D6           ;     else 
 00D6           ;         return 0;
 00D6 0027              clr R16
 00D8                   .dbline -2
 00D8           L12:
 00D8 00D0              rcall pop_gset3
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbsym r CheckSum 20 c
 00DC                   .dbsym r LocalCheckSum 22 c
 00DC                   .dbsym r i 10 c
 00DC                   .dbend
 00DC                   .dbfunc e WriteFlash _WriteFlash fV
 00DC           ;        TempInt -> R20,R21
 00DC           ;              i -> R22,R23
                        .even
 00DC           _WriteFlash::
 00DC 00D0              rcall push_gset2
 00DE                   .dbline -1
 00DE                   .dbline 134
 00DE           ;   }
 00DE           ; 
 00DE           ; /*****************************************************************************/
 00DE           ; void WriteFlash(void)
 00DE           ;   {
 00DE                   .dbline 137
 00DE           ;     unsigned int i;
 00DE           ;     unsigned int TempInt;
 00DE           ;     for (i=0;i<PageByte;i+=2)
 00DE 6627              clr R22
 00E0 7727              clr R23
 00E2 1AC0              rjmp L35
 00E4           L32:
 00E4                   .dbline 138
 00E4                   .dbline 139
 00E4 80E0              ldi R24,<_PageBuffer
 00E6 90E0              ldi R25,>_PageBuffer
 00E8 E62F              mov R30,R22
 00EA F72F              mov R31,R23
 00EC 3196              adiw R30,1
 00EE E80F              add R30,R24
 00F0 F91F              adc R31,R25
 00F2 2080              ldd R2,z+0
 00F4 3324              clr R3
 00F6 322C              mov R3,R2
 00F8 2224              clr R2
 00FA E62F              mov R30,R22
 00FC F72F              mov R31,R23
 00FE E80F              add R30,R24
 0100 F91F              adc R31,R25
 0102 4081              ldd R20,z+0
 0104 5527              clr R21
 0106 420D              add R20,R2
 0108 531D              adc R21,R3
 010A                   .dbline 140
 010A 262F              mov R18,R22
 010C 372F              mov R19,R23
 010E 042F              mov R16,R20
 0110 152F              mov R17,R21
 0112 00D0              rcall _fill_temp_buffer
 0114                   .dbline 141
 0114           L33:
 0114                   .dbline 137
 0114 6E5F              subi R22,254  ; offset = 2
 0116 7F4F              sbci R23,255
 0118           L35:
 0118                   .dbline 137
 0118 6038              cpi R22,128
 011A E0E0              ldi R30,0
 011C 7E07              cpc R23,R30
 011E 10F3              brlo L32
 0120                   .dbline 142
 0120           ;       {
 0120           ;          TempInt=PageBuffer[i]+(PageBuffer[i+1]<<8);
 0120           ;          fill_temp_buffer(TempInt,i);    //call asm routine.
 0120           ;       } 
 0120           ;     write_page(PageAddress,0x03);       //擦除页
 0120 23E0              ldi R18,3
 0122 00910000          lds R16,_PageAddress
 0126 10910100          lds R17,_PageAddress+1
 012A 00D0              rcall _write_page
 012C                   .dbline 143
 012C           ;     write_page(PageAddress,0x05);       //写页数据
 012C 25E0              ldi R18,5
 012E 00910000          lds R16,_PageAddress
 0132 10910100          lds R17,_PageAddress+1
 0136 00D0              rcall _write_page
 0138                   .dbline 145
 0138           ;    
 0138           ;     enableRWW();
 0138 00D0              rcall _enableRWW
 013A                   .dbline -2
 013A                   .dbline 146
 013A           ;   }
 013A           L31:
 013A 00D0              rcall pop_gset2
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbsym r TempInt 20 i
 013E                   .dbsym r i 22 i
 013E                   .dbend
 013E                   .dbfunc e CheckFlash _CheckFlash fc
 013E           ;       TempInt2 -> R20,R21
 013E           ;        TempInt -> R22,R23
 013E           ;              i -> R10
                        .even
 013E           _CheckFlash::
 013E 00D0              rcall push_gset3
 0140                   .dbline -1
 0140                   .dbline 151
 0140           ; 
 0140           ; /*****************************************************************************/
 0140           ; 
 0140           ; char CheckFlash(void)
 0140           ;   {
 0140                   .dbline 156
 0140           ;     unsigned char i;                                                  
 0140           ;     unsigned int TempInt;
 0140           ;     unsigned int TempInt2;
 0140           ; 
 0140           ;     for (i=0;i<PageByte;i+=2)
 0140 AA24              clr R10
 0142 28C0              rjmp L40
 0144           L37:
 0144                   .dbline 157
 0144           ;       {
 0144                   .dbline 158
 0144           ;          TempInt = read_program_memory(PageAddress + i,0x00);
 0144 2227              clr R18
 0146 2A2C              mov R2,R10
 0148 3324              clr R3
 014A 00910000          lds R16,_PageAddress
 014E 10910100          lds R17,_PageAddress+1
 0152 020D              add R16,R2
 0154 131D              adc R17,R3
 0156 00D0              rcall _read_program_memory
 0158 602F              mov R22,R16
 015A 712F              mov R23,R17
 015C                   .dbline 159
 015C           ;          TempInt2 = PageBuffer[i] +(PageBuffer[i+1]<<8);
 015C 80E0              ldi R24,<_PageBuffer+1
 015E 90E0              ldi R25,>_PageBuffer+1
 0160 EA2D              mov R30,R10
 0162 FF27              clr R31
 0164 E80F              add R30,R24
 0166 F91F              adc R31,R25
 0168 2080              ldd R2,z+0
 016A 3324              clr R3
 016C 322C              mov R3,R2
 016E 2224              clr R2
 0170 80E0              ldi R24,<_PageBuffer
 0172 90E0              ldi R25,>_PageBuffer
 0174 EA2D              mov R30,R10
 0176 FF27              clr R31
 0178 E80F              add R30,R24
 017A F91F              adc R31,R25
 017C 4081              ldd R20,z+0
 017E 5527              clr R21
 0180 420D              add R20,R2
 0182 531D              adc R21,R3
 0184                   .dbline 160
 0184           ;          if (TempInt != TempInt2)
 0184 0417              cp R16,R20
 0186 1507              cpc R17,R21
 0188 11F0              breq L42
 018A                   .dbline 161
 018A           ;            return 0;
 018A 0027              clr R16
 018C 07C0              rjmp L36
 018E           L42:
 018E                   .dbline 162
 018E           L38:
 018E                   .dbline 156
 018E 8A2D              mov R24,R10
 0190 8E5F              subi R24,254    ; addi 2
 0192 A82E              mov R10,R24
 0194           L40:
 0194                   .dbline 156
 0194 8A2D              mov R24,R10
 0196 8038              cpi R24,128
 0198 A8F2              brlo L37
 019A                   .dbline 163
 019A           ;       } 
 019A           ;     return 1;
 019A 01E0              ldi R16,1
 019C                   .dbline -2
 019C           L36:
 019C 00D0              rcall pop_gset3
 019E                   .dbline 0 ; func end
 019E 0895              ret
 01A0                   .dbsym r TempInt2 20 i
 01A0                   .dbsym r TempInt 22 i
 01A0                   .dbsym r i 10 c
 01A0                   .dbend
 01A0                   .dbfunc e IsChar _IsChar fc
                        .even
 01A0           _IsChar::
 01A0                   .dbline -1
 01A0                   .dbline 169
 01A0           ;   }
 01A0           ; /*****************************************************************************/
 01A0           ; /* Serial Port Code                                                                                                */
 01A0           ; /*****************************************************************************/
 01A0           ; unsigned char IsChar(void)
 01A0           ; {
 01A0                   .dbline 170
 01A0           ;    if(UCSRA & 0x80)
 01A0 5F9B              sbis 0xb,7
 01A2 02C0              rjmp L45
 01A4                   .dbline 171
 01A4           ;      return 1;
 01A4 01E0              ldi R16,1
 01A6 01C0              rjmp L44
 01A8           L45:
 01A8                   .dbline 173
 01A8           ;    else 
 01A8           ;      return 0;         
 01A8 0027              clr R16
 01AA                   .dbline -2
 01AA           L44:
 01AA                   .dbline 0 ; func end
 01AA 0895              ret
 01AC                   .dbend
 01AC                   .dbfunc e RecChar _RecChar fc
                        .even
 01AC           _RecChar::
 01AC                   .dbline -1
 01AC                   .dbline 178
 01AC           ; }
 01AC           ; /*****************************************************************************/
 01AC           ; /*            字符输入函数             */     
 01AC           ; unsigned char RecChar(void)
 01AC           ;   {
 01AC           L48:
 01AC                   .dbline 179
 01AC           L49:
 01AC                   .dbline 179
 01AC           ;     while(!(UCSRA & 0x80));
 01AC 5F9B              sbis 0xb,7
 01AE FECF              rjmp L48
 01B0                   .dbline 180
 01B0           ;     return UDR;
 01B0 0CB1              in R16,0xc
 01B2                   .dbline -2
 01B2           L47:
 01B2                   .dbline 0 ; func end
 01B2 0895              ret
 01B4                   .dbend
 01B4                   .dbfunc e SendChar _SendChar fV
 01B4           ;              c -> R16
                        .even
 01B4           _SendChar::
 01B4                   .dbline -1
 01B4                   .dbline 184
 01B4           ;   }           
 01B4           ; /*****************************************************************************/

⌨️ 快捷键说明

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