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

📄 serial.lst

📁 PDIUSB12+51做 U盘程序,可以将自己的系统单做U盘跟 电脑通信
💻 LST
字号:
C51 COMPILER V8.02   SERIAL                                                                10/11/2007 16:35:11 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE serial.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************************************************
             -******8
   2          **      串口通信程序,拨特率可以在初始化端口使用参数从300、600、1200、2400、4800、9600、19200中任意选择
   3          **      作者:谭超
   4          **      仅供学习用,请勿用做商业用途
   5          **      提示:晶体频率为11.0592MHz,12M,24M,33。用#define命选择不同晶体对应的程序,一般在做调试程序的时候用于
             -状态显示
   6          **/
   7          #include<reg52.h>
   8          
   9          
  10          #define CRY_11_MHz              11
  11          #define CRY_12_MHz              12
  12          #define CRY_24_MHz              24
  13          #define CRY_33_MHz              33
  14          
  15          #define Crystal   CRY_24_MHz
  16          
  17          
  18          void    Init_Port(unsigned int BordRate)   
  19          {
  20   1                      
  21   1       //   unsigned char  Crystal;
  22   1              #if Crystal==CRY_11_MHz   //如果予定义晶体频率为11MHz
                      unsigned int x; 
                      if(BordRate>9600)               //如果拨特率大于9600,需要设置smod=1,
                      {
                              PCON=0X80;      //      smod=1
                              x=2*28800/BordRate;
                      }
                      else
                      {
                              PCON=0X00;      //      smod=0
                              x=28800/BordRate;
                      }
                      x=256-x;
                      TH1=TL1=x;
                      TMOD=0X20;
                      ET1=0;
              
                      TR1=1;
                      SCON=0X40;
                      #endif
  42   1              
  43   1              #if Crystal==CRY_12_MHz
                      #endif
  45   1      
  46   1              #if Crystal==CRY_24_MHz 
  47   1              switch(BordRate) 
  48   1              {
  49   2                      case    1200:TH1=TL1=0x98;break;   
  50   2                      case    2400:TH1=TL1=0xcc;break;        
  51   2                      case    4800:TH1=TL1=0xe6;break;   
  52   2                      case    9600:TH1=TL1=0xf3;break;   
  53   2      //              case    19200:TH1=TL1=0xf9;break;  
C51 COMPILER V8.02   SERIAL                                                                10/11/2007 16:35:11 PAGE 2   

  54   2      //              case    38400:TH1=TL1=0xfd;break;
  55   2                      default:break;
  56   2              }               
  57   1              PCON=0X80;
  58   1              TMOD=0X20;
  59   1              ET1=0;
  60   1      
  61   1              TR1=1;
  62   1              SCON=0X40;
  63   1              #endif
  64   1      
  65   1              #if Crystal==CRY_33_MHz 
                      #endif
  67   1              
  68   1      
  69   1               
  70   1      }
  71          /*
  72          void    ClosePort()
  73          {
  74             TR1=0;       //关闭定时器,:)没有拨特率就不会发数据了
  75          
  76          }*/     
  77                                                  
  78          void    OutputC(unsigned char Dat)
  79          {
  80   1              TI=0;
  81   1              SBUF=Dat;
  82   1              while(!TI);             
  83   1      }
  84          void    OutputH(unsigned char Dat)
  85          {
  86   1              unsigned  char i;
  87   1              for(i=0;i<8;i++)
  88   1              {
  89   2                      if((Dat<<i)&0x80)OutputC(0X31); //由于1在电脑上的内码是0X31,所以这里送0X31。先送高位,后送低位。
  90   2                      else OutputC(0X30);
  91   2              }
  92   1      }
  93          
  94          void    OutputS(unsigned char   *p)
  95          {
  96   1              while(*p!=0)
  97   1              {
  98   2                      OutputC(*p);
  99   2                      p++;
 100   2              }
 101   1      }


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