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

📄 zdjjc.lst

📁 织带机产量检测系统的监测终端。RS-485总线
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ZDJJC
OBJECT MODULE PLACED IN zdjjc.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zdjjc.c OPTIMIZE(SIZE) BROWSE ORDER DEBUG OBJECTEXTEND

line level    source

   1          #include "zdjjc.h"
   2          
   3          void Delay(uint time, uint time2) 
   4          { 
   5   1              uint data i, j;
   6   1              for (i=0; i<time; i++)
   7   1                   for (j=0; j<time2; j++);
   8   1              return;
   9   1      }
  10          
  11          uint InitBaud ()    //设置波特率
  12          {
  13   1           uint Baud;
  14   1               switch (BaudIndex)
  15   1               {
  16   2               case 0:
  17   2                       Baud = 1200;
  18   2                       RCAP2H = 0xFE;
  19   2                       RCAP2L = 0xE0; 
  20   2                       break;
  21   2           case 1:
  22   2                       Baud = 2400;
  23   2                       RCAP2H = 0xFF;
  24   2                       RCAP2L = 0x70;
  25   2                       break;
  26   2           case 2:
  27   2                       Baud = 4800;
  28   2                       RCAP2H = 0xFF;
  29   2                       RCAP2L = 0xB8; 
  30   2                       break;
  31   2               case 3:
  32   2                       Baud = 9600;
  33   2                       RCAP2H = 0xFF;
  34   2                       RCAP2L = 0xDC;
  35   2                       break;
  36   2               case 4:
  37   2                       Baud = 19200;
  38   2                       RCAP2H = 0xFF;
  39   2                       RCAP2L = 0xEE;
  40   2                       break;
  41   2           }
  42   1               return Baud;
  43   1      }
  44          
  45          void ReStoreData (uchar data RecordIndex) reentrant
  46          {                
  47   1               uchar data RecordBuf[11];
  48   1               C24GetBuf (RECORD_ROOT+RecordIndex*32, RecordBuf, 11); 
  49   1               
  50   1               //初始化各变量
  51   1               RunLength.b[0] = RecordBuf[0];
  52   1               RunLength.b[1] = RecordBuf[1];
  53   1               RunTime.b[0] = RecordBuf[2];
  54   1               RunTime.b[1] = RecordBuf[3];
  55   1               DebugLength.b[1] = RecordBuf[4];
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 2   

  56   1               DebugLength.b[1] = RecordBuf[5];
  57   1               DebugTime.b[0] = RecordBuf[6];
  58   1               DebugTime.b[1] = RecordBuf[7];
  59   1               PulseCheat.b[0] = RecordBuf[8];
  60   1               PulseCheat.b[1] = RecordBuf[9];
  61   1      
  62   1               C24GetBuf (RECORD_ROOT+RecordIndex*32+11, RecordBuf, 11); 
  63   1      
  64   1           curMotorStopCount = RecordBuf[0];        
  65   1               curMotorStopTimeLength.b[0] = RecordBuf[1];
  66   1               curMotorStopTimeLength.b[1] = RecordBuf[2];
  67   1               JingCutCount = RecordBuf[3];
  68   1               JingCutTime = RecordBuf[4];
  69   1               WeiCutCount = RecordBuf[5];
  70   1               WeiCutTime = RecordBuf[6];
  71   1               DiCutCount = RecordBuf[7];
  72   1               DiCutTime = RecordBuf[8];
  73   1               JuanCutCount = RecordBuf[9];
  74   1               JuanCutTime = RecordBuf[10];
  75   1      } 
  76          
  77          void LocateGroupIndex (uchar uYear, uchar uMonth, uchar uDate, uchar uHour, uchar uMin)
  78          {
  79   1               uchar idata TimeGroup[17], uTempIndex; 
  80   1               
  81   1               C24GetBuf (GROUP_TIME, TimeGroup, 17);
  82   1               GroupCount = TimeGroup[16]; //定班数
  83   1              
  84   1               //比较时间,得到班号
  85   1               for (;;)
  86   1               {
  87   2                    uTempIndex = GroupIndex * 4;
  88   2                        if (uHour > TimeGroup[uTempIndex] &&
  89   2                        uHour < TimeGroup[uTempIndex+2])
  90   2                        break;
  91   2                    else if (uHour == TimeGroup[uTempIndex+2])
  92   2                    {
  93   3                         if (uMin < TimeGroup[uTempIndex+3])
  94   3                         break;
  95   3                }
  96   2                else if (uHour == TimeGroup[uTempIndex])
  97   2                {
  98   3                         if (uMin >= TimeGroup[uTempIndex+1])
  99   3                         break;
 100   3                }
 101   2                GroupIndex ++;
 102   2                GroupIndex %= GroupCount;
 103   2           }
 104   1      
 105   1               C24GetBuf (RECORD_INDEX, &RecordIndex, 1); //读到上一次记录位置
 106   1               
 107   1               //读上一次记录
 108   1               C24GetBuf (RECORD_ROOT+RecordIndex*32+22, TimeGroup, 8); 
 109   1      
 110   1               //比较日期
 111   1               if (TimeGroup[7] == uYear &&
 112   1                   TimeGroup[5] == uMonth &&
 113   1                   TimeGroup[4] == uDate)
 114   1               {
 115   2                       //比较班时间
 116   2                       if (uHour > TimeGroup[0] &&
 117   2                       uHour < TimeGroup[2])
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 3   

 118   2                       {
 119   3                   ReStoreData (RecordIndex);
 120   3                               return;
 121   3                       }
 122   2                       else if (uHour == TimeGroup[2])
 123   2                   {
 124   3                        if (uMin < TimeGroup[3])
 125   3                                {
 126   4                        ReStoreData (RecordIndex);
 127   4                                    return; 
 128   4                                }       
 129   3               }
 130   2               else if (uHour == TimeGroup[0])
 131   2               {
 132   3                    if (uMin >= TimeGroup[1])
 133   3                                {
 134   4                        ReStoreData (RecordIndex);
 135   4                                        return;
 136   4                                }
 137   3               }
 138   2               }
 139   1      
 140   1               ClearAllData ();
 141   1               
 142   1               displayBuf[6] = 0x08;
 143   1               RecordIndex ++;    //本次记录位置加1     
 144   1               RecordIndex %= RECORDCOUNT;
 145   1               C24SetBuf (RECORD_INDEX, &RecordIndex, 1);     //更新记录索引号
 146   1      }
 147          
 148          void GetEEPromData ()
 149          {
 150   1               uchar idata Buffer[7];
 151   1               C24GetBuf (TERM_H, Buffer, 7);
 152   1               PulseTerm.b[0] = Buffer[0];  //得到正常脉冲周期
 153   1               PulseTerm.b[1] = Buffer[1];
 154   1               uKValue.b[0] = Buffer[2];    //K值
 155   1               uKValue.b[1] = Buffer[3]; 
 156   1               RunStatus = Buffer[4]^1;     //本机状态
 157   1               motorStatus = Buffer[4]^0;   //电机转动状态
 158   1               BaudIndex = Buffer[5];   //波特率选择
 159   1               Address = Buffer[6];     //通信地址
 160   1      }
 161          
 162          void ChangeGroup (uchar uHour, uchar uMin)
 163          {
 164   1               uchar idata TimeGroup[4];
 165   1               C24GetBuf (GROUP_TIME+GroupIndex*4, TimeGroup, 4);
 166   1               
 167   1               //比较时间
 168   1           if ((uHour > TimeGroup[0]) && (uHour < TimeGroup[2]))
 169   1                return;
 170   1               else if (uHour == TimeGroup[0])
 171   1               {
 172   2                   if (uMin >= TimeGroup[1]) 
 173   2                           return;  
 174   2               }
 175   1           else if (uHour == TimeGroup[2])
 176   1           {
 177   2               if (uMin < TimeGroup[3])
 178   2                   return;
 179   2               }        
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 4   

 180   1      
 181   1               //保存当前数据
 182   1               SaveCurrData ();
 183   1               //数据清零,换下一班
 184   1               ClearAllData ();        
 185   1               GroupIndex ++;
 186   1               GroupIndex %= GroupCount;
 187   1               RecordIndex ++;
 188   1           RecordIndex %= RECORDCOUNT;
 189   1           C24SetBuf (RECORD_INDEX, &RecordIndex, 1); //更新记录索引号
 190   1      }
 191          
 192          void ClearAllData (void)   //所有当前记录变量清0
 193          {
 194   1               uPulseInc = 0;
 195   1               RunLength.w = 0;
 196   1               RunTime.w = 0;
 197   1               DebugLength.w = 0;
 198   1               DebugTime.w = 0;
 199   1               curMotorStopCount = 0;      
 200   1               curMotorStopTimeLength.w = 0;
 201   1               PulseCheat.w = 0;
 202   1      
 203   1               JingCutCount = 0;
 204   1               JingCutTime = 0;
 205   1      
 206   1               WeiCutCount = 0;
 207   1               WeiCutTime = 0;
 208   1      
 209   1               DiCutCount = 0;
 210   1               DiCutTime = 0;
 211   1      
 212   1               JuanCutCount = 0;
 213   1               JuanCutTime = 0;
 214   1      }
 215          
 216          void InitParam ()
 217          {
 218   1          uchar idata TimeBuf[7];
 219   1      
 220   1              //初始化各引脚
 221   1          DAT_595 = HIGH;
 222   1          CLK_595 = HIGH;
 223   1          STB_595 = HIGH;
 224   1          EN_SEND = FALSE;//使能接收数据
 225   1          MOTOR   = HIGH;
 226   1      
 227   1              //初始化定时器0,1
 228   1          TMOD = 0x11;
 229   1              
 230   1              //定时器0,方式1,用于伪脉冲检测
 231   1          TH0 = TH0_VAL;
 232   1          TL0 = TL0_VAL;
 233   1          TR0 = TRUE;
 234   1          ET0 = FALSE;
 235   1                      
 236   1              //定时器1,方式1,用于显示
 237   1          TH1 = TH1_VAL;
 238   1          TL1 = TL1_VAL;
 239   1          TR1 = TRUE;
 240   1              ET1 = TRUE;
 241   1              
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 5   

 242   1              //初始化定时器2,用于通信
 243   1              T2CON = 0x30;
 244   1              TR2 = TRUE;
 245   1              ET2 = TRUE;
 246   1              PS = TRUE;
 247   1              SCON = 0x50;  //8位
 248   1              ES = TRUE;    //中断允许位
 249   1                                  
 250   1              //初始化外中断0
 251   1          IT0 = TRUE; //边沿触发方式
 252   1          EX0 = TRUE;
 253   1      
 254   1              //初始化外中断1
 255   1          IT1 = TRUE; //边沿触发方式
 256   1          EX1 = FALSE;
 257   1          PX1 = TRUE; //外部中断1优先级最高
 258   1      
 259   1          if (!RstStatus)
 260   1              {
 261   2                  //初始化各变量
 262   2                  curKey = NO_KEY;
 263   2                  KeyFlag = FALSE;
 264   2                  
 265   2                  RecOver = FALSE;
 266   2                  TrasOver = FALSE;
 267   2                  IsReceive = FALSE;
 268   2                  UartLength = 255;
 269   2              Address = 255;
 270   2                  Rindex = 0;
 271   2                  Tindex = 0;
 272   2      
 273   2                  TimeStatus = FALSE;  
 274   2      
 275   2                  JingStatus = JING_PIN;
 276   2                  WeiStatus = WEI_PIN;
 277   2                  DiStatus = DIXI_PIN;
 278   2                  JuanStatus = JUAN_PIN;
 279   2      
 280   2                  v_Get1302 (TimeBuf);
 281   2              C24SetBuf (START_TIME, TimeBuf, 7);
 282   2      
 283   2              displayBuf[6] = 0x00;
 284   2      
 285   2              //显示年月日
 286   2                  displayBuf[5] = SEVEN_BLK1[TimeBuf[3] & 0x0F];
 287   2                  displayBuf[4] = SEVEN_BLK1[(TimeBuf[3]>>4) & 0x0F];
 288   2                  displayBuf[3] = SEVEN_BLK1[TimeBuf[4] & 0x0F];
 289   2                  displayBuf[2] = SEVEN_BLK1[(TimeBuf[4]>>4) & 0x0F];
 290   2                  displayBuf[1] = SEVEN_BLK1[TimeBuf[6] & 0x0F];
 291   2                  displayBuf[0] = SEVEN_BLK1[(TimeBuf[6]>>4) & 0x0F];
 292   2              }
 293   1      
 294   1              //开中断
 295   1          EA = TRUE;
 296   1          GetEEPromData ();
 297   1              InitBaud();      

⌨️ 快捷键说明

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