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

📄 at45db.lst

📁 SM858单片机完成AT45DB内部数据读写程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 161   2              case 1:SPI_HostWriteByte(0xd4);break; 
 162   2              case 2:SPI_HostWriteByte(0xd6);break; 
 163   2          } 
 164   1          SPI_HostWriteByte(0x00); 
 165   1          SPI_HostWriteByte((unsigned char)(BFA>>8)); 
 166   1          SPI_HostWriteByte((unsigned char)BFA);
 167   1          SPI_HostWriteByte(0x00);
 168   1           
 169   1          for(i=0;i<len;i++){pHeader[i]=SPI_HostReadByte();} 
 170   1          SPI_CS=1;         
 171   1      } 
 172          /******************************************************************************/ 
 173          /*描述:                                                                      */ 
 174          /*    将指定数据写入从某个地址(0~263)开始的BUFFER中。                       */ 
 175          /*参数:                                                                      */ 
 176          /*    buffer  - 选择BUFFER,01H选择BUFFER 1,02H选择BUFFER 2                  */ 
 177          /*              在该指令序列中,操作码84H选择BUFFER 1,87H选择BUFFER 2        */ 
 178          /*    BFA     - BUFFER中的起始地址,0~263                                     */ 
 179          /*    pHeader - 待存数据的头指针                                              */ 
C51 COMPILER V7.50   AT45DB                                                                05/14/2008 18:26:14 PAGE 4   

 180          /*    len     - 待存数据的长度1~264                                           */ 
 181          /******************************************************************************/ 
 182          void AT45DB041B_BufferWrite(UCHAR buffer,UINT BFA,UCHAR *pHeader,UINT len){ 
 183   1          unsigned int i; 
 184   1           
 185   1          while(i++<255){if(AT45DB041B_StatusRegisterRead()&0x80){break;}} 
 186   1          SPI_CS=0;     
 187   1          switch(buffer){ 
 188   2              case 1:SPI_HostWriteByte(0x84);break; 
 189   2              case 2:SPI_HostWriteByte(0x87);break; 
 190   2          } 
 191   1          SPI_HostWriteByte(0x00); 
 192   1          SPI_HostWriteByte((unsigned char)(BFA>>8)); 
 193   1          SPI_HostWriteByte((unsigned char)BFA); 
 194   1           
 195   1          for(i=0;i<len;i++){SPI_HostWriteByte(pHeader[i]);} 
 196   1          SPI_CS=1;         
 197   1      } 
 198          
 199          void AT45DB041B_MainMemoryPageRead(UINT PA,UINT BFA,unsigned char *pHeader,UINT len)
 200          {   unsigned int i; 
 201   1           
 202   1          while(i++<255){if(AT45DB041B_StatusRegisterRead()&0x80){break;}} 
 203   1          SPI_CS=0;   
 204   1          SPI_HostWriteByte(0xd2);
 205   1          SPI_HostWriteByte((unsigned char)(PA>>7));     
 206   1          SPI_HostWriteByte((unsigned char)((PA<<1)|(BFA>>8))); 
 207   1          SPI_HostWriteByte((unsigned char)BFA); 
 208   1          for(i=0;i<4;i++){SPI_HostWriteByte(0x00);} 
 209   1           
 210   1          for(i=0;i<len;i++){pHeader[i]=SPI_HostReadByte();} 
 211   1          SPI_CS=1;   
 212   1      }
 213          /******************************************************************************/ 
 214          /*描述:                                                                      */ 
 215          /*    将指定数据写入从某个地址(0~263)开始的页中:包含2个动作,首先将指定数据*/ 
 216          /*    写入到BUFFER 1或者BUFFER 2中,其中可以指定BUFFER中的起始写入地址,此写入*/ 
 217          /*    动作不影响BUFFER中其它地址中的数据,然后再将BUFFER中的整个数据写入到某指*/ 
 218          /*    定页中(带预擦除)。                                                      */ 
 219          /*参数:                                                                      */ 
 220          /*    buffer  - 选择BUFFER,01H选择BUFFER 1,02H选择BUFFER 2                  */ 
 221          /*    PA      - 页地址,0~2047                                                */ 
 222          /*    BFA     - 指定BUFFER中的起始写入地址                                    */ 
 223          /*    pHeader - 指定数据的首地址                                              */ 
 224          /*    len     - 指定数据的长度                                                */ 
 225          /******************************************************************************/ 
 226          void AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(UCHAR buffer,UINT PA,UINT BFA,UCHAR *pHeade
             -r,UINT len){ 
 227   1          unsigned int i; 
 228   1      
 229   1          AT45DB041B_BufferWrite(buffer,BFA,pHeader,len); 
 230   1          while(i++<1000){if(AT45DB041B_StatusRegisterRead()&0x80){break;}} 
 231   1                   
 232   1          SPI_CS=0;         
 233   1          switch(buffer){ 
 234   2              case 1:SPI_HostWriteByte(0x83);break; 
 235   2              case 2:SPI_HostWriteByte(0x86);break; 
 236   2          } 
 237   1          SPI_HostWriteByte((unsigned char)(PA>>7)); 
 238   1          SPI_HostWriteByte((unsigned char)(PA<<1)); 
 239   1          SPI_HostWriteByte(0x00); 
 240   1          SPI_CS=1; 
C51 COMPILER V7.50   AT45DB                                                                05/14/2008 18:26:14 PAGE 5   

 241   1      } 
 242          /******************************************************************************/ 
 243          /*描述:                                                                      */ 
 244          /*    与上一个函数的唯一区别是不带预擦除。                                    */ 
 245          /******************************************************************************/ 
 246          void AT45DB041B_BufferToMainMemoryPageProgramWithoutBuilt_inErase(UCHAR buffer,UINT PA,UINT BFA,UCHAR *pHe
             -ader,UINT len){ 
 247   1          unsigned int i=0; 
 248   1      
 249   1          AT45DB041B_BufferWrite(buffer,BFA,pHeader,len); 
 250   1          while(i++<1000){if(AT45DB041B_StatusRegisterRead()&0x80){break;}} 
 251   1           
 252   1          SPI_CS=0; 
 253   1          SPI_HostWriteByte(0x88+buffer); 
 254   1          SPI_HostWriteByte((unsigned char)(PA>>7)); 
 255   1          SPI_HostWriteByte((unsigned char)(PA<<1)); 
 256   1          SPI_HostWriteByte(0x00); 
 257   1           
 258   1          for(i=0;i<len;i++){SPI_HostWriteByte(pHeader[i]);} 
 259   1          SPI_CS=1; 
 260   1      } 
 261          
 262          void main(void){ 
 263   1       //   unsigned char i; 
 264   1      //      unsigned char k; 
 265   1              unsigned char j;
 266   1          UCHAR idata test[128];
 267   1              
 268   1          SPI_RES=1;
 269   1              SPI_WP=1;
 270   1          SPI_AY1=0;
 271   1          SPI_AY2=0;
 272   1          SPI_AY3=0;
 273   1         
 274   1         // i=AT45DB041B_StatusRegisterRead(); 
 275   1           
 276   1          
 277   1          //memset(test,0x26,32); 
 278   1          //AT45DB041B_MainMemoryPageRead(2047,0,test,32);
 279   1      //   AT45DB041B_ContinuousArrayRead(0,0,test,32);
 280   1         
 281   1       //  AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(1,0,0,DisPlay22,264);      
 282   1         init_serial();
 283   1          while(1)
 284   1              {
 285   2       
 286   2           AT45DB041B_ContinuousArrayRead(0,0,test,128);
 287   2               for(j=0;j<128;j++)
 288   2            {
 289   3                   SendCh(test[j]);        
 290   3                   SPI_AY1=~SPI_AY1;
 291   3               SPI_AY2=~SPI_AY2;
 292   3               SPI_AY3=~SPI_AY3;
 293   3                       delay(20000);
 294   3                  
 295   3                }
 296   2        
 297   2                 //SendCh(i);
 298   2             //delay(20000);
 299   2      /*        for(j=0;j<8;j++)
 300   2              {SendCh(test[j]); 
 301   2      //                SPI_AY1=~SPI_AY1;
C51 COMPILER V7.50   AT45DB                                                                05/14/2008 18:26:14 PAGE 6   

 302   2      //        SPI_AY2=~SPI_AY2;
 303   2      //        SPI_AY3=~SPI_AY3;
 304   2                       delay(20000);
 305   2                  }
 306   2                  */
 307   2                
 308   2              } 
 309   1      }
 310          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1037    ----
   CONSTANT SIZE    =    264    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      66
   IDATA SIZE       =   ----     128
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -