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

📄 串口link.lst

📁 51单片机虚拟串口,解决只有P3.0/P3.1单串口的不足
💻 LST
字号:
C51 COMPILER V7.00  串__LINK                                                               09/11/2006 11:08:58 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE 串__LINK
OBJECT MODULE PLACED IN 串口LINK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 串口LINK.C LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include  <reg51.h>
   2          #include  <intrins.h>
   3          typedef unsigned char   INT8U;
   4          typedef unsigned int    INT16U;
   5          typedef unsigned long   INT32U;
   6          
   7          ///////////////定义////////////////////////////
   8          sfr TCON2 = 0xc8;
   9          sfr TMOD2 = 0xc9;
  10          
  11          sfr RCAP2L = 0xca;
  12          sfr RCAP2H = 0xcb;
  13          sfr TL2 = 0xcc;
  14          sfr TH2 = 0xcd;
  15          
  16          sbit TF2 = TCON2^7;
  17          sbit EXF2 = TCON2^6;
  18          sbit RCLK = TCON2^5;
  19          sbit TCLK = TCON2^4;
  20          sbit EXEN2 = TCON2^3;
  21          sbit TR2 = TCON2^2;
  22          sbit CT2 = TCON2^1;
  23          sbit CPRL2 = TCON2^0;
  24          
  25          
  26          sbit rs_rev = P3^0;
  27          sbit rs_sent = P3^1;
  28          
  29          INT8U bdata rsbuf;   //定义虚拟串口寄存器
  30          sbit rs0 = rsbuf^0;
  31          sbit rs1 = rsbuf^1;
  32          sbit rs2 = rsbuf^2;
  33          sbit rs3 = rsbuf^3;
  34          sbit rs4 = rsbuf^4;
  35          sbit rs5 = rsbuf^5;
  36          sbit rs6 = rsbuf^6;
  37          sbit rs7 = rsbuf^7;
  38          
  39          //////////////虚拟串口初始化子函数///////////
  40          void rs_com_start(void)
  41          {
  42   1              RCAP2H = 0xff;
  43   1                      TH2 = RCAP2H;
  44   1                  RCAP2L = 160;    //9600波特率
  45   1                      TL2= RCAP2L;
  46   1              TCON2 = 0x00;    //使用定时器2为波特率发生器
  47   1            //  TMOD2 = 0x00;
  48   1      }
  49          //////////////虚拟串口发送函数/////////////////////
  50          void rs_sen(INT8U T_TXD)
  51          {
  52   1              rsbuf=T_TXD;
  53   1              TR2 = 1;
  54   1              rs_sent = 0;         //发出开始位
  55   1              while(TF2 != 1);
C51 COMPILER V7.00  串__LINK                                                               09/11/2006 11:08:58 PAGE 2   

  56   1                      TF2=0;
  57   1                      rs_sent=rs0;       
  58   1              while(TF2 != 1);
  59   1                      TF2=0;
  60   1                      rs_sent=rs1;
  61   1              while(TF2 != 1);
  62   1                      TF2=0;
  63   1                      rs_sent=rs2;
  64   1                      while(TF2 != 1);
  65   1                      TF2=0;
  66   1                      rs_sent=rs3;
  67   1                      while(TF2 != 1);
  68   1                      TF2=0;
  69   1                      rs_sent=rs4;
  70   1                      while(TF2 != 1);
  71   1                      TF2=0;
  72   1                      rs_sent=rs5;
  73   1                      while(TF2 != 1);
  74   1                      TF2=0;
  75   1                      rs_sent=rs6;
  76   1                      while(TF2 != 1);
  77   1                      TF2=0;
  78   1                      rs_sent=rs7;
  79   1                      while(TF2 != 1);
  80   1              TF2=0;
  81   1                      rs_sent=1;           //发出停止位,数据位为8,结构为10位,无校验
  82   1              while(TF2 != 1);
  83   1              TF2=0;
  84   1                      TR2=0;
  85   1      }
  86          ///////////////虚拟串口接收子函数//////////////////
  87          unsigned char rs_in(void)
  88          {
  89   1              INT8U i;
  90   1              for(i=0;i<2;i++ )
  91   1                      {
  92   2              i = 1;
  93   2              while( rs_rev != 0 ) ;
  94   2              TR2=1;            //收到开始位,开定时器2,
  95   2                      while(TF2 != 1);
  96   2                      TF2 = 0 ;
  97   2                      rs0 = rs_rev ;
  98   2                      while(TF2 != 1);
  99   2                      TF2 = 0 ;
 100   2                      rs1 = rs_rev ;
 101   2                      while(TF2 != 1);
 102   2                      TF2 = 0 ;
 103   2                      rs2 = rs_rev ;
 104   2                      while(TF2 != 1);
 105   2                      TF2 = 0 ;
 106   2                      rs3 = rs_rev ;
 107   2                      while(TF2 != 1);
 108   2                      TF2 = 0 ;
 109   2                      rs4 = rs_rev ;
 110   2                      while(TF2 != 1);
 111   2                      TF2 = 0 ;
 112   2                      rs5 = rs_rev ;
 113   2                      while(TF2 != 1);
 114   2                      TF2 = 0 ;
 115   2                      rs6 = rs_rev ;
 116   2                      while(TF2 != 1);
 117   2                      TF2 = 0 ;
C51 COMPILER V7.00  串__LINK                                                               09/11/2006 11:08:58 PAGE 3   

 118   2                      rs7 = rs_rev ;
 119   2                      while(TF2 != 1);
 120   2                      TF2 = 0 ;
 121   2                      if (rs_rev != 1)
 122   2                      {
 123   3                              i = 0;
 124   3              }
 125   2              while(TF2 != 1);
 126   2                      TR2 = 0;
 127   2                      TF2 = 0;
 128   2                      }
 129   1                      return(rsbuf);
 130   1      }
 131          
 132          
 133          
 134          void main(void)
 135          {
 136   1           INT8U i;
 137   1               while(1)
 138   1               {
 139   2           rs_com_start();
 140   2           rs_sen(0xdd);
 141   2           i=rs_in();
 142   2           rs_sen(i);
 143   2           }
 144   1      }
 145          


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