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

📄 zb.lst

📁 基于电力载波芯片3106开发的,在载波和485之间互相转换
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   ZB                                                                    02/17/2009 12:58:31 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE ZB
OBJECT MODULE PLACED IN zb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zb.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #define ZB_GLOBALS
   2          
   3          
   4          
   5          #include "includes.h"
   6          
   7          
   8          
   9          /****************************变量定义*****************************/
  10          static data  INT8U  ZB_BitCnt;            /*位计数*/
  11          static data  INT8U  ZB_ByteCnt;           /*字节计数*/
  12          
  13          static data  INT8U  ZB_GetSyncFlag;       /*接受同步头标志*/
  14          static data  INT8U  ZB_GetDatFlag;        /*接受数据内容标志*/
  15          static data  INT8U  ZB_GetSuccessFlag;    /*接收一字节数据成功标志*/
  16          
  17          static data  INT8U  ZB_HeadDatLen;        /*同步头长度*/
  18          
  19          static data  INT16U ZB_HeadDat;           /*同步头数据*/
  20          static data  INT8U  ZB_SendByte;          /*要发送的字节数据*/                                                  
  21          static data  INT8U  ZB_RcvByte;           /*接收到的字节数据*/ 
  22          
  23                       Com    ZB_Com;                   /*通讯使用结构*/
  24          
  25          
  26          
  27          /****************************本地函数定义*************************/
  28          static void ZB_Tx (void);
  29          static void ZB_Rx (void);
  30          
  31          
  32          
  33          /****************************全局函数*****************************/
  34          ZB_EXT void ZB_ParaInit (void)
  35          /*===============================================
  36              函数名:    ZB_ParaInit
  37              功能  :    载波功能参数初始化
  38              输入  :    无
  39              输出  :    无
  40          ===============================================*/
  41          {
  42   1          ZB_BitCnt         = 0;
  43   1          ZB_ByteCnt        = 0;
  44   1      
  45   1          ZB_GetSyncFlag    = 1;/*接收头标志*/
  46   1          ZB_GetDatFlag     = 0;
  47   1          ZB_GetSuccessFlag = 0;
  48   1      
  49   1          ZB_HeadDatLen     = 0;
  50   1      
  51   1          ZB_HeadDat        = 0;
  52   1          ZB_SendByte       = 0;
  53   1          ZB_RcvByte        = 0;
  54   1      
  55   1          ZB_MaxLen         = 0;
C51 COMPILER V8.08   ZB                                                                    02/17/2009 12:58:31 PAGE 2   

  56   1      }
  57          
  58          
  59          
  60          
  61          ZB_EXT void ZB_Course (void)
  62          /*===============================================
  63              函数名  :    ZB_Course
  64              功能    :    载波主流程
  65              输入    :    无
  66              输出    :    无
  67          ===============================================*/
  68          {
  69   1      
  70   1          if (ZB_SendFlag){
  71   2              ZB_SendFlag = 0;
  72   2                      
  73   2              PLM_RST = 0xa2;
  74   2      
  75   2              PLM_RS  = 1;/*转发送*/
  76   2      
  77   2          }
  78   1      }
  79          
  80          
  81          
  82          /****************************本地函数*****************************/
  83          void  ZB_Int (void) interrupt 7
  84          /*===============================================
  85              函数名  :    ZB_Int
  86                  功能    :    载波同步中断
  87                  输入    :    无
  88                  输出    :    无
  89          ===============================================*/
  90          {
  91   1          if (1 == PLM_RS){
  92   2              ZB_Tx();
  93   2          }else{
  94   2              ZB_Rx();
  95   2          }
  96   1      }
  97          
  98          
  99          
 100          static void ZB_Tx (void)
 101          /*===============================================
 102              函数名  :    ZB_Tx
 103              功能    :    载波发送数据
 104              输入    :    无
 105              输出    :    无
 106          ===============================================*/
 107          {
 108   1              if (0 == ZB_BitCnt){ /*取数据*/
 109   2      
 110   2              switch (ZB_Com.TxPhase){
 111   3      
 112   3                  case 0:     
 113   3                                                      
 114   3                      ZB_SendByte = 0xff;
 115   3                      ZB_HeadDatLen ++;
 116   3                      if (6 == ZB_HeadDatLen){
 117   4                          ZB_HeadDatLen = 0;
C51 COMPILER V8.08   ZB                                                                    02/17/2009 12:58:31 PAGE 3   

 118   4                          ZB_Com.TxPhase = 1;
 119   4                      }
 120   3                      break;
 121   3      
 122   3      
 123   3                  case 1:
 124   3                      LED_ZB = 0;          /*开载波发送指示灯*/
 125   3      
 126   3                      ZB_SendByte = 0x09;
 127   3                      ZB_Com.TxPhase = 2;
 128   3                      break;
 129   3      
 130   3      
 131   3                  case 2:                  /*前3部分都是发送同步头,和数据无关*/
 132   3      
 133   3                      ZB_SendByte = 0xaf;
 134   3                      ZB_Com.TxPhase = 3;
 135   3                      break;
 136   3      
 137   3      
 138   3                  case 3:                  /*发整条帧*/
 139   3      
 140   3                      ZB_SendByte = COM_DatBuf[ZB_ByteCnt++];
 141   3                      if (ZB_ByteCnt == ZB_MaxLen){
 142   4                          ZB_ByteCnt     = 0;
 143   4                          ZB_MaxLen      = 0;
 144   4                          ZB_Com.TxPhase = 4;
 145   4                      }
 146   3                      break;
 147   3      
 148   3      
 149   3                  case 4:                  /*多发一字节,保证发送完整*/
 150   3      
 151   3                      ZB_SendByte    = 0;
 152   3                      ZB_Com.TxPhase = 0;
 153   3                      ZB_Com.TxEnd   = 1;
 154   3                      break;
 155   3      
 156   3      
 157   3                  default:
 158   3                      break;
 159   3      
 160   3              }
 161   2          }
 162   1      
 163   1          PLM_RS  = 1;                     /*启动发送*/
 164   1          PLM_RST = 0xa2;                  /*防止发送时间过长,进入复位*/
 165   1      
 166   1          if (ZB_BitCnt <8){               /*从高位到低位发送数据*/
 167   2              if ((ZB_SendByte<<ZB_BitCnt) & 0x80){
 168   3                  ZB_RS = 1;
 169   3              }else{
 170   3                  ZB_RS = 0;
 171   3              }
 172   2      
 173   2              ZB_BitCnt ++;
 174   2              if (8 == ZB_BitCnt){         /*一个字节数据发送完成*/
 175   3                  ZB_BitCnt = 0;
 176   3      
 177   3                  if (1 == ZB_Com.TxEnd){  /*数据发送完成*/
 178   4                      ZB_Com.TxEnd = 0;
 179   4      
C51 COMPILER V8.08   ZB                                                                    02/17/2009 12:58:31 PAGE 4   

 180   4                      LED_ZB       = 1;    /*关载波发送指示灯*/
 181   4      
 182   4                      PLM_RS       = 0;    /*转接收*/
 183   4                  }
 184   3              }
 185   2          }
 186   1      }
 187          
 188          
 189          
 190          static void ZB_Rx (void)
 191          /*===============================================

⌨️ 快捷键说明

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