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

📄 uart.lst

📁 2010年新增TX-1C程序
💻 LST
字号:
C51 COMPILER V8.02   UART                                                                  06/17/2010 09:52:10 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE UART.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************
   2             本程序只供学习使用,未经作者许可,不得用于其它任何用途
   3                                           
   4                                           欢迎光临天祥电子  www.txmcu.cn
   5                    
   6          *******************************************************************/
   7          
   8          #include <at89x52.H>
   9          
  10          #include "UART.h"
  11          #include "MyType.h"
  12          #include "config.h"
  13          
  14          
  15          volatile uint8 Sending;
  16          
  17          
  18          /********************************************************************
  19          函数功能:串口初始化。
  20          入口参数:无。
  21          返    回:无。
  22          备    注:无。
  23          ********************************************************************/
  24          void InitUART(void)
  25          {
  26   1       EA=0; //暂时关闭中断
  27   1       TMOD&=0x0F;  //定时器1模式控制在高4位
  28   1       TMOD|=0x20;    //定时器1工作在模式2,自动重装模式
  29   1       SCON=0x50;     //串口工作在模式1
  30   1       TH1=256-Fclk/(BitRate*12*16);  //计算定时器重装值
  31   1       TL1=256-Fclk/(BitRate*12*16);
  32   1       PCON|=0x80;    //串口波特率加倍
  33   1       ES=1;         //串行中断允许
  34   1       TR1=1;        //启动定时器1
  35   1       REN=1;        //允许接收 
  36   1       EA=1;         //允许中断
  37   1      }
  38          ////////////////////////End of function//////////////////////////////
  39          
  40          /********************************************************************
  41          函数功能:串口中断处理。
  42          入口参数:无。
  43          返    回:无。
  44          备    注:无。
  45          ********************************************************************/
  46          void UartISR(void) interrupt 4
  47          {
  48   1       if(RI)    //收到数据
  49   1       {
  50   2        RI=0;   //清中断请求
  51   2       }
  52   1       else      //发送完一字节数据
  53   1       {
  54   2        TI=0;
  55   2        Sending=0;  //清正在发送标志
C51 COMPILER V8.02   UART                                                                  06/17/2010 09:52:10 PAGE 2   

  56   2       }
  57   1      }
  58          ////////////////////////End of function//////////////////////////////
  59          
  60          /********************************************************************
  61          函数功能:往串口发送一字节数据。
  62          入口参数:d: 要发送的字节数据。
  63          返    回:无。
  64          备    注:无。
  65          ********************************************************************/
  66          void UartPutChar(uint8 d)
  67          {
  68   1       SBUF=d; //将数据写入到串口缓冲
  69   1       Sending=1;      //设置发送标志
  70   1       while(Sending); //等待发送完毕
  71   1      }
  72          ////////////////////////End of function//////////////////////////////
  73          
  74          /********************************************************************
  75          函数功能:发送一个字符串。
  76          入口参数:pd:要发送的字符串指针。
  77          返    回:无。
  78          备    注:无。
  79          ********************************************************************/
  80          void Prints(uint8 * pd)
  81          {
  82   1       while((*pd)!='\0') //发送字符串,直到遇到0才结束
  83   1       {
  84   2        UartPutChar(*pd); //发送一个字符
  85   2        pd++;  //移动到下一个字符
  86   2       }
  87   1      }
  88          ////////////////////////End of function//////////////////////////////
  89          
  90          #ifdef DEBUG1
              
              /********************************************************************
              函数功能:将整数转按十进制字符串发送。
              入口参数:x:待显示的整数。
              返    回:无。
              备    注:无。
              ********************************************************************/
              void PrintLongInt(uint32 x)
              {
               int8 i;
               uint8 display_buffer[10];
              
               for(i=9;i>=0;i--)
               {
                display_buffer[i]='0'+x%10;
                x/=10;
               }
               for(i=0;i<9;i++)
               {
                if(display_buffer[i]!='0')break;
               }
               for(;i<10;i++)UartPutChar(display_buffer[i]);
              }
              ////////////////////////End of function//////////////////////////////
              
              #endif
 117          
C51 COMPILER V8.02   UART                                                                  06/17/2010 09:52:10 PAGE 3   

 118          code uint8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
 119          /********************************************************************
 120          函数功能:将短整数按十六进制发送。
 121          入口参数:待发送的整数。
 122          返    回:无。
 123          备    注:无。
 124          ********************************************************************/
 125          void PrintShortIntHex(uint16 x)
 126          {
 127   1       uint8 i;
 128   1       uint8 display_buffer[7];
 129   1       display_buffer[6]=0;
 130   1       display_buffer[0]='0';
 131   1       display_buffer[1]='x';
 132   1       for(i=5;i>=2;i--) //将整数转换为4个字节的HEX值
 133   1       {
 134   2        display_buffer[i]=HexTable[(x&0xf)];
 135   2        x>>=4;
 136   2       }
 137   1       Prints(display_buffer);
 138   1      }
 139          ////////////////////////End of function//////////////////////////////
 140          
 141          #if (defined DEBUG0)||(defined DEBUG1)
              /********************************************************************
              函数功能:发送一个byte的数据。
              入口参数:待发送的数据。
              返    回:无。
              备    注:无。
              ********************************************************************/
              void Printc(uint8 x)
              {
               Sending=1;
               SBUF=x;
               while(Sending);
              }
              ////////////////////////End of function//////////////////////////////
              
              /********************************************************************
              函数功能:以HEX格式发送一个byte的数据。
              入口参数:待发送的数据
              返    回:无。
              备    注:无。
              ********************************************************************/
              void PrintHex(uint8 x)
              {
               Printc('0');
               Printc('x');
               Printc(HexTable[x>>4]);
               Printc(HexTable[x&0xf]);
               Printc(' ');
              }
              ////////////////////////End of function//////////////////////////////
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    131    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       7
C51 COMPILER V8.02   UART                                                                  06/17/2010 09:52:10 PAGE 4   

   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 + -