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

📄 rom.lst

📁 8051带32Mflash的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
  67   1              ROM_RD=1;
  68   1              rom_cs(0);
  69   1              ROM_DATAPORT=value;
  70   1              ROM_WR=0;
C51 COMPILER V7.01  ROM                                                                    11/16/2007 15:52:11 PAGE 5   

  71   1              delay10ms(1);
  72   1              ROM_WR=1;
  73   1              ROM_BUSY=1;             
  74   1              while(ROM_BUSY==0);
  75   1              rom_cs(1);
  76   1      
  77   1      }
  78          
  79          void rom_write_addcol(unsigned char value)
  80          {
  81   1              ROM_RD=1;
  82   1              ROM_ALE=1;//ADDRESS
  83   1              ROM_CLE=0;
  84   1              rom_cs(0);
  85   1              ROM_DATAPORT=value;
  86   1              ROM_WR=0;
  87   1              delay10ms(1);
  88   1              ROM_WR=1;
  89   1              ROM_BUSY=1;             
  90   1              while(ROM_BUSY==0);
  91   1              rom_cs(1);
  92   1      }
  93          
  94          void rom_write_addrow(unsigned int value)
  95          {
  96   1              ROM_RD=1;
  97   1              ROM_ALE=1;//ADDRESS
  98   1              ROM_CLE=0;
  99   1              rom_cs(0);
 100   1              ROM_DATAPORT=(uchar)value;
 101   1              ROM_WR=0;
 102   1              delay10ms(1);
 103   1              ROM_WR=1;
 104   1              ROM_BUSY=1;             
 105   1              while(ROM_BUSY==0);
 106   1              ROM_DATAPORT=(uchar)(value>>8);
 107   1              ROM_WR=0;
 108   1              delay10ms(1);
 109   1              ROM_WR=1;
 110   1              ROM_BUSY=1;             
 111   1              while(ROM_BUSY==0);
 112   1              rom_cs(1);
 113   1      }
 114          
 115          
 116          void rom_write_data(unsigned char value)
 117          {
 118   1              ROM_CLE=0; //value
 119   1              ROM_ALE=0;//
 120   1              ROM_RD=1;
 121   1              rom_cs(0);
 122   1              ROM_DATAPORT=value;
 123   1              ROM_WR=0;
 124   1              delay10ms(1);
 125   1              ROM_WR=1;
 126   1              ROM_BUSY=1;             
 127   1              while(ROM_BUSY==0);
 128   1              rom_cs(1);
 129   1      }
 130          
 131          
 132          void rom_rd_wr_data_start(uchar value,uchar addcol,uint addrow)
C51 COMPILER V7.01  ROM                                                                    11/16/2007 15:52:11 PAGE 6   

 133          {       rom_write_com(value);
 134   1              rom_write_addcol(addcol);
 135   1              rom_write_addrow(addrow);
 136   1      }
 137          
 138          
 139          void rom_check_busy(void) //NOT BUSY RETURN 
 140          {
 141   1              unsigned char value;
 142   1              value=0;
 143   1              while((value&0x40)==0)//is busy? yes-->check again
 144   1              {       rom_write_com(0x70);//get status
 145   2                      ROM_DATAPORT=0xff;
 146   2                      ROM_CLE=0; //read the data?!
 147   2                      ROM_ALE=0;//
 148   2                      ROM_WR=1;
 149   2                      rom_cs(0);
 150   2                      ROM_RD=0;
 151   2                      value=ROM_DATAPORT;
 152   2                      ROM_RD=1;
 153   2                      ROM_BUSY=1;             
 154   2                  while(ROM_BUSY==0);
 155   2                      rom_cs(1);
 156   2              
 157   2              }
 158   1      }
 159          
 160          uchar rom_check_option()
 161          {
 162   1              unsigned char value;
 163   1              value=0;
 164   1              do
 165   1              {
 166   2                      rom_write_com(0x70);//get status
 167   2                      ROM_DATAPORT=0xff;
 168   2                      ROM_CLE=0; //read the data?!
 169   2                      ROM_ALE=0;//
 170   2                      ROM_WR=1;
 171   2                      rom_cs(0);
 172   2                      ROM_RD=0;
 173   2                      value=ROM_DATAPORT;
 174   2                      ROM_RD=1;
 175   2                      ROM_BUSY=1;             
 176   2                  while(ROM_BUSY==0);
 177   2                      rom_cs(1);      
 178   2              }
 179   1              while((value&0x40)==0); 
 180   1              if((value&0x1)==0)
 181   1                      return(0);
 182   1              else 
 183   1                      return(1);
 184   1      }
 185          
 186          
 187          //-------------->Erase whole block data<--------------------
 188          
 189          unsigned char rom_erase_block(unsigned int add)
 190          {
 191   1              unsigned char value;
 192   1              rom_write_com(0x60);
 193   1      //      rom_write_addrow(add%32);
 194   1              rom_write_addcol((add&0x7)<<5);
C51 COMPILER V7.01  ROM                                                                    11/16/2007 15:52:11 PAGE 7   

 195   1              rom_write_addcol(add>>3);
 196   1              
 197   1              rom_write_com(0xd0);
 198   1              //--busy check!
 199   1                      value=0;
 200   1                      
 201   1                      rom_write_com(0x70);//get status
 202   1                      rom_cs(0);
 203   1                      ROM_DATAPORT=0xff;
 204   1                      ROM_CLE=0; //read the data?!
 205   1                      ROM_ALE=0;
 206   1                      ROM_WR=1;
 207   1                      ROM_RD=0;
 208   1                      value=ROM_DATAPORT;
 209   1                      ROM_RD=1;
 210   1                      ROM_BUSY=1;             
 211   1                  while(ROM_BUSY==0);
 212   1                      rom_cs(1);
 213   1                      delay5us(10);
 214   1      
 215   1              if((value&1)==0)
 216   1                      return 0;//erase ok
 217   1              else
 218   1                      return 1;//erase error
 219   1      }
 220          
 221          
 222          //-------------->write whole block data------<--------------
 223          void rom_write_block_start(unsigned char addcol,unsigned int addrow)
 224          {
 225   1              rom_rd_wr_data_start(ROM_WR_MODE,addcol,addrow);        //----after this can write data to flash.............---
             - 
 226   1      }
 227          
 228          
 229          unsigned char rom_write_block_end()
 230          {
 231   1              
 232   1              rom_write_com(0x10);
 233   1              return 0;
 234   1      }
 235          
 236          
 237          void rom_read_block_start(unsigned char addcol,unsigned int addrow)
 238          {
 239   1              rom_rd_wr_data_start(ROM_RD_MODE1,addcol,addrow);
 240   1      }
 241          
 242          uchar rom_read_block_byte(void)
 243          {
 244   1              uchar value;
 245   1              delay5us(2);
 246   1              P2=0Xff;
 247   1              ROM_DATAPORT=0XFF;
 248   1              rom_cs(0);
 249   1              ROM_WR=1;
 250   1              ROM_ALE=0;
 251   1              ROM_CLE=0;
 252   1              ROM_RD=0;
 253   1              value=ROM_DATAPORT;
 254   1              ROM_RD=1;
 255   1              ROM_BUSY=1;
C51 COMPILER V7.01  ROM                                                                    11/16/2007 15:52:11 PAGE 8   

 256   1              while(ROM_BUSY==0);
 257   1              rom_cs(1);
 258   1              ROM_DATAPORT=0XFF;
 259   1              return(value);
 260   1              
 261   1      }
 262          
 263          uint rom_read_block_word(void)
 264          {
 265   1              uint value1,value2;
 266   1              value1=rom_read_block_byte();   
 267   1              value2=rom_read_block_byte();
 268   1              value1=value1|(value2<<8);
 269   1              return(value1);
 270   1      }
 271          
 272          uchar xdata *read_page(uint page)
 273          {       uint jj;
 274   1          uchar xdata ii[528];
 275   1              rom_read_block_start(0,page);
 276   1              for(jj=0;jj<528;jj++)
 277   1              {       ii[jj]=rom_read_block_byte();
 278   2              }
 279   1              return ii;
 280   1      }
 281          
 282          uchar rom_write_page(uint addcow,uchar xdata *p)
 283          {       uint rom_count;
 284   1              rom_write_block_start(0,addcow);
 285   1              for(rom_count=0;rom_count<PAGE_MODE;rom_count++)
 286   1              {       rom_write_block_data(*(p+rom_count));
 287   2              }
 288   1              rom_write_block_end();
 289   1              return 0;
 290   1      }
 291          
 292          
 293          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    672    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----     528
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      16
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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