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

📄 uart_int.lst

📁 EasyStudy51-II单片机开发系统的库函数源代码.包含了EasyStudy51-II硬件的全部驱动.
💻 LST
字号:
C51 COMPILER V7.06   UART_INT                                                              11/06/2008 01:10:28 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE UART_INT
OBJECT MODULE PLACED IN UART_INT.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c51\UART_INT.c INCDIR(.\Target\INC\) DEBUG OBJECTEXTEND PRINT(.\UART_INT.ls
                    -t) OBJECT(UART_INT.obj)

stmt level    source

   1          
   2          
   3          #include "AT89X52.h"
   4          #include "ES51_II.h"
   5          #include "ES51_II_LIB.h"
   6          
   7          //      指针
   8          //              在串行中断中使用
   9          static char *pBuff;
  10          
  11          //      字符串发送完毕标志
  12          //              在调用PutStr()函数前查询前一字符串是否发送完毕
  13          bit     bTxDone = TRUE;
  14          //      字符串接收完毕标志位
  15          //              在调用GetStr()函数后查询此变量,可判断字符串接收是否完成
  16          bit bRxDone = FALSE;
  17          //      
  18          static unsigned char RxLength;  
  19          //
  20          static unsigned char TxLength;
  21          
  22          
  23          //      发送字符串标志
  24          static bit bTxStr = TRUE;
  25          //      接收字符串标志
  26          static bit bRxStr = TRUE;
  27          
  28          
  29          //      中断方式发送字符串
  30          //              以字符串结尾标志'\0'停止发送
  31          void PutStr_( char *pstr )
  32          {
  33   1              bTxStr = TRUE;                                          //      发送字符串
  34   1              bTxDone = FALSE;                                        //      发送完成标志位,初始为假 
  35   1              ES = 1;                                                         //      允许串行中断
  36   1              pBuff = pstr;
  37   1              SBUF = *pBuff;                                          //      发送第一字节数据,发送完毕将引起中断
  38   1              pBuff++;                                                                //      
  39   1      }
  40          
  41          //      中断方式发送一组数据
  42          void PutData_(unsigned char length,char *pbuff)
  43          {
  44   1              bTxStr = FALSE;                                         //      发送数据
  45   1              bTxDone = FALSE;                                        //      发送完成标志位,初始为假 
  46   1              ES = 1;                                                         //      允许串行中断
  47   1              TxLength = length;
  48   1              pBuff = pbuff;
  49   1              SBUF = *pBuff;                                          //      发送第一字节数据,发送完毕将引起中断
  50   1              pBuff++;                                                        
  51   1              TxLength--;
  52   1      }
  53          
  54          //      中断方式接收字符串
C51 COMPILER V7.06   UART_INT                                                              11/06/2008 01:10:28 PAGE 2   

  55          //              以回车符['\r']结束接收;
  56          void GetStr_(char *pbuff )
  57          {
  58   1              bRxStr = TRUE;                                          //      接收字符串      
  59   1              bRxDone = FALSE;                                        //      接收完成标志位 初始为假
  60   1              ES = 1;                                                         //      允许串行中断
  61   1      
  62   1              pBuff = pbuff;                                  
  63   1      }
  64          
  65          //      中断方式接收数据
  66          void GetData_(unsigned char length,char *pbuff)
  67          {
  68   1              bRxStr = FALSE;                                         //      接收数据
  69   1              bRxDone = FALSE;                                        //      接收完成标志位 初始为假
  70   1              ES = 1;                                                         //      允许串行中断
  71   1      
  72   1              pBuff = pbuff;                                          
  73   1              RxLength = length;                                      
  74   1      }
  75          
  76          //      串行中断函数
  77          void UART_INT(void)     interrupt SIO_VECTOR //using 0
  78          {
  79   1              unsigned char tmp;
  80   1      
  81   1              if( TI )                                                        //      传输完毕中断处理
  82   1                      {
  83   2                      TI = 0;
  84   2                      if( bTxStr == TRUE)                             //      处理发送字符串
  85   2                              {
  86   3                              if( *pBuff != 0  )                      //      判断是否到达字符串末尾
  87   3                                      SBUF = *pBuff;                  //      
  88   3                              else{                           
  89   4                                      bTxDone = TRUE;                 //      完成字符串发送
  90   4                                      ES = 0;                                 //      传输完毕,禁止串行中断
  91   4                                      }
  92   3                              }
  93   2                      else{                                                   //      处理发送数据            
  94   3                              if( TxLength-- > 0)                     
  95   3                                      SBUF = *pBuff;                  //      数据发送未完成
  96   3                              else{
  97   4                                      bTxDone = TRUE;                 //      数据发送完成    
  98   4                                      ES = 0;
  99   4                                      }       
 100   3                              }                                               
 101   2                      }
 102   1              else if( RI )                                                   //      接收数据中断处理
 103   1                      {                                                               //      把接收到的数据放到缓冲区中
 104   2                      RI = 0;
 105   2                      tmp = SBUF;
 106   2                      if( bRxStr == TRUE )
 107   2                              {
 108   3                              if( tmp != '\r' )
 109   3                                      *pBuff = SBUF;
 110   3                              else{
 111   4                                      *pBuff = SBUF;  
 112   4                                      bRxDone = TRUE;                 //      字符串接收完毕
 113   4                                      ES = 0;                         
 114   4                                      }
 115   3                              }
 116   2                      else{
C51 COMPILER V7.06   UART_INT                                                              11/06/2008 01:10:28 PAGE 3   

 117   3                              if( RxLength > 0 )
 118   3                                      *pBuff = tmp;
 119   3                              if( --RxLength == 0 )
 120   3                                      { 
 121   4                                      bRxDone = TRUE;                 //      字符串接收完毕
 122   4                                      ES = 0;
 123   4                                      }       
 124   3                              }
 125   2                      }
 126   1              pBuff++;
 127   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    254    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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