nflash.lst

来自「D12和89s52+K9F5608组成的系统」· LST 代码 · 共 417 行 · 第 1/2 页

LST
417
字号
 195   1              Flash_Write_Sec= 0x00;
 196   1              Flash_Write_Col= 0x00;
 197   1              Flash_Write_addl= ControlData.dataBuffer[20];
 198   1              Flash_Write_addh= ControlData.dataBuffer[19];
 199   1              WriteResidueVal=(ControlData.dataBuffer[22]<<8)+ControlData.dataBuffer[23];
 200   1       }
 201          /************************************************************
 202          **函数功能:写FLASH函数
 203          **函数输入参数及说明:写入数据
 204          
 205          **函数返回值:无
 206          **在本函数以外定义的变量:
 207          **调用的函数说明:无
 208          
 209          **修改人:胡琦宗
 210          **修改日期:2005.12.9
 211          **修改说明:创建
 212          *************************************************************/
 213          void flashWrite()     //需修改***
 214          {
 215   1              unsigned int i; 
 216   1              if(WriteResidueVal > 0)
 217   1              {
 218   2                if(Flash_Write_No == 0)
 219   2                 {
 220   3                      fWP = 1;//打开写保护
 221   3                      fcommand(0x00);//从FRIST部分开始
 222   3                      fcommand(0x80);//写FLASH命令
 223   3                      faddr(0x00);//从0列开始
 224   3                      faddr(Flash_Write_addl);//页地址低位
 225   3                      faddr(Flash_Write_addh);//页地址高位
 226   3                 }
 227   2                      
 228   2                      for(i=0;i<64;i++)//需修改***
 229   2                      {
 230   3                              fwedata(ControlData.dataBuffer[i]);//写数据到FLASH指定页里
 231   3                      }
 232   2                      Flash_Write_No += 64;
 233   2                      
 234   2                      if(Flash_Write_No == 512)
 235   2                      {
 236   3                      fcommand(0x10);
 237   3                      while(!fRB);
 238   3                      fcommand(0x70);//读状态值命令
 239   3                      i = fredata;//读状态值          
 240   3                      fWP = 0;//写保护
 241   3                      
C51 COMPILER V7.50   NFLASH                                                                12/29/2005 19:53:03 PAGE 5   

 242   3                      Flash_Write_No = 0;
 243   3                      WriteResidueVal = WriteResidueVal - 1;
 244   3                      if(Flash_Write_addl== 255)
 245   3                              {
 246   4                              Flash_Write_addl= 0x00;
 247   4                              Flash_Write_addh++;
 248   4                              }else
 249   3                              Flash_Write_addl++;
 250   3                      }
 251   2              }
 252   1      }
 253          /************************************************************
 254          **函数功能:FLASH页拷贝命令
 255          **函数输入参数及说明:
 256            Source_addh:源地址高位
 257            Source_addl:源地址低位
 258            Destination_addh:目的地址高位
 259            Destination_addl:目的地址低位
 260          
 261          **函数返回值:无
 262          **在本函数以外定义的变量:
 263          **调用的函数说明:无
 264          
 265          **修改人:胡琦宗
 266          **修改日期:2005.12.9
 267          **修改说明:创建
 268          *************************************************************/
 269          void flashCopyBLack(unsigned char Source_addh,unsigned char Source_addl,unsigned char Destination_addh,uns
             -igned char Destination_addl)
 270          {
 271   1              unsigned char i;
 272   1              fWP = 1;//打开写保护
 273   1              fcommand(0x00);//页拷贝命令
 274   1              /*源地址*/
 275   1              faddr(0x00);
 276   1              faddr(Source_addl);
 277   1              faddr(Source_addh);
 278   1              while(!fRB);
 279   1              
 280   1              fcommand(0x8a);//页拷贝命令
 281   1              /*目的地址*/
 282   1              faddr(0x00);
 283   1              faddr(Destination_addl);
 284   1              faddr(Destination_addh);
 285   1              while(!fRB);
 286   1              
 287   1              fcommand(0x70);//读状态命令
 288   1              i = fredata();//读状态值
 289   1              fWP = 0;//写保护
 290   1              
 291   1      }
 292          /************************************************************
 293          **函数功能:读FLASH预处理函数
 294          **函数输入参数及说明:无
 295          
 296          **函数返回值:无
 297          **在本函数以外定义的变量:
 298          **调用的函数说明:无
 299          
 300          **修改人:胡琦宗
 301          **修改日期:2005.12.9
 302          **修改说明:创建
C51 COMPILER V7.50   NFLASH                                                                12/29/2005 19:53:03 PAGE 6   

 303          *************************************************************/
 304          void flashReadcmd(void)
 305          {
 306   1              /****************说明************
 307   1                对于FLASH的读原理为:FLASH的读
 308   1                可以是随机读取,所以这里只要给
 309   1                定读数据的首地址和读写长度
 310   1              ********************************/
 311   1              Flash_Read_Sec = 0x00;
 312   1              Flash_Read_Col = 0x00;
 313   1              Flash_Read_addl = ControlData.dataBuffer[20];
 314   1              Flash_Read_addh = ControlData.dataBuffer[19];
 315   1              ReadResidueVal = (ControlData.dataBuffer[22]<<8) + ControlData.dataBuffer[23];
 316   1              ReadResidueVal = ReadResidueVal<<9;
 317   1      //      fcommand(0xff);
 318   1              while(!fRB);
 319   1      }
 320          /************************************************************
 321          **函数功能:读FLASH函数
 322          **函数输入参数及说明:无
 323          
 324          **函数返回值:无
 325          **在本函数以外定义的变量:
 326          **调用的函数说明:无
 327          
 328          **修改人:胡琦宗
 329          **修改日期:2005.12.9
 330          **修改说明:创建
 331          *************************************************************/
 332          void flashRead(void)
 333          {
 334   1              unsigned char i;
 335   1              unsigned char  temp;
 336   1              if(ReadResidueVal > 0)
 337   1              {
 338   2                      ReadResidueVal -= 64;
 339   2                      temp = (unsigned char)(Flash_Read_Col + 64);
 340   2                      fcommand(Flash_Read_Sec);
 341   2                      faddr(Flash_Read_Col);
 342   2                      faddr(Flash_Read_addl);
 343   2                      faddr(Flash_Read_addh);
 344   2                      while(!fRB);
 345   2                      switch (Flash_Read_Sec)
 346   2                      {
 347   3                              case 0x00:
 348   3                                      if(temp == 0)
 349   3                                      {
 350   4                                              Flash_Read_Sec = 0x01;
 351   4                                              Flash_Read_Col = 0x00;
 352   4                                      }else
 353   3                                      {
 354   4                                              Flash_Read_Col += 64;
 355   4                                      }
 356   3                                      break;
 357   3                              case 0x01:
 358   3                                      if(temp == 0)
 359   3                                      {
 360   4                                              if(Flash_Read_addl == 255){
 361   5                                                      Flash_Read_addl = 0x00;
 362   5                                                      Flash_Read_addh ++;
 363   5                                                      }else
 364   4                                                      Flash_Read_addl ++;
C51 COMPILER V7.50   NFLASH                                                                12/29/2005 19:53:03 PAGE 7   

 365   4                                              Flash_Read_Sec = 0x00;
 366   4                                              Flash_Read_Col = 0x00;
 367   4                                      }else
 368   3                                      {
 369   4                                              Flash_Read_Col += 64;
 370   4                                      }
 371   3                                      break;
 372   3                      }
 373   2                      for(i=0;i<64;i++)
 374   2                      {
 375   3                      ControlData.dataBuffer[i] = fredata();
 376   3                      }
 377   2                      D12_WriteEndpoint(5,64,ControlData.dataBuffer);
 378   2              }
 379   1      }
 380          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    989    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       9
   IDATA SIZE       =     15      20
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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