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

📄 exam1.lst

📁 51单片机C语言程序——I2C存储器25XX320
💻 LST
字号:
C51 COMPILER V7.02a   EXAM1                                                                11/26/2005 12:26:59 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE EXAM1
OBJECT MODULE PLACED IN EXAM1.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe EXAM1.C DB OE SMALL ROM(LARGE)

stmt level    source

   1          /****************************************************************/
   2          /*功能:                       
   3          /*版本:v1.0                           
   4          /*设计人:              
   5          /*编写日期:
   6          /*最后修改日期:                           
   7          /*状态:in test                                          
   8          /****************************************************************/
   9          /*头文件定义*/
  10          #include <reg51.h>
  11          #include <intrins.h>
  12          /*预定义部分*/
  13          #define uchar unsigned char
  14          #define uint  unsigned int
  15          #define bytenum 32              //每页的字符数
  16          sbit XSI=P1^0;
  17          sbit XSCK=P1^1;
  18          sbit XSO=P1^2;
  19          sbit XCS_A=P1^3;
  20          sbit XCS_B=P1^4;
  21          /*函数声明部分*/
  22          void    write_byte(uchar);      //写一个字节
  23          uchar   read_byte();            //读一个字节
  24          void    write_en();             //置 写使能寄存器
  25          void    write_cmd(uchar);       //写 控制寄存器
  26          uchar   read_status();          //读 状态寄存器
  27          bit     check_ready();
  28          void    write_one_data(uint,uchar);             //写一字节数据
  29          uchar   read_one_data(uint);                    //读一字节数据
  30          void    write_page(uint,uchar *);               //写一页数据
  31          uchar   *read_page(uint);               //读一页数据           
  32          /*主函数部分*/
  33          /*********************************************************************/
  34          /*函数名:main()
  35          /*功能:主函数
  36          /*输入参数:无
  37          /*返回值:无
  38          /*编写日期:
  39          /*最后修改日期:
  40          /********************************************************************/ 
  41          void main()                          
  42          {
  43   1      uchar dat,status;
  44   1      P1=0xff;
  45   1      //XCS_A=0;XCS_B=0;XSI=0;XSCK=0;XSO=0;
  46   1      write_en();
  47   1      status=read_status();
  48   1      write_en();
  49   1      write_one_data(0x00,0x0f);
  50   1      dat=read_one_data(0x00);
  51   1      while(1);
  52   1      }
  53          
  54          /*其他函数定义部分*/
  55          /*********************************************************************/
C51 COMPILER V7.02a   EXAM1                                                                11/26/2005 12:26:59 PAGE 2   

  56          /*函数名:
  57          /*功能:
  58          /*输入参数:
  59          /*返回值:
  60          /*调用函数:
  61          /*被调用函数:
  62          /*编写日期:
  63          /*最后修改日期:
  64          /********************************************************************/ 
  65          void    write_byte(uchar byte)
  66          {
  67   1      uchar i=0;
  68   1      uchar tmp;
  69   1      for(i=0;i<8;i++)
  70   1         {
  71   2            XSCK=0;
  72   2            tmp=byte&0x80;
  73   2            if(tmp!=0)
  74   2               XSI=1;
  75   2            else
  76   2               XSI=0;
  77   2            XSCK=1;                   //上升沿输出数据
  78   2            _nop_();
  79   2            byte<<=1;
  80   2         }
  81   1      }
  82          /*********************************************************************/
  83          /*函数名:
  84          /*功能:
  85          /*输入参数:
  86          /*返回值:
  87          /*调用函数:
  88          /*被调用函数:
  89          /*编写日期:
  90          /*最后修改日期:
  91          /********************************************************************/ 
  92          uchar   read_byte()
  93          {
  94   1      uchar i;
  95   1      uchar byte=0;
  96   1      for(i=0;i<8;i++)
  97   1         {
  98   2            byte<<=1;
  99   2            XSCK=0;
 100   2            _nop_();
 101   2            if(XSO==1)
 102   2               byte+=1;
 103   2            XSCK=1;
 104   2         }
 105   1      XSCK=0;
 106   1      return(byte);
 107   1      }
 108          /*********************************************************************/
 109          /*函数名:
 110          /*功能:
 111          /*输入参数:
 112          /*返回值:
 113          /*调用函数:
 114          /*被调用函数:
 115          /*编写日期:
 116          /*最后修改日期:
 117          /********************************************************************/ 
C51 COMPILER V7.02a   EXAM1                                                                11/26/2005 12:26:59 PAGE 3   

 118          void    write_en()
 119          {
 120   1      XCS_A=0;XCS_B=0;
 121   1      write_byte(0x06);               //置 写使能寄存器
 122   1      XCS_A=1;XCS_B=1;
 123   1      }
 124          /*********************************************************************/
 125          /*函数名:
 126          /*功能:
 127          /*输入参数:
 128          /*返回值:
 129          /*调用函数:
 130          /*被调用函数:
 131          /*编写日期:
 132          /*最后修改日期:
 133          /********************************************************************/ 
 134          void    write_cmd(uchar cmd)
 135          {
 136   1      XCS_A=0;XCS_B=0;
 137   1      write_byte(0x01);
 138   1      write_byte(cmd);
 139   1      XCS_A=1;XCS_B=1;
 140   1      }
 141          /*********************************************************************/
 142          /*函数名:
 143          /*功能:
 144          /*输入参数:
 145          /*返回值:
 146          /*调用函数:
 147          /*被调用函数:
 148          /*编写日期:
 149          /*最后修改日期:
 150          /********************************************************************/ 
 151          uchar   read_status()
 152          {
 153   1      uchar status;
 154   1      XCS_A=0;XCS_B=0;                                //芯片使能
 155   1      write_byte(0x05);               //读状态寄存器 命令
 156   1      status=read_byte();             //读状态寄存器
 157   1      XCS_A=1;XCS_B=1;                                //芯片不使能
 158   1      return(status);
 159   1      }
 160          /*********************************************************************/
 161          /*函数名:
 162          /*功能:
 163          /*输入参数:
 164          /*返回值:
 165          /*调用函数:
 166          /*被调用函数:
 167          /*编写日期:
 168          /*最后修改日期:
 169          /********************************************************************/
 170          bit     check_ready()
 171          {
 172   1      uchar status=0xff;
 173   1      write_en();
 174   1      status=read_status();
 175   1      status=status & 0x01;
 176   1      if(!status)
 177   1              return 1;
 178   1      else
 179   1              return 0;
C51 COMPILER V7.02a   EXAM1                                                                11/26/2005 12:26:59 PAGE 4   

 180   1      }
 181          /*********************************************************************/
 182          /*函数名:
 183          /*功能:
 184          /*输入参数:
 185          /*返回值:
 186          /*调用函数:
 187          /*被调用函数:
 188          /*编写日期:
 189          /*最后修改日期:
 190          /********************************************************************/ 
 191          void    write_one_data(uint addr,uchar dat)
 192          {
 193   1      uchar addrH,addrL;
 194   1      addrL=addr;
 195   1      addr>>=8;
 196   1      addrH=addr;
 197   1      XSCK=0;XCS_A=0;XCS_B=0;                 //芯片使能
 198   1      write_byte(0x02);               //写数据 命令
 199   1      write_byte(addrH);              //写入数据的地址
 200   1      write_byte(addrL);
 201   1      write_byte(dat);                //写数据
 202   1      XCS_A=1;XCS_B=1;                                //芯片步不使能
 203   1      }
 204          /*********************************************************************/
 205          /*函数名:
 206          /*功能:
 207          /*输入参数:
 208          /*返回值:
 209          /*调用函数:
 210          /*被调用函数:
 211          /*编写日期:
 212          /*最后修改日期:
 213          /********************************************************************/ 
 214          uchar   read_one_data(uint addr)
 215          {
 216   1      uchar dat;
 217   1      uchar addrH,addrL;
 218   1      addrL=addr;
 219   1      addr>>=8;
 220   1      addrH=addr;
 221   1      XSCK=0;XCS_A=0;XCS_B=0;                 //芯片使能
 222   1      write_byte(0x03);               //读数据 命令
 223   1      write_byte(addrH);              //写入数据的地址
 224   1      write_byte(addrL);
 225   1      dat=read_byte();                //读数据
 226   1      XCS_A=1;XCS_B=1;                                //芯片不使能
 227   1      return(dat);
 228   1      }
 229          /*********************************************************************/
 230          /*函数名:
 231          /*功能:
 232          /*输入参数:
 233          /*返回值:
 234          /*调用函数:
 235          /*被调用函数:
 236          /*编写日期:
 237          /*最后修改日期:
 238          /********************************************************************/ 
 239          void    write_page(uint addr,uchar *page)
 240          {
 241   1      uchar i;
C51 COMPILER V7.02a   EXAM1                                                                11/26/2005 12:26:59 PAGE 5   

 242   1      uchar addrH,addrL;
 243   1      addrL=addr;
 244   1      addr>>=8;
 245   1      addrH=addr;
 246   1      XSCK=0;XCS_A=0;XCS_B=0;                 //芯片使能
 247   1      write_byte(0x02);               //写数据 命令
 248   1      write_byte(addrH);              //写入数据的地址
 249   1      write_byte(addrL);
 250   1      for(i=0;i<bytenum;i++)          //写一页数据
 251   1         {
 252   2            write_byte(page[i]);
 253   2         }
 254   1      XCS_A=1;XCS_B=1;                                //芯片不使能
 255   1      }
 256          /*********************************************************************/
 257          /*函数名:
 258          /*功能:
 259          /*输入参数:
 260          /*返回值:
 261          /*调用函数:
 262          /*被调用函数:
 263          /*编写日期:
 264          /*最后修改日期:
 265          /********************************************************************/ 
 266          uchar   *read_page(uint addr)
 267          {
 268   1      uchar page[bytenum];
 269   1      uchar i;
 270   1      uchar addrH,addrL;
 271   1      addrL=addr;
 272   1      addr>>=8;
 273   1      addrH=addr;
 274   1      XSCK=0;XCS_A=0;XCS_B=0;                 //芯片使能
 275   1      write_byte(0x03);               //读数据 命令
 276   1      write_byte(addrH);              //写入数据的地址
 277   1      write_byte(addrL);
 278   1      for(i=0;i<bytenum;i++)          //读一页数据
 279   1         {
 280   2            page[i]=read_byte();
 281   2         }
 282   1      XCS_A=1;XCS_B=1;                                //芯片不使能
 283   1      return(page);
 284   1      }
 285          /********************END********************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    306    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      37
   IDATA SIZE       =   ----    ----
   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 + -