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

📄 main.lis

📁 本源码为C语言环境的ATMAGE8的BootLoader开发程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 009A 2080              ldd R2,z+0
 009C A20C              add R10,R2
 009E                   .dbline 149
 009E           ;       }
 009E           L15:
 009E                   .dbline 145
 009E 4395              inc R20
 00A0           L17:
 00A0                   .dbline 145
 00A0 4034              cpi R20,64
 00A2 70F3              brlo L14
 00A4           X5:
 00A4                   .dbline 151
 00A4           ;                  
 00A4           ;     CheckSum = RecChar(); 
 00A4 60D0              rcall _RecChar
 00A6 E02E              mov R14,R16
 00A8 CE2C              mov R12,R14
 00AA                   .dbline 152
 00AA           ;     if (LocalCheckSum == CheckSum) return 1;
 00AA A016              cp R10,R16
 00AC 11F4              brne L18
 00AE           X6:
 00AE                   .dbline 152
 00AE 01E0              ldi R16,1
 00B0 01C0              rjmp L11
 00B2           L18:
 00B2                   .dbline 153
 00B2           ;     else return 0;
 00B2 0027              clr R16
 00B4                   .dbline -2
 00B4           L11:
 00B4                   .dbline 0 ; func end
 00B4 00C0              rjmp pop_xgset30FC
 00B6                   .dbsym r CheckSum 12 c
 00B6                   .dbsym r AddL 14 c
 00B6                   .dbsym r AddH 20 c
 00B6                   .dbsym r LocalCheckSum 10 c
 00B6                   .dbsym r i 20 c
 00B6                   .dbend
 00B6                   .dbfunc e WriteFlash _WriteFlash fV
 00B6           ;        TempInt -> R10,R11
 00B6           ;              i -> R20,R21
                        .even
 00B6           _WriteFlash::
 00B6 00D0              rcall push_xgset300C
 00B8                   .dbline -1
 00B8                   .dbline 158
 00B8           ;   }
 00B8           ; 
 00B8           ; /*****************************************************************************/
 00B8           ; void WriteFlash(void)
 00B8           ;   {
 00B8                   .dbline 162
 00B8           ;     unsigned int i;
 00B8           ;     unsigned int TempInt;
 00B8           ; 
 00B8           ;     for (i=0;i<PageByte;i+=2)
 00B8 4427              clr R20
 00BA 5527              clr R21
 00BC 16C0              rjmp L24
 00BE           L21:
 00BE                   .dbline 163
 00BE           ;       {
 00BE                   .dbline 164
 00BE           ;       TempInt=PageBuffer[i]+(PageBuffer[i+1]<<8);
 00BE 80E0              ldi R24,<_PageBuffer
 00C0 90E0              ldi R25,>_PageBuffer
 00C2 FA01              movw R30,R20
 00C4 3196              adiw R30,1
 00C6 E80F              add R30,R24
 00C8 F91F              adc R31,R25
 00CA 2080              ldd R2,z+0
 00CC 3324              clr R3
 00CE 322C              mov R3,R2
 00D0 2224              clr R2
 00D2 FA01              movw R30,R20
 00D4 E80F              add R30,R24
 00D6 F91F              adc R31,R25
 00D8 A080              ldd R10,z+0
 00DA BB24              clr R11
 00DC A20C              add R10,R2
 00DE B31C              adc R11,R3
 00E0                   .dbline 165
 00E0           ;       fill_temp_buffer(TempInt,i);    //call asm routine.
 00E0 9A01              movw R18,R20
 00E2 8501              movw R16,R10
 00E4 00D0              rcall _fill_temp_buffer
 00E6                   .dbline 166
 00E6           ;       }
 00E6           L22:
 00E6                   .dbline 162
 00E6 4E5F              subi R20,254  ; offset = 2
 00E8 5F4F              sbci R21,255
 00EA           L24:
 00EA                   .dbline 162
 00EA 4034              cpi R20,64
 00EC E0E0              ldi R30,0
 00EE 5E07              cpc R21,R30
 00F0 30F3              brlo L21
 00F2           X7:
 00F2                   .dbline 168
 00F2           ;       
 00F2           ;     write_page(PageAddress,0x03);       //擦除页
 00F2 23E0              ldi R18,3
 00F4 00910000          lds R16,_PageAddress
 00F8 10910100          lds R17,_PageAddress+1
 00FC 00D0              rcall _write_page
 00FE                   .dbline 169
 00FE           ;     write_page(PageAddress,0x05);       //写页数据
 00FE 25E0              ldi R18,5
 0100 00910000          lds R16,_PageAddress
 0104 10910100          lds R17,_PageAddress+1
 0108 00D0              rcall _write_page
 010A                   .dbline 171
 010A           ;    
 010A           ;     enableRWW();
 010A 00D0              rcall _enableRWW
 010C                   .dbline -2
 010C           L20:
 010C                   .dbline 0 ; func end
 010C 00C0              rjmp pop_xgset300C
 010E                   .dbsym r TempInt 10 i
 010E                   .dbsym r i 20 i
 010E                   .dbend
 010E                   .dbfunc e CheckFlash _CheckFlash fc
 010E           ;       TempInt2 -> R12,R13
 010E           ;        TempInt -> R10,R11
 010E           ;              i -> R20
                        .even
 010E           _CheckFlash::
 010E 00D0              rcall push_xgset303C
 0110                   .dbline -1
 0110                   .dbline 177
 0110           ;   }
 0110           ; 
 0110           ; /*****************************************************************************/
 0110           ; 
 0110           ; char CheckFlash(void)
 0110           ;   {
 0110                   .dbline 182
 0110           ;     unsigned char i;                                                  
 0110           ;     unsigned int TempInt;
 0110           ;     unsigned int TempInt2;
 0110           ; 
 0110           ;     for (i=0;i<PageByte;i+=2)
 0110 4427              clr R20
 0112 25C0              rjmp L29
 0114           L26:
 0114                   .dbline 183
 0114           ;       {
 0114                   .dbline 184
 0114           ;       TempInt = read_program_memory(PageAddress + i,0x00);
 0114 2227              clr R18
 0116 242E              mov R2,R20
 0118 3324              clr R3
 011A 00910000          lds R16,_PageAddress
 011E 10910100          lds R17,_PageAddress+1
 0122 020D              add R16,R2
 0124 131D              adc R17,R3
 0126 00D0              rcall _read_program_memory
 0128 5801              movw R10,R16
 012A                   .dbline 185
 012A           ;       TempInt2 = PageBuffer[i] +(PageBuffer[i+1]<<8);
 012A 80E0              ldi R24,<_PageBuffer+1
 012C 90E0              ldi R25,>_PageBuffer+1
 012E E42F              mov R30,R20
 0130 FF27              clr R31
 0132 E80F              add R30,R24
 0134 F91F              adc R31,R25
 0136 2080              ldd R2,z+0
 0138 3324              clr R3
 013A 322C              mov R3,R2
 013C 2224              clr R2
 013E 80E0              ldi R24,<_PageBuffer
 0140 90E0              ldi R25,>_PageBuffer
 0142 E42F              mov R30,R20
 0144 FF27              clr R31
 0146 E80F              add R30,R24
 0148 F91F              adc R31,R25
 014A C080              ldd R12,z+0
 014C DD24              clr R13
 014E C20C              add R12,R2
 0150 D31C              adc R13,R3
 0152                   .dbline 186
 0152           ;       if (TempInt != TempInt2) return 0;
 0152 0C15              cp R16,R12
 0154 1D05              cpc R17,R13
 0156 11F0              breq L31
 0158           X8:
 0158                   .dbline 186
 0158 0027              clr R16
 015A 04C0              rjmp L25
 015C           L31:
 015C                   .dbline 187
 015C           ;       }
 015C           L27:
 015C                   .dbline 182
 015C 4E5F              subi R20,254    ; addi 2
 015E           L29:
 015E                   .dbline 182
 015E 4034              cpi R20,64
 0160 C8F2              brlo L26
 0162           X9:
 0162                   .dbline 188
 0162           ;     return 1;
 0162 01E0              ldi R16,1
 0164                   .dbline -2
 0164           L25:
 0164                   .dbline 0 ; func end
 0164 00C0              rjmp pop_xgset303C
 0166                   .dbsym r TempInt2 12 i
 0166                   .dbsym r TempInt 10 i
 0166                   .dbsym r i 20 c
 0166                   .dbend
 0166                   .dbfunc e RecChar _RecChar fc
                        .even
 0166           _RecChar::
 0166                   .dbline -1
 0166                   .dbline 194
 0166           ;   }
 0166           ; 
 0166           ; /*****************************************************************************/
 0166           ; /*            字符输入函数             */     
 0166           ; unsigned char RecChar(void)
 0166           ;   {
 0166           L34:
 0166                   .dbline 195
 0166           ;      while(!(UCSRA & 0x80));
 0166           L35:
 0166                   .dbline 195
 0166 5F9B              sbis 0xb,7
 0168 FECF              rjmp L34
 016A           X10:
 016A                   .dbline 196
 016A           ;      return UDR;
 016A 0CB1              in R16,0xc
 016C                   .dbline -2
 016C           L33:
 016C                   .dbline 0 ; func end
 016C 0895              ret
 016E                   .dbend
 016E                   .dbfunc e SendChar _SendChar fV
 016E           ;              c -> R16
                        .even
 016E           _SendChar::
 016E                   .dbline -1
 016E                   .dbline 200
 016E           ;   }           
 016E           ; /*****************************************************************************/
 016E           ; void SendChar(unsigned char c)
 016E           ;   {    
 016E           L38:
 016E                   .dbline 201
 016E           ;     while (!(UCSRA&(1<<UDRE)));
 016E           L39:
 016E                   .dbline 201
 016E 5D9B              sbis 0xb,5
 0170 FECF              rjmp L38
 0172           X11:
 0172                   .dbline 202
 0172           ;     UDR=c;
 0172 0CB9              out 0xc,R16
 0174                   .dbline -2
 0174           L37:
 0174                   .dbline 0 ; func end
 0174 0895              ret
 0176                   .dbsym r c 16 c
 0176                   .dbend
 0176                   .dbfunc e delay _delay fV
 0176           ;              i -> R16,R17
                        .even
 0176           _delay::
 0176                   .dbline -1
 0176                   .dbline 205
 0176           ;   }
 0176           ; void delay(void)  
 0176           ;   {
 0176                   .dbline 207
 0176           ;     unsigned int i;
 0176           ;     for (i=0;i<65530;i++);
 0176 0027              clr R16
 0178 1127              clr R17

⌨️ 快捷键说明

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