📄 at45db021.lis
字号:
0206 3DDF rcall _SPI_Send8BitData
0208 L45:
0208 .dbline 154
0208 4F5F subi R20,255 ; offset = 1
020A 5F4F sbci R21,255
020C L47:
020C .dbline 154
020C 4A15 cp R20,R10
020E 5B05 cpc R21,R11
0210 B0F3 brlo L44
0212 .dbline 156
0212 ; SPI_Send8BitData(write_data[i]); //write data
0212 ; Delay(100);
0212 04E6 ldi R16,100
0214 10E0 ldi R17,0
0216 00D0 rcall _Delay
0218 .dbline 157
0218 ; SPI_End();//disable spi
0218 22DF rcall _SPI_End
021A .dbline -2
021A L38:
021A 00D0 rcall pop_gset3
021C .dbline 0 ; func end
021C 0895 ret
021E .dbsym r i 20 i
021E .dbsym l Buff_add 8 i
021E .dbsym l BufferSelect 6 c
021E .dbsym r datalength 10 i
021E .dbsym r write_data 22 pc
021E .dbend
021E .dbfunc e WriteToMemory _WriteToMemory fV
021E ; WriteFlag -> R22
021E ; Page_Add -> R20,R21
.even
021E _WriteToMemory::
021E 00D0 rcall push_gset2
0220 622F mov R22,R18
0222 A801 movw R20,R16
0224 .dbline -1
0224 .dbline 162
0224 ; }
0224 ;
0224 ;
0224 ; void WriteToMemory(unsigned int Page_Add,unsigned char WriteFlag)
0224 ; {
0224 .dbline 164
0224 ;
0224 ; SPI_Start();//enable spi
0224 0BDF rcall _SPI_Start
0226 .dbline 165
0226 ; switch(WriteFlag)
0226 7727 clr R23
0228 6338 cpi R22,131
022A E0E0 ldi R30,0
022C 7E07 cpc R23,R30
022E 69F0 breq L52
0230 6638 cpi R22,134
0232 E0E0 ldi R30,0
0234 7E07 cpc R23,R30
0236 61F0 breq L53
0238 6838 cpi R22,136
023A E0E0 ldi R30,0
023C 7E07 cpc R23,R30
023E 59F0 breq L54
0240 6938 cpi R22,137
0242 E0E0 ldi R30,0
0244 7E07 cpc R23,R30
0246 51F0 breq L55
0248 0BC0 rjmp L50
024A X2:
024A .dbline 166
024A ; {case B1_TO_MM_PAGE_PROG_WITH_ERASE:
024A L52:
024A .dbline 167
024A ; SPI_Send8BitData(B1_TO_MM_PAGE_PROG_WITH_ERASE );
024A 03E8 ldi R16,131
024C 1ADF rcall _SPI_Send8BitData
024E .dbline 168
024E ; break;
024E 08C0 rjmp L50
0250 L53:
0250 .dbline 170
0250 ; case B2_TO_MM_PAGE_PROG_WITH_ERASE:
0250 ; SPI_Send8BitData(B2_TO_MM_PAGE_PROG_WITH_ERASE );
0250 06E8 ldi R16,134
0252 17DF rcall _SPI_Send8BitData
0254 .dbline 171
0254 ; break;
0254 05C0 rjmp L50
0256 L54:
0256 .dbline 173
0256 ; case B1_TO_MM_PAGE_PROG_WITHOUT_ERASE:
0256 ; SPI_Send8BitData(B1_TO_MM_PAGE_PROG_WITHOUT_ERASE );
0256 08E8 ldi R16,136
0258 14DF rcall _SPI_Send8BitData
025A .dbline 174
025A ; break;
025A 02C0 rjmp L50
025C L55:
025C .dbline 176
025C ; case B2_TO_MM_PAGE_PROG_WITHOUT_ERASE:
025C ; SPI_Send8BitData(B2_TO_MM_PAGE_PROG_WITHOUT_ERASE );
025C 09E8 ldi R16,137
025E 11DF rcall _SPI_Send8BitData
0260 .dbline 177
0260 ; break;
0260 .dbline 178
0260 ; default:break;
0260 L50:
0260 .dbline 181
0260 ; }
0260 ;
0260 ; SPI_Send8BitData((char)(Page_Add>>7));//send block address MSB PA9 PA8 PA7
0260 27E0 ldi R18,7
0262 30E0 ldi R19,0
0264 8A01 movw R16,R20
0266 00D0 rcall lsr16
0268 0CDF rcall _SPI_Send8BitData
026A .dbline 182
026A ; SPI_Send8BitData((char)(Page_Add<<1));//send block address LSB PA6 ... PA0
026A 042F mov R16,R20
026C 000F lsl R16
026E 111F rol R17
0270 08DF rcall _SPI_Send8BitData
0272 .dbline 183
0272 ; SPI_Send8BitData(0x00); //do not care
0272 0027 clr R16
0274 06DF rcall _SPI_Send8BitData
0276 .dbline 184
0276 ; SPI_End();//disable spi
0276 F3DE rcall _SPI_End
0278 .dbline 185
0278 ; Delay(100);
0278 04E6 ldi R16,100
027A 10E0 ldi R17,0
027C 00D0 rcall _Delay
027E .dbline -2
027E L48:
027E 00D0 rcall pop_gset2
0280 .dbline 0 ; func end
0280 0895 ret
0282 .dbsym r WriteFlag 22 c
0282 .dbsym r Page_Add 20 i
0282 .dbend
0282 .dbfunc e ReadBuffer _ReadBuffer fV
0282 ; i -> R20,R21
0282 ; Buff_add -> y+8
0282 ; BufferSelect -> y+6
0282 ; datalength -> R10,R11
0282 ; Read_data -> R22,R23
.even
0282 _ReadBuffer::
0282 00D0 rcall push_gset3
0284 5901 movw R10,R18
0286 B801 movw R22,R16
0288 .dbline -1
0288 .dbline 189
0288 ;
0288 ; }
0288 ; void ReadBuffer(unsigned char * Read_data,unsigned int datalength,unsigned char BufferSelect,unsigned int Buff_add)
0288 ; {
0288 .dbline 191
0288 ; unsigned int i;
0288 ; SPI_Start();//enable spi
0288 D9DE rcall _SPI_Start
028A .dbline 192
028A ; switch( BufferSelect )
028A 4E81 ldd R20,y+6
028C 5527 clr R21
028E 4030 cpi R20,0
0290 4507 cpc R20,R21
0292 29F0 breq L60
0294 X3:
0294 4330 cpi R20,3
0296 E0E0 ldi R30,0
0298 5E07 cpc R21,R30
029A 21F0 breq L61
029C 22C0 rjmp L56
029E X4:
029E .dbline 193
029E L60:
029E .dbline 193
029E ; {case BUFFER_1: SPI_Send8BitData(BUFFER_1_READ );break;
029E 04E5 ldi R16,84
02A0 F0DE rcall _SPI_Send8BitData
02A2 .dbline 193
02A2 02C0 rjmp L58
02A4 L61:
02A4 .dbline 194
02A4 ; case BUFFER_2: SPI_Send8BitData(BUFFER_2_READ );break;
02A4 06E5 ldi R16,86
02A6 EDDE rcall _SPI_Send8BitData
02A8 .dbline 194
02A8 .dbline 195
02A8 ; default: return;
02A8 L58:
02A8 .dbline 197
02A8 ; }
02A8 ; SPI_Send8BitData(0x00); //do not care
02A8 0027 clr R16
02AA EBDE rcall _SPI_Send8BitData
02AC .dbline 198
02AC ; SPI_Send8BitData((char)(Buff_add>>8));//send block address MSB BA8
02AC 0885 ldd R16,y+8
02AE 1985 ldd R17,y+9
02B0 012F mov R16,R17
02B2 1127 clr R17
02B4 E6DE rcall _SPI_Send8BitData
02B6 .dbline 199
02B6 ; SPI_Send8BitData((char)(Buff_add));//send block address LSB BA7 ... BA0
02B6 0885 ldd R16,y+8
02B8 1985 ldd R17,y+9
02BA E3DE rcall _SPI_Send8BitData
02BC .dbline 200
02BC ; SPI_Send8BitData(0x00); //do not care
02BC 0027 clr R16
02BE E1DE rcall _SPI_Send8BitData
02C0 .dbline 201
02C0 ; for(i=0;i<datalength;i++)
02C0 4427 clr R20
02C2 5527 clr R21
02C4 07C0 rjmp L65
02C6 L62:
02C6 .dbline 202
02C6 01DF rcall _SPI_Receive8BitData
02C8 FA01 movw R30,R20
02CA E60F add R30,R22
02CC F71F adc R31,R23
02CE 0083 std z+0,R16
02D0 L63:
02D0 .dbline 201
02D0 4F5F subi R20,255 ; offset = 1
02D2 5F4F sbci R21,255
02D4 L65:
02D4 .dbline 201
02D4 4A15 cp R20,R10
02D6 5B05 cpc R21,R11
02D8 B0F3 brlo L62
02DA .dbline 204
02DA ; Read_data[i]=SPI_Receive8BitData();
02DA ;
02DA ; SPI_End();//disable spi
02DA C1DE rcall _SPI_End
02DC .dbline 205
02DC ; Delay(100);
02DC 04E6 ldi R16,100
02DE 10E0 ldi R17,0
02E0 00D0 rcall _Delay
02E2 .dbline -2
02E2 L56:
02E2 00D0 rcall pop_gset3
02E4 .dbline 0 ; func end
02E4 0895 ret
02E6 .dbsym r i 20 i
02E6 .dbsym l Buff_add 8 i
02E6 .dbsym l BufferSelect 6 c
02E6 .dbsym r datalength 10 i
02E6 .dbsym r Read_data 22 pc
02E6 .dbend
02E6 .dbfunc e MemoryToBuffer _MemoryToBuffer fV
02E6 ; i -> <dead>
02E6 ; BufferSelect -> R22
02E6 ; Page_add -> R20,R21
.even
02E6 _MemoryToBuffer::
02E6 00D0 rcall push_gset2
02E8 622F mov R22,R18
02EA A801 movw R20,R16
02EC .dbline -1
02EC .dbline 209
02EC ; }
02EC ;
02EC ; void MemoryToBuffer(unsigned int Page_add,unsigned char BufferSelect )
02EC ; {
02EC .dbline 211
02EC ; unsigned int i;
02EC ; SPI_Start();//enable spi
02EC A7DE rcall _SPI_Start
02EE .dbline 212
02EE ; switch( BufferSelect )
02EE 7727 clr R23
02F0 6030 cpi R22,0
02F2 6707 cpc R22,R23
02F4 29F0 breq L70
02F6 X5:
02F6 6330 cpi R22,3
02F8 E0E0 ldi R30,0
02FA 7E07 cpc R23,R30
02FC 21F0 breq L71
02FE 14C0 rjmp L66
0300 X6:
0300 .dbline 213
0300 L70:
0300 .dbline 213
0300 ; {case BUFFER_1: SPI_Send8BitData(MM_PAGE_TO_B1_XFER );break;
0300 03E5 ldi R16,83
0302 BFDE rcall _SPI_Send8BitData
0304 .dbline 213
0304 02C0 rjmp L68
0306 L71:
0306 .dbline 214
0306 ; case BUFFER_2: SPI_Send8BitData(MM_PAGE_TO_B2_XFER );break;
0306 05E5 ldi R16,85
0308 BCDE rcall _SPI_Send8BitData
030A .dbline 214
030A .dbline 215
030A ; default: return;
030A L68:
030A .dbline 217
030A ; }
030A ; SPI_Send8BitData((char)(Page_add >> 7));
030A 27E0 ldi R18,7
030C 30E0 ldi R19,0
030E 8A01 movw R16,R20
0310 00D0 rcall lsr16
0312 B7DE rcall _SPI_Send8BitData
0314 .dbline 218
0314 ; SPI_Send8BitData((char)(Page_add << 1));
0314 042F mov R16,R20
0316 000F lsl R16
0318 111F rol R17
031A B3DE rcall _SPI_Send8BitData
031C .dbline 219
031C ; SPI_Send8BitData(0x00); //do not care
031C 0027 clr R16
031E B1DE rcall _SPI_Send8BitData
0320 .dbline 220
0320 ; SPI_End();//disable spi
0320 9EDE rcall _SPI_End
0322 .dbline 221
0322 ; Delay(100);
0322 04E6 ldi R16,100
0324 10E0 ldi R17,0
0326 00D0 rcall _Delay
0328 .dbline -2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -