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

📄 zlg500s_comm.lst

📁 内部包含多个文件:main.c,config.c,zlg500s.h zlg500s.c等。对于zlg500s开发板的使用
💻 LST
字号:
C51 COMPILER V7.50   ZLG500S_COMM                                                          05/17/2008 12:45:01 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ZLG500S_COMM
OBJECT MODULE PLACED IN zlg500S_comm.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE zlg500S_comm.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #define ZLG500S_COMM_GLOBALS
   2          #include "config.h"
   3          #include "Zlg500S.h"
   4          #include "zlg500S_comm.h"
   5          
   6          
   7          INT8U SetBaud()
   8          {
   9   1              INT8U temp;
  10   1              INT8U SetCunt = 3;
  11   1      
  12   1              while(SetCunt)
  13   1              {
  14   2                      SBUF = STX;
  15   2                      while(TI == 0); TI = 0;
  16   2                      for(temp=15;temp>0;temp--);     //延时30us
  17   2                      SBUF = STX;
  18   2                      while(TI == 0); TI = 0;
  19   2      
  20   2                      WaitRespDly = ZLG500S_DELAY_10ms;
  21   2                      while(RI == 0 && WaitRespDly);  
  22   2                      RI = 0;
  23   2                      if(WaitRespDly == 0)
  24   2                      {
  25   3                              SetCunt--;
  26   3                              continue;
  27   3                      }
  28   2                      else
  29   2                      {
  30   3                              temp = SBUF;
  31   3                              if(temp == ACK)
  32   3                                      return TRUE;
  33   3                              else
  34   3                              {
  35   4                                      SetCunt--;
  36   4                                      continue;
  37   4                              }
  38   3                      }
  39   2              }
  40   1              return FALSE;
  41   1      
  42   1              }
  43          
  44          void ZLG500S_COMM_Init()
  45          {
  46   1              PCON = 0x80;                    // SMOD = 1;
  47   1              SCON = 0x50;                    // Mode 1, 8-bit UART, enable receiption
  48   1              TMOD = 0x21;                    // Timer 1, mode 2, 8-bit auto reload,
  49   1              
  50   1              TH1=BAUDRATE;
  51   1              TL1=BAUDRATE;
  52   1              TR1 = 1;        
  53   1              
  54   1          SerDTvalid = FALSE;
  55   1          
C51 COMPILER V7.50   ZLG500S_COMM                                                          05/17/2008 12:45:01 PAGE 2   

  56   1              SetBaud();      
  57   1      
  58   1          ES = 1;
  59   1      }
  60          
  61          void UART_Isr() interrupt 4 using 1
  62          {
  63   1          if(RI)
  64   1          {
  65   2                      RI = 0;
  66   2                      SerBfr[SerBfrIdx] = SBUF;
  67   2                      if(SerBfrIdx == FRAMELEN)
  68   2                      {
  69   3                              if(SerBfr[FRAMELEN] < PRTCLEN || SerBfr[FRAMELEN] > MAXSERSIZE)
  70   3                              {
  71   4                                      return;
  72   4                              }
  73   3                      }
  74   2                      SerBfrIdx++;
  75   2      
  76   2                      if(SerBfrIdx >= SerBfr[FRAMELEN])
  77   2                      {
  78   3                              SerDTvalid = TRUE;
  79   3                              SerBfrIdx = FRAMELEN;
  80   3                      }
  81   2              }
  82   1              else
  83   1          {
  84   2              TI = 0;
  85   2                      if(SerBfrIdx < SerBfr[FRAMELEN])
  86   2                      {
  87   3                              SBUF = SerBfr[SerBfrIdx];
  88   3                              SerBfrIdx++;
  89   3                      }
  90   2                      else
  91   2                      {
  92   3                              SerBfrIdx = FRAMELEN;
  93   3                              REN = 1;                //发送响应完毕,重新使能接收
  94   3                      }
  95   2          }
  96   1      }
  97          
  98          INT8U Ser_Rcv()
  99          {
 100   1              INT8U i,BCC;
 101   1              INT8U Status = FALSE;
 102   1      
 103   1              if(SerDTvalid)
 104   1              {                                                                       //已接收一帧数据,进行数据校验
 105   2                      if(SerBfr[SerBfr[FRAMELEN]-1] == ETX && SerBfr[FRAMELEN] == (SerBfr[LENGTH]+PRTCLEN))
 106   2                      {                       //正确接收到ETX,及帧长度等于数据长度加协议长度,则数据有效
 107   3                              BCC = 0;
 108   3                              for(i=0; i<(SerBfr[FRAMELEN]-1); i++)
 109   3                              {
 110   4                                      BCC ^= SerBfr[i];
 111   4                              }
 112   3                              if(BCC == 0xff)
 113   3                                      Status = TRUE;  //BCC校验通过
 114   3                      }
 115   2                      SerDTvalid = FALSE;
 116   2              }
 117   1              return Status;
C51 COMPILER V7.50   ZLG500S_COMM                                                          05/17/2008 12:45:01 PAGE 3   

 118   1      }
 119          
 120          INT8U Ser_Send()
 121          {
 122   1          INT8U i,BCC;
 123   1      
 124   1              SerBfr[FRAMELEN] = SerBfr[LENGTH]+PRTCLEN;      //帧长度等于数据长度加协议长度
 125   1              BCC = 0;
 126   1              for(i=0; i<(SerBfr[FRAMELEN]-2); i++)
 127   1                      BCC ^= SerBfr[i];
 128   1              SerBfr[SerBfr[FRAMELEN]-2] = ~BCC;
 129   1              SerBfr[SerBfr[FRAMELEN]-1] = ETX;
 130   1              
 131   1              SerBfrIdx = FRAMELEN;
 132   1              TI = 1;
 133   1      
 134   1              return TRUE;
 135   1      }


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