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

📄 eeprom58.lst.svn-base

📁 单片机驱动32X64点阵资料
💻 SVN-BASE
字号:
C51 COMPILER V8.08   EEPROM58                                                              09/26/2012 10:47:48 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE EEPROM58
OBJECT MODULE PLACED IN eeprom58.OBJ
COMPILER INVOKED BY: D:\Program Files\keil_51\C51\BIN\C51.EXE eeprom58.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<STC12C5A60S2.H> 
   2          #define uchar unsigned char
   3          #define uint unsigned int       
   4          #include <intrins.h>  
   5          typedef unsigned char  INT8U;
   6          typedef unsigned int   INT16U;
   7          
   8          /*
   9          sfr IAP_DATA    = 0xC2;
  10          sfr IAP_ADDRH   = 0xC3;
  11          sfr IAP_ADDRL   = 0xC4;
  12          sfr IAP_CMD     = 0xC5;
  13          sfr IAP_TRIG    = 0xC6;
  14          sfr IAP_CONTR   = 0xC7;
  15          */
  16          
  17          //定义Flash 操作等待时间及允许IAP/ISP/EEPROM 操作的常数
  18          //#define ENABLE_ISP 0x80 //系统工作时钟<30MHz 时,对IAP_CONTR 寄存器设置此值
  19          #define ENABLE_ISP 0x81 //系统工作时钟<24MHz 时,对IAP_CONTR 寄存器设置此值
  20          //#define ENABLE_ISP 0x82 //系统工作时钟<20MHz 时,对IAP_CONTR 寄存器设置此值
  21          //#define ENABLE_ISP 0x83 //系统工作时钟<12MHz 时,对IAP_CONTR 寄存器设置此值
  22          //#define ENABLE_ISP 0x84 //系统工作时钟<6MHz 时,对IAP_CONTR 寄存器设置此值
  23          //#define ENABLE_ISP 0x85 //系统工作时钟<3MHz 时,对IAP_CONTR 寄存器设置此值
  24          //#define ENABLE_ISP 0x86 //系统工作时钟<2MHz 时,对IAP_CONTR 寄存器设置此值
  25          //#define ENABLE_ISP 0x87 //系统工作时钟<1MHz 时,对IAP_CONTR 寄存器设置此值
  26          
  27          void IAP_Disable();
  28          
  29          union union_temp16
  30          {
  31              INT16U un_temp16;
  32              INT8U  un_temp8[2];
  33          }my_unTemp16;
  34          
  35          //读一字节,调用前需打开IAP 功能,入口:DPTR = 字节地址,返回:A = 读出字节
  36          INT8U byte_read(INT16U add)
  37          {
  38   1          IAP_DATA = 0x00;
  39   1          IAP_CONTR = ENABLE_ISP;         //打开IAP 功能, 设置Flash 操作等待时间
  40   1          IAP_CMD = 0x01;                 //IAP/ISP/EEPROM 字节读命令
  41   1      
  42   1          my_unTemp16.un_temp16 = add;
  43   1          IAP_ADDRH = my_unTemp16.un_temp8[0];    //设置目标单元地址的高8 位地址
  44   1          IAP_ADDRL = my_unTemp16.un_temp8[1];    //设置目标单元地址的低8 位地址
  45   1      
  46   1          //EA = 0;
  47   1          IAP_TRIG = 0x5A;   //先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
  48   1          IAP_TRIG = 0xA5;   //送完A5h 后,ISP/IAP 命令立即被触发起动
  49   1          _nop_();
  50   1          //EA = 1;
  51   1          IAP_Disable();  //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
  52   1                          //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
  53   1          return (IAP_DATA);
  54   1      }
  55          
C51 COMPILER V8.08   EEPROM58                                                              09/26/2012 10:47:48 PAGE 2   

  56          //字节编程,调用前需打开IAP 功能,入口:DPTR = 字节地址, A= 须编程字节的数据
  57          void byte_program(INT16U add, INT8U ch)
  58          {
  59   1          IAP_CONTR = ENABLE_ISP;         //打开 IAP 功能, 设置Flash 操作等待时间
  60   1          IAP_CMD = 0x02;                 //IAP/ISP/EEPROM 字节编程命令
  61   1      
  62   1          my_unTemp16.un_temp16 = add;
  63   1          IAP_ADDRH = my_unTemp16.un_temp8[0];    //设置目标单元地址的高8 位地址
  64   1          IAP_ADDRL = my_unTemp16.un_temp8[1];    //设置目标单元地址的低8 位地址
  65   1      
  66   1          IAP_DATA = ch;                  //要编程的数据先送进IAP_DATA 寄存器
  67   1          //EA = 0;
  68   1          IAP_TRIG = 0x5A;   //先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
  69   1          IAP_TRIG = 0xA5;   //送完A5h 后,ISP/IAP 命令立即被触发起动
  70   1          _nop_();
  71   1          //EA = 1;
  72   1          IAP_Disable();  //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
  73   1                          //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
  74   1      }
  75          
  76          //擦除扇区, 入口:DPTR = 扇区地址
  77          void sector_erase(INT16U add)
  78          {
  79   1          IAP_CONTR = ENABLE_ISP;         //打开IAP 功能, 设置Flash 操作等待时间
  80   1          IAP_CMD = 0x03;                 //IAP/ISP/EEPROM 扇区擦除命令
  81   1      
  82   1          my_unTemp16.un_temp16 = add;
  83   1          IAP_ADDRH = my_unTemp16.un_temp8[0];    //设置目标单元地址的高8 位地址
  84   1          IAP_ADDRL = my_unTemp16.un_temp8[1];    //设置目标单元地址的低8 位地址
  85   1      
  86   1          //EA = 0;
  87   1          IAP_TRIG = 0x5A;   //先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
  88   1          IAP_TRIG = 0xA5;   //送完A5h 后,ISP/IAP 命令立即被触发起动
  89   1          _nop_();
  90   1          //EA = 1;
  91   1          IAP_Disable();  //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
  92   1                          //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
  93   1      }
  94          
  95          void IAP_Disable()
  96          {
  97   1          //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
  98   1          //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
  99   1          IAP_CONTR = 0;      //关闭IAP 功能
 100   1          IAP_CMD   = 0;      //清命令寄存器,使命令寄存器无命令,此句可不用
 101   1          IAP_TRIG  = 0;      //清命令触发寄存器,使命令触发寄存器无触发,此句可不用
 102   1          IAP_ADDRH = 0;
 103   1          IAP_ADDRL = 0;
 104   1      }


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