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

📄 52-eepom.lst

📁 AD7705的驱动程序,二通道,可用于检测小电压变化的传感器
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   52_EEPOM                                                              04/26/2007 11:38:57 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 52_EEPOM
OBJECT MODULE PLACED IN 52-EEPOM.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 52-EEPOM.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "mylib.h"
   2          
   3          //sfr16 DPTR = 0x82;
   4          
   5          /*        新增特殊功能寄存器定义        */
   6          /*sfr    ISP_DATA       =   0xe2;
   7          sfr  ISP_ADDRH  =   0xe3;  
   8          sfr      ISP_ADDRL      =   0xe4;
   9          sfr      ISP_CMD        =   0xe5; 
  10          sfr      ISP_TRIG       =   0xe6;   
  11          sfr      ISP_CONTR    =   0xe7; */
  12          
  13          
  14          /* 定义命令 */
  15          #define READ_AP_and_Data_Memory_Command                         0x01        /*  字节读数据存储区   */
  16          #define PROGRAM_AP_and_Data_Memory_Command          0x02        /*  字节编程数据存储区 */
  17          #define SECTOR_ERASE_AP_and_Data_Memory_Command     0x03        /*  扇区擦除数据存储区 */
  18          
  19          typedef     unsigned char       INT8U;          /* 8 bit 无符号整型  */
  20          typedef     unsigned int    INT16U;     /* 16 bit 无符号整型 */
  21          #define         DELAY_CONST         60000
  22          
  23          /* 定义常量 */
  24          #define ERROR   0
  25          #define OK      1
  26          
  27          sbit        Begin_LED       =           P1^0;
  28          sbit        ERROR_LED       =       P1^3;
  29          sbit        OK_LED                      =       P1^7;
  30          
  31          /* 定义Flash 操作等待时间 */
  32          #define        MCU_CLOCK_40MHz
  33          //#define         MCU_CLOCK_20MHz
  34          //#define        MCU_CLOCK_10MHz
  35          //#define        MCU_CLOCK_5MHz
  36          #ifdef MCU_CLOCK_40MHz
  37                  #define WAIT_TIME        0x00
  38          #endif
  39          #ifdef MCU_CLOCK_20MHz
                      #define WAIT_TIME        0x01
              #endif
  42          #ifdef MCU_CLOCK_10MHz
                      #define WAIT_TIME        0x02
              #endif
  45          #ifdef MCU_CLOCK_5MHz
                      #define WAIT_TIME        0x03
              #endif
  48          
  49          /* 调试控制项 */
  50          //#define         DEBUG_STC89C_LE58RD+
  51          
  52          #define         DEBUG_STC89C_LE52RC
  53          
  54          //#define USED_BYTE_QTY_IN_ONE_SECTOR                1
  55          //#define USED_BYTE_QTY_IN_ONE_SECTOR                2
C51 COMPILER V7.50   52_EEPOM                                                              04/26/2007 11:38:57 PAGE 2   

  56          //#define USED_BYTE_QTY_IN_ONE_SECTOR                4
  57          //#define USED_BYTE_QTY_IN_ONE_SECTOR                8
  58          //#define USED_BYTE_QTY_IN_ONE_SECTOR                16
  59          //#define USED_BYTE_QTY_IN_ONE_SECTOR                32
  60          //#define USED_BYTE_QTY_IN_ONE_SECTOR                64
  61          #define USED_BYTE_QTY_IN_ONE_SECTOR                128
  62          //#define USED_BYTE_QTY_IN_ONE_SECTOR                256
  63          //#define USED_BYTE_QTY_IN_ONE_SECTOR                512
  64          
  65          INT8U xdata protect_buffer[USED_BYTE_QTY_IN_ONE_SECTOR];
  66          
  67          
  68          #ifdef DEBUG_STC89C_LE58RD+                        //STC89C58RD+,  89LE58RD+
*** WARNING C323 IN LINE 68 OF 52-EEPOM.c: newline expected, extra characters found
                      #define DEBUG_AP_Memory_Begin_Sector_addr               0x0000
                      #define DEBUG_AP_Memory_End_Sector_addr         0x7e00
                      #define DEBUG_AP_Memory_End_Byte_addr           0x7fff
                      #define DEBUG_Data_Memory_Begin_Sector_addr     0x8000
              #endif
  74          #ifdef DEBUG_STC89C_LE52RC                        //STC89C52RC,        89LE52RC
  75                  #define DEBUG_AP_Memory_Begin_Sector_addr               0x0000
  76                  #define DEBUG_AP_Memory_End_Sector_addr                 0x1e00
  77                  #define DEBUG_AP_Memory_End_Byte_addr                   0x1fff
  78                  #define DEBUG_Data_Memory_Begin_Sector_addr             0x2000
  79          #endif
  80          
  81          
  82          /* 打开 ISP,IAP 功能 */
  83          void ISP_IAP_enable(void)
  84          {
  85   1              EA      =       0;      /* 关中断 */
  86   1              ISP_CONTR       =       ISP_CONTR & 0x18;       /* 0001,1000 */
  87   1              ISP_CONTR       =       ISP_CONTR | WAIT_TIME;
  88   1              ISP_CONTR       =       ISP_CONTR | 0x80;       /* 1000,0000 */
  89   1      }
  90          
  91          /* 关闭 ISP,IAP 功能 */
  92          void ISP_IAP_disable(void)
  93          {
  94   1              ISP_CONTR       =       ISP_CONTR & 0x7f;       /* 0111,1111 */
  95   1              ISP_TRIG        =       0x00;
  96   1              EA                      =   1;                  /* 开中断 */
  97   1      }
  98          
  99          /* 字节读 */
 100          INT8U byte_read(INT16U byte_addr)
 101          {
 102   1              ISP_ADDRH       =       (INT8U)(byte_addr >> 8);
 103   1              ISP_ADDRL       =       (INT8U)(byte_addr & 0x00ff);
 104   1      
 105   1              ISP_CMD         =       ISP_CMD &       0xf8;        /* 1111,1000 */
 106   1              ISP_CMD         =       ISP_CMD |       READ_AP_and_Data_Memory_Command;        /* 0000,0001 */
 107   1      
 108   1              ISP_IAP_enable();
 109   1      
 110   1              ISP_TRIG        =       0x46;
 111   1              ISP_TRIG        =       0xb9;
 112   1              _nop_();
 113   1      
 114   1              ISP_IAP_disable();
 115   1              return (ISP_DATA);
 116   1      }
C51 COMPILER V7.50   52_EEPOM                                                              04/26/2007 11:38:57 PAGE 3   

 117          
 118          /* 扇区擦除 */
 119          INT8U sector_erase(INT16U sector_addr)
 120          {
 121   1              INT16U get_sector_addr  =       0;
 122   1              get_sector_addr                 =       (sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇区地址 */
 123   1              ISP_ADDRH                       =       (INT8U)(get_sector_addr >> 8);
 124   1              ISP_ADDRL                       =       0x00;
 125   1      
 126   1              ISP_CMD =       ISP_CMD &       0xf8;   /* 1111,1000 */
 127   1              ISP_CMD =       ISP_CMD |       SECTOR_ERASE_AP_and_Data_Memory_Command;        /* 0000,0011 */
 128   1      
 129   1              ISP_IAP_enable();
 130   1              ISP_TRIG        =       0x46;        /* 触发ISP_IAP命令 */
 131   1              ISP_TRIG        =       0xb9;        /* 触发ISP_IAP命令 */
 132   1               _nop_();
 133   1      
 134   1              ISP_IAP_disable();
 135   1              return OK;
 136   1      }
 137          
 138          /* 字节编程 */
 139          INT8U byte_program(INT16U byte_addr, INT8U original_data)
 140          {
 141   1              ISP_ADDRH       =       (INT8U)(byte_addr >> 8);
 142   1              ISP_ADDRL       =       (INT8U)(byte_addr & 0x00ff);
 143   1      
 144   1              ISP_CMD         =       ISP_CMD &       0xf8;        /* 1111,1000 */
 145   1              ISP_CMD         =       ISP_CMD |       PROGRAM_AP_and_Data_Memory_Command;             /* 0000,0010 */
 146   1              ISP_DATA        =       original_data;
 147   1      
 148   1              ISP_IAP_enable();
 149   1              ISP_TRIG        =       0x46;        /* 触发ISP_IAP命令 */
 150   1              ISP_TRIG        =       0xb9;        /* 触发ISP_IAP命令 */
 151   1              _nop_();
 152   1      
 153   1              ISP_IAP_disable();
 154   1              return  OK;
 155   1      }
 156          
 157          /* 字节编程并校验 */
 158          INT8U byte_program_and_verify(INT16U byte_addr, INT8U original_data)
 159          {
 160   1              ISP_ADDRH       =       (INT8U)(byte_addr >> 8);

⌨️ 快捷键说明

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