📄 at45db021.lis
字号:
00DA A0DF rcall _SPI_SCK
00DC .dbline 85
00DC ; Delay(DELAYTIMER );
00DC 03E0 ldi R16,3
00DE 10E0 ldi R17,0
00E0 00D0 rcall _Delay
00E2 .dbline 86
00E2 ; SPI_SCK(1);
00E2 01E0 ldi R16,1
00E4 9BDF rcall _SPI_SCK
00E6 .dbline 87
00E6 ; Delay(DELAYTIMER );
00E6 03E0 ldi R16,3
00E8 10E0 ldi R17,0
00EA 00D0 rcall _Delay
00EC .dbline 88
00EC ; if(SPI_MISO())
00EC 91DF rcall _SPI_MISO
00EE 0023 tst R16
00F0 09F0 breq L27
00F2 .dbline 89
00F2 ; receivedata|=0x01;
00F2 4160 ori R20,1
00F4 L27:
00F4 .dbline 90
00F4 440F lsl R20
00F6 .dbline 92
00F6 L24:
00F6 .dbline 81
00F6 6395 inc R22
00F8 L26:
00F8 .dbline 81
00F8 6730 cpi R22,7
00FA 58F3 brlo L23
00FC .dbline 93
00FC ; receivedata=receivedata<<1;
00FC ;
00FC ; }
00FC ; Delay(DELAYTIMER );
00FC 03E0 ldi R16,3
00FE 10E0 ldi R17,0
0100 00D0 rcall _Delay
0102 .dbline 94
0102 ; SPI_SCK(0);
0102 0027 clr R16
0104 8BDF rcall _SPI_SCK
0106 .dbline 95
0106 ; Delay(DELAYTIMER );
0106 03E0 ldi R16,3
0108 10E0 ldi R17,0
010A 00D0 rcall _Delay
010C .dbline 96
010C ; SPI_SCK(1);
010C 01E0 ldi R16,1
010E 86DF rcall _SPI_SCK
0110 .dbline 97
0110 ; Delay(DELAYTIMER );
0110 03E0 ldi R16,3
0112 10E0 ldi R17,0
0114 00D0 rcall _Delay
0116 .dbline 98
0116 ; if(SPI_MISO())
0116 7CDF rcall _SPI_MISO
0118 0023 tst R16
011A 09F0 breq L29
011C .dbline 99
011C ; receivedata|=0x01;
011C 4160 ori R20,1
011E L29:
011E .dbline 100
011E ; Delay(DELAYTIMER );
011E 03E0 ldi R16,3
0120 10E0 ldi R17,0
0122 00D0 rcall _Delay
0124 .dbline 102
0124 ;
0124 ; return receivedata;
0124 042F mov R16,R20
0126 .dbline -2
0126 L22:
0126 00D0 rcall pop_gset2
0128 .dbline 0 ; func end
0128 0895 ret
012A .dbsym r i 22 c
012A .dbsym r receivedata 20 c
012A .dbend
012A .dbfunc e erasing_flash _erasing_flash fV
012A ; Block_Add -> R20,R21
.even
012A _erasing_flash::
012A 00D0 rcall push_gset1
012C .dbline -1
012C .dbline 107
012C ; }
012C ;
012C ;
012C ; void erasing_flash(void)
012C ; {
012C .dbline 108
012C ; unsigned int Block_Add = 0;
012C 4427 clr R20
012E 5527 clr R21
0130 .dbline 110
0130 ;
0130 ; for (Block_Add=0;Block_Add<Block_Size;Block_Add++)
0130 07C0 rjmp L35
0132 L32:
0132 .dbline 111
0132 .dbline 111
0132 042F mov R16,R20
0134 0BD0 rcall _EasingBlock
0136 .dbline 112
0136 08E8 ldi R16,5000
0138 13E1 ldi R17,19
013A 00D0 rcall _Delay
013C .dbline 113
013C L33:
013C .dbline 110
013C 4F5F subi R20,255 ; offset = 1
013E 5F4F sbci R21,255
0140 L35:
0140 .dbline 110
0140 4038 cpi R20,128
0142 E0E0 ldi R30,0
0144 5E07 cpc R21,R30
0146 A8F3 brlo L32
0148 .dbline -2
0148 L31:
0148 00D0 rcall pop_gset1
014A .dbline 0 ; func end
014A 0895 ret
014C .dbsym r Block_Add 20 i
014C .dbend
014C .dbfunc e EasingBlock _EasingBlock fV
014C ; Block_Add -> R20
.even
014C _EasingBlock::
014C 00D0 rcall push_gset1
014E 402F mov R20,R16
0150 .dbline -1
0150 .dbline 119
0150 ; {EasingBlock( Block_Add);
0150 ; Delay(5000);
0150 ; }
0150 ;
0150 ; }
0150 ;
0150 ;
0150 ; void EasingBlock(unsigned char Block_Add)
0150 ; {
0150 .dbline 120
0150 ; SPI_Start();//enable spi
0150 75DF rcall _SPI_Start
0152 .dbline 121
0152 ; SPI_Send8BitData(BLOCK_ERASE ); //send block erase command
0152 00E5 ldi R16,80
0154 96DF rcall _SPI_Send8BitData
0156 .dbline 122
0156 ; SPI_Send8BitData((char)(Block_Add>>4) );//send block address MSB PA9 PA8 PA7
0156 042F mov R16,R20
0158 1127 clr R17
015A 1595 asr R17
015C 0795 ror R16
015E 1595 asr R17
0160 0795 ror R16
0162 1595 asr R17
0164 0795 ror R16
0166 1595 asr R17
0168 0795 ror R16
016A 8BDF rcall _SPI_Send8BitData
016C .dbline 123
016C ; SPI_Send8BitData((char)(Block_Add<<4 ));//send block address LSB PA6 ... PA3
016C 042F mov R16,R20
016E 1127 clr R17
0170 000F lsl R16
0172 111F rol R17
0174 000F lsl R16
0176 111F rol R17
0178 000F lsl R16
017A 111F rol R17
017C 000F lsl R16
017E 111F rol R17
0180 80DF rcall _SPI_Send8BitData
0182 .dbline 124
0182 ; SPI_Send8BitData(0x00); //do not care
0182 0027 clr R16
0184 7EDF rcall _SPI_Send8BitData
0186 .dbline 125
0186 ; Delay(100);
0186 04E6 ldi R16,100
0188 10E0 ldi R17,0
018A 00D0 rcall _Delay
018C .dbline 126
018C ; SPI_End();//disable spi
018C 68DF rcall _SPI_End
018E .dbline -2
018E L36:
018E 00D0 rcall pop_gset1
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym r Block_Add 20 c
0192 .dbend
0192 .dbfunc e EasingPage _EasingPage fV
0192 ; Page_Add -> R20,R21
.even
0192 _EasingPage::
0192 00D0 rcall push_gset1
0194 A801 movw R20,R16
0196 .dbline -1
0196 .dbline 130
0196 ; }
0196 ;
0196 ; void EasingPage(unsigned int Page_Add)
0196 ; {
0196 .dbline 132
0196 ;
0196 ; SPI_Start();//enable spi
0196 52DF rcall _SPI_Start
0198 .dbline 133
0198 ; SPI_Send8BitData(PAGE_ERASE ); //send page erase command
0198 01E8 ldi R16,129
019A 73DF rcall _SPI_Send8BitData
019C .dbline 134
019C ; SPI_Send8BitData((char)(Page_Add>>7));//send block address MSB PA9 PA8 PA7
019C 27E0 ldi R18,7
019E 30E0 ldi R19,0
01A0 8A01 movw R16,R20
01A2 00D0 rcall lsr16
01A4 6EDF rcall _SPI_Send8BitData
01A6 .dbline 135
01A6 ; SPI_Send8BitData((char)(Page_Add<<1));//send block address LSB PA6 ... PA0
01A6 042F mov R16,R20
01A8 000F lsl R16
01AA 111F rol R17
01AC 6ADF rcall _SPI_Send8BitData
01AE .dbline 136
01AE ; SPI_Send8BitData(0x00); //do not care
01AE 0027 clr R16
01B0 68DF rcall _SPI_Send8BitData
01B2 .dbline 137
01B2 ; Delay(100);
01B2 04E6 ldi R16,100
01B4 10E0 ldi R17,0
01B6 00D0 rcall _Delay
01B8 .dbline 138
01B8 ; SPI_End();//disable spi
01B8 52DF rcall _SPI_End
01BA .dbline -2
01BA L37:
01BA 00D0 rcall pop_gset1
01BC .dbline 0 ; func end
01BC 0895 ret
01BE .dbsym r Page_Add 20 i
01BE .dbend
01BE .dbfunc e WriteToBuffer _WriteToBuffer fV
01BE ; i -> R20,R21
01BE ; Buff_add -> y+8
01BE ; BufferSelect -> y+6
01BE ; datalength -> R10,R11
01BE ; write_data -> R22,R23
.even
01BE _WriteToBuffer::
01BE 00D0 rcall push_gset3
01C0 5901 movw R10,R18
01C2 B801 movw R22,R16
01C4 .dbline -1
01C4 .dbline 142
01C4 ; }
01C4 ;
01C4 ; void WriteToBuffer(unsigned char * write_data,unsigned int datalength,unsigned char BufferSelect,unsigned int Buff_add)
01C4 ; {
01C4 .dbline 144
01C4 ; unsigned int i;
01C4 ; SPI_Start();//enable spi
01C4 3BDF rcall _SPI_Start
01C6 .dbline 145
01C6 ; switch( BufferSelect )
01C6 4E81 ldd R20,y+6
01C8 5527 clr R21
01CA 4030 cpi R20,0
01CC 4507 cpc R20,R21
01CE 29F0 breq L42
01D0 X0:
01D0 4330 cpi R20,3
01D2 E0E0 ldi R30,0
01D4 5E07 cpc R21,R30
01D6 21F0 breq L43
01D8 20C0 rjmp L38
01DA X1:
01DA .dbline 146
01DA ; {
01DA L42:
01DA .dbline 147
01DA ; case BUFFER_1: SPI_Send8BitData(BUFFER_1_WRITE );break;
01DA 04E8 ldi R16,132
01DC 52DF rcall _SPI_Send8BitData
01DE .dbline 147
01DE 02C0 rjmp L40
01E0 L43:
01E0 .dbline 148
01E0 ; case BUFFER_2: SPI_Send8BitData(BUFFER_2_WRITE );break;
01E0 07E8 ldi R16,135
01E2 4FDF rcall _SPI_Send8BitData
01E4 .dbline 148
01E4 .dbline 149
01E4 ; default: return;
01E4 L40:
01E4 .dbline 151
01E4 ; }
01E4 ; SPI_Send8BitData(0x00); //do not care
01E4 0027 clr R16
01E6 4DDF rcall _SPI_Send8BitData
01E8 .dbline 152
01E8 ; SPI_Send8BitData((char)(Buff_add>>8));//send block address MSB BA8
01E8 0885 ldd R16,y+8
01EA 1985 ldd R17,y+9
01EC 012F mov R16,R17
01EE 1127 clr R17
01F0 48DF rcall _SPI_Send8BitData
01F2 .dbline 153
01F2 ; SPI_Send8BitData((char)(Buff_add));//send block address LSB BA7 ... BA0
01F2 0885 ldd R16,y+8
01F4 1985 ldd R17,y+9
01F6 45DF rcall _SPI_Send8BitData
01F8 .dbline 154
01F8 ; for(i=0;i<datalength;i++)
01F8 4427 clr R20
01FA 5527 clr R21
01FC 07C0 rjmp L47
01FE L44:
01FE .dbline 155
01FE FA01 movw R30,R20
0200 E60F add R30,R22
0202 F71F adc R31,R23
0204 0081 ldd R16,z+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -