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

📄 comm_51.lst

📁 ucos2的代码
💻 LST
字号:
C51 COMPILER V7.50   COMM_51                                                               11/21/2006 00:25:31 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE COMM_51
OBJECT MODULE PLACED IN COMM_51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE COMM_51.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\DeBug\COMM_51.lst) SRC(.\
                    -DeBug\COMM_51.SRC)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                              基于uC/OS-II高速串口驱动及应用程序接口函数
   4          *                                             版权所有
   5          *
   6          * 文件名 : COMM_51.C
   7          * 版本号 :beat3
   8          * 作者   : 陈是知 csz-mail@126.com 北京中软 2005.4.21
   9          *********************************************************************************************************
  10          */
  11          
  12          #include "includes.h"
  13          
  14            #define TBUF_SIZE     256             // 这两行不要修改
  15            #define RBUF_SIZE     256     
  16          
  17          INT8U tbuf [TBUF_SIZE];
  18          INT8U rbuf [RBUF_SIZE];
  19          
  20          INT8U t_in=0;
  21          INT8U t_out=0;
  22          INT8U t_disabled=0;
  23          
  24          INT8U r_in=0;
  25          INT8U r_out=0;
  26          
  27          /******************************* 中断处理函数 ***************************
  28          * 功能:完成数据得的接收合发送
  29          ************************************************************************/
  30          void CommISRHandler() reentrant
  31          {      
  32   1       if (RI) 
  33   1       {       
  34   2                                           // 接收
  35   2          RI = 0;
  36   2          if ((r_in + 1) != r_out)
  37   2          rbuf [r_in++] = SBUF;
  38   2              //rbuf [r_in++] = 0x99;
  39   2        }
  40   1      
  41   1       if (TI) 
  42   1       {                                      // 发送
  43   2               TI = 0;
  44   2           if (t_in != t_out)
  45   2           SBUF = tbuf [t_out++];
  46   2       else
  47   2           t_disabled = 1;
  48   2       }
  49   1      }
  50          
  51          
  52          void CommInit() reentrant
  53          {
  54   1              PS=1;
C51 COMPILER V7.50   COMM_51                                                               11/21/2006 00:25:31 PAGE 2   

  55   1                      TMOD=TMOD&0x0F;
  56   1              TMOD=TMOD|0x20;
  57   1              TL1=0xFF,TH1=0xFF;      //57600, 22.1184MHz
  58   1              SCON=0x50;PCON=0x00;
  59   1                      t_disabled = 1;
  60   1              TR1=1;
  61   1                      ES=1;
  62   1      }
  63          
  64           
  65          /************************** 串行口字符输出函数 ***************************
  66          * 功能:从串行口输出一个字符c
  67          **************************************************************************/
  68          INT8U CommPutChar (INT8U c) reentrant
  69          {
  70   1      
  71   1       if ((t_in-t_out)==255)   
  72   1          return (COMM_TX_FULL);          // 如果发送缓冲区满则返回 COMM_TX_FULL
  73   1      
  74   1       OS_ENTER_CRITICAL();            // 关中断
  75   1       tbuf [t_in++] = c;                             // 将数据加入到发送缓冲区并开中断
  76   1       if (t_disabled)        
  77   1       {
  78   2         t_disabled = 0;
  79   2         TI = 1;                      
  80   2       }
  81   1       OS_EXIT_CRITICAL();                         
  82   1       return (COMM_NO_ERR);                                          // 串行口输出正确,返回0
  83   1      }
  84          
  85          
  86          /************************* 串行口字符输入函数 ****************************
  87          * 功能:从串行口输入一个字符
  88          **************************************************************************/
  89          INT8U CommGetChar (INT8U *err) reentrant
  90          {
  91   1       INT8U c;
  92   1      
  93   1       if ((r_in-r_out) == 0)
  94   1              *err=COMM_RX_EMPTY;                     // 如果接收缓冲区长度为0(未收到字符),返回 -1
  95   1       else
  96   1       {
  97   2        OS_ENTER_CRITICAL();                 
  98   2        c = rbuf [r_out++];
  99   2        OS_EXIT_CRITICAL(); 
 100   2        *err=COMM_NO_ERR;              
 101   2        return (c);                           // 串行口输入正确,返回输入的字符
 102   2       }
 103   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    302    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    517    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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