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

📄 wl008.lst

📁 周立功的51单片机试验例程,我当年就是靠这个学会单片机的
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   WL008                                                                 02/17/2004 12:04:27 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE WL008
OBJECT MODULE PLACED IN wl008.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE wl008.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *                                                                              *
   3          *    File       : wl008.c                                                      *
   4          *    Date       : 2004-1-5                                                     *
   5          *    Version    : 1.0                                                          *
   6          *                                                                              *
   7          *    Author     : Freeman          freeman@willar.com                          *
   8          *    Company    : Willar           www.willar.com                              *
   9          *                                                                              *
  10          ********************************************************************************
  11          *    Descriptoon:                                                              *
  12          *                 X5054读写演示程序                                            *
  13          *                                                                              *
  14          *                                                                              *
  15          *                                                                              *
  16          *******************************************************************************/
  17          #include <reg51.h>
  18          #include <intrins.h>
  19          
  20          
  21          sbit    CS = P1^4;      
  22          sbit    SI = P1^2;      
  23          sbit    SCK = P1^0;     
  24          sbit    SO = P1^3;      
  25          
  26          #define WREN_INST       0x06            // 写入使能指令(WREN)
  27          #define WRDI_INST       0x04            // 写入禁止指令(WRDI)
  28          #define WRSR_INST       0x01            // 写入状态寄存器指令(WRSR)
  29          #define RDSR_INST       0x05            // 读取状态寄存器指令(RDSR)
  30          #define WRITE_INST      0x02            // 写入存储器指令(WRITE)
  31          #define READ_INST       0x03            // 读取存储器指令(READ)
  32                                  
  33          #define BYTE_ADDR       0x55            // 字节模式写入地址
  34          #define BYTE_DATA       0x11            // 字节模式写入数据
  35          
  36          #define PAGE_ADDR       0x1F0           // 页写入模式地址
  37          #define PAGE_DATA1      0x22            // 页模式写入第一个数据
  38          #define PAGE_DATA2      0x33            // 页模式写入第二个数据
  39          #define PAGE_DATA3      0x44            // 页模式写入第三个数据
  40          
  41          #define STATUS_REG      0x00            // 要写入到状态寄存器的值
  42                  
  43          #define MAX_POLL        0x99            // 最在查询次数m        number  of      polls
  44          
  45          
  46          void wren_cmd();        
  47          void wrsr_cmd();        
  48          void wren_cmd();
  49          void wrdi_cmd();        
  50          void byte_write();      
  51          unsigned char byte_read();              
  52          void page_write();      
  53          unsigned char sequ_read();      
  54          void rst_wdog();
  55          void outbyt(unsigned char write_data);
C51 COMPILER V7.08   WL008                                                                 02/17/2004 12:04:27 PAGE 2   

  56          unsigned char inbyt();
  57          void wip_poll();        
  58          
  59          //********************************************************************************************
  60          main()
  61          {                         
  62   1              EA = 0;                 // 
  63   1      
  64   1              SO = 1;
  65   1              SI = 1;
  66   1              SCK = 0;
  67   1              CS = 1;
  68   1      
  69   1              wren_cmd();             // 使能写入
  70   1              wrsr_cmd();             // 写入00H到状态寄存器
  71   1              wren_cmd();             // 使能写入
  72   1              byte_write();           // 写入11H到地址55H (字节写入)
  73   1              byte_read();            // 读取地址55H处的数据(字节读取)
  74   1              wren_cmd();             // 使能写入
  75   1              page_write();           // 页写入22H/33H/44H到地址1F0/1/2H
  76   1              sequ_read();            // 连续读取地址1F0/1/2H
  77   1              rst_wdog();             // 清除看门狗
  78   1              wrdi_cmd();
  79   1      
  80   1              CS = 1;
  81   1              while(1);       
  82   1      }
  83          //********************************************************************************************
  84          //* 写入使能指令
  85          //* 传入参数: 无
  86          //* 返回值: 无
  87          
  88          void wren_cmd()
  89          {
  90   1              SCK = 0;                        
  91   1              CS = 0;           
  92   1              outbyt(WREN_INST);                      // 传送写入使能指令
  93   1              SCK = 0;                
  94   1              CS = 1;         
  95   1      }                       
  96                  
  97          //********************************************************************************************
  98          //* 写入禁止指令
  99          //* 传入参数: 无
 100          //* 返回值: 无
 101          void wrdi_cmd()
 102          {
 103   1              SCK = 0;                        
 104   1              CS = 0;                           
 105   1              outbyt(WRDI_INST);                      // 传送写入禁止指令
 106   1              SCK = 0;                
 107   1              CS = 1;         
 108   1      }
 109                  
 110          //********************************************************************************************
 111          //* 写入数据到状态寄存器
 112          //* 传入参数: 无
 113          //* 返回值: 无
 114          
 115          void wrsr_cmd()
 116          {
 117   1              SCK = 0;                        
C51 COMPILER V7.08   WL008                                                                 02/17/2004 12:04:27 PAGE 3   

 118   1              CS = 0;                 
 119   1              outbyt(WRSR_INST);                      // 传送状态寄存器写入指令
 120   1              outbyt(STATUS_REG);                     // 传送要写入的数据
 121   1              SCK = 0;                        
 122   1              CS = 1;                 
 123   1              wip_poll();                             // 检测写入进度
 124   1      }
 125          
 126          //********************************************************************************************
 127          //* 读取状态寄存器
 128          //* 传入参数: 无
 129          //* 返回值: 状态寄存器值
 130          
 131          unsigned char rdsr_cmd()
 132          {
 133   1              unsigned char status;
 134   1              SCK = 0;                        
 135   1              CS = 0;                         
 136   1              outbyt(RDSR_INST);                      // 传送状态寄存器读取指令
 137   1              status = inbyt();                               // 读取状态寄存器
 138   1              SCK = 0;                        
 139   1              CS = 1; 
 140   1              return status;          
 141   1      }
 142          
 143          //********************************************************************************************
 144          //* 单一字节写入
 145          //* 传入参数: 无
 146          //* 返回值: 无
 147          
 148          void byte_write()
 149          {
 150   1              unsigned int addr;
 151   1              addr = BYTE_ADDR;               // 设置要写入的地址
 152   1              SCK = 0;                        
 153   1              CS = 0;
 154   1              if(addr & 0x100)
 155   1              {
 156   2                      outbyt(WRITE_INST | 0x08); //传送写入指令和地址最高位"1"
 157   2              }
 158   1              else
 159   1              {
 160   2                      outbyt(WRITE_INST);     // 传送写入指令和地址最高位"0"
 161   2              }                                 
 162   1              outbyt((unsigned char)addr);            // 传送地址低字节         
 163   1              outbyt(BYTE_DATA);              // 传送数据字节
 164   1              SCK = 0;                        
 165   1              CS = 1;                 
 166   1              wip_poll();                     // 检测写入进度
 167   1      }
 168                  
 169          //********************************************************************************************

⌨️ 快捷键说明

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