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

📄 mcu_uart.lst

📁 58enc28j06protuesuip09.rar
💻 LST
字号:
C51 COMPILER V8.15   MCU_UART                                                              01/20/2009 12:59:36 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE MCU_UART
OBJECT MODULE PLACED IN .\debug\MCU_UART.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MCU_UART.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\debug\MCU_UART.lst) OBJE
                    -CT(.\debug\MCU_UART.obj)

line level    source

   1          #include "reg52.h"
   2          #include "uart.h"
   3          
   4          extern u8_t xdata mydata[1024];
   5          
   6          extern u8_t   xdata  ComRxdBuf[COM_RXD_BUFF_SIZE];      //串口的接收缓冲区
   7          extern u8_t   xdata  ComTxdBuf[COM_TXD_BUFF_SIZE];      //串口的发送缓冲区
   8          
   9          u16_t   idata ComTxdRead;           //串口接收读指针
  10          u16_t   idata ComRxdRead;       //串口发送读指针
  11          u16_t   idata ComRxdWrite;      //串口接收写指针
  12          u16_t   idata ComTxdWrite;      //串口发送写指针
  13          bit     ComTxdBufempty;             //发送结束
  14          
  15          /******************************************************************************
  16          **UART_Init
  17          **Value:
  18          **Return Value:
  19          **Parameters::T1 产生波特率 9600 8/N/1
  20          ******************************************************************************/
  21          
  22          void UART_Init()
  23          {
  24   1          SCON   = 0x50;                     /*SCON0:模式1,8位UART,时能RX*/
  25   1              TMOD  |= 0x20;                     /*TMOD: 定时器工作再模式2, 8位重载*/
  26   1              TH1    = 0xfa;                     /*设置定时1用作波特率的重载值*/
  27   1              TL1    = 0xfa;
  28   1              TR1    = 1;                        /*开定时器1*/        
  29   1              PCON  |= 0x00;                     /*SMOD00 = 1*/                                            
  30   1              EA=1;
  31   1              ES=1;
  32   1          ComTxdBufempty=1;
  33   1      }
  34          
  35          /******************************************************************************
  36          **serial(void) interrupt 4
  37          **Value:
  38          **Return Value:
  39          **Parameters:
  40          ******************************************************************************/
  41          
  42          void serial(void) interrupt 4
  43          { 
  44   1         u8_t temp;
  45   1      
  46   1      if(TI) 
  47   1            { 
  48   2                       TI=0;
  49   2               if(ComTxdRead!=ComTxdWrite)
  50   2                              {
  51   3                                SBUF=ComTxdBuf[ComTxdRead];
  52   3                        ComTxdRead++;
  53   3                          if(ComTxdRead==COM_TXD_BUFF_SIZE)
  54   3                                          {
C51 COMPILER V8.15   MCU_UART                                                              01/20/2009 12:59:36 PAGE 2   

  55   4                                           ComTxdRead=0;
  56   4                               ComTxdBufempty=0;
  57   4                                              }
  58   3                  }
  59   2              else 
  60   2                              {
  61   3                               ComTxdBufempty=1;
  62   3                              }
  63   2             }
  64   1      
  65   1      
  66   1      if (RI)
  67   1            {         
  68   2                      RI=0;
  69   2              temp=SBUF;
  70   2              ComRxdBuf[ComRxdWrite]=temp;
  71   2                      
  72   2              ComRxdWrite++;
  73   2              if(ComRxdWrite==COM_TXD_BUFF_SIZE)
  74   2                         {
  75   3                              ComRxdWrite=0;
  76   3                 }
  77   2      
  78   2             }
  79   1             
  80   1      
  81   1      }
  82          
  83          /**********************************************************************
  84          **函数原型:    void    Printf_Char(u8_t ascii)
  85          **参数说明:    ascii: 发送到串口的ASCII
  86          **返 回 值:    无      
  87          **说    明:    往串口发送一个字符
  88          ************************************************************************/
  89          
  90          void Printf_Char(u8_t ascii)
  91          {
  92   1        EA=0;
  93   1        ComTxdBuf[ComTxdWrite]=ascii;
  94   1        ComTxdWrite++;
  95   1         if(ComTxdWrite==COM_TXD_BUFF_SIZE)
  96   1            {
  97   2             ComTxdWrite=0;
  98   2                }
  99   1      
 100   1         if(ComTxdBufempty)
 101   1             { 
 102   2                   ComTxdBufempty=0;
 103   2                   TI=1;
 104   2                 }
 105   1      
 106   1      
 107   1         EA=1;
 108   1      }
 109          
 110          /**********************************************************************
 111          **函数原型:    void            Printf_String(u8_t code *string)
 112          **参数说明:    string:        字符串的起始地址
 113          **返 回 值:    无      
 114          **说    明:    向串口发送字符串,碰到0x00结束
 115          ************************************************************************/
 116          void Printf_String(u8_t  *string)
C51 COMPILER V8.15   MCU_UART                                                              01/20/2009 12:59:36 PAGE 3   

 117          {
 118   1         while(*string!=0)
 119   1         {
 120   2           Printf_Char(*string);
 121   2           string++;
 122   2         }
 123   1      }
 124          
 125          /**********************************************************************
 126          **函数原型:    u8_t    Get_Char()
 127          **参数说明:    无
 128          **返 回 值:    无      
 129          **说    明:    从串口接收一个字符
 130          ************************************************************************/
 131          unsigned char Get_Char()
 132          {unsigned char temp;
 133   1      temp = ComRxdBuf[ComRxdRead];
 134   1      ComRxdRead++;
 135   1      if(ComRxdRead == COM_RXD_BUFF_SIZE){ComRxdRead=0;}
 136   1      return(temp);
 137   1      }
 138          
 139          
 140          /**********************************************************************
 141          **函数原型:    void        Copy_Send_Data( )
 142          **入口参数:             无
 143          **出口参数:             u16_t ii
 144          **返 回 值:    返回0或返回从串口接收到数据的长度
 145          **功能说明:             检查重发缓冲区是否为空,将串口输入的数据发到发送缓冲区
 146          ***********************************************************************/
 147          u16_t Copy_Send_Data()
 148          {
 149   1      u16_t ii;
 150   1      
 151   1      for(ii=0;ii<1024;ii++)  
 152   1              {
 153   2              if(ComRxdRead!=ComRxdWrite)
 154   2                      {
 155   3                  mydata[ii]=Get_Char();
 156   3                      
 157   3                  }
 158   2              
 159   2              else{ break; };
 160   2              }
 161   1      return(ii);
 162   1      }
 163          
 164          /*just end*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    326    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      8    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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