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

📄 zlg500s_comm.lst

📁 ZLG522S的功能、硬件接口和ZLG500S相同
💻 LST
字号:
C51 COMPILER V8.02   ZLG500S_COMM                                                          03/16/2009 15:23:02 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ZLG500S_COMM
OBJECT MODULE PLACED IN zlg500S_comm.OBJ
COMPILER INVOKED BY: D:\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          
  43          void ZLG500S_COMM_Init()
  44          {
  45   1              PCON = 0x80;                    // SMOD = 1;
  46   1              SCON = 0x50;                    // Mode 1, 8-bit UART, enable receiption
  47   1              TMOD = 0x21;                    // Timer 1, mode 2, 8-bit auto reload,
  48   1              
  49   1              TH1=BAUDRATE;   
  50   1              TL1=BAUDRATE;
  51   1              TR1 = 1;                      //开定时器1
  52   1              
  53   1          SerDTvalid = FALSE;          //串行数据接收有效位置0
  54   1          
  55   1              SetBaud();      
C51 COMPILER V8.02   ZLG500S_COMM                                                          03/16/2009 15:23:02 PAGE 2   

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

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