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

📄 uart.lst

📁 58enc28j06protuesuip09.rar
💻 LST
字号:
C51 COMPILER V8.15   UART                                                                  08/11/2009 15:07:52 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\debug\uart.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uart.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\debug\uart.lst) OBJECT(.\deb
                    -ug\uart.obj)

line level    source

   1          #include "reg52.h"
   2          #include "uart.h"
   3          
   4          extern u8_t xdata mydata[MYLEN];
   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          xdata   unsigned char IpStr[4]; 
  17          
  18          /******************************************************************************
  19          **UART_Init
  20          **Value:
  21          **Return Value:
  22          **Parameters::T1 产生波特率 9600 8/N/1
  23          ******************************************************************************/
  24          
  25          void UART_Init()
  26          {
  27   1          SCON   = 0x50;                     /*SCON0:模式1,8位UART,时能RX*/
  28   1              TMOD  |= 0x20;                     /*TMOD: 定时器工作再模式2, 8位重载*/
  29   1              TH1    = 0xfa;                     /*设置定时1用作波特率的重载值*/
  30   1              TL1    = 0xfa;
  31   1              TR1    = 1;                        /*开定时器1*/        
  32   1              PCON  |= 0x00;                     /*SMOD00 = 1*/                                            
  33   1              EA=1;
  34   1              ES=1;
  35   1          ComTxdBufempty=1;
  36   1      }
  37          
  38          /******************************************************************************
  39          **serial(void) interrupt 4
  40          **Value:
  41          **Return Value:
  42          **Parameters:
  43          ******************************************************************************/
  44          
  45          void serial(void) interrupt 4
  46          { 
  47   1         u8_t temp;
  48   1      
  49   1      if(TI) 
  50   1            { 
  51   2                       TI=0;
  52   2               if(ComTxdRead!=ComTxdWrite)
  53   2                              {
  54   3                                SBUF=ComTxdBuf[ComTxdRead];
C51 COMPILER V8.15   UART                                                                  08/11/2009 15:07:52 PAGE 2   

  55   3                        ComTxdRead++;
  56   3                          if(ComTxdRead==COM_TXD_BUFF_SIZE)
  57   3                                          {
  58   4                                           ComTxdRead=0; 
  59   4                                              }
  60   3                                      ComTxdBufempty=0;
  61   3                  }
  62   2              else 
  63   2                              {
  64   3                               ComTxdBufempty=1;
  65   3                              }
  66   2             }
  67   1      
  68   1      
  69   1      if (RI)
  70   1            {         
  71   2                      RI=0;
  72   2              temp=SBUF;
  73   2              ComRxdBuf[ComRxdWrite]=temp;
  74   2                      
  75   2              ComRxdWrite++;
  76   2              if(ComRxdWrite==COM_TXD_BUFF_SIZE)
  77   2                         {
  78   3                              ComRxdWrite=0;
  79   3                 }
  80   2      
  81   2             }
  82   1             
  83   1      
  84   1      }
  85          
  86          /**********************************************************************
  87          **函数原型:    void    Printf_Char(u8_t ascii)
  88          **参数说明:    ascii: 发送到串口的ASCII
  89          **返 回 值:    无      
  90          **说    明:    往串口发送一个字符
  91          ************************************************************************/
  92          
  93          void Printf_Char(u8_t ascii)
  94          {
  95   1        u16_t i;
  96   1        EA=0;
  97   1        ComTxdBuf[ComTxdWrite]=ascii;
  98   1        ComTxdWrite++;
  99   1         if(ComTxdWrite==COM_TXD_BUFF_SIZE)
 100   1            {
 101   2             ComTxdWrite=0;
 102   2                }
 103   1      
 104   1         if(ComTxdBufempty)
 105   1             { 
 106   2                   ComTxdBufempty=0;
 107   2                   TI=1;
 108   2                 }
 109   1         for(i=0;i<200;i++);   //登记的数据包数度要比它取走溢出慢
 110   1      
 111   1         EA=1;
 112   1      }
 113          
 114          /**********************************************************************
 115          **函数原型:    void            Printf_String(u8_t code *string)
 116          **参数说明:    string:        字符串的起始地址
C51 COMPILER V8.15   UART                                                                  08/11/2009 15:07:52 PAGE 3   

 117          **返 回 值:    无      
 118          **说    明:    向串口发送字符串,碰到0x00结束
 119          ************************************************************************/
 120          void Printf_String(u8_t  *string)
 121          {
 122   1         while(*string!=0)
 123   1         {
 124   2           Printf_Char(*string);
 125   2           string++;
 126   2         }
 127   1      }
 128          
 129          
 130          
 131          /**********************************************************************
 132          **函数原型: void Hex2Str(u8_t mychar)
 133          **出口参数:             无
 134          **返 回 值:             无
 135          **说    明: 实现16进制IP值到字符串的转换
 136          ************************************************************************/
 137          void Hex2Str(u8_t wchar)    
 138          {
 139   1          
 140   1          unsigned char x,y;
 141   1              unsigned char *Str;
 142   1          Str = IpStr;  
 143   1      
 144   1              x=wchar;
 145   1              if(x>99)
 146   1                              {
 147   2                  y=x/100;*Str++=y+'0';
 148   2                  x=x-100*y;y=x/10;*Str++=y+'0';
 149   2                  x=x-10*y;*Str++=x+'0';
 150   2      
 151   2                  *Str++='\0';
 152   2                      
 153   2                      }
 154   1              else if(x>9)
 155   1                              {
 156   2                  y=x/10;*Str++=y+'0';
 157   2                  x=x-10*y;*Str++=x+'0';
 158   2      
 159   2                 *Str++='\0';
 160   2                 
 161   2                      }
 162   1              else
 163   1                      {
 164   2                  *Str++=x+'0';
 165   2      
 166   2                  *Str++='\0';
 167   2                      
 168   2              }
 169   1                      
 170   1              
 171   1      }
 172          
 173          
 174          
 175          /**********************************************************************
 176          **函数原型:    void    Printf_IPStr(union Ip_Address_Type ip)
 177          **参数说明:    union Ip_Address_Type ip
 178          **返 回 值:    无      
C51 COMPILER V8.15   UART                                                                  08/11/2009 15:07:52 PAGE 4   

 179          **说    明:    向串口发送字符串,碰到0x00结束
 180          ************************************************************************/
 181          void Printf_Str(u8_t mystr)
 182          {  
 183   1       Hex2Str(mystr);
 184   1       Printf_String(IpStr);
 185   1      }
 186          /**********************************************************************
 187          **函数原型:    u8_t    Get_Char()
 188          **参数说明:    无
 189          **返 回 值:    无      
 190          **说    明:    从串口接收一个字符
 191          ************************************************************************/
 192          unsigned char Get_Char()
 193          {unsigned char temp;
 194   1      temp = ComRxdBuf[ComRxdRead];
 195   1      ComRxdRead++;
 196   1      if(ComRxdRead == COM_RXD_BUFF_SIZE){ComRxdRead=0;}
 197   1      return(temp);
 198   1      }
 199          
 200          
 201          /**********************************************************************
 202          **函数原型:    void        Copy_Send_Data( )
 203          **入口参数:             无
 204          **出口参数:             u16_t ii
 205          **返 回 值:    返回0或返回从串口接收到数据的长度
 206          **功能说明:             检查重发缓冲区是否为空,将串口输入的数据发到发送缓冲区
 207          ***********************************************************************/
 208          u16_t Copy_Send_Data()
 209          {
 210   1      u16_t ii;
 211   1      
 212   1      for(ii=0;ii<1500;ii++)  
 213   1              {
 214   2              if(ComRxdRead!=ComRxdWrite)
 215   2                      {
 216   3                  mydata[ii]=Get_Char();
 217   3                      
 218   3                  }
 219   2              
 220   2              else{ break; };
 221   2              }
 222   1      return(ii);
 223   1      }
 224          
 225          /*just end*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    534    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      4       3
   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 + -