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

📄 cmdprocess.lst

📁 一个以前开发的实际应用的交通灯控制器程序
💻 LST
字号:
C51 COMPILER V7.50   CMDPROCESS                                                            04/03/2007 10:38:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CMDPROCESS
OBJECT MODULE PLACED IN CmdProcess.obj
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE IIC[Ultral]\CmdProcess.c BROWSE DEBUG OBJECTEXTEND PRINT(.\CmdProcess.lst) 
                    -OBJECT(CmdProcess.obj)

line level    source

   1          #include "iic.h"
   2          //2007-3-21 20:40
   3          //2007-3-29 20:03
   4          
   5          #define GET(x)  RecBuf[(x)+3]
   6          //#define MsgErr()      {UART_Ack(REC_OK);return;}
   7          #define ASSERT(x,y)     {if(RecBuf[(x)+3]>=(y)) {UART_Ack(REC_OK);return;}}
   8                  //在CmdProcess中使用的宏:保证x<y,否则发送数据出错信息并退出该函数。
   9          unsigned char CheckCRC()
  10          {
  11   1              unsigned char xdata i,k;
  12   1              i=RecCnt-2;//CRC位置
  13   1              k=RecBuf[i-1];
  14   1              while(i)
  15   1              {
  16   2                      i--;
  17   2                      k=k^RecBuf[i];  
  18   2              }
  19   1              i=RecCnt-2;//CRC位置
  20   1              if(k==RecBuf[i])
  21   1                      return(1);
  22   1              else
  23   1                      return(0);
  24   1      }
  25          
  26          
  27          
  28          void CmdProcess()
  29          {
  30   1              unsigned int xdata i,k;
  31   1              if((RecBuf[0]!=MacAddr)&&(RecBuf[0]!=0x00))
  32   1                      return;//非本机且非广播,返回
  33   1              i=CheckCRC();
  34   1              if(i==0)
  35   1              {//CRC出错
  36   2                      UART_Ack(REC_CRC_ERR);
  37   2                      return;
  38   2              }
  39   1              switch(RecBuf[2])//信息部
  40   1              {
  41   2                      case CMD_IDT://绿色通道
  42   2                      {
  43   3                              ASSERT(0,9)
  44   3                              i=GET(0);
  45   3                              if(i==0)
  46   3                              {//禁止通道
  47   4                                      MeterSta=MSTA_AUTO;
*** ERROR C202 IN LINE 47 OF IIC[ULTRAL]\CMDPROCESS.C: 'MeterSta': undefined identifier
  48   4                                      HourUpdate();//更新所有
  49   4                                      PhaseSwitch();
  50   4                              }
  51   3                              else if(i<=8)
  52   3                              {
  53   4                                      i-=1;
C51 COMPILER V7.50   CMDPROCESS                                                            04/03/2007 10:38:49 PAGE 2   

  54   4                                      MeterSta=MSTA_GREENWAY;
*** ERROR C202 IN LINE 54 OF IIC[ULTRAL]\CMDPROCESS.C: 'MeterSta': undefined identifier
  55   4                                      CheDaoBuf[2]=GreenWay[i][0];
  56   4                                      CheDaoBuf[1]=GreenWay[i][1];
  57   4                                      CheDaoBuf[0]=GreenWay[i][2];
  58   4                                      SecondCnt=0;
  59   4                              }
  60   3                      }
  61   2                              break;
  62   2                      case CMD_PHASE://相位
  63   2                      {
  64   3                              ASSERT(0,2)//方案号
  65   3                              ASSERT(1,12)//时段号
  66   3                              ASSERT(2,8)//相位号
  67   3                              ASSERT(6,255)//绿灯时间
  68   3                              ASSERT(7,255)//绿闪时间
  69   3                              i=GET(6);
  70   3                              k=GET(7);
  71   3                              if(i<k)//绿灯时间必需大于绿闪时间
  72   3                              {
  73   4                                      UART_Ack(MSG_ERR);
  74   4                                      return;
  75   4                              }
  76   3                              ASSERT(8,255)//YT
  77   3                              ASSERT(9,255)//RT
  78   3                              //存储相位
  79   3                      }
  80   2                              break;
  81   2                      case CMD_PHASE_GROUP://相位组
  82   2                              break;
  83   2                      case CMD_SYSTEM_TIME://设置时间
  84   2                      {
  85   3                              ASSERT(0,100)//年
  86   3                              ASSERT(1,13)//月
  87   3                              ASSERT(2,32)//日
  88   3                              ASSERT(3,24)//小时
  89   3                              ASSERT(4,60)//分钟
  90   3                              ASSERT(5,60)//秒
  91   3                              //
  92   3                              
  93   3                      }
  94   2                              break;
  95   2                      case CMD_ADD_HOLIDAY://增加节假日
  96   2                      {
  97   3                              ASSERT(0,100)//年
  98   3                              ASSERT(1,13)//月
  99   3                              ASSERT(2,32)//日
 100   3                      }
 101   2                              break;
 102   2                      case CMD_DEL_HOLIDAY://删除节假日
 103   2                      {
 104   3                              ASSERT(0,100)//年
 105   3                              ASSERT(1,13)//月
 106   3                              ASSERT(2,32)//日
 107   3                      }
 108   2                              break;
 109   2                      case CMD_ENABLE_HOLIDAY://允许/禁止节假日
 110   2                              ASSERT(0,2)//
 111   2                              break;
 112   2                      case CMD_SET_NODE_ID://设置本机ID
 113   2                      {
 114   3                              ASSERT(0,255)//小于255,大于0
C51 COMPILER V7.50   CMDPROCESS                                                            04/03/2007 10:38:49 PAGE 3   

 115   3                              i=GET(0);
 116   3                              if(i==0)
 117   3                              {
 118   4                                      UART_Ack(MSG_ERR);
 119   4                                      return; 
 120   4                              }
 121   3                      }
 122   2                              break;
 123   2                      case CMD_RESTORE://恢复系统默认
 124   2                              break;
 125   2                      default:
 126   2                              UART_Ack(MSG_ERR);
 127   2                              return;
 128   2              }
 129   1              UART_Ack(REC_OK);//信息正确解释
 130   1      }

C51 COMPILATION COMPLETE.  0 WARNING(S),  2 ERROR(S)

⌨️ 快捷键说明

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