📄 loop.lst
字号:
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 + -