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

📄 loop.lst

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   LOOP                                                                  03/10/2006 16:35:31 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LOOP
OBJECT MODULE PLACED IN loop.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE loop.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND

line level    source

   1          #include <REG54.H>
   2          #include "ep1k50.h"
   3          #include "se0111.h"
   4          #include "rc7820.h"
   5          #include "f2rc7820.h"
   6          #include "cmd_para_save.h"
   7          #include "se0121.h"
   8          
   9          extern unsigned char f2rc7820_rd(unsigned char f2addr) large reentrant;
  10          extern void f2rc7820_wr(unsigned char f2addr,unsigned char value) large reentrant;
  11          
  12          unsigned char xdata lparrayf[4]={0,0,0,0};                   //光口环回状态存储数组
  13          unsigned char xdata lparray_EOS[3] = {0,0,0};
  14          unsigned char xdata lparray2m[3][21]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0
             -,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};     //2M盘1的21路支路环回状态存储数组
  15          
  16          extern void se0111_reg_wr(unsigned char Haddr,unsigned char Laddr,unsigned char value,unsigned char slot);
  17          extern unsigned char se0111_reg_rd(unsigned char Haddr,unsigned char Laddr,unsigned char slot);
  18          extern unsigned char se0121_reg_rd(unsigned char Laddr,unsigned char slot);
  19          extern void se0121_reg_wr(unsigned char Laddr,unsigned char value,unsigned char slot);
  20          extern void SetResRdyTbl(unsigned char prio) large reentrant;
  21          extern unsigned char GetResRdyTbl(unsigned char prio) large reentrant;
  22          extern unsigned char xdata start_flg[4];
  23          extern unsigned char xdata start_flg_EOS[4];
  24          extern unsigned char xdata board_type[4][2];    //定义插盘类型数组,第一位表示槽号,第二位表示盘号
  25          extern unsigned long int xdata commandid;                              //表示命令代码的变量
  26          extern unsigned char xdata tx_buf[];
  27          extern unsigned char xdata tx_buf_pointer;
  28          extern bit tx_done;
  29          
  30          unsigned char get_port_lpstat(struct cmd_para_save *get_portloop){
  31   1      //C40读取环回状态函数,返回值0无环回、1近端环回、2远端环回、3以太网接口环回、4SDH接口环回、5命令无法执行
  32   1      unsigned char xdata boardid;                            //盘号
  33   1      unsigned char xdata portid;                                     //端口号
  34   1      unsigned char xdata timeid;                                     //时隙号
  35   1      unsigned char xdata returnvalue;                        //返回值
  36   1      unsigned char xdata i;
  37   1      
  38   1              boardid = get_portloop -> lpget_stat_board;
  39   1              portid = get_portloop -> lpget_stat_port;
  40   1              timeid = get_portloop -> lpget_stat_slot;
  41   1              i = boardid;
  42   1      
  43   1              switch (boardid){
  44   2              case 1:
  45   2              case 2:
  46   2              case 3: if (start_flg[i] == 0){
  47   3                                      returnvalue = lparray2m[i-1][portid-1];                 //得到2M盘的端口的环回状态
  48   3                              }
  49   2                              else if (start_flg_EOS[i] == 0){
  50   3                                      returnvalue = lparray_EOS[i-1];
  51   3                              }
  52   2                              else returnvalue = 5;
  53   2                              break;
  54   2      /*      case 1: if (start_flg[1] == 0){
C51 COMPILER V7.50   LOOP                                                                  03/10/2006 16:35:31 PAGE 2   

  55   2                                      returnvalue = lparray2m[0][portid-1];                   //得到2M盘1的端口的环回状态
  56   2                              }
  57   2                              else returnvalue = 5;
  58   2                              break;
  59   2              case 2: if (start_flg[2] == 0){
  60   2                                      returnvalue = lparray2m[1][portid-1];
  61   2                              }
  62   2                              else returnvalue = 5;
  63   2                              break;
  64   2              case 3: if (start_flg[3] == 0){
  65   2                                      returnvalue = lparray2m[2][portid-1];
  66   2                              }
  67   2                              else returnvalue = 5;
  68   2                              break;
  69   2      */      case 4: if (start_flg[0] == 0){
  70   3                                      if (portid == 1){                                                       //得到光分支盘光口1的环回状态
  71   4                                              returnvalue = lparrayf[2];
  72   4                                      }
  73   3                                      else if (portid == 2){                                          //得到光分支盘光口2的环回状态
  74   4                                              returnvalue = lparrayf[3];
  75   4                                      }
  76   3                                      else returnvalue = 3;
  77   3                              }
  78   2                              else returnvalue = 3;
  79   2                              break;
  80   2              case 5: if (portid == 1){
  81   3                              returnvalue = lparrayf[0];
  82   3                              }
  83   2                              else if (portid == 2){
  84   3                              returnvalue = lparrayf[1];
  85   3                              }
  86   2                              else returnvalue = 5;
  87   2                              break;
  88   2              default:returnvalue = 5;
  89   2                              break;
  90   2              }
  91   1              if (!GetResRdyTbl(20))
  92   1                      SetResRdyTbl(20); 
  93   1              return (returnvalue);
  94   1      }
  95          
  96          void report_port_lpstat(unsigned char lp_state){
  97   1      //C40回应函数
  98   1          tx_buf[0] = '$';
  99   1              tx_buf[1] = '2';
 100   1              tx_buf[2] = '1';
 101   1              tx_buf[3] = 0x43;
 102   1              tx_buf[4] = 0x34;
 103   1              tx_buf[5] = 0x30;
 104   1              tx_buf[6] = '0';
 105   1              tx_buf[7] = '0';
 106   1              tx_buf[8] = '0';
 107   1              tx_buf[9] = '2';
 108   1              if (lp_state >= 5){
 109   2                      tx_buf[10] = '2';
 110   2              }
 111   1              else tx_buf[10] = '0';
 112   1              tx_buf[11] = lp_state + 0x30;
 113   1              tx_buf[12] = '*';
 114   1              tx_buf_pointer = 0;     
 115   1              while(tx_buf[tx_buf_pointer] != '*'){
 116   2                      SBUF = tx_buf[tx_buf_pointer];
C51 COMPILER V7.50   LOOP                                                                  03/10/2006 16:35:31 PAGE 3   

 117   2                      while(tx_done == 0);
 118   2                      tx_done = 0;
 119   2                      tx_buf_pointer++;
 120   2              }
 121   1              SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
 122   1              while(tx_done == 0);
 123   1              tx_done = 0;
 124   1      }
 125          
 126          
 127          unsigned char set_port_loopback(struct cmd_para_save *set_portloop){
 128   1      //C41配置端口环回函数
 129   1      unsigned char xdata outporth;                       //Mapper中支路的高8位地址
 130   1      unsigned char xdata outportl;                       //Mapper中支路的低8位地址
 131   1      unsigned char xdata value;
 132   1      unsigned char xdata boardid;                                            //盘号
 133   1      unsigned char xdata board_type;                                         //盘类型
 134   1      unsigned char xdata portid;                                                     //端口号
 135   1      unsigned char xdata timeid;                                                     //时隙号
 136   1      unsigned char xdata lpstat;                                                     //设置环回类型值
 137   1      unsigned char xdata returnvalue;                                        //返回值
 138   1      unsigned char xdata i;
 139   1      
 140   1              commandid = 0x00433431;
 141   1              boardid = set_portloop -> lpset_stat_board;
 142   1              board_type = set_portloop -> lpset_stat_board_type;
 143   1              portid = set_portloop -> lpset_stat_port;
 144   1              timeid = set_portloop -> lpset_stat_slot;
 145   1              lpstat = set_portloop -> lpset_stat_type;
 146   1              i = boardid;
 147   1      
 148   1              switch (portid){                                //得出Mapper中的支路号
 149   2                      case 1: outporth=0;
 150   2                              outportl=0x50;
 151   2                                      break;
 152   2                      case 2: outporth=0;
 153   2                              outportl=0x80;
 154   2                                      break;
 155   2                      case 3: outporth=0;
 156   2                          outportl=0xB0;
 157   2                                      break;
 158   2                      case 4: outporth=0;
 159   2                              outportl=0xE0;

⌨️ 快捷键说明

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