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

📄 up51s011.lst

📁 X5045读写演示程序 先用字节写入: 写入11H到地址55H (字节写入) 读取55H
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   UP51S011                                                              03/20/2005 18:17:36 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE UP51S011
OBJECT MODULE PLACED IN up51s011.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE up51s011.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *                                                                              *
   3          *    File       : uP51s011.C                                                   *
   4          *    Date       : 2004-9-5                                                     *
   5          *    Version    : 1.0                                                          *
   6          *                                                                              *
   7          *    Author     : kevin           kevin@dz51.com                               *
   8          *    Company    : Http://www.dz51.com                                          *
   9          *                                                                              *
  10          ********************************************************************************
  11          *    Descriptoon:                                                              *
  12          *                 X5045读写演示程序                                            *
  13          *                                                                              *
  14          *                                                                              *
  15          *                                                                              *
  16          *******************************************************************************/
  17          #include <reg51.h>
  18          #include <intrins.h>
  19          
  20          
  21          sbit    CS = P1^2;      
  22          sbit    SCK = P1^3;     
  23          sbit    SI = P1^4;      
  24          sbit    SO = P1^5;      
  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   UP51S011                                                              03/20/2005 18:17:36 PAGE 2   

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

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

⌨️ 快捷键说明

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