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

📄 hicj6.lst

📁 这是一个
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.12  HICJ6                                                                  01/03/2005 12:08:21 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE HICJ6
OBJECT MODULE PLACED IN D:\TEST\HICJ6.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\TEST\HICJ6.C DB SB OE

stmt 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 "fm25040.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          BYTE code Relay_Station=13;
  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[4]={1000000,10000000,160000000,32000000};
  27          
  28          BYTE data Time_Counter;
  29          BYTE idata 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 Ms20;
  35          
  36          BYTE data Hdd_New_Bak[5];
  37          BYTE data Hdd_Old[5],Hdd_Old_Bak[5];
  38          extern BYTE data Short_New[5],Break_New[5];
  39          BYTE data Short_Bak,Break_Bak;
  40          BYTE idata Key_Count,Pulse,Type;
  41          BYTE data Key_New,Key_Old,Key_Val,Key_Press;
  42          BYTE data Alarm;
  43          extern BYTE data Trs_Wp,Trs_Rp,Rcv_Wp,Rcv_Rp;
  44          extern BYTE data Station,House_Max;
  45          BYTE data Start,House;
  46          BYTE data HddEn_Sum,Key_C,Flash;
  47          BYTE idata TrsRelayOff[5];
  48          BYTE data WriteOrder;
  49          BYTE data Keep_Flag[5];
  50          BYTE idata Short_Old[5];
  51          BYTE idata RelayOff[5];
  52          
  53          BYTE xdata Hdd_New[10][5];
  54          BYTE xdata HddVal[40];
  55          BYTE xdata Trs_Buf[25];
C51 COMPILER V6.12  HICJ6                                                                  01/03/2005 12:08:21 PAGE 2   

  56          BYTE xdata Rcv_Buf[30];
  57          //BYTE xdata Hdd10s[40];
  58          //BYTE xdata RelayOffTimes[40];
  59          //WORD 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          union Full_Str {BYTE Full_B[4];unsigned long Full_L;} Full;
  72          
  73          /**********************************************************
  74          *名	   称:serial_int
  75          *功	   能:串口中断函数
  76          *说	   明:处理串口发送、接收数据,每个字节中断一次
  77          *调	   用:
  78          *入口参数:无
  79          *返 回 值:无
  80          ***********************************************************/
  81          
  82          void serial_int(void) interrupt 4 //using 1
  83          {
  84   1       EA=0;
  85   1       if (RI)
  86   1        {
  87   2         RI=0;
  88   2         Rcv_Count=0;
  89   2          if(Rcv_Wp==29)
  90   2          {
  91   3           Rcv_Wp=0;
  92   3          }
  93   2         Rcv_Buf[Rcv_Wp]=SBUF;
  94   2         if(
  95   2             Rcv_Buf[Rcv_Wp-2]==0xeb && Rcv_Buf[Rcv_Wp-1]==0x90
  96   2            &&Rcv_Wp<8)
  97   2            {
  98   3            	Rcv_Flag=1;
  99   3            	Rcv_Rp=Rcv_Wp;
 100   3            }
 101   2         Rcv_Wp++;
 102   2        }
 103   1       if (TI)
 104   1        {
 105   2         TI=0;
 106   2         if(Trs_Wp!=Trs_Rp)
 107   2          {
 108   3          	SBUF=Trs_Buf[Trs_Rp];
 109   3          	Trs_Rp++;
 110   3          }
 111   2          else  DIR485=1;
 112   2      
 113   2        }
 114   1       EA=1;
 115   1       }
 116          
 117          /**********************************************************
C51 COMPILER V6.12  HICJ6                                                                  01/03/2005 12:08:21 PAGE 3   

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

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

 242   2          Led[9]=i/0x10;
 243   2          Led[8]=i%0x10;
 244   2          if(Led[8]>9)Led[8]=0x0f;
 245   2          i=Read1B(House*3,1);
 246   2          Led[11]=i/0x10;
 247   2          Led[10]=i%0x10;
 248   2          for(i=8;i<12;i++)
 249   2           {
 250   3            if(Led[i]>9)Led[i]=0x0f;
 251   3           }
 252   2      
 253   2          Led[7]=Hdd_Str.Hdd_L/10000000;
 254   2          Led[6]= (Hdd_Str.Hdd_L%10000000)/1000000;
 255   2          Led[5]=(Hdd_Str.Hdd_L%1000000 )/100000;
 256   2          Led[4]=(Hdd_Str.Hdd_L%100000  )/10000;
 257   2          Led[3]=(Hdd_Str.Hdd_L%10000   )/1000;
 258   2          Led[2]=(Hdd_Str.Hdd_L%1000    )/100;
 259   2          Led[1]=(Hdd_Str.Hdd_L%100     )/10;
 260   2          Led[0]= Hdd_Str.Hdd_L%10;
 261   2      
 262   2          if (Led[7]==0)
 263   2          {
 264   3            Led[7]=0x0f;
 265   3            if(Led[6]==0)
 266   3             {
 267   4               Led[6]=0x0f;
 268   4               if(Led[5]==0)
 269   4                {
 270   5                  Led[5]=0x0f;
 271   5                 if(Led[4]==0)
 272   5                  {
 273   6                    Led[4]=0x0f;
 274   6                    if(Led[3]==0)
 275   6                     {
 276   7                      Led[3]=0x0f;
 277   7      
 278   7                     }
 279   6      
 280   6                  }
 281   5                }
 282   4             }
 283   3      
 284   3          }
 285   2          i=Read1B(200+House,0);

⌨️ 快捷键说明

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