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

📄 text1.lst

📁 由C8051F340单片机的两个串口收发数据,内部定义了两个缓冲区,可以发送无数个数据
💻 LST
字号:
C51 COMPILER V7.06   TEXT1                                                                 11/29/2007 14:20:41 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "C8051F340.h"
   2          #include <stdio.h>
   3          #include <intrins.h>
   4          // Peripheral specific initialization functions,
   5          // Called from the Init_Device() function
   6          
   7          void Reset_Sources_Init(void);
   8          void Timer_Init(void);
   9          void  UART_Init(void);
  10          void  EMI_Init(void);
  11          void  Port_IO_Init(void);
  12          void  Oscillator_Init(void);
  13          void  Interrupts_Init(void);
  14          void SendCommBuffer(unsigned char   *base, unsigned int  size);
  15          
  16          #define DB_SENDMAXSIZE  10
  17          #define DB_RECMAXSIZE   10
  18          
  19          bit CommRecDataOverflowFlag,FlagRecComm,SendbufferOver;
  20          unsigned int SendSize;
  21          unsigned char CommSendBufferHead, CommSendBufferTail;
  22          unsigned char xdata CommSendBuffer[DB_SENDMAXSIZE]; 
  23          unsigned char CommRecBufferHead, CommRecBufferTail;
  24          unsigned char xdata CommRecBuffer[DB_RECMAXSIZE];
  25          
  26          
  27          void main()
  28          {       
  29   1              PCA0MD &= ~0x40;
  30   1              Port_IO_Init();
  31   1              Oscillator_Init();
  32   1              Reset_Sources_Init();
  33   1                      Timer_Init();
  34   1              Interrupts_Init();
  35   1                      UART_Init();
  36   1              EMI_Init();
  37   1      
  38   1                      TR1 = 1;
  39   1                      SendCommBuffer("1234567890987654\n",17);        
  40   1                      SendCommBuffer("liaoww12345\n",12);
  41   1                      SendCommBuffer("liqiao ai liaowuwu\n",19);      
  42   1                      while(1);
  43   1      }
  44          
  45          void Reset_Sources_Init()
  46          {
  47   1          int i = 0;
  48   1          VDM0CN    = 0x80;
  49   1          for (i = 0; i < 350; i++);  // Wait 100us for initialization
  50   1          RSTSRC    = 0x86;
  51   1      }
  52          
  53          void Timer_Init()
  54          {
  55   1          TMOD      = 0x22;
C51 COMPILER V7.06   TEXT1                                                                 11/29/2007 14:20:41 PAGE 2   

  56   1          CKCON     = 0x00;
  57   1          TL1       = 0xD0;
  58   1          TH1       = 0xD0;
  59   1      }
  60          
  61          void UART_Init()
  62          {
  63   1          SCON0     = 0x10;
  64   1          SBRLL1    = 0xD0;
  65   1          SBRLH1    = 0xFF;
  66   1          SCON1     = 0x10;
  67   1          SBCON1    = 0x43;
  68   1      }
  69          
  70          void EMI_Init()
  71          {
  72   1          EMI0CF    = 0x43;
  73   1      }
  74          
  75          void Port_IO_Init()
  76          {
  77   1          P0MDIN    = 0x3F;
  78   1          P0MDOUT   = 0x0F;
  79   1          P0SKIP    = 0xC8;
  80   1          P1SKIP    = 0xF9;
  81   1          XBR0      = 0x09;
  82   1          XBR1      = 0x70;
  83   1          XBR2      = 0x01;
  84   1      }
  85          
  86          void Oscillator_Init()
  87          {
  88   1          int i = 0;
  89   1          OSCXCN    = 0x67;           
  90   1          for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
  91   1          while ((OSCXCN & 0x80) == 0);
  92   1          CLKSEL    = 0x01;
  93   1          OSCICN    = 0xA3;   //内部振荡器使能,但不接USB时不工作
  94   1          CLKMUL    = 0x80;
  95   1          for (i = 0; i < 20; i++);    // Wait 5us for initialization
  96   1          CLKMUL    |= 0xC0;
  97   1          while ((CLKMUL & 0x20) == 0);  
  98   1          REG0CN = 0xB0; 
  99   1      }
 100          
 101          void Interrupts_Init()
 102          {
 103   1          EIE1      = 0x02;
 104   1          EIE2      = 0x02;
 105   1          IE        = 0x90;
 106   1      }
 107          
 108          void SendCommBuffer(unsigned char  *base, unsigned int  size) 
 109          {
 110   1          unsigned int i,k;
 111   1              unsigned char j,t;
 112   1              i = 0;
 113   1              j = 0;  
 114   1              k = DB_SENDMAXSIZE;
 115   1              if (!size) { return; }  
 116   1              SendSize = size;
 117   1              if (!(size%DB_SENDMAXSIZE))
C51 COMPILER V7.06   TEXT1                                                                 11/29/2007 14:20:41 PAGE 3   

 118   1              t = size/DB_SENDMAXSIZE;
 119   1              else
 120   1              t = size/DB_SENDMAXSIZE+1;
 121   1              for (j =0 ;j<t;j++)
 122   1              {
 123   2                      while (i < k) 
 124   2                      {
 125   3                              CommSendBuffer[CommSendBufferTail]=base[i];     
 126   3                              i++;
 127   3                              CommSendBufferTail++; 
 128   3                      }
 129   2                      SBUF0=CommSendBuffer[CommSendBufferHead]; 
 130   2                      while (!SendbufferOver);
 131   2                      SendbufferOver = 0;
 132   2                      k = DB_SENDMAXSIZE+k;
 133   2                      CommSendBufferTail = 0;
 134   2              }
 135   1              CommSendBufferHead =0;
 136   1              CommSendBufferTail = 0;
 137   1      }
 138          
 139          
 140          
 141          
 142          void CommISR(void) interrupt 4
 143          {
 144   1              if (TI0 == 1)
 145   1              {
 146   2                      TI0 = 0;
 147   2                      if (SendSize--)   //SendSize--和--SendSize效果一样
 148   2                      {
 149   3                              CommSendBufferHead++;   
 150   3                              if (CommSendBufferHead==DB_SENDMAXSIZE)
 151   3                              {        
 152   4                                      CommSendBufferHead=0;
 153   4                                      SendbufferOver = 1;
 154   4                              }
 155   3                              else
 156   3                              {       
 157   4                                      SBUF0=CommSendBuffer[CommSendBufferHead];
 158   4                              } 
 159   3                      }
 160   2              
 161   2                      else
 162   2                      {
 163   3                              SendbufferOver = 1;
 164   3                      }
 165   2              }
 166   1              if (RI0 == 1)   
 167   1              {        
 168   2                      RI0 = 0;
 169   2                      if (CommRecBufferTail==CommRecBufferHead)
 170   2                      {
 171   3                              CommRecDataOverflowFlag=1;                              //接收缓冲区溢出
 172   3                      }
 173   2                      CommRecBuffer[CommRecBufferTail]=SBUF0;     //receive data           
 174   2                  CommRecBufferTail++;
 175   2                  if (CommRecBufferTail==DB_RECMAXSIZE)
 176   2                  {
 177   3                      CommRecBufferTail=0;
 178   3                  }
 179   2                      FlagRecComm=1;
C51 COMPILER V7.06   TEXT1                                                                 11/29/2007 14:20:41 PAGE 4   

 180   2              }
 181   1      }
 182          //-----------------------------------------------------------------------------
 183          // End Of File
 184          //-----------------------------------------------------------------------------


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    500    ----
   CONSTANT SIZE    =     51    ----
   XDATA SIZE       =     20    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -