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

📄 serial1.lst

📁 cygnal上的数据采集的程序(带实时时钟)
💻 LST
字号:
C51 COMPILER V7.50   SERIAL1                                                               11/15/2005 22:36:24 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SERIAL1
OBJECT MODULE PLACED IN Serial1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Serial1.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <string.h>
   2          #include "C8051f.h"
   3          #include "intrins.h"
   4          #include "serial1.h"
   5          #include "Timer.h"
   6          
   7          extern unsigned char RecCh;
   8          extern unsigned char RecFlag;
   9          
  10          bit CommRecDataOverflowFlag1,FlagRecComm1,SendItComm1;
  11          
  12          unsigned char CommSendBufferHead1, CommSendBufferTail1;
  13          unsigned char CommRecBufferHead1, CommRecBufferTail1;
  14          
  15          unsigned char xdata CommSendBuffer1[DB_SENDMAXSIZE1];
  16          unsigned char xdata CommRecBuffer1[DB_RECMAXSIZE1]; 
  17          
  18          void ClearCommRecBuffer1(void)
  19          {
  20   1              unsigned char i;
  21   1              CommRecBufferHead1=CommRecBufferTail1=0;
  22   1              CommSendBufferHead1=CommSendBufferTail1=0;
  23   1              FlagRecComm1=0;
  24   1              for (i=0;i<DB_SENDMAXSIZE1;i++)
  25   1              {
  26   2                      CommSendBuffer1[i]=0;
  27   2              }
  28   1              for (i=0;i<DB_RECMAXSIZE1;i++)
  29   1              {
  30   2                      CommRecBuffer1[i]=0;
  31   2              }
  32   1      }
  33          
  34          void init_serial1(unsigned int baudr)
  35          {
  36   1              ClearCommRecBuffer1();
  37   1              OpenComm1(baudr);
  38   1      }
  39          
  40          void OpenComm1(unsigned int baudr) 
  41          {
  42   1              PCON |= 0x10;           // SMOD=1 (HW_UART uses Timer 1 overflow with no divide down).
  43   1              TMOD |= 0x20;           // Configure Timer 1 for use by UART0
  44   1              CKCON |= 0x10;          // Timer 1 derived from SYSCLK
  45   1      
  46   1      //      RCAP2H=(65536-(SYSCLK/BAUDRATE0/32))/256;
  47   1      //      RCAP2L=(65536-(SYSCLK/BAUDRATE0/32))%256;
  48   1      
  49   1              RCAP4H=(65536-(SYSCLK/baudr/32))/256;
  50   1              RCAP4L=(65536-(SYSCLK/baudr/32))%256;
  51   1              TH4=RCAP4H;
  52   1              TL4=RCAP4L;
  53   1      
  54   1      //      CT2=0;                          //T2:timer mode
  55   1              T4CON |=0x34;
C51 COMPILER V7.50   SERIAL1                                                               11/15/2005 22:36:24 PAGE 2   

  56   1      //      TR2=1;
  57   1      
  58   1      //      TCLK = 1;
  59   1      //      RCLK = 1;               //说明:52,对于SIO0,可选择T1(TCLK=0,RCLK=0)或T2(TCLK=1,RCLK=1)作为波特率发生器
  60   1                                                  //            SIO1只能用T1作为波特率发生器
  61   1                                                  //baud=OSC/(32*(65536-[RCAP2H,RCAP2L])
  62   1              CommSendBufferHead1 = CommSendBufferTail1=0; // set the head and tail to the base of the ring buffer
  63   1              CommRecBufferHead1 = CommRecBufferTail1=0;
  64   1              FlagRecComm1=0;
  65   1      //      RI0=0;                                  // Clear HW_UART receive and transmit
  66   1      //      TI0=0;                                  // complete indicators.
  67   1      //      SCON1 &=0xfc;
  68   1              SCON1 = 0x50;                   // Configure UART0 for mode 1, receiver enabled.
  69   1      //      ES0=1;                                  // allow the serial interrupt
  70   1              EIE2 |=0x40;
  71   1              SendItComm1=1;
  72   1      }
  73          
  74          void PutChar1(unsigned char Ch)
  75          {
  76   1              SBUF1 = Ch;
  77   1          while((SCON1 & 0x02) == 0x0)
  78   1          ;
  79   1          SCON1 = SCON1 & 0xfd;
  80   1      }
  81          
  82          void SendCommString1(unsigned char *base) 
  83          {
  84   1          unsigned int len;
  85   1          unsigned char i;
  86   1      
  87   1          len = strlen(base);
  88   1          for(i = 0; i<len; i++)
  89   1          {
  90   2              PutChar1(base[i]);
  91   2              Delay1ms(1);
  92   2          }
  93   1      }
  94          
  95          void serial_send(unsigned char *base)
  96          {
  97   1              SendCommString1(base);
  98   1      }
  99          
 100          void CommISR1(void) interrupt 20
 101          {
 102   1              if ((SCON1&0x01)==0x01)
 103   1              {
 104   2                      SCON1 &=0xfe;   
 105   2                      RecCh = SBUF1;
 106   2                      RecFlag = 0x01;
 107   2              }
 108   1      
 109   1      }
 110          
 111          //从接收缓冲区读数据 ,无数据返回0,有数据返回1
 112          bit GetCommChar1(unsigned char  *ch)      
 113          { 
 114   1              if (CommRecBufferTail1 == CommRecBufferHead1) 
 115   1              {
 116   2                      return 0;
 117   2              }     
C51 COMPILER V7.50   SERIAL1                                                               11/15/2005 22:36:24 PAGE 3   

 118   1              *ch = CommRecBuffer1[CommRecBufferHead1];
 119   1      
 120   1              CommRecBufferHead1++;
 121   1              if (CommRecBufferHead1 == DB_RECMAXSIZE1)
 122   1              {
 123   2                      CommRecBufferHead1 = 0;
 124   2              }
 125   1              if (CommRecBufferTail1 == CommRecBufferHead1) 
 126   1              {
 127   2                      FlagRecComm1 = 0;
 128   2              }
 129   1              return 1;
 130   1      }
 131          


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