📄 main.lis
字号:
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 + -