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

📄 comm.lst

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   COMM                                                                  01/22/2007 09:50:04 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE COMM
OBJECT MODULE PLACED IN .\output\Comm.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Comm.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\Comm.obj
                    -)

stmt level    source

   1          /*********************************************************************************************************
   2          **相控充电机主控器系统 软件设计:刘宝贵,硬件设计:刘宝贵 调试:刘宝贵
   3          **本系统使用编译器为 keil c51.exe V7.06
   4          **本系统使用汇编器为 keil A51.exe V7.07
   5          **本系统使用联接器为 keil BL51.exe V5.03
   6          **本系统使用 RTX_TINY
   7          **如果等程序有问题或者是Bug请与作者联系
   8          **与作者联系方法:邮箱:baoguiliu@163.com,baoguiliu@sohu.com 电话:0451-6677970-6738
   9          **
  10          **
  11          **VER1.0
  12          **--------------文件信息--------------------------------------------------------------------------------
  13          **文   件   名: Comm.C
  14          **创   建   人: 刘宝贵
  15          **最后修改日期: 
  16          **描        述: 通信处理
  17          **
  18          **--------------历史版本信息----------------------------------------------------------------------------
  19          ** 修改人: 
  20          ** 版  本: 
  21          ** 日 期: 
  22          ** 描 述: 
  23          **
  24          **--------------当前版本修订------------------------------------------------------------------------------
  25          ** 修改人: 
  26          ** 日 期:
  27          ** 描 述:
  28          **
  29          **------------------------------------------------------------------------------------------------------
  30          ********************************************************************************************************/
  31          
  32          #include"includes.h"
  33          sbit    COMMEN = P1^4;
  34          #define COMMEN_OFF 1
  35          #define COMMEN_ON  0
  36          
  37          #define RIGHT         1    //正常
  38          #define CHKSUM_ERROR  2    //CHKSUM 错
  39          #define CID_ERROR     3    //CID 无效
  40          #define TYPE_ERROR    4    //命令格式错
  41          #define DATA_ERROR    5    //无效果数据
  42          #define LOGIC_ERROR   6    //逻辑错
  43          #define OTHER_ERROR   0XE0 //其他错误
  44          uint8 code CommHead[4] = {0xEB,0x90,0xEB,0x90};
  45          /*********************************************************************************************************
  46          ** 函数名称: comm
  47          ** 功能描述: 串口中断处理程序
  48          ** 输 入: 无
  49          ** 输 出: 无
  50          ** 全局变量: 无
  51          ** 调用模块: 无
  52          **
  53          ** 作 者: 刘宝贵
  54          ** 日 期: 2004年4月20日
C51 COMPILER V7.06   COMM                                                                  01/22/2007 09:50:04 PAGE 2   

  55          **-------------------------------------------------------------------------------------------------------
  56          ** 修改人:
  57          ** 日 期:
  58          **------------------------------------------------------------------------------------------------------
  59          ********************************************************************************************************/
  60          void comm(void) interrupt 4
  61          {
  62   1          if (RI == 1)
  63   1          {
  64   2              uint8 idata RxSbuf;
  65   2              RxSbuf = SBUF;
  66   2              RI = 0;
  67   2              switch(CommState)
  68   2              {
  69   3                  case 0:
  70   3                  case 1:
  71   3                  case 2:
  72   3                  case 3://接收报文头
  73   3                  {
  74   4                      if(RxSbuf == CommHead[CommState])
  75   4                      {
  76   5                          CommState++;
  77   5                      }
  78   4                      else
  79   4                      {
  80   5                          CommState = 0;
  81   5                      }
  82   4                  }break;
  83   3                  case 4://接收地址码
  84   3                  {
  85   4                      if(RxSbuf == Address)
  86   4                      {
  87   5                          CommState++;
  88   5                      }
  89   4                      else
  90   4                      {
  91   5                          CommState = 0;
  92   5                      }
  93   4                  }break;
  94   3                  case 5://接收命令码
  95   3                  {
  96   4                      CommState++;
  97   4                      CommCid = RxSbuf;
  98   4                  }break;
  99   3                  case 6://接收数据区长度
 100   3                  {
 101   4                      CommState++;
 102   4                      CommRxLength = RxSbuf;
 103   4                      CommRxPointer = 0;
 104   4                      if(CommRxLength >= RX_BUF_MAX-1)//如果数据包长度过长则不接收
 105   4                      {
 106   5                          CommState = 0;
 107   5                      }
 108   4                      if(CommRxLength == 0)
 109   4                      {
 110   5                          CommState++;
 111   5                      }
 112   4                  }break;
 113   3                  case 7://接收数据区
 114   3                  {
 115   4                      CommRxBuf[CommRxPointer] = RxSbuf;
 116   4                      CommRxPointer++;
C51 COMPILER V7.06   COMM                                                                  01/22/2007 09:50:04 PAGE 3   

 117   4                      if(CommRxPointer == CommRxLength)//数据区接收完,转下一状态
 118   4                      {
 119   5                          CommState++;
 120   5                      }
 121   4                  }break;
 122   3                  case 8://接收效验和
 123   3                  {
 124   4                      CommChkIn = RxSbuf;
 125   4                      CommState++;
 126   4                  }break;
 127   3                  case 9://接收报文尾
 128   3                  {
 129   4                      CommState = 0;
 130   4                      CommRxBuf[CommRxLength] = RxSbuf;
 131   4                      CommNewMessage = 1;
 132   4                  }break;
 133   3              }
 134   2          }//处理通信接收
 135   1          if (TI == 1)
 136   1          {
 137   2              TI = 0;
 138   2              if(CommTxPointer < CommTxLength)
 139   2              {
 140   3                  SBUF = CommTxBuf[CommTxPointer];
 141   3                  CommTxPointer++;
 142   3              }
 143   2              else
 144   2              {
 145   3                  COMMEN = COMMEN_OFF;
 146   3              }
 147   2              CommNewMessage = 0;
 148   2          }
 149   1      }
 150          /*********************************************************************************************************
 151          ** 函数名称: PutChar
 152          ** 功能描述: 发送一个字节到串口缓冲区
 153          ** 输 入: Data:发送的数据
 154          ** 输 出: 无
 155          ** 全局变量: 无
 156          ** 调用模块: 无
 157          **
 158          ** 作 者: 刘宝贵
 159          ** 日 期: 2006年4月26日
 160          **-------------------------------------------------------------------------------------------------------
 161          ** 修改人:
 162          ** 日 期:
 163          **------------------------------------------------------------------------------------------------------
 164          ********************************************************************************************************/
 165          void PutChar(uint8 SendData)
 166          {
 167   1          if(CommTxPointer < TX_BUF_MAX)
 168   1          {
 169   2              CommTxBuf[CommTxPointer++] = SendData;
 170   2          }
 171   1      }
 172          /*********************************************************************************************************
 173          ** 函数名称: PutCharWithcheck
 174          ** 功能描述: 发送一个字节同时校验
 175          ** 输 入: Data:发送的数据
 176          ** 输 出: 无
 177          ** 全局变量: chk
 178          ** 调用模块: PutChar
C51 COMPILER V7.06   COMM                                                                  01/22/2007 09:50:04 PAGE 4   

 179          **
 180          ** 作 者: 刘宝贵
 181          ** 日 期: 2004年4月21日
 182          **-------------------------------------------------------------------------------------------------------
 183          ** 修改人:
 184          ** 日 期:
 185          **------------------------------------------------------------------------------------------------------
 186          ********************************************************************************************************/
 187          void PutCharWithCheck(uint8 SendData)
 188          {
 189   1          CommChkOut ^= SendData ;
 190   1          PutChar (SendData);
 191   1      }  
 192          /*********************************************************************************************************
 193          ** 函数名称: CommSendInfo
 194          ** 功能描述: 发送一个报文
 195          ** 输   入: 无
 196          ** 输   出: 无
 197          ** 全局变量: address CommCid ReturnCode chk
 198          ** 调用模块: OSQCreate PutCharWithCheck PutChar
 199          **
 200          ** 作 者: 刘宝贵
 201          ** 日 期: 2004年4月25日
 202          **-------------------------------------------------------------------------------------------------------
 203          ** 修改人:
 204          ** 日 期:
 205          **------------------------------------------------------------------------------------------------------
 206          ********************************************************************************************************/
 207          void CommSendInfo(void)
 208          {
 209   1          CommTxPointer = 0;
 210   1          CommTxLength = 9;
 211   1          CommChkOut = 0xEB;
 212   1          PutCharWithCheck(0x90);
 213   1          PutCharWithCheck(0xEB);
 214   1          PutCharWithCheck(0x90);
 215   1          PutCharWithCheck(Address);
 216   1          PutCharWithCheck(CommCid);
 217   1          PutCharWithCheck(1);
 218   1          PutCharWithCheck(ReturnCode);
 219   1          PutChar(CommChkOut);
 220   1          PutChar(0x0D);
 221   1          CommTxPointer = 0;

⌨️ 快捷键说明

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