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