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

📄 uart.lst

📁 使用89S52为核心做的USB键盘,注意修改了一下windows设备描述符以及端点处理等就行了。用了一个4*4的小键盘,有0-9十个数字键, Num Lock键,Caps Lock键,Shift键,
💻 LST
字号:
C51 COMPILER V7.06   UART                                                                  03/23/2007 23:58:30 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          
  24          
  25          //**************************************************************************************
  26          void InitUART(void)  //串口初始化函数,使用22.1184M晶体
  27          {
  28   1       EA=0;
  29   1       TMOD&=0x0F;
  30   1       TMOD|=0x20;    //定时器1工作在模式2
  31   1       SCON=0x50;    //串口工作在模式1
  32   1       TCON=0x05;
  33   1       TH1=0xF4;     //9600bps
  34   1       TL1=0xF4;
  35   1       PCON=0x80;    //串口波特率加倍
  36   1       ES=1;         //串行中断允许
  37   1       TR1=1;        //启动定时器1
  38   1       REN=1;        //允许接收 
  39   1       EA=1;         //允许中断
  40   1      }
  41          //****************************************************************************************
  42          
  43          
  44          //*******************************   串口中断处理        ***********************************
  45          void SerialPort(void) interrupt 4
  46          {
  47   1       if(RI)    //收到数据
  48   1        {
  49   2         RI=0;                     //清中断请求
  50   2        }
  51   1       else  //发送完一字节数据
  52   1        {
  53   2         TI=0;
  54   2         Sending=0;               //清正在发送标志
  55   2        }
C51 COMPILER V7.06   UART                                                                  03/23/2007 23:58:30 PAGE 2   

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

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


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