📄 clk_deal.lst
字号:
204 3 case 6: return_value = 2;
205 3 break;
206 3 case 7: return_value = 3;
207 3 break;
208 3 case 9: return_value = 7;
209 3 break;
210 3 case 11: return_value = 6;
211 3 break;
212 3 default: return_value = 10;
213 3 break;
214 3 }
215 2 }
216 1 if (!GetResRdyTbl(11))
217 1 SetResRdyTbl(11);
218 1 return (return_value);
219 1 }
220
221
222 void report_clock_working(unsigned char clksource){
223 1 //C13回应函数
224 1 tx_buf[0] = '$';
225 1 tx_buf[1] = '2';
226 1 tx_buf[2] = '1';
227 1 tx_buf[3] = 0x43;
228 1 tx_buf[4] = 0x31;
229 1 tx_buf[5] = 0x33;
230 1 tx_buf[6] = '0';
231 1 tx_buf[7] = '0';
232 1 tx_buf[8] = '0';
233 1 tx_buf[9] = '3';
234 1 if (clksource == 10){
235 2 tx_buf[10] = '2';
236 2 }
237 1 else tx_buf[10] = '0';
238 1 tx_buf[11] = clksource + 0x30;
239 1 tx_buf[12] = clkmode_reg + 0x30;
240 1 tx_buf[13] = '*';
241 1 tx_buf_pointer = 0;
C51 COMPILER V7.50 CLK_DEAL 03/10/2006 16:35:31 PAGE 5
242 1 while(tx_buf[tx_buf_pointer] != '*'){
243 2 SBUF = tx_buf[tx_buf_pointer];
244 2 while(tx_done == 0);
245 2 tx_done = 0;
246 2 tx_buf_pointer++;
247 2 }
248 1 SBUF = tx_buf[tx_buf_pointer]; //发送最后一个字符'*'
249 1 while(tx_done == 0);
250 1 tx_done = 0;
251 1 }
252
253 unsigned char get_clock_state(unsigned char clksource){
254 1 //取得时钟源状态函数
255 1 unsigned char xdata flg;
256 1 unsigned char xdata return_value;
257 1
258 1 switch (clksource) {
259 2 case 0: flg = Reflos_reg1 & 0x80; //查看7820中T11即光口0线路时钟
260 2 if (flg == 0x80){ //时钟源丢失
261 3 return_value = 0x00; //高8位表示该时钟源状态,低8位表示时钟源编号
262 3 }
263 2 else return_value = 0x10;
264 2 break;
265 2 case 1: flg = Reflos_reg1 & 0x40; //查看T12即光口1线路时钟
266 2 if (flg == 0x40){
267 3 return_value = 0x01;
268 3 }
269 2 else return_value = 0x11;
270 2 break;
271 2 case 2: flg = (f2rc7820_rd(F2Reflos_reg1)) & 0x80;
272 2 //flg = Reflos_reg1&0x04; //查看T16即光口2线路时钟
273 2 if (flg == 0x80){
274 3 return_value = 0x02;
275 3 }
276 2 else return_value = 0x12;
277 2 break;
278 2 case 3: flg = (f2rc7820_rd(F2Reflos_reg1)) & 0x40;
279 2 //flg = Reflos_reg1&0x02; //查看T17即光口3线路时钟
280 2 if (flg == 0x40){
281 3 return_value = 0x03;
282 3 }
283 2 else return_value = 0x13;
284 2 break;
285 2 case 7: flg = Reflos_reg2 & 0x08; //查看7820中T21即第二外时钟源
286 2 if (flg == 0x08){ //时钟源丢失
287 3 return_value = 0x07; //高8位表示该时钟源状态,低8位表示时钟源编号
288 3 }
289 2 else return_value = 0x17;
290 2 break;
291 2 case 6: flg = Reflos_reg2 & 0x02; //查看7820中T31即第一外时钟源
292 2 if (flg == 0x02){
293 3 return_value = 0x06;
294 3 }
295 2 else return_value = 0x16;
296 2 break;
297 2 case 8: return_value = 0x18;
298 2 break;
299 2 case 9: return_value = 0x19;
300 2 break;
301 2 default: return_value = 0x0A;
302 2 break;
303 2 }
C51 COMPILER V7.50 CLK_DEAL 03/10/2006 16:35:31 PAGE 6
304 1 return (return_value);
305 1 }
306
307 unsigned char get_clock_stat(struct cmd_para_save *get_clock){
308 1 //C14取得指定输入时钟源的状态
309 1 unsigned char xdata clksource;
310 1 unsigned char xdata return_value;
311 1
312 1 clksource = get_clock -> clock_state_num;
313 1 return_value = get_clock_state(clksource);
314 1 if (!GetResRdyTbl(10))
315 1 SetResRdyTbl(10);
316 1 return (return_value);
317 1 }
318
319
320 void report_clock_stat(unsigned char clk_state){
321 1 //C14回应函数
322 1 tx_buf[0] = '$';
323 1 tx_buf[1] = '2';
324 1 tx_buf[2] = '1';
325 1 tx_buf[3] = 0x43;
326 1 tx_buf[4] = 0x31;
327 1 tx_buf[5] = 0x34;
328 1 tx_buf[6] = '0';
329 1 tx_buf[7] = '0';
330 1 tx_buf[8] = '0';
331 1 tx_buf[9] = '3';
332 1 if (clk_state == 0x0A){
333 2 tx_buf[10] = '2';
334 2 tx_buf[11] = '0';
335 2 tx_buf[12] = '0';
336 2 }
337 1 else {
338 2 tx_buf[10] = '0';
339 2 tx_buf[11] = (clk_state & 0x0F) + 0x30;
340 2 tx_buf[12] = ((clk_state >> 4) & 0x0F) +0x30;
341 2 }
342 1 tx_buf[13] = '*';
343 1 tx_buf_pointer = 0;
344 1 while(tx_buf[tx_buf_pointer] != '*'){
345 2 SBUF = tx_buf[tx_buf_pointer];
346 2 while(tx_done == 0);
347 2 tx_done = 0;
348 2 tx_buf_pointer++;
349 2 }
350 1 SBUF = tx_buf[tx_buf_pointer]; //发送最后一个字符'*'
351 1 while(tx_done == 0);
352 1 tx_done = 0;
353 1 }
354
355 void set_clock_switch(unsigned char clksource){
356 1 //设置时钟倒换函数
357 1 switch (clksource){
358 2 case 0: S_reg = 0x81; //配置时钟源为光口0线路时钟
359 2 clk_source = 0;
360 2 break;
361 2 case 1: S_reg = 0x82; //配置时钟源为光口1线路时钟
362 2 clk_source = 1;
363 2 break;
364 2 case 2: S_reg = 0x86; //配置时钟源为光口2线路时钟
365 2 clk_source = 2;
C51 COMPILER V7.50 CLK_DEAL 03/10/2006 16:35:31 PAGE 7
366 2 break;
367 2 case 3: S_reg = 0x87; //配置时钟源为光口3线路时钟
368 2 clk_source = 3;
369 2 break;
370 2 case 7: S_reg = 0x89; //配置时钟源为第二外时钟
371 2 clk_source = 7;
372 2 break;
373 2 case 6: S_reg = 0x8B; //配置时钟源为第一外时钟源
374 2 clk_source = 6;
375 2 break;
376 2 case 8: S_reg = 0xC0; //配置时钟源自由振荡模式
377 2 clk_source = 8;
378 2 break;
379 2 case 9: S_reg = 0xE0; //配置时钟源为保持模式
380 2 clk_source = 9;
381 2 break;
382 2 default:break;
383 2 }
384 1 }
385
386 void clk_switch(void){
387 1 //主用时钟源丢失,自动倒换函数
388 1 unsigned char xdata temp;
389 1 temp = get_clock_state(clkarray[0]);
390 1 if (temp >> 4 == 1){
391 2 set_clock_switch(clkarray[0]);
392 2 clk_prio = 0;
393 2 }
394 1 else {
395 2 temp = get_clock_state(clkarray[1]);
396 2 if (temp >> 4 == 1){
397 3 set_clock_switch(clkarray[1]);
398 3 clk_prio = 1;
399 3 }
400 2 else {
401 3 temp = get_clock_state(clkarray[2]);
402 3 if (temp >> 4 == 1){
403 4 set_clock_switch(clkarray[2]);
404 4 clk_prio = 2;
405 4 }
406 3 else {
407 4 temp = get_clock_state(clkarray[3]);
408 4 if (temp >> 4 == 1){
409 5 set_clock_switch(clkarray[3]);
410 5 clk_prio = 3;
411 5 }
412 4 else {
413 5 temp = get_clock_state(clkarray[4]);
414 5 if (temp >> 4 == 1){
415 6 set_clock_switch(clkarray[4]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -