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

📄 main.lst

📁 HY27UF081G2M海量存储器的驱动程序,是用51编写的,编程环境Keil-c
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  01/08/2007 14:47:29 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<regsnd1.h>
   2          #include <absacc.h>
   3          #include <stdio.h>
   4          
   5          /*硬件地址定义*/
   6          #define WRITE_DATA 0x0884
   7          #define WRITE_COM  0x0885
   8          #define WRITE_ADD  0x0886
   9          #define READ_DATA  0x0884
  10          
  11          /*K9F1G08U0M指令集*/
  12          #define READ A       0x00
  13          #define READ B       0x01
*** WARNING C317 IN LINE 13 OF main.c: attempt to redefine macro 'READ'
  14          #define READID          0x90
  15          #define RESET           0xff
  16          #define PAGEPROGRAM     0x80
  17          #define BLOCKERASE      0x60
  18          #define READSTATUS      0x70
  19          
  20          
  21          #define SWAP1(x)  ((x)&0xff)
  22          #define SWAP2(x)  (((x)>>9)&0xff)
  23          #define SWAP3(x)  (((x)>>17)&0xff)
  24          #define SWAP4(x)  (((x)>>25)&0x03)
  25          sbit fRB=P5^0;
  26          /*------------------------------------------------------------------------------
  27          初始化
  28          ---------------------------------------------------------------------------------*/
  29          void Init()
  30          {
  31   1      //初始化串行口
  32   1      
  33   1      SCON = 0X52;
  34   1      PCON = 0X80 ;
  35   1      TMOD = 0X20;
  36   1      TCON = 0x69;    
  37   1      TH1=0Xf5;
  38   1      TL1=0Xf5;
  39   1      
  40   1      }
  41          /*----------------------------------------------------------------------------
  42          延时一些时间
  43          ------------------------------------------------------------------------------*/
  44          void delay10ms(unsigned int x)
  45          {
  46   1       unsigned int i;
  47   1       for(i=0;i<x;i++);
  48   1      }
  49          /*----------------------------------------------------------------------------
  50          给K9F1G08U0M发送指令
  51          ------------------------------------------------------------------------------
  52          --*/
  53          void WriteCom(unsigned char i)
  54          { 
C51 COMPILER V7.50   MAIN                                                                  01/08/2007 14:47:29 PAGE 2   

  55   1       XBYTE[WRITE_COM]=i; 
  56   1      }
  57          /*----------------------------------------------------------------------------
  58          给K9F1G08U0M发送地址
  59          ------------------------------------------------------------------------------
  60          --*/
  61          void WriteAdd(unsigned char i)
  62          {
  63   1       XBYTE[WRITE_ADD]=i;
  64   1      }
  65          /*----------------------------------------------------------------------------
  66          给K9F1G08U0M发送数据
  67          ------------------------------------------------------------------------------
  68          --*/
  69          void WriteData(unsigned char i)
  70          {
  71   1       XBYTE[WRITE_DATA]=i;
  72   1      }
  73          /*----------------------------------------------------------------------------
  74          向K9F1G08U0M读取数据
  75          ------------------------------------------------------------------------------
  76          --*/
  77          unsigned char ReadData(void)
  78          {
  79   1       return (XBYTE[READ_DATA]);
  80   1      }
  81          
  82          
  83          /*----------------------------------------------------------------------------
  84          复位K9F1G08U0M
  85          -----------------------------------------------------------------------------*/
  86          void Reset(void)
  87          {
  88   1       WriteCom(0xff);
  89   1      }
  90          /////////////
  91          void print(unsigned char x)
  92          {
  93   1       SBUF=x;
  94   1       while(!TI);
  95   1       TI=0;
  96   1       }
  97          /*----------------------------------------------------------------------------
  98          读取K9F1G08U0M的ID
  99          -----------------------------------------------------------------------------*/
 100          void ReadID(void)
 101          {
 102   1       unsigned char x,y,z,u;
 103   1       WriteCom(0x90);
 104   1      // WriteAdd(0x00);//////////////////
 105   1       x=ReadData();
 106   1       y=ReadData();
 107   1       z=ReadData();
 108   1       u=ReadData();
 109   1      // print(x);
 110   1      // print(y);
 111   1      // print(z);
 112   1      // print(u);
 113   1       printf("ID of K9F1G08U0M is %x,%x,%x,%x\n",x,y,z,u);
 114   1      }
 115          /*----------------------------------------------------------------------------
 116          块擦除
C51 COMPILER V7.50   MAIN                                                                  01/08/2007 14:47:29 PAGE 3   

 117          -----------------------------------------------------------------------------*/
 118          void BlockErase(unsigned long blockadd)
 119          {
 120   1       unsigned char x;
 121   1       WriteCom(0x60);
 122   1      // WriteAdd(SWAP1(blockadd));
 123   1       WriteAdd(SWAP2(blockadd));
 124   1       WriteAdd(SWAP3(blockadd));
 125   1       WriteAdd(SWAP4(blockadd));
 126   1       WriteCom(0xd0);
 127   1       while(!fRB);
 128   1       delay10ms(10000);
 129   1              WriteCom(0x70);//读状态命令
 130   1              x= ReadData();//读状态值
 131   1              
 132   1       if(x&0x01)printf("erase error!!!%x\n",x);        
 133   1       else printf("erase completed!!%x\n",x);  
 134   1        
 135   1      }
 136          /*----------------------------------------------------------------------------
 137          读地址0x--------的数据
 138          -----------------------------------------------------------------------------*/
 139          unsigned char Read(unsigned long add)
 140          {
 141   1       unsigned char x;
 142   1       if(add&0x100)WriteCom(0x01);
 143   1       else WriteCom(0x00);
 144   1       WriteAdd(SWAP1(add));
 145   1       WriteAdd(SWAP2(add));
 146   1       WriteAdd(SWAP3(add));
 147   1       WriteAdd(SWAP4(add));
 148   1       WriteCom(0x30);
 149   1       while(!fRB);
 150   1       x=ReadData();
 151   1       return x;
 152   1      }
 153          /*----------------------------------------------------------------------------
 154          向地址0x--------写数据
 155          -----------------------------------------------------------------------------*/
 156          void Write(unsigned long add,unsigned char d)
 157          {
 158   1       unsigned char x;
 159   1       if(add&0x100)WriteCom(0x01);
 160   1       else WriteCom(0x00);
 161   1       WriteCom(0x80);
 162   1      // delay10ms(1);
 163   1       WriteAdd(SWAP1(add));
 164   1       WriteAdd(SWAP2(add));
 165   1       WriteAdd(SWAP3(add));
 166   1       WriteAdd(SWAP4(add));
 167   1       WriteData(d);
 168   1       WriteCom(0x10);
 169   1       while(!fRB);
 170   1       delay10ms(10000);      
 171   1       WriteCom(0x70);
 172   1       x=ReadData();
 173   1       if(x&0x01)printf("write error!!!%x\n",x);
 174   1       else printf("write completed!!%x\n",x); 
 175   1      }
 176          main()
 177          {
 178   1       unsigned char x=16;
C51 COMPILER V7.50   MAIN                                                                  01/08/2007 14:47:29 PAGE 4   

 179   1       unsigned long add;
 180   1       Init();
 181   1       Reset();
 182   1       printf("K9F1G08U0M ready!!\n");
 183   1       ReadID();
 184   1       delay10ms(10000);
 185   1       BlockErase(0x00000000);
 186   1      // Write(1,0x98);
 187   1      // x=Read(1);
 188   1      // printf("0x00000000=%x\n",x);
 189   1       
 190   1      add=0x00000000;  
 191   1      while((0x00000010-add))
 192   1      { 
 193   2      
 194   2       Write(add,0x01);
 195   2       add++;;
 196   2      } 
 197   1      
 198   1      delay10ms(10000); 
 199   1               
 200   1      add=0x00000000; 
 201   1      while((0x00000010-add))
 202   1      { 
 203   2       x=Read(add);
 204   2       delay10ms(10000);
 205   2       printf("0x%lx=%x\n",add,x);
 206   2       add++;
 207   2      }  
 208   1      while(1);
 209   1      }
 210          
 211          
 212          
 213          
 214          
 215          
 216          
 217          
 218          
 219          
 220          
 221          
 222          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    660    ----
   CONSTANT SIZE    =    141    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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