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

📄 gy33485.lst

📁 红外抄表系统的源代码。利用非电信号传送控制信息和数据信息
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.00i GY33485                                                                08/16/2007 20:55:35 PAGE 1   


C51 COMPILER 6.00i, COMPILATION OF MODULE GY33485
OBJECT MODULE PLACED IN E:\电表程序\GY8_17\GY33485.OBJ
COMPILER INVOKED BY: C:\C516uv1\Bin\C51.EXE E:\电表程序\GY8_17\GY33485.C DB SB OE

stmt level    source

   1          #include "mylib.h"
   2          
   3          #define RELEASE
   4          
   5          uchar  Curtime[7] = {0x07,0x05,0x06,0x08,0x15,0x04,0x25};//年,周,月,日,时,分,秒
   6          uchar disnum[9] = {0,0,0,0,0,0,0,0,0};
   7          bdata uint fbase;
   8          bdata uint prefbase;
   9          bdata uint disnum_flag;
  10          bit send_flag=0;//发送标志
  11          bit times_flag=0; //1~9次,次数增加标志
  12          bit swith_phase=0;
  13          bit error_flag=0;
  14          uchar n=0;
  15          uchar m1=0;//地址加k1值提取下一个故障时间
  16          uchar m2=1;//
  17          uint Fault_adress;
  18          uchar CountTimer=0;
  19          
  20          
  21          ////---------------------------////////
  22          sbit Ua_enable = disnum_flag^0;
  23          sbit Ub_enable = disnum_flag^1;
  24          sbit Uc_enable = disnum_flag^2;
  25          sbit Ia_enable = disnum_flag^3;
  26          sbit Ic_enable = disnum_flag^4;
  27          sbit Ip_enable = disnum_flag^5;
  28          
  29          sbit UaIflag = disnum_flag^8;
  30          sbit UbIflag = disnum_flag^9;
  31          sbit UcIflag = disnum_flag^10;
  32          sbit IaIflag = disnum_flag^11;
  33          sbit IcIflag = disnum_flag^12;
  34          sbit IpIflag = disnum_flag^13;
  35          
  36          uchar IdNum = 0;
  37          uchar Key3Num = 0;//5_18 added
  38          bit ResetNum = 0;   //
  39          
  40          bit mail_box_flag = 0;                    //every second set this flag with 1
  41          
  42          bit a_start = 0;   //display "起始" while a_start is 1
  43          bit a_stop = 0;    //display "终/到" while a_stop is 1
  44          //flag for interval min
  45          sbit IntervalUaFlag = fbase^8;
  46          sbit IntervalUbFlag = fbase^9;
  47          sbit IntervalUcFlag = fbase^10;
  48          sbit IntervalIaFlag = fbase^11;
  49          sbit IntervalIbFlag = fbase^12;   //for low voltage ammeter
  50          sbit IntervalIcFlag = fbase^13;
  51          sbit IntervalIpFlag = fbase^14;
  52          sbit IntervalUXFlag = fbase^15;   //for low voltage ammeter
  53          //this flag used to reflect fault occurs
  54          sbit UX_fault_flag = fbase^7;
  55          sbit Ip_fault_flag = fbase^6;
C51 COMPILER V6.00i GY33485                                                                08/16/2007 20:55:35 PAGE 2   

  56          sbit Ic_fault_flag = fbase^5;
  57          sbit Ib_fault_flag = fbase^4;
  58          sbit Ia_fault_flag = fbase^3;
  59          sbit Uc_fault_flag = fbase^2;
  60          sbit Ub_fault_flag = fbase^1;
  61          sbit Ua_fault_flag = fbase^0;
  62          //this flag used to reflect fault prestatus
  63          sbit preUX_fault_flag = prefbase^7;
  64          sbit preIp_fault_flag = prefbase^6;
  65          sbit preIc_fault_flag = prefbase^5;
  66          sbit preIb_fault_flag = prefbase^4;
  67          sbit preIa_fault_flag = prefbase^3;
  68          sbit preUc_fault_flag = prefbase^2;
  69          sbit preUb_fault_flag = prefbase^1;
  70          sbit preUa_fault_flag = prefbase^0;
  71          //this flag used to reflect prestatus of Ua.Ub.....UX
  72          sbit PreUaIn = prefbase^15;
  73          sbit PreUbIn = prefbase^14;
  74          sbit PreUcIn = prefbase^13;
  75          sbit PreIaIn = prefbase^12;
  76          sbit PreIbIn = prefbase^11;
  77          sbit PreIcIn = prefbase^10;
  78          sbit PreIpIn = prefbase^9;
  79          sbit PreUXIn = prefbase^8;
  80          
  81          //start_min is the time(min) that fault occur,interval_min is the lasting time of fault
  82          uchar idata Ua_start_min,Ua_start_hour,Ua_interval_min=0;
  83          uchar idata Ub_start_min,Ub_start_hour,Ub_interval_min=0;
  84          uchar idata Uc_start_min,Uc_start_hour,Uc_interval_min=0;
  85          uchar idata Ia_start_min,Ia_start_hour,Ia_interval_min=0;
  86          //uchar idata Ib_start_min,Ib_start_hour,Ib_interval_min=0;
  87          uchar idata Ic_start_min,Ic_start_hour,Ic_interval_min=0;
  88          uchar idata Ip_start_min,Ip_start_hour,Ip_interval_min=0;
  89          //uchar idata UX_start_min,UX_start_hour,UX_interval_min=0;
  90          
  91          //this struct used to store fault.hour,fault.min,fault.sec
  92          struct fault_time idata Ua_fault;
  93          struct fault_time idata Ub_fault;
  94          struct fault_time idata Uc_fault;
  95          struct fault_time idata Ia_fault;
  96          struct fault_time idata Ib_fault;
  97          struct fault_time idata Ic_fault;
  98          struct fault_time idata Ip_fault;
  99          struct fault_time idata UX_fault;
 100          
 101          //#define sending_data_x_axial 8
 102          //#define sending_data_y_axial 6
 103          /*
 104          uchar  idata sendingdata[sending_data_x_axial][sending_data_y_axial]=
 105                          {{0x00,0x00,0x00,0x00,0x00,0x00}, //UA //Ua
 106                           {0x00,0x00,0x00,0x00,0x00,0x00}, //UB //Ub
 107                           {0x00,0x00,0x00,0x00,0x00,0x00}, //UC //Uc
 108                           {0x00,0x00,0x00,0x00,0x00,0x00}, //IA //Ia
 109                           {0x00,0x00,0x00,0x00,0x00,0x00}, //IC //Ib
 110                           {0x00,0x00,0x00,0x00,0x00,0x00}, //I- //Ic
 111                           {0x00,0x00,0x00,0x00,0x00,0x00}, //I.. //Ip
 112                           {0x00,0x00,0x00,0x00,0x00,0x00},};//U..//Ux*/
 113          //this array used to store fault start_time and stop_time
 114          uchar idata FaultTime[6];
 115          
 116          uchar SpIntval = 0;
 117          
C51 COMPILER V6.00i GY33485                                                                08/16/2007 20:55:35 PAGE 3   

 118          /*uint UaStartEeprom = 72;
 119          uint UbStartEeprom = 96;
 120          uint UcStartEeprom = 120;
 121          uint IaStartEeprom = 144;
 122          uint IcStartEeprom = 168;
 123          uint IpStartEeprom = 192;*/
 124          
 125          uint UaStartEeprom = 80;
 126          uint UbStartEeprom = 200;
 127          uint UcStartEeprom = 320;
 128          uint IaStartEeprom = 440;
 129          uint IcStartEeprom = 560;
 130          uint IpStartEeprom = 680; // 修改定义位置,定义在库函数中
 131          
 132          void KickDog(void)
 133          {
 134   1          #ifdef RELEASE
 135   1          WDT = 0x1E;
 136   1          WDT = 0x0E1;
 137   1          #else
                   ;
                  #endif
 140   1      }
 141          /*
 142          void s_send (void) interrupt 4 using 3
 143          {
 144                  void str(void);    //发送数据块
 145                  uchar mm;
 146                  RI = 0;
 147                  ES = 0;
 148                  mm = SBUF;
 149                  if(mm!='0'){goto reti;}
 150                  while(RI==0);
 151                  RI=0;
 152                  mm=SBUF;
 153                  if(mm!='3'){goto reti;}
 154                  while(RI==0);
 155                  RI=0;
 156                  mm=SBUF;
 157                  if(mm!='1'){goto reti;}
 158                  while(RI==0);
 159                  RI=0;
 160                  mm=SBUF;
 161                  if(mm!='2'){goto reti;}
 162                  while(RI==0);
 163                  RI=0;
 164                  mm=SBUF;
 165                  if(mm!='8'){goto reti;}
 166                  while(RI==0);
 167                  RI=0;
 168                  mm=SBUF;
 169                  if(mm!='5'){goto reti;}
 170                  //P3_2=1;
 171                  SM2=0;
 172                  str();
 173                  //P3_2=0;
 174                  reti:;
 175                  SM2=1;
 176                  ES=1;
 177          }
 178          
 179          void str(void)   //发送数据块
C51 COMPILER V6.00i GY33485                                                                08/16/2007 20:55:35 PAGE 4   

 180          {
 181                  uchar i,j;
 182                  for(j=0;j<8;j++)
 183                  {
 184                       for(i=0;i<6;i++)
 185                       {
 186                           SBUF=sendingdata[j][i];
 187                           while(TI==0);
 188                           TI=0;
 189                       }
 190                  }
 191          }*/
 192          /*************************************************/
 193          /* Delay 60us/unit at 11.0592 MHz crystal clock  */
 194          /*************************************************/
 195          void delay(uint t)
 196          {
 197   1          uint i,j;
 198   1          for(i=0;i<t;i++)
 199   1          {
 200   2              for(j=0;j<2;j++);
 201   2              KickDog();
 202   2          }
 203   1      }
 204          /***************************************/
 205          /*void timer0() interrupt 1 using 2
 206          {
 207          	 if (SpIntval) SpIntval--;
 208          }*/
 209          /***************************************/
 210          /***************************************/
 211          void timer2() interrupt 5 using 1
 212          {   TF2=0;
 213   1      	 if (SpIntval) SpIntval--;
 214   1      }
 215          /******************************************************/
 216          /*定时器T0中断子程序,产生38.4千赫兹载波*/
 217          /**************************************/
 218          /*************************************设计日期*2007.6.8*****/
 219          t0()interrupt 1 using 2//
 220            { P2_7= !P2_7;
 221   1         }
 222          /******************************************************/
 223          /*串行接收中断子程序***********************************/
 224          /********************************************************/
 225          /*************************************设计日期*2007.6.8***/
 226          void serial(void) interrupt 4 using 3//
 227            {uchar mm;
 228   1         if(RI)
 229   1         {RI=0;
 230   2          mm=SBUF;
 231   2          if(!(mm^0xaa))
 232   2      	  send_flag=1;
 233   2      	  if(!(mm^0xbb))
 234   2      	  swith_phase=1;
 235   2      	  if(!(mm^0xee))
 236   2      	   error_flag=1;
 237   2          }
 238   1       }
 239          void faultcount(void)
 240          {
 241   1          uchar i;
C51 COMPILER V6.00i GY33485                                                                08/16/2007 20:55:35 PAGE 5   

 242   1          if(Ua_fault_flag&& !preUa_fault_flag)
 243   1          {
 244   2               disnum[0]++;
 245   2               wr_s_eeprom(disnum, Num_EEPROM, sizeof(disnum[0]));
 246   2               disnum[1]++;
 247   2               wr_s_eeprom(disnum+1, 66, sizeof(disnum[1]));
 248   2          }
 249   1          if(Ub_fault_flag && !preUb_fault_flag)
 250   1          {
 251   2               disnum[0]++;
 252   2               wr_s_eeprom(disnum, Num_EEPROM, sizeof(disnum[0]));
 253   2               disnum[2]++;
 254   2               wr_s_eeprom(disnum+2, 67, sizeof(disnum[2]));
 255   2          }
 256   1          if(Uc_fault_flag && !preUc_fault_flag)
 257   1          {
 258   2               disnum[0]++;
 259   2               wr_s_eeprom(disnum, Num_EEPROM, sizeof(disnum[0]));
 260   2               disnum[3]++;
 261   2               wr_s_eeprom(disnum+3, 68, sizeof(disnum[3]));
 262   2          }
 263   1          if(Ia_fault_flag && !preIa_fault_flag)
 264   1          {
 265   2               disnum[0]++;
 266   2               wr_s_eeprom(disnum, Num_EEPROM, sizeof(disnum[0]));
 267   2               disnum[4]++;
 268   2               wr_s_eeprom(disnum+4, 69, sizeof(disnum[4]));
 269   2          }
 270   1      /*    if(Ib_fault_flag && !preIb_fault_flag)
 271   1          {
 272   1               disnum[0]++;
 273   1               wr_s_eeprom(disnum, Num_EEPROM, sizeof(disnum[0]));
 274   1               disnum[5]++;
 275   1          }*/

⌨️ 快捷键说明

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