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

📄 uart.lst

📁 用keilC写的鼠标驱动程序
💻 LST
字号:
C51 COMPILER V7.06   UART                                                                  09/13/2007 00:45:44 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE UART.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /******************************************************************
   2             本程序只供学习使用,未经作者许可,不得用于其它任何用途
   3                我的邮箱:computer-lov@tom.com
   4                  欢迎访问我的blog:  http://computer00.21ic.org
   5          
   6          UART.C  file
   7          
   8          作者:Computer-lov
   9          建立日期: 2007.03.20
  10          修改日期: 2007.03.22
  11          版本:V1.1
  12          版权所有,盗版必究。
  13          Copyright(C) Computer-lov 2007-2017
  14          All rights reserved            
  15          *******************************************************************/
  16          
  17          #include <at89x52.H>
  18          
  19          #include "UART.h"
  20          #include "my_type.h"
  21          
  22          uint8 Sending;
  23          uint8 UartData;
  24          uint8 UartRflag;
  25          
  26          //**************************************************************************************
  27          void InitUART(void)  //串口初始化函数,使用22.1184M晶体
  28          {
  29   1       EA=0;
  30   1       TMOD&=0x0F;
  31   1       TMOD|=0x20;    //定时器1工作在模式2
  32   1       SCON=0x50;    //串口工作在模式1
  33   1       TCON=0x05;
  34   1       TH1=0xF4;     //9600bps
  35   1       TL1=0xF4;
  36   1       PCON=0x80;    //串口波特率加倍
  37   1       ES=1;         //串行中断允许
  38   1       TR1=1;        //启动定时器1
  39   1       REN=1;        //允许接收 
  40   1       EA=1;         //允许中断
  41   1      }
  42          //****************************************************************************************
  43          
  44          
  45          //*******************************   串口中断处理        ***********************************
  46          void SerialPort(void) interrupt 4
  47          {
  48   1       if(RI)    //收到数据
  49   1        {
  50   2         UartData=SBUF;
  51   2         UartRflag=1;
  52   2         RI=0;                     //清中断请求
  53   2        }
  54   1       else  //发送完一字节数据
  55   1        {
C51 COMPILER V7.06   UART                                                                  09/13/2007 00:45:44 PAGE 2   

  56   2         TI=0;
  57   2         Sending=0;               //清正在发送标志
  58   2        }
  59   1      }
  60          //*****************************************************************************************
  61          
  62          //*****************************************************************************************
  63          void SendToComport(unsigned char d)       //往串口发送一字节数据
  64          {
  65   1       Sending=1;
  66   1       SBUF=d;
  67   1       while(Sending);
  68   1      }
  69          //*****************************************************************************************
  70          
  71          //*****************************************************************************************
  72          //发送一个字符串
  73          void Prints(uint8 * pd,uint8 line_feed)
  74          {
  75   1       while((*pd)!='\0')
  76   1        {
  77   2         SendToComport(*pd);
  78   2         pd++;
  79   2        }
  80   1       if(line_feed)
  81   1       {
  82   2        SendToComport(13);
  83   2        SendToComport(10);
  84   2       }
  85   1      }
  86          //****************************************************************************************
  87          
  88          
  89          
  90          //*****************************************************************************************
  91          void PrintLongInt(uint32 x)  //将整数转按十进制字符串发送
  92          {
  93   1       int8 i;
  94   1       uint8 display_buffer[11];
  95   1       display_buffer[10]=0;
  96   1       for(i=9;i>=0;i--)
  97   1        {
  98   2         display_buffer[i]='0'+x%10;
  99   2         x/=10;
 100   2        }
 101   1       for(i=0;i<9;i++)
 102   1        {
 103   2         if(display_buffer[i]!='0')break;
 104   2        }
 105   1       for(;i<10;i++)SendToComport(display_buffer[i]);
 106   1      }
 107          //*****************************************************************************************
 108          
 109          
 110          code uint8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
 111          //*****************************************************************************************
 112          /*
 113          void PrintLongIntHex(uint32 x)  //将整数按十六进制发送
 114          {
 115           uint8 i;
 116           uint8 display_buffer[11];
 117           display_buffer[10]=0;
C51 COMPILER V7.06   UART                                                                  09/13/2007 00:45:44 PAGE 3   

 118           display_buffer[0]='0';
 119           display_buffer[1]='x';
 120           for(i=9;i>=2;i--)
 121            {
 122             display_buffer[i]=HexTable[(x&0xf)];
 123             x>>=4;
 124            }
 125           prints(display_buffer,0);
 126          }
 127          */
 128          //*****************************************************************************************
 129          
 130          
 131          //*****************************************************************************************
 132          void Printc(uint8 x)  //发送一个byte的数据
 133          {
 134   1       Sending=1;
 135   1       SBUF=x;
 136   1       while(Sending);
 137   1      }
 138          //*****************************************************************************************
 139          
 140          
 141          //*****************************************************************************************
 142          void PrintHex(uint8 x)  //以HEX格式发送一个byte的数据
 143          {
 144   1       Printc('0');
 145   1       Printc('x');
 146   1       Printc(HexTable[x>>4]);
 147   1       Printc(HexTable[x&0xf]);
 148   1       Printc(' ');
 149   1      }
 150          //*****************************************************************************************


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    260    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3      16
   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 + -