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

📄 serial.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   SERIAL                                                                12/21/2004 15:11:26 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN .\output\SERIAL.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SERIAL.C OPTIMIZE(6,SPEED) BROWSE ORDER DEBUG OBJECTEXTEND PRINT(.\output\S
                    -ERIAL.lst) OBJECT(.\output\SERIAL.obj)

stmt level    source

   1          /*********************************************************************************************************
   2          **--------------文件信息--------------------------------------------------------------------------------
   3          **文   件   名: serial.c
   4          **创   建   人: 刘宝贵
   5          **最后修改日期: 2004年4月20日
   6          **描        述: 串行口驱动
   7          **
   8          **--------------历史版本信息----------------------------------------------------------------------------
   9          ** 创建人: 刘宝贵
  10          ** 版  本: V1.00
  11          ** 日 期: 2004年4月20日
  12          ** 描 述: 原始版本
  13          **
  14          **------------------------------------------------------------------------------------------------------
  15          ** 修改人:
  16          ** 版  本:
  17          ** 日 期:
  18          ** 描 述:
  19          **
  20          **------------------------------------------------------------------------------------------------------
  21          **--------------当前版本修订------------------------------------------------------------------------------
  22          ** 修改人: 刘宝贵
  23          ** 日 期: 2004年4月20日
  24          ** 描 述: 
  25          **
  26          **------------------------------------------------------------------------------------------------------
  27          ********************************************************************************************************/
  28          
  29          #include "config.h"
  30          
  31          uint8 OS_Q_MEM_SEL NotUse _at_ 0x0000;      //指针的NULL为0,这个变量占用0地质避免出现有效的NULL指针
  32          uint8 OS_Q_MEM_SEL SerialInData[100];        //给读串口消息队列分配的队列空间
  33          uint8 OS_Q_MEM_SEL SerialOutData[200];       //给写串口消息队列分配的队列空间
  34          void PutChar(uint8 Data);                   //发送一个字节
  35          void Send(uint8 Data);                      //发送一个数据包
  36          uint8 GetCharWithCheck(void);               //从读串口消息队列取一字节,并且对该字节校验
  37          
  38          bit SerialCanSend = 1;
  39          bit CommSending = 0;
  40          //uint8 data test;
  41          uint8 data inchk;          //校验和
  42          uint8 data outchk;         //校验和
  43          uint8 data cid;            //命令码
  44          uint8 data rtn;            //返回码  RTN值  表示意义
  45          uint8 xdata buf[100];      // 缓冲串口数据     
  46          #define RIGHT         1    //         01H       正常
  47          #define CHKSUM_ERROR  2    //         02H       CHKSUM 错
  48          #define LENGTH_ERROR  3    //         03H       LENGTH 错
  49          #define CID_ERROR     4    //         04H       CID 无效
  50          #define TYPE_ERROR    5    //         05H       命令格式错
  51          #define DATA_ERROR    6    //         06H       无效数据
  52          #define LOGIC_ERROR   7    //         07H       逻辑错
  53          
  54          #define OTHER_ERROR   0XE0 //         E0H~EFH   其他错误
C51 COMPILER V7.06   SERIAL                                                                12/21/2004 15:11:26 PAGE 2   

  55          
  56          /*********************************************************************************************************
  57          ** 函数名称: PutChar
  58          ** 功能描述: 发送一个字节
  59          ** 输 入: Data:发送的数据
  60          ** 输 出: 无
  61          ** 全局变量: 无
  62          ** 调用模块: 无
  63          **
  64          ** 作 者: 陈明计
  65          ** 日 期: 2002年12月4日
  66          **-------------------------------------------------------------------------------------------------------
  67          ** 修改人:
  68          ** 日 期:
  69          **------------------------------------------------------------------------------------------------------
  70          ********************************************************************************************************/
  71          void PutChar(uint8 Data)
  72          {
  73   1          OS_ENTER_CRITICAL();
  74   1          if (SerialCanSend == 1)
  75   1          {
  76   2              SerialCanSend = 0;
  77   2              SBUF0 = Data;
  78   2          }
  79   1          else
  80   1          {
  81   2              OSQIntPost(SerialOutData,Data);
  82   2          }
  83   1          OS_EXIT_CRITICAL();
  84   1      }  
  85          
  86          /*********************************************************************************************************
  87          ** 函数名称: PutCharWithcheck
  88          ** 功能描述: 发送一个字节同时校验
  89          ** 输 入: Data:发送的数据
  90          ** 输 出: 无
  91          ** 全局变量: chk
  92          ** 调用模块: PutChar
  93          **
  94          ** 作 者: 刘宝贵
  95          ** 日 期: 2004年4月21日
  96          **-------------------------------------------------------------------------------------------------------
  97          ** 修改人:
  98          ** 日 期:
  99          **------------------------------------------------------------------------------------------------------
 100          ********************************************************************************************************/
 101          void PutCharWithCheck(uint8 Data)
 102          {
 103   1          outchk ^= Data ;
 104   1          PutChar (Data);
 105   1      }  
 106          
 107          /*********************************************************************************************************
 108          ** 函数名称: CommSendInfo
 109          ** 功能描述: 发送一个报文
 110          ** 输   入: 无
 111          ** 输   出: 无
 112          ** 全局变量: address cid rtn chk
 113          ** 调用模块: OSQCreate PutCharWithCheck PutChar
 114          **
 115          ** 作 者: 刘宝贵
 116          ** 日 期: 2004年4月25日
C51 COMPILER V7.06   SERIAL                                                                12/21/2004 15:11:26 PAGE 3   

 117          **-------------------------------------------------------------------------------------------------------
 118          ** 修改人:
 119          ** 日 期:
 120          **------------------------------------------------------------------------------------------------------
 121          ********************************************************************************************************/
 122          void CommSendInfo(void)
 123          {
 124   1          OSQCreate(SerialOutData,200);
 125   1          outchk = 0;
 126   1          PutCharWithCheck(0xeb);
 127   1          PutCharWithCheck(0x90);
 128   1          PutCharWithCheck(0xeb);
 129   1          PutCharWithCheck(0x90);
 130   1          PutCharWithCheck(Address);
 131   1          PutCharWithCheck(cid);
 132   1          PutCharWithCheck(1);
 133   1          PutCharWithCheck(rtn);
 134   1          PutChar(outchk);
 135   1          PutChar(0x0d);
 136   1      }
 137          /*********************************************************************************************************
 138          ** 函数名称: GetCharWithCheck
 139          ** 功能描述: 从读串口消息队列取一字节,并且对该字节校验
 140          ** 输   入: 无
 141          ** 输   出: temp:从串口消息队列取的字节
 142          ** 全局变量: inchk:校验和
 143          ** 调用模块: OSQPend
 144          **
 145          ** 作   者: 刘宝贵
 146          ** 日   期: 2004年4月21日
 147          **-------------------------------------------------------------------------------------------------------
 148          ** 修改人:
 149          ** 日 期:
 150          **------------------------------------------------------------------------------------------------------
 151          ********************************************************************************************************/
 152          uint8 GetCharWithCheck(void)
 153          {
 154   1          uint8 data temp;
 155   1          OSQPend(&temp,SerialInData,0);     /* 接收一个字节       */
 156   1          inchk^=temp;
 157   1          return(temp);
 158   1      }  
 159          
 160          /*********************************************************************************************************

⌨️ 快捷键说明

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