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

📄 at45db021.lis

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