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

📄 iouart.lst

📁 STC单片机IO口模拟RS232测试程序,Keil Cx51应用开发技术中的程序主要的功能是在利用串口调试工具发送一个8bit的数据
💻 LST
字号:
C51 COMPILER V7.08   IOUART                                                                07/23/2008 15:46:42 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE IOUART
OBJECT MODULE PLACED IN iouart.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE iouart.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************
   2          IO口模拟232测试程序,仿单片机Keil Cx51应用开发技术中的程序
   3          主要的功能是在利用串口调试工具发送一个8bit的数据,而后单片机
   4          接收后把这个数据发送给模拟串口
   5          *********************************************************/
   6          #include "STC12C2052AD.H"
   7          sbit Tx_Pin=P3^7;//发送端口
   8          sbit Rx_Pin=P1^0;//接收端口
   9          sbit Baud0=P1^6;
  10          sbit Baud1=P1^7;//波特率选择
  11          bit Flag=0;//若标志位为1,则表示串口已经过了一位的时间 
  12          #define unchar unsigned char
  13          #define unint unsigned int
  14          unchar HighTime;
  15          unchar LowTime;
  16          /********************************************************/
  17          bit CheckAvailStartBit()//检测开始位
  18          {
  19   1              return(Rx_Pin==0);//若为0,则返回1,即有数据传送
  20   1                                                //若为1,则返回0,即没有接收到数据
  21   1      }
  22          /********************************************************/
  23          void Timer0() interrupt 1//定时器中断处理
  24          {
  25   1              Flag=1;
  26   1              TL0=LowTime;
  27   1              TH0=HighTime;
  28   1      }
  29          /********************************************************/
  30          unchar ReceiveByte()//接收字节
  31          {
  32   1              unchar Data;
  33   1              unint i;
  34   1              Data=0x00;
  35   1              TR0=1;//开始定时
  36   1              while(Flag==0);
  37   1              Flag=0;//开始位不采样
  38   1              for(i=0;i<=7;i++)
  39   1              {
  40   2                      Data>>=1;//移位处理
  41   2                      if(Rx_Pin==1)//为1的话,则进行处理
  42   2                      {
  43   3                              Data|=0x80;
  44   3                      }
  45   2                      while(Flag==0);//若Flag为0,则时间还未到,等待
  46   2                                                //若Flag为1,则一位的时间已经到,准备接收数据
  47   2                      Flag=0;
  48   2              }
  49   1              while(Flag==0);//对第9位停止位的处理
  50   1              Flag=0;
  51   1              while(Flag==0)
  52   1              {
  53   2                      if(Rx_Pin)//检测到停止位,退出
  54   2                      {
  55   3                              break;
C51 COMPILER V7.08   IOUART                                                                07/23/2008 15:46:42 PAGE 2   

  56   3                      }
  57   2              }       
  58   1              TR0=0;//关闭定时器
  59   1              return(Data);//返回数据
  60   1      }
  61          /********************************************************/
  62          void SendByte(unchar Data)
  63          {
  64   1              unint i;
  65   1              TR0=1;//开始定时
  66   1              Tx_Pin=0;//起始位,0
  67   1              while(Flag==0);
  68   1              Flag=0;
  69   1              for(i=0;i<=7;i++)
  70   1              {
  71   2                      if(Data&0x01)
  72   2                      {       
  73   3                              Tx_Pin=1;
  74   3                      }
  75   2                      else
  76   2                      {
  77   3                              Tx_Pin=0;
  78   3                      }
  79   2                      Data>>=1;
  80   2                      while(Flag==0);
  81   2                      Flag=0;
  82   2              }
  83   1              Tx_Pin=1;//结束位
  84   1              TR0=0;//关闭定时器
  85   1      }
  86          /********************************************************/
  87          void main()
  88          {
  89   1              unchar temp;
  90   1              TMOD=0x01;//定时器0为模式1,自动重装载
  91   1              TR0=0;
  92   1              PCON=0x00;
  93   1              if(Baud1==1) 
  94   1              {
  95   2                      if(Baud0==1) 
  96   2                      {
  97   3                      HighTime=0xFF;
  98   3                      LowTime=0xD0;//在这个分频下波特率为19200
  99   3                      }
 100   2                      else 
 101   2                      {
 102   3                      HighTime=0xFF;
 103   3                      LowTime=0xA0;//在这个分频下波特率为9600,也是默认的波特率
 104   3                      }
 105   2              }
 106   1              else
 107   1              {
 108   2                      if(Baud0==0) 
 109   2                      {
 110   3                      HighTime=0xFF;
 111   3                      LowTime=0x40;//在这个分频下波特率为4800
 112   3                      }
 113   2                      else 
 114   2                      {
 115   3                      HighTime=0xFE;
 116   3                      LowTime=0x80;//在这个分频下波特率为2400
 117   3                      }
C51 COMPILER V7.08   IOUART                                                                07/23/2008 15:46:42 PAGE 3   

 118   2              }
 119   1      /********************测试*********************************/
 120   1      /*********************************************************/
 121   1              TH0=HighTime;
 122   1              TL0=LowTime;
 123   1              ET0=1;//开定时器0的中断
 124   1              EA=1;//开总中断
 125   1              for(;;)
 126   1              {
 127   2                      if(CheckAvailStartBit())//模拟接收口检测到起始位
 128   2                      {
 129   3                              temp=ReceiveByte();//接收数据
 130   3                              SendByte(temp);//将接收到的数据发送给PC
 131   3                      }
 132   2              }
 133   1      
 134   1      }
 135          
 136          


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