📄 flash.lis
字号:
0134 .dbline 85
0134 ; Send_abyte(table[address2/10]);
0134 2AE0 ldi R18,10
0136 30E0 ldi R19,0
0138 0A2D mov R16,R10
013A 1127 clr R17
013C 00D0 rcall div16s
013E F801 movw R30,R16
0140 80E0 ldi R24,<_table
0142 90E0 ldi R25,>_table
0144 E80F add R30,R24
0146 F91F adc R31,R25
0148 0081 ldd R16,z+0
014A 1127 clr R17
014C 00D0 rcall _Send_abyte
014E .dbline 86
014E ; Send_abyte(table[address2%10]);
014E 2AE0 ldi R18,10
0150 30E0 ldi R19,0
0152 0A2D mov R16,R10
0154 1127 clr R17
0156 00D0 rcall mod16s
0158 F801 movw R30,R16
015A 80E0 ldi R24,<_table
015C 90E0 ldi R25,>_table
015E E80F add R30,R24
0160 F91F adc R31,R25
0162 0081 ldd R16,z+0
0164 1127 clr R17
0166 00D0 rcall _Send_abyte
0168 .dbline 87
0168 ; Prints(" completed...",1);
0168 21E0 ldi R18,1
016A 30E0 ldi R19,0
016C 00E0 ldi R16,<L16
016E 10E0 ldi R17,>L16
0170 00D0 rcall _Prints
0172 .dbline -2
0172 L11:
0172 00D0 rcall pop_gset3
0174 2496 adiw R28,4
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r address0 20 c
0178 .dbsym r address1 22 c
0178 .dbsym r address2 10 c
0178 .dbsym l address 6 l
0178 .dbend
0178 .dbfunc e Bulk_Erase _Bulk_Erase fV
.even
0178 _Bulk_Erase::
0178 .dbline -1
0178 .dbline 94
0178 ; }
0178 ;
0178 ; /***************************************************************************************
0178 ; 写入片擦除使能命令
0178 ; *****************************************************************************************/
0178 ; void Bulk_Erase(void)
0178 ; {
0178 .dbline 95
0178 ; WriteEN();
0178 A3DF rcall _WriteEN
017A L18:
017A .dbline 96
017A L19:
017A .dbline 96
017A ; while((Read_RDSR())&0x01);
017A 73D0 rcall _Read_RDSR
017C 00FD sbrc R16,0
017E FDCF rjmp L18
0180 .dbline 97
0180 ; CS_0;
0180 C298 cbi 0x18,2
0182 .dbline 98
0182 ; Spi_MT(0xc7);
0182 07EC ldi R16,199
0184 00D0 rcall _Spi_MT
0186 .dbline 99
0186 ; CS_1;
0186 C29A sbi 0x18,2
0188 .dbline 100
0188 ; Prints("Bulk Erawe completed...",1);
0188 21E0 ldi R18,1
018A 30E0 ldi R19,0
018C 00E0 ldi R16,<L21
018E 10E0 ldi R17,>L21
0190 00D0 rcall _Prints
0192 .dbline -2
0192 L17:
0192 .dbline 0 ; func end
0192 0895 ret
0194 .dbend
0194 .dbfunc e DelayX100ms _DelayX100ms fV
0194 ; i -> y+0
0194 ; x -> y+12
.even
0194 _DelayX100ms::
0194 00D0 rcall push_arg4
0196 00D0 rcall push_gset2
0198 2897 sbiw R28,8
019A .dbline -1
019A .dbline 107
019A ; }
019A ;
019A ; /***************************************************************************************
019A ; 延时X/100ms
019A ; *****************************************************************************************/
019A ; void DelayX100ms(uint32 x)
019A ; {
019A 34C0 rjmp L24
019C L23:
019C .dbline 110
019C ; uint32 i;
019C ; while(x--)
019C ; {
019C .dbline 111
019C ; i=1295;
019C 4FE0 ldi R20,15
019E 55E0 ldi R21,5
01A0 60E0 ldi R22,0
01A2 70E0 ldi R23,0
01A4 FE01 movw R30,R28
01A6 4083 std z+0,R20
01A8 5183 std z+1,R21
01AA 6283 std z+2,R22
01AC 7383 std z+3,R23
01AE L26:
01AE .dbline 112
01AE L27:
01AE .dbline 112
01AE FE01 movw R30,R28
01B0 2080 ldd R2,z+0
01B2 3180 ldd R3,z+1
01B4 4280 ldd R4,z+2
01B6 5380 ldd R5,z+3
01B8 FE01 movw R30,R28
01BA 2482 std z+4,R2
01BC 3582 std z+5,R3
01BE 4682 std z+6,R4
01C0 5782 std z+7,R5
01C2 41E0 ldi R20,1
01C4 50E0 ldi R21,0
01C6 60E0 ldi R22,0
01C8 70E0 ldi R23,0
01CA FE01 movw R30,R28
01CC 2480 ldd R2,z+4
01CE 3580 ldd R3,z+5
01D0 4680 ldd R4,z+6
01D2 5780 ldd R5,z+7
01D4 241A sub R2,R20
01D6 350A sbc R3,R21
01D8 460A sbc R4,R22
01DA 570A sbc R5,R23
01DC FE01 movw R30,R28
01DE 2082 std z+0,R2
01E0 3182 std z+1,R3
01E2 4282 std z+2,R4
01E4 5382 std z+3,R5
01E6 40E0 ldi R20,0
01E8 50E0 ldi R21,0
01EA 60E0 ldi R22,0
01EC 70E0 ldi R23,0
01EE FE01 movw R30,R28
01F0 2480 ldd R2,z+4
01F2 3580 ldd R3,z+5
01F4 4680 ldd R4,z+6
01F6 5780 ldd R5,z+7
01F8 2416 cp R2,R20
01FA 3506 cpc R3,R21
01FC 4606 cpc R4,R22
01FE 5706 cpc R5,R23
0200 09F0 breq X0
0202 D5CF rjmp L26
0204 X0:
0204 .dbline 113
0204 L24:
0204 .dbline 109
0204 FE01 movw R30,R28
0206 2484 ldd R2,z+12
0208 3584 ldd R3,z+13
020A 4684 ldd R4,z+14
020C 5784 ldd R5,z+15
020E FE01 movw R30,R28
0210 2482 std z+4,R2
0212 3582 std z+5,R3
0214 4682 std z+6,R4
0216 5782 std z+7,R5
0218 41E0 ldi R20,1
021A 50E0 ldi R21,0
021C 60E0 ldi R22,0
021E 70E0 ldi R23,0
0220 FE01 movw R30,R28
0222 2480 ldd R2,z+4
0224 3580 ldd R3,z+5
0226 4680 ldd R4,z+6
0228 5780 ldd R5,z+7
022A 241A sub R2,R20
022C 350A sbc R3,R21
022E 460A sbc R4,R22
0230 570A sbc R5,R23
0232 FE01 movw R30,R28
0234 2486 std z+12,R2
0236 3586 std z+13,R3
0238 4686 std z+14,R4
023A 5786 std z+15,R5
023C 40E0 ldi R20,0
023E 50E0 ldi R21,0
0240 60E0 ldi R22,0
0242 70E0 ldi R23,0
0244 FE01 movw R30,R28
0246 2480 ldd R2,z+4
0248 3580 ldd R3,z+5
024A 4680 ldd R4,z+6
024C 5780 ldd R5,z+7
024E 2416 cp R2,R20
0250 3506 cpc R3,R21
0252 4606 cpc R4,R22
0254 5706 cpc R5,R23
0256 09F0 breq X1
0258 A1CF rjmp L23
025A X1:
025A .dbline -2
025A L22:
025A 2896 adiw R28,8
025C 00D0 rcall pop_gset2
025E 2496 adiw R28,4
0260 .dbline 0 ; func end
0260 0895 ret
0262 .dbsym l i 0 l
0262 .dbsym l x 12 l
0262 .dbend
0262 .dbfunc e Read_RDSR _Read_RDSR fc
0262 ; read_data -> R20
.even
0262 _Read_RDSR::
0262 00D0 rcall push_gset1
0264 .dbline -1
0264 .dbline 120
0264 ; while(i--);
0264 ; }
0264 ; }
0264 ;
0264 ; /***************************************************************************************
0264 ; 读取状态寄存器。
0264 ; *****************************************************************************************/
0264 ; uint8 Read_RDSR(void)
0264 ; {
0264 .dbline 123
0264 ; uint8 read_data;
0264 ; //Prints("Run Read_RDSR()...",1);
0264 ; CS_0;
0264 C298 cbi 0x18,2
0266 .dbline 124
0266 ; Spi_MT(0x05);
0266 05E0 ldi R16,5
0268 00D0 rcall _Spi_MT
026A .dbline 126
026A ; //Prints("Run Spi_MT()...",1);
026A ; read_data=Spi_MR();
026A 00D0 rcall _Spi_MR
026C 402F mov R20,R16
026E .dbline 128
026E ; //Prints("Run Spi_MR()...",1);
026E ; CS_1;
026E C29A sbi 0x18,2
0270 .dbline 129
0270 ; return(read_data);
0270 .dbline -2
0270 L29:
0270 00D0 rcall pop_gset1
0272 .dbline 0 ; func end
0272 0895 ret
0274 .dbsym r read_data 20 c
0274 .dbend
0274 .dbfunc e Write_string _Write_string fV
0274 ; address2 -> R20
0274 ; address0 -> R22
0274 ; address1 -> R10
0274 ; i -> R12,R13
0274 ; n -> R14,R15
0274 ; address -> y+12
0274 ; string -> y+10
.even
0274 _Write_string::
0274 00D0 rcall push_arg4
0276 00D0 rcall push_gset5
0278 E888 ldd R14,y+16
027A F988 ldd R15,y+17
027C .dbline -1
027C .dbline 135
027C ; }
027C ; /**************************************************************
027C ; 写入一串字节。
027C ; ****************************************************************/
027C ; void Write_string(uint8 *string,uint32 address,uint16 n)
027C ; {
027C .dbline 138
027C ; uint16 i;
027C ; uint8 address2,address1,address0;
027C ; address2=(uint8)(address>>16);
027C FE01 movw R30,R28
027E 2484 ldd R2,z+12
0280 3584 ldd R3,z+13
0282 4684 ldd R4,z+14
0284 5784 ldd R5,z+15
0286 1201 movw R2,R4
0288 4424 clr R4
028A 5524 clr R5
028C 422D mov R20,R2
028E .dbline 139
028E ; address1=(uint8)(address>>8);
028E 88E0 ldi R24,8
0290 90E0 ldi R25,0
0292 FE01 movw R30,R28
0294 2484 ldd R2,z+12
0296 3584 ldd R3,z+13
0298 4684 ldd R4,z+14
029A 5784 ldd R5,z+15
029C 8A93 st -y,R24
029E 8101 movw R16,R2
02A0 9201 movw R18,R4
02A2 00D0 rcall lsr32
02A4 A02E mov R10,R16
02A6 .dbline 140
02A6 ; address0=(uint8)address;
02A6 FE01 movw R30,R28
02A8 2484 ldd R2,z+12
02AA 3584 ldd R3,z+13
02AC 4684 ldd R4,z+14
02AE 5784 ldd R5,z+15
02B0 622D mov R22,R2
02B2 L31:
02B2 .dbline 141
02B2 L32:
02B2 .dbline 141
02B2 ; while((Read_RDSR())&0x01);
02B2 D7DF rcall _Read_RDSR
02B4 00FD sbrc R16,0
02B6 FDCF rjmp L31
02B8 .dbline 142
02B8 ; WriteEN();
02B8 03DF rcall _WriteEN
02BA .dbline 143
02BA ; CS_0;
02BA C298 cbi 0x18,2
02BC .dbline 144
02BC ; Spi_MT(0x02);
02BC 02E0 ldi R16,2
02BE 00D0 rcall _Spi_MT
02C0 .dbline 145
02C0 ; Spi_MT(address2);
02C0 042F mov R16,R20
02C2 00D0 rcall _Spi_MT
02C4 .dbline 146
02C4 ; Spi_MT(address1);
02C4 0A2D mov R16,R10
02C6 00D0 rcall _Spi_MT
02C8 .dbline 147
02C8 ; Spi_MT(address0);
02C8 062F mov R16,R22
02CA 00D0 rcall _Spi_MT
02CC .dbline 148
02CC ; for(i=0;i<n;i++)
02CC CC24 clr R12
02CE DD24 clr R13
02D0 0CC0 rjmp L37
02D2 L34:
02D2 .dbline 149
02D2 .dbline 150
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -