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

📄 hicj6.lst

📁 这是一个
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 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 "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          
  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 data 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/10/2005 07:10:30 PAGE 2   

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

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

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

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

⌨️ 快捷键说明

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