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

📄 hicj6.lst

📁 实用的空调计费系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE HICJ6
OBJECT MODULE PLACED IN E:\空调计费\空调计费\HICJ6.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\空调计费\空调计费\HICJ6.C DB SB OE

line level    source

   1          /********************Copyright******************************
   2          
   3          名称:HICJ6.C
   4          功能:主程序
   5          说明:
   6          修改:2004/12/24
   7          
   8          ************************************************************/
   9          #include "P89C60X2.h"
  10          #include "hicj6.h"
  11          #include "hd7279.h"
  12          #include "fram.h"
  13          
  14          extern void Trs_Edit(void);
  15          extern void Rcv_Pro(void);
  16          extern void PSendChar(unsigned char);
  17          void Hdd_Check(void);
  18          void Disp_Pro(void);
  19          void Key_Pro(void);
  20          void TrsRelay(BYTE,BYTE);
  21          void Init();
  22          
  23          BYTE code LedCode[6]={0x40,0x30,0x08,0x06,0x01,0x80};
  24          BYTE code Bat_Val[5]={0x40,0x60,0x70,0x78,0x7c};
  25          BYTE code  A8_A10[8]={2,1,0,3,4,6,7,5};
  26          DWORD code Full_Val[5]={1000000,10000000,160000000,32000000,320000000};
  27          
  28          BYTE data Time_Counter;
  29          BYTE data Trs_Counter;
  30          BYTE data Hdd_Wp,Hdd_Rp;
  31          BYTE data Rcv_Count;
  32          BYTE data  Run_Count;
  33          BYTE data Hdd_En[5],Short_En[5],Break_En[5];
  34          BYTE data ms500;
  35          BYTE data Relay_Station;
  36          
  37          BYTE data Hdd_New_Bak[5];
  38          BYTE data Hdd_Old[5],Hdd_Old_Bak[5];
  39          extern BYTE data Short_New[5],Break_New[5];
  40          BYTE data Short_Bak,Break_Bak;
  41          BYTE data Key_Count,Pulse,Type;
  42          BYTE data Key_New,Key_Old,Key_Val,Key_Press;
  43          BYTE data Alarm;
  44          extern BYTE data Trs_Wp,Trs_Rp,Rcv_Wp,Rcv_Rp;
  45          extern BYTE data Station,House_Max;
  46          BYTE data Start,House;
  47          BYTE data HddEn_Sum,Key_C,Flash;
  48          BYTE idata TrsRelayOff[5];
  49          BYTE data WriteOrder;
  50          BYTE data Keep_Flag[5];
  51          BYTE idata Short_Old[5];
  52          BYTE idata RelayOff[5];
  53          
  54          BYTE xdata Hdd_New[10][5];
  55          BYTE xdata HddVal[40];
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 2   

  56          BYTE xdata Trs_Buf[25];
  57          BYTE xdata Rcv_Buf[30];
  58          BYTE xdata Hdd10s[40];
  59          BYTE xdata TrsOffCount[40];
  60          
  61          
  62          
  63          bit Trs_Flag,Rcv_Flag,Alarm_Flag;
  64          bit Sp_Flag,Alarm_Check,HddEn_Count;
  65          bit  Ac_New,Ac_Old,Ac_Tmp;
  66          bit  Bat_New,Bat_Old,Bat_Tmp;
  67          BYTE idata Keep_Count[40]=0;
  68          WORD  idata Press_Count;
  69          
  70          union hdd_long {BYTE Hdd_B[4];DWORD Hdd_L;} Hdd_Str;
  71          
  72          /**********************************************************
  73          *名        称:serial_int
  74          *功        能:串口中断函数
  75          *说        明:处理串口发送、接收数据,每个字节中断一次
  76          *调        用:
  77          *入口参数:无
  78          *返 回 值:无
  79          ***********************************************************/
  80          
  81          void serial_int(void) interrupt 4 //using 1
  82          {
  83   1       EA=0;
  84   1       if (RI)
  85   1        {
  86   2         RI=0;
  87   2         Rcv_Count=0;
  88   2          if(Rcv_Wp==29)
  89   2          {
  90   3           Rcv_Wp=0;
  91   3          }
  92   2         Rcv_Buf[Rcv_Wp]=SBUF;
  93   2         if(
  94   2             Rcv_Buf[Rcv_Wp-2]==0xeb && Rcv_Buf[Rcv_Wp-1]==0x90
  95   2            &&Rcv_Wp<8)
  96   2            {
  97   3              Rcv_Flag=1;
  98   3              Rcv_Rp=Rcv_Wp;
  99   3            }
 100   2         Rcv_Wp++;
 101   2        }
 102   1       if (TI)
 103   1        {
 104   2         TI=0;
 105   2         if(Trs_Wp!=Trs_Rp)
 106   2          {
 107   3              SBUF=Trs_Buf[Trs_Rp];
 108   3              Trs_Rp++;
 109   3          }
 110   2          else  DIR485=1;
 111   2      
 112   2        }
 113   1       EA=1;
 114   1       }
 115          
 116          /**********************************************************
 117          *名        称:timer2
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 3   

 118          *功        能:定时器2 中断函数
 119          *说        明:完成定时采集电度端口状态(20MS)及其他一些定时处理
 120          *调        用:无
 121          *入口参数:无
 122          *返 回 值:无
 123          ***********************************************************/
 124          void timer2(void) interrupt 5 //using 2
 125          {
 126   1        BYTE data i,j;
 127   1        BYTE data P1_Tmp;
 128   1        TF2=0;
 129   1        Time_Counter++;
 130   1        Trs_Counter++;
 131   1        Rcv_Count++;
 132   1       // Run=~Run;
 133   1      //  Run=1;
 134   1      
 135   1          for (i=0;i<5;i++)
 136   1          {
 137   2           P1_Tmp=1<<(i+3);
 138   2           P1_Tmp=~P1_Tmp&0xf8;
 139   2           for(j=0;j<8;j++)
 140   2            {
 141   3             P1=P1_Tmp|A8_A10[j];
 142   3             long_delay();
 143   3             if(Hdd==0)
 144   3              {
 145   4                Hdd_New[Hdd_Wp][i]|=1<<j;
 146   4              }
 147   3               else
 148   3               {
 149   4                Hdd_New[Hdd_Wp][i]&=~(1<<j);
 150   4               }
 151   3      
 152   3            }
 153   2          }
 154   1      
 155   1      // Run=0;
 156   1      
 157   1        Hdd_Wp++;
 158   1        if(Hdd_Wp==10)
 159   1         {
 160   2          Hdd_Wp=0;
 161   2      
 162   2         }
 163   1        if(Key_Val)Key_C++;
 164   1        if(!Key)
 165   1         {
 166   2          Key_Count++;
 167   2         }
 168   1         else
 169   1         {
 170   2          Key_Count=0;
 171   2         }
 172   1        if (Press_Count<1000)
 173   1         {
 174   2           Press_Count++;
 175   2          }
 176   1      }
 177          
 178          /**********************************************************
 179          *名        称:Disp_Pro
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 4   

 180          *功        能:显示处理
 181          *说        明:将要显示的内容传送给HD7279
 182          *调        用:write7279
 183          *入口参数:无
 184          *返 回 值:无
 185          ***********************************************************/
 186          void Disp_Pro(void)
 187          {
 188   1      /*
 189   1      LED 定义
 190   1      LED[7]-LED[0]  Hdd
 191   1      LED[9]-LED[8]  House_Code
 192   1      LED[11]-LED[10] Station-Code
 193   1      
 194   1      LED[12]         Battery  Red
 195   1      LED[13]         BAttery  Green
 196   1      LED[14]         8 @3 LED
 197   1      LED[15]         One LED
 198   1      0x80  0x40  0x20  0x10  0x08  0x04  0x02  0x01
 199   1      A4    B4    B3    B2    B1    A1    A2    A3
 200   1      A1-Water   0x32
 201   1      A2-Power   0x31
 202   1      A3-Gass    0x30
 203   1      A4-Warm    0x37
 204   1      B1-heat    0x36
 205   1      B2-Break   0x35
 206   1      B3-Short   0x34
 207   1      B4-Pulse   0x33
 208   1      从上至下排列,表类型为A,报警类型为B
 209   1      
 210   1      */
 211   1        BYTE data i,j,Led[16];
 212   1        BYTE data dis[3];
 213   1        //BYTE Constant_Range;
 214   1      
 215   1        Key_Press=0;
 216   1        Flash=0;
 217   1        i=House%8;
 218   1       // if((Hdd_En[i]&(1<<i)))
 219   1        // {
 220   1        //  Read_Hdd(House);
 221   1        //  Hdd_Str.Hdd_L+=HddVal[House];
 222   1           /*
 223   1          Constant_Range=Read1B(120+House+0x100);
 224   1          Constant_Range>>=4;
 225   1           switch (Constant_Range)
 226   1                        {
 227   1                          case (1):
 228   1                                   Hdd_Str.Hdd_L*=100;
 229   1                                   break;
 230   1                          case (2):
 231   1      
 232   1                                   Hdd_Str.Hdd_L*=10;
 233   1                                   break;
 234   1      
 235   1                          case (4):
 236   1                                   Hdd_Str.Hdd_L/=10;
 237   1                                   break;
 238   1                          case (5):
 239   1                                   Hdd_Str.Hdd_L>>=4;
 240   1                                   break;
 241   1                          case (6):
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 5   

 242   1                                  Hdd_Str.Hdd_L*=10;
 243   1                                   Hdd_Str.Hdd_L>>=4;
 244   1                                   break;
 245   1                          case (7):
 246   1                                   Hdd_Str.Hdd_L*=10;
 247   1                                   Hdd_Str.Hdd_L>>=5;
 248   1                                   break;
 249   1                          case (8):
 250   1                                   Hdd_Str.Hdd_L>>=5;
 251   1                                   break;
 252   1                          default:
 253   1                                   break;
 254   1                        }
 255   1      
 256   1          */
 257   1          //Led[15]=Read1B(House*3+2+0x100);
 258   1          i=House/3+1;
 259   1          j=i-1;
 260   1          Led[9]=i/10;
 261   1          Led[8]=i%10;
 262   1          //if(Led[8]>9)Led[8]=0x0f;
 263   1          //i=Read1B(House*3+0x100);
 264   1          Led[11]=0;
 265   1          Led[10]=1;
 266   1          //for(i=8;i<12;i++)
 267   1          // {
 268   1          //  if(Led[i]>9)Led[i]=0x0f;
 269   1          // }
 270   1          dis[2]=House%3+1;
 271   1          dis[1]=Read1B(House%3*80+j*2+0x100);
 272   1          dis[0]=Read1B(House%3*80+j*2+1+0x100);
 273   1      
 274   1      
 275   1      
 276   1          Led[7]=dis[2];
 277   1          Led[6]=0;
 278   1          Led[5]=0;
 279   1          Led[4]=0;
 280   1          Led[3]=dis[1]/10;
 281   1          Led[2]=dis[1]%10;
 282   1          Led[1]=dis[0]/10;
 283   1          Led[0]=dis[0]%10;
 284   1      
 285   1          //if (Led[7]==0)
 286   1          //{
 287   1           // Led[7]=0x0f;
 288   1            if(Led[6]==0)
 289   1             {
 290   2               Led[6]=0x0f;
 291   2               if(Led[5]==0)
 292   2                {
 293   3                  Led[5]=0x0f;
 294   3                 if(Led[4]==0)
 295   3                  {
 296   4                    Led[4]=0x0f;
 297   4                    if(Led[3]==0)
 298   4                     {
 299   5                      Led[3]=0x0f;
 300   5      
 301   5                     }
 302   4      
 303   4                  }
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 6   

⌨️ 快捷键说明

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