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

📄 rtc_dsp.lst

📁 江苏单相复费率电能表方案
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   RTC_DSP                                                               04/13/2007 13:24:54 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE RTC_DSP
OBJECT MODULE PLACED IN rtc_dsp.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE rtc_dsp.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <Reg931.h>
   2          #include <Meter_def.h>
   3          #include <General.h>
   4          
   5          #ifdef    uchar 
   6            #define READYDEF 1     //宏uchar已定义
   7          #else  
                #define uchar unsigned char 
              #endif
  10          
  11          
  12          
  13          //**********************************************************
  14          //变量申明
  15          //**********************************************************
  16          extern uchar bdata MeterFlag;
  17          extern bit   Battery;
  18          extern bit   Hardware;
  19          extern bit   RsComm; 
  20          extern bit   AdjTime;
  21          extern bit   EryRev;
  22          extern bit   AdjDate;
  23          extern bit   Fee0;
  24          extern bit   Fee1;
  25          
  26          extern uchar bdata Flag;
  27          extern bit   TimeAdj;
  28          extern bit   TimeProg;
  29          extern bit   RxdFlag;
  30          extern bit   TxdFlag;
  31          extern bit   TxdWork;
  32          extern bit   DspType;
  33          extern bit   DspPage;
  34          extern bit   DspFlag;
  35          
  36          extern uchar bdata SystemStates; 
  37          extern bit   Comm_RTC_Err;
  38          extern bit   Comm_EPM_Err;
  39          extern bit   Data_RTC_Err;
  40          extern bit   Data_EPM_Err;
  41          extern bit   EryBln_Flag;
  42          extern bit   Prog_Flag;
  43          extern bit   Fee_Flag;
  44          extern bit   CommFlag;
  45          
  46          extern uchar ComPtr;
  47          extern uchar DspPtr;
  48          extern uchar DspSec;
  49          extern uchar RevSec;
  50          extern uchar CommSec;
  51          extern uchar CommTimer;
  52          
  53          extern uchar Len[2];
  54          extern uchar Addr[2];
  55          extern uchar DspPara[4];
C51 COMPILER V7.50   RTC_DSP                                                               04/13/2007 13:24:54 PAGE 2   

  56          extern uchar DspExch[6];
  57          extern uchar PulseTmp[6];
  58          extern uchar EryTmp[6];
  59          extern uchar RTC[8];
  60          extern uchar Ptr[8];
  61          extern uchar idata ComBuf[RS_MaxSize];
  62          
  63          extern unsigned int MSSum;
  64          extern unsigned int ProgTimer; 
  65          
  66          
  67          //===============================================
  68          //LCD_TABLE
  69          //===============================================
  70          uchar code LcdCoding[17]=
  71          {
  72                  0xED,   //"0"  a+b+c+d+e+f
  73                  0x60,   //"1"  b+c 
  74                  0xA7,   //"2"  a+b+d+e+g
  75                  0xE3,   //"3"  a+b+c+d+g
  76                  0x6A,   //"4"  b+c+f+g
  77                  0xCB,   //"5"  a+c+d+f+g 
  78                  0xCF,   //"6"  a+c+d+e+f+g
  79                  0xE0,   //"7"  a+b+c   
  80                  0xEF,   //"8"  a+b+c+d+e+f+g
  81                  0xEB,   //"9"  a+b+c+d+f+g    
  82                  0xEE,   //"A"  a+b+c+e+f+g
  83              0x4F,   //"b"  c+d+e+f+g
  84              0x8D,   //"C"  a+d+e+f
  85              0x67,   //"d"  b+c+d+e+g
  86              0x8F,   //"E"  a+d+e+f+g
  87              0x8E,   //"F"  a+e+f+g
  88              0x00        //" "  
  89          };
  90          
  91          
  92          
  93          
  94          //===============================================
  95          //时钟温度补偿表
  96          //===============================================
  97          uchar code Equalize_Table[91]=
  98          {
  99                  0x63,0x5F,0x5B,0x57,0x53,       //  0~4
 100                  0x4F,0x4B,0x47,0x43,0x3F,       //  5~9
 101                  0x3B,0x37,0x33,0x2F,0x2B,       // 10~14
 102                  0x28,0x25,0x22,0x1F,0x1C,       // 15~19
 103                  0x09,0x06,0x04,0x02,0x01,       // 20~24
 104                                    0x00,                         // 25
 105                  0x00,0x01,0x01,0x02,0x03,       // 26~30
 106                  0x05,0x06,0x08,0x0A,0x0D,       // 31~35
 107                  0x0F,0x12,0x15,0x19,0x1C,       // 36~40
 108                  0x20,0x24,0x29,0x2E,0x32,       // 41~45
 109                  0x38,0x3D,0x43,0x49,0x4F,       // 46~50
 110          
 111                  0x55,0x5C,0x63,0x6A,0x71,       // 51~55
 112                  0x79,0x81,0x89,0x92,0x9A,       // 56~60
 113                  0xA3,0xAD,0xB6,0xC0,0xCA,       // 61~65
 114                  0xD4,0xDE,0xE9,0xF4,0xFF,       // 66~70
 115          
 116                  0x67,0x6B,0x6F,0x73,0x77,       // -1  ~ -5
 117                  0x7C,0x81,0x86,0x8B,0x90,       // -6  ~ -10
C51 COMPILER V7.50   RTC_DSP                                                               04/13/2007 13:24:54 PAGE 3   

 118                  0x95,0x9A,0x9F,0xA5,0xAB,       // -11 ~ -15
 119                  0xB2,0xB8,0xBE,0xC4,0xCA        // -16 ~ -20 
 120          };
 121          
 122          
 123                     
 124          //**********************************************************
 125          //函数申明
 126          //**********************************************************
 127          void  RTC_Dsp_Proc(void);                                                               //时间、显示事件处理 
 128          void  Dsp_Proc(void);                                                                   //显示处理
 129          void  Rev_Proc(void);                                                                   //电能反向处理
 130          void  DspPara_Read(void);                                                               //读显示控制参数
 131          void  Ery_Balance(void);                                                                //电量冻结
 132          void  Temp_Equalize(void);                                                              //时钟温度补偿
 133          void  Fee_CHK(void);                                                                    //费率检查和切换
 134          
 135          void  RTC_Init(void);                                                                   //RTC初始化设置
 136          void  RTC_Read(void);                                                                   //时间读取
 137          void  RTC_BAK(void);                                                                    //时间备份
 138          void  SECINC(void);                                     //秒加1
 139          
 140          void  Display(uchar idata *ptr);                                                //LCD数据刷新
 141          void  RTC_Set(uchar staddr,uchar idata *ptr,uchar len); //RTC设置
 142          
 143           bit  DateTerm(void);                                                                   //日期条件判断
 144           bit  DateCHK(uchar idata *ptr);                                                //日期正确性判断
 145           bit  TimeCHK(uchar idata *ptr);                                                //时间正确性判断
 146           
 147          uchar Temp_Read(void);                                                                  //温度测量
 148          uchar LastMonthSN(uchar sn);                                                    //历史月份计算
 149          
 150          extern bit  ReadData(uchar idata *ptr); 
 151          
 152          extern void WriteEPMData(uchar idata *ptr);
 153          extern void ErrorModify(uchar addr,uchar idata *ptr);
 154          
 155          
 156          
 157          
 158          //**********************************************************
 159          // 名称:RTC_Dsp_Proc()
 160          // 功能:
 161          // 说明:
 162          //**********************************************************
 163          void RTC_Dsp_Proc(void)                                                                 
 164          {               
 165   1              Watchdog_feed();                                                                        //喂狗
 166   1          
 167   1          //电池情况
 168   1              Battery  = 1;                                                                           //电池电压偏低
 169   1              if(CMP2&0x02)                   Battery  = 0;                           //电池电压正常
 170   1              
 171   1              //********      
 172   1          //硬件情况  
 173   1              Hardware = 0;                                                                           //电表硬件正确
 174   1              if(SystemStates&0x0F)   Hardware = 1;                           //电表硬件出错 
 175   1              //********
 176   1      
 177   1              //编程开关处理
 178   1              if(PROG==0)
 179   1          {
C51 COMPILER V7.50   RTC_DSP                                                               04/13/2007 13:24:54 PAGE 4   

 180   2                      DelayNms(100);                                                                  //按键延时100ms
 181   2      
 182   2                      if( PROG==0 )
 183   2                      {           
 184   3                              Prog_Flag = 1;                                                          //确认编程按键操作有效          
 185   3                              ProgTimer = 0x0000;                                                     //编程有效计时器清零
 186   3                              AdjDate   = 1;                                                          //校时期有效
 187   3      
 188   3                              //通讯指示灯闪烁一下
 189   3                              LED_COMM  = !LED_COMM;
 190   3                              DelayNms(100);                                                          //闪烁100ms
 191   3                              LED_COMM  = !LED_COMM;
 192   3                      }
 193   2          }
 194   1          else
 195   1          {           
 196   2                      if(ProgTimer>=1800)                                                             //编程开关有效时间:30分钟
 197   2                      {
 198   3                              Prog_Flag = 0;
 199   3                              ProgTimer = 0x0000;
 200   3                              AdjDate   = DateTerm();                                         //日期条件处理
 201   3                      } 
 202   2          }
 203   1      
 204   1          //费率检查  
 205   1              if(Fee0==0&&Fee1==0)    Fee_CHK();                                      //费率检查和恢复(出错处理)
 206   1                      
 207   1          //显示方式检查      
 208   1              if(DspParaCHK!=SumCHK(DspPara,3))DspPara_Read();        //显示控制参数校对处理
 209   1       
 210   1          //显示刷新

⌨️ 快捷键说明

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