⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at45db021.lis

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -