📄 newmain.lis
字号:
034A 7BDF xcall _RecChar
034C 80E0 ldi R24,<_data
034E 90E0 ldi R25,>_data
0350 FB01 movw R30,R22
0352 E80F add R30,R24
0354 F91F adc R31,R25
0356 0083 std z+0,R16
0358 L86:
0358 .dbline 267
0358 6F5F subi R22,255 ; offset = 1
035A 7F4F sbci R23,255
035C .dbline 267
035C 6030 cpi R22,0
035E E1E0 ldi R30,1
0360 7E07 cpc R23,R30
0362 9CF3 brlt L85
0364 .dbline 269
0364 ; data[i]=RecChar();
0364 ; jym=RecChar();
0364 6EDF xcall _RecChar
0366 C02E mov R12,R16
0368 .dbline 270
0368 ; jym1=0;
0368 AA24 clr R10
036A .dbline 271
036A 6627 clr R22
036C 7727 clr R23
036E L89:
036E .dbline 271
036E 80E0 ldi R24,<_data
0370 90E0 ldi R25,>_data
0372 FB01 movw R30,R22
0374 E80F add R30,R24
0376 F91F adc R31,R25
0378 2080 ldd R2,z+0
037A A224 eor R10,R2
037C L90:
037C .dbline 271
037C ; for(i=0;i<256;i++)jym1=jym1^data[i];
037C 6F5F subi R22,255 ; offset = 1
037E 7F4F sbci R23,255
0380 .dbline 271
0380 6030 cpi R22,0
0382 E1E0 ldi R30,1
0384 7E07 cpc R23,R30
0386 9CF3 brlt L89
0388 .dbline 272
0388 ; if(jym!=jym1)
0388 CA14 cp R12,R10
038A 11F0 breq L93
038C .dbline 273
038C ; senderror();
038C AFDF xcall _senderror
038E 28C0 xjmp L94
0390 L93:
0390 .dbline 274
0390 ; else if((lengthbak1==Senddata[3])&&(lengthbak2==Senddata[4]))sendok();
0390 20901500 lds R2,_Senddata+3
0394 30900900 lds R3,_lengthbak1
0398 3214 cp R3,R2
039A 41F4 brne L95
039C 20901600 lds R2,_Senddata+4
03A0 30900800 lds R3,_lengthbak2
03A4 3214 cp R3,R2
03A6 11F4 brne L95
03A8 .dbline 274
03A8 8BDF xcall _sendok
03AA 1AC0 xjmp L96
03AC L95:
03AC .dbline 275
03AC ; else if((Senddata[1]==Senddata[3])&&(Senddata[2]==Senddata[4]))
03AC 20901500 lds R2,_Senddata+3
03B0 30901300 lds R3,_Senddata+1
03B4 3214 cp R3,R2
03B6 59F4 brne L99
03B8 20901600 lds R2,_Senddata+4
03BC 30901400 lds R3,_Senddata+2
03C0 3214 cp R3,R2
03C2 29F4 brne L99
03C4 .dbline 276
03C4 ; {
03C4 .dbline 277
03C4 ; ROK_flag=1;
03C4 81E0 ldi R24,1
03C6 80930100 sts _ROK_flag,R24
03CA .dbline 278
03CA ; flag=1;
03CA 41E0 ldi R20,1
03CC .dbline 279
03CC ; }
03CC 09C0 xjmp L100
03CE L99:
03CE .dbline 280
03CE ; else {lengthbak1=Senddata[3];lengthbak2=Senddata[4];flag=1;}
03CE .dbline 280
03CE 20901500 lds R2,_Senddata+3
03D2 20920900 sts _lengthbak1,R2
03D6 .dbline 280
03D6 20901600 lds R2,_Senddata+4
03DA 20920800 sts _lengthbak2,R2
03DE .dbline 280
03DE 41E0 ldi R20,1
03E0 .dbline 280
03E0 L100:
03E0 L96:
03E0 L94:
03E0 .dbline 281
03E0 ; }
03E0 L80:
03E0 .dbline 283
03E0 L77:
03E0 .dbline 283
03E0 ; // else senderror();
03E0 ; }while(flag==0);
03E0 4423 tst R20
03E2 09F4 brne X4
03E4 9CCF xjmp L76
03E6 X4:
03E6 .dbline -2
03E6 L75:
03E6 0E940000 xcall pop_gset4
03EA .dbline 0 ; func end
03EA 0895 ret
03EC .dbsym r jym 12 c
03EC .dbsym r flag 20 c
03EC .dbsym r jym1 10 c
03EC .dbsym r i 22 I
03EC .dbend
03EC .dbfunc e main _main fV
03EC ; byte_num -> R10,R11
03EC ; page_num -> R12,R13
03EC ; BootFlag -> y+2
03EC ; i -> R10
.even
03EC _main::
03EC 2397 sbiw R28,3
03EE .dbline -1
03EE .dbline 287
03EE ; }
03EE ; //主程序
03EE ; void main(void)
03EE ; {
03EE .dbline 290
03EE ; unsigned char BootFlag,i;
03EE ; int page_num,byte_num;
03EE ; Init_mag128();
03EE 73DE xcall _Init_mag128
03F0 .dbline 291
03F0 ; uart1_init();
03F0 17DF xcall _uart1_init
03F2 .dbline 293
03F2 ; //PORTD&=~(1<<7);//GSM关机
03F2 ; PORTD|=(1<<7);
03F2 979A sbi 0x12,7
03F4 .dbline 294
03F4 ; Init_SPI();
03F4 89DE xcall _Init_SPI
03F6 .dbline 295
03F6 ; df_reset();
03F6 ABDE xcall _df_reset
03F8 .dbline 297
03F8 ;
03F8 ; delay_ms(1000);
03F8 08EE ldi R16,1000
03FA 13E0 ldi R17,3
03FC 8ADE xcall _delay_ms
03FE .dbline 298
03FE ; EEPROM_READ(0x7ff,BootFlag);
03FE 81E0 ldi R24,1
0400 90E0 ldi R25,0
0402 9983 std y+1,R25
0404 8883 std y+0,R24
0406 9E01 movw R18,R28
0408 2E5F subi R18,254 ; offset = 2
040A 3F4F sbci R19,255
040C 0FEF ldi R16,2047
040E 17E0 ldi R17,7
0410 0E940000 xcall _EEPROMReadBytes
0414 .dbline 299
0414 ; delay_ms(2);
0414 02E0 ldi R16,2
0416 10E0 ldi R17,0
0418 7CDE xcall _delay_ms
041A .dbline 300
041A ; if(BootFlag==0)quit();
041A 2A80 ldd R2,y+2
041C 2220 tst R2
041E 11F4 brne L108
0420 .dbline 300
0420 52DE xcall _quit
0422 75C1 xjmp L109
0424 L108:
0424 .dbline 301
0424 ; else if(BootFlag!=1)
0424 8A81 ldd R24,y+2
0426 8130 cpi R24,1
0428 09F4 brne X5
042A 55C0 xjmp L110
042C X5:
042C .dbline 302
042C ; {
042C .dbline 303
042C ; for(i=0;i<12;i++)
042C AA24 clr R10
042E 09C0 xjmp L115
0430 L112:
0430 .dbline 304
0430 08DF xcall _RecChar
0432 80E0 ldi R24,<_data
0434 90E0 ldi R25,>_data
0436 EA2D mov R30,R10
0438 FF27 clr R31
043A E80F add R30,R24
043C F91F adc R31,R25
043E 0083 std z+0,R16
0440 L113:
0440 .dbline 303
0440 A394 inc R10
0442 L115:
0442 .dbline 303
0442 8A2D mov R24,R10
0444 8C30 cpi R24,12
0446 A0F3 brlo L112
0448 .dbline 305
0448 ; data[i]=RecChar();
0448 ; if((data[0]=='B')&&(data[1]=='o'))
0448 80913000 lds R24,_data
044C 8234 cpi R24,66
044E 09F0 breq X6
0450 40C0 xjmp L116
0452 X6:
0452 80913100 lds R24,_data+1
0456 8F36 cpi R24,111
0458 09F0 breq X7
045A 3BC0 xjmp L116
045C X7:
045C .dbline 306
045C ; {
045C .dbline 307
045C ; delay_ms(200);
045C 08EC ldi R16,200
045E 10E0 ldi R17,0
0460 58DE xcall _delay_ms
0462 .dbline 308
0462 ; sendok();
0462 2EDF xcall _sendok
0464 L119:
0464 .dbline 309
0464 ; do{
0464 .dbline 310
0464 ; uart0_rx();
0464 59DF xcall _uart0_rx
0466 .dbline 311
0466 ; write_one_page(); //收到256字节写入一页Flash中
0466 F4DD xcall _write_one_page
0468 .dbline 312
0468 ; address += SPM_PAGESIZE; //Flash页加1
0468 40E0 ldi R20,0
046A 51E0 ldi R21,1
046C 60E0 ldi R22,0
046E 70E0 ldi R23,0
0470 40900200 lds R4,_address+2
0474 50900300 lds R5,_address+2+1
0478 20900000 lds R2,_address
047C 30900100 lds R3,_address+1
0480 240E add R2,R20
0482 351E adc R3,R21
0484 461E adc R4,R22
0486 571E adc R5,R23
0488 30920100 sts _address+1,R3
048C 20920000 sts _address,R2
0490 50920300 sts _address+2+1,R5
0494 40920200 sts _address+2,R4
0498 .dbline 313
0498 ; sendok();
0498 13DF xcall _sendok
049A .dbline 314
049A ; delay_ms(1);
049A 01E0 ldi R16,1
049C 10E0 ldi R17,0
049E 39DE xcall _delay_ms
04A0 .dbline 315
04A0 L120:
04A0 .dbline 315
04A0 ; }while(ROK_flag==0);
04A0 20900100 lds R2,_ROK_flag
04A4 2220 tst R2
04A6 F1F2 breq L119
04A8 .dbline 316
04A8 ; delay_ms(20);
04A8 04E1 ldi R16,20
04AA 10E0 ldi R17,0
04AC 32DE xcall _delay_ms
04AE .dbline 317
04AE ; BootFlag=0;
04AE 2224 clr R2
04B0 2A82 std y+2,R2
04B2 .dbline 318
04B2 ; EEPROM_WRITE(0x7ff,BootFlag);
04B2 81E0 ldi R24,1
04B4 90E0 ldi R25,0
04B6 9983 std y+1,R25
04B8 8883 std y+0,R24
04BA 9E01 movw R18,R28
04BC 2E5F subi R18,254 ; offset = 2
04BE 3F4F sbci R19,255
04C0 0FEF ldi R16,2047
04C2 17E0 ldi R17,7
04C4 0E940000 xcall _EEPROMWriteBytes
04C8 .dbline 319
04C8 ; delay_ms(2000);
04C8 00ED ldi R16,2000
04CA 17E0 ldi R17,7
04CC 22DE xcall _delay_ms
04CE .dbline 320
04CE ; quit();
04CE FBDD xcall _quit
04D0 .dbline 321
04D0 ; }
04D0 1EC1 xjmp L111
04D2 L116:
04D2 .dbline 322
04D2 ; else quit();
04D2 F9DD xcall _quit
04D4 .dbline 323
04D4 ; }
04D4 1CC1 xjmp L111
04D6 L110:
04D6 .dbline 325
04D6 ; else
04D6 ; {
04D6 .dbline 326
04D6 ; page_counter_rd=3849;//128k;
04D6 89E0 ldi R24,3849
04D8 9FE0 ldi R25,15
04DA 90930D00 sts _page_counter_rd+1,R25
04DE 80930C00 sts _page_counter_rd,R24
04E2 .dbline 327
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -