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

📄 chengxu.lst

📁 可编程继电器模块
💻 LST
字号:
C51 COMPILER V9.00   CHENGXU                                                               03/05/2012 10:48:39 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:定次(开机次数记忆最大记忆次数65536次)key按一次,
   5              可以重新记忆 催款应用程序
   6          使用芯片:STC15F104E
   7          晶振:12MHZ
   8          编译环境:Keil
   9          作者:zhangxinchunleo
  10          网站:www.ourhc.cn
  11          淘宝店:汇诚科技 http://shop36330473.taobao.com
  12          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  13          
  14          *********************************************************************/
  15          /********************************************************************/
  16          #include "reg52.h" 
  17          #include <intrins.H>
  18          #define uchar unsigned char //宏定义字符型变量
  19          #define uint  unsigned int      //宏定义整型变量
  20          /********************************************************************
  21                                      寄存器设置
  22          *********************************************************************/ 
  23          sfr IAP_DATA  =0xc2;        //数据寄存器
  24          sfr IAP_ADDRH =0xc3;        //地址寄存器
  25          sfr IAP_ADDRL =0xc4;        //地址寄存器
  26          sfr IAP_CMD   =0xc5;        //命令寄存器
  27          sfr IAP_TRIG  =0xc6;        //触发寄存器
  28          sfr IAP_CONTR =0xc7;        //擦除寄存器
  29          
  30          sbit  P33=P3^3;                     //定义继电器控制输出脚
  31          /********************************************************************
  32                                      命令定义
  33          *********************************************************************/
  34          #define CMD_IDLE     0      //EEPROM无操作
  35          #define CMD_READ     1      //读取字节
  36          #define CMD_PROGRAM  2      //写入字节
  37          #define CMD_ERASE    3      //擦除字节
  38          /********************************************************************
  39                                 编程周期由晶振决定
  40          *********************************************************************/
  41          //#define ENABLE_IAP 0X80        //编程周期由晶振决定(如果<30MHZ选用此项)
  42          //#define ENABLE_IAP 0X81        //编程周期由晶振决定(如果<24MHZ选用此项)
  43          //#define ENABLE_IAP 0X82        //编程周期由晶振决定(如果<20MHZ选用此项)
  44            #define ENABLE_IAP 0X83        //编程周期由晶振决定(如果<12MHZ选用此项)
  45          //#define ENABLE_IAP 0X84        //编程周期由晶振决定(如果<6MHZ选用此项)
  46          //#define ENABLE_IAP 0X85        //编程周期由晶振决定(如果<3MHZ选用此项)
  47          //#define ENABLE_IAP 0X86        //编程周期由晶振决定(如果<2MHZ选用此项)
  48          //#define ENABLE_IAP 0X87        //编程周期由晶振决定(如果<1MHZ选用此项)
  49          
  50          #define IAP_ADDRESS 0X0000       //内部EEPROM地址
  51          /********************************************************************
  52                                      开机最大次数和最长时间定义
  53          *********************************************************************/
  54          #define C  10                 //开机最大次数(次)
  55          /********************************************************************
C51 COMPILER V9.00   CHENGXU                                                               03/05/2012 10:48:39 PAGE 2   

  56                                      初始定义
  57          *********************************************************************/
  58          uchar Count;
  59          sbit jdq=P3^3;
  60          sbit key=P3^5;
  61          /********************************************************************
  62                                 函数初始化
  63          *********************************************************************/
  64          void IapIdle();                                       //操作函数
  65          uchar IapReadByte(uint addr);             //读取函数
  66          void IapProgramByte(uint addr,uchar dat); //写入函数
  67          void IapEraseSector(uint addr);           //擦除函数
  68          //============================================================
  69          //延时程序
  70          void delayms(unsigned int x)
  71          {
  72   1          int i,j;                                                                                
  73   1          for(i=0;i<x;i++)                                                                    
  74   1             {
  75   2                   for(j=0;j<260;j++);
  76   2             }                                                                                     
  77   1      }
  78          
  79          /********************************************************************
  80                                      主函数
  81          *********************************************************************/
  82          void main()
  83          {               
  84   1              delayms(600); 
  85   1          Count=IapReadByte(10);                                          
  86   1              Count++;                                        
  87   1              IapEraseSector(10);              //擦除扇区     //34us
  88   1              IapProgramByte(10,Count);           //写入数据//38us
  89   1                                          //定时器中断初始化
  90   1          if(Count<C)
  91   1                 TR0=1;
  92   1      
  93   1          if(Count>=C)
  94   1              {
  95   2                TR0=0;
  96   2                jdq=1;
  97   2                IapEraseSector(10);            //擦除扇区
  98   2                IapProgramByte(10,C+2);           //写入数据
  99   2              } 
 100   1          while(1)
 101   1              { if(key==0)
 102   2               {jdq=1;
 103   3                while(!key);
 104   3                jdq=0;
 105   3                IapEraseSector(10);           //擦除扇区
 106   3               }
 107   2              }
 108   1      
 109   1      }
 110          
 111          /********************************************************************
 112                                      操作函数
 113          *********************************************************************/
 114          void IapIdle()
 115          {
 116   1              IAP_CONTR=0;
 117   1              IAP_CMD=0;
C51 COMPILER V9.00   CHENGXU                                                               03/05/2012 10:48:39 PAGE 3   

 118   1              IAP_TRIG=0;
 119   1              IAP_ADDRH=0X80;
 120   1              IAP_ADDRL=0;
 121   1      }
 122          /********************************************************************
 123                                      读取一个字节函数
 124          *********************************************************************/
 125          uchar IapReadByte(uint addr)
 126          {
 127   1              uchar dat;  
 128   1              IAP_CONTR=ENABLE_IAP;
 129   1              IAP_CMD=CMD_READ;
 130   1              IAP_ADDRL=addr;
 131   1              IAP_ADDRH=addr>>8;
 132   1              IAP_TRIG=0X5A;
 133   1              IAP_TRIG=0XA5;
 134   1              _nop_();
 135   1              _nop_();
 136   1              _nop_();
 137   1              dat=IAP_DATA;
 138   1              IapIdle();
 139   1              return dat;
 140   1      }
 141          
 142          /********************************************************************
 143                                      写入一个字节函数
 144          *********************************************************************/
 145          void IapProgramByte(uint addr,uchar dat)
 146          {
 147   1      
 148   1              IAP_CONTR=ENABLE_IAP;
 149   1              IAP_CMD=CMD_PROGRAM;
 150   1              IAP_ADDRL=addr;
 151   1              IAP_ADDRH=addr>>8;
 152   1              IAP_DATA=dat;
 153   1              IAP_TRIG=0X5A;
 154   1              IAP_TRIG=0XA5;
 155   1              _nop_();
 156   1              _nop_();
 157   1              _nop_();
 158   1              IapIdle();
 159   1      }
 160          /********************************************************************
 161                                      擦除一个字节函数
 162          *********************************************************************/
 163          void IapEraseSector(uint addr)
 164          {
 165   1              IAP_CONTR=ENABLE_IAP;
 166   1              IAP_CMD=CMD_ERASE;
 167   1              IAP_ADDRL=addr;
 168   1              IAP_ADDRH=addr>>8;
 169   1              IAP_TRIG=0X5A;
 170   1              IAP_TRIG=0XA5;
 171   1              _nop_();
 172   1              _nop_();
 173   1              _nop_();
 174   1              IapIdle();
 175   1      }
 176          /********************************************************************
 177                                      结束
 178          *********************************************************************/

C51 COMPILER V9.00   CHENGXU                                                               03/05/2012 10:48:39 PAGE 4   


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