📄 hicj6.lst
字号:
304 3 }
305 2 // }
306 2
307 2 }
308 1 i=Read1B(200+House);
309 1 i=(i>>4)&7;
310 1 if(i) Led[i]|=0x80; //Point
311 1 for(i=0;i<8;i++)
312 1 {
313 2 write7279(DECODE0+i,Led[i],0); //Hdd
314 2 }
315 1 for(i=0;i<4;i++)
316 1 {
317 2 write7279(DECODE0+i,Led[i+8],1); //House Code
318 2 }
319 1 /*
320 1 //if(Led[15]>0)
321 1 //write7279(DECODE1+7,Led[15],1);
322 1 //else
323 1 //write7279(DECODE0+7,0x0f,1);
324 1 i=Read1B(200+House);
325 1 i&=0x0f;
326 1 switch (i)
327 1 {
328 1 case (0x01):
329 1 Type=0x04;
330 1 break;
331 1 case (0x02):
332 1 Type=0x02;
333 1 break;
334 1 case (0x04):
335 1 Type=0x01;
336 1 break;
337 1 case (0x08):
338 1 Type=0x80;
339 1 break;
340 1 default:
341 1 Type=0;
342 1 break;
343 1 }
344 1 Sp_Flag=0;
345 1 Alarm=0;
346 1 if(Pulse%2) Alarm=0x08;
347 1 Short_Bak=Read1B(170+House/8);
348 1 if(Short_Bak&(1<<(House%8)))
349 1 {
350 1 Alarm|=0x10;
351 1 Sp_Flag=1;
352 1 }
353 1 Break_Bak=Read1B(175+House/8);
354 1 if(Break_Bak&(1<<(House%8)))
355 1 {
356 1 Alarm|=0x20;
357 1 Sp_Flag=1;
358 1 }
359 1 Alarm|=Type;
360 1 Alarm_Flag=1;
361 1
362 1 if(Short_New[House/8]&(1<<(House%8)))
363 1 Flash|=1;
364 1 if(Break_New[House/8]&(1<<(House%8)))
365 1 Flash|=2;
C51 COMPILER V7.50 HICJ6 07/20/2005 09:16:51 PAGE 7
366 1
367 1 // }
368 1
369 1 /*
370 1 else
371 1 {
372 1 for(i=0;i<8;i++)
373 1 {
374 1 write7279(UNDECODE+i,1,0);
375 1 }
376 1 for(i=0;i<2;i++)
377 1 {
378 1 write7279(UNDECODE+i,1,1);
379 1 }
380 1 write7279(UNDECODE+7,1,1); //One Led
381 1 Led[11]=(House+1)/10;
382 1 Led[10]=(House+1)%10;
383 1 write7279(DECODE0+2,Led[10],1);
384 1 write7279(DECODE0+3,Led[11],1);
385 1 write7279(UNDECODE+6,0x00,1); //Type Alarm
386 1 Sp_Flag=0;
387 1 }
388 1
389 1
390 1
391 1 */
392 1
393 1
394 1 }
395 /*
396 void Key_Pro(void)
397 {
398 //Key_New=read7279(CMD_READ);
399 if(Key_New==0xff) Key_New=0;
400 Key_Val=Key_New^Key_Old & Key_New;
401 Key_Old=Key_New;
402 if (Key_Val==0x3a)
403 {
404 Key_Press=1;
405 House++;
406 House=House%House_Sum;
407 Press_Count=0;
408 }
409
410
411 }
412 */
413 void Key_Pro(void)
414 {
415 1 BYTE Key_Tmp;
416 1 Key_New =Key;
417 1 Key_Tmp=(Key_New^Key_Old)&(~Key_New);
418 1 if(Key_Tmp)
419 1 {
420 2 Key_Val=1;
421 2 Key_C=0;
422 2 }
423 1 if(Key_Val)Key_C++;
424 1 Key_Old=Key_New;
425 1 if (Key_C>1)
426 1 {
427 2 Key_Val=0;
C51 COMPILER V7.50 HICJ6 07/20/2005 09:16:51 PAGE 8
428 2 Key_C=0;
429 2 Key_Press=1;
430 2 House++;
431 2 if(House_Max>1)
432 2 {
433 3 House=House%House_Max;
434 3 }
435 2 else House=0;
436 2 Press_Count=0;
437 2 }
438 1
439 1
440 1 }
441
442 /**********************************************************
443 *名 称:LedTest
444 *功 能:LED数码管检测
445 *说 明:对数码管分别按段、位进行检测
446 *调 用:write7279 send_byte
447 *入口参数:无
448 *返 回 值:无
449 ***********************************************************/
450
451 void LedTest(void)
452 {
453 1 BYTE data i,j;
454 1 send_byte(CMD_RESET,0); // 清除显示
455 1 cs1=cs2=1;
456 1 send_byte(CMD_RESET,1);
457 1 cs1=cs2=1;
458 1 /*
459 1 send_byte(CMD_TEST,0);
460 1 cs1=cs2=1;
461 1 send_byte(CMD_TEST,1);
462 1 cs1=cs2=1;
463 1 send_byte(CMD_RESET,0); // 清除显示
464 1 cs1=cs2=1;
465 1 send_byte(CMD_RESET,1);
466 1 cs1=cs2=1; */
467 1 for(i=0;i<6;i++)
468 1 {
469 2 Speaker=0;
470 2 for(j=0;j<8;j++)
471 2 {
472 3 write7279(UNDECODE+j,LedCode[i],0);
473 3 write7279(UNDECODE+j,LedCode[i],1);
474 3
475 3 }
476 2 delay10ms(10);
477 2 Speaker=1;
478 2 delay10ms(40);
479 2
480 2 }
481 1 send_byte(CMD_RESET,0); // 清除显示
482 1 cs1=cs2=1;
483 1 send_byte(CMD_RESET,1);
484 1 cs1=cs2=1;
485 1 for(i=1;i<8;i++)
486 1 {
487 2 Speaker=0;
488 2 write7279(UNDECODE+7-i,0xff,1);
489 2 delay10ms(10);
C51 COMPILER V7.50 HICJ6 07/20/2005 09:16:51 PAGE 9
490 2 Speaker=1;
491 2 delay10ms(40);
492 2 send_byte(CMD_RESET,1); // 清除显示
493 2 cs1=cs2=1;
494 2
495 2 }
496 1
497 1 Speaker=0;
498 1 write7279(UNDECODE+7,0xff,1);
499 1 delay10ms(10);
500 1 Speaker=1;
501 1 delay10ms(40);
502 1 send_byte(CMD_RESET,1); // 清除显示
503 1 cs1=cs2=1;
504 1
505 1 for(i=0;i<8;i++)
506 1 {
507 2 Speaker=0;
508 2 write7279(UNDECODE+7-i,0xff,0);
509 2 delay10ms(10);
510 2 Speaker=1;
511 2 delay10ms(40);
512 2 send_byte(CMD_RESET,0); // 清除显示
513 2 cs1=cs2=1;
514 2 }
515 1 }
516
517 /**********************************************************
518 *名 称:ShowVer
519 *功 能:LED数码管检测
520 *说 明:对数码管分别按段、位进行检测 send_byte 后的片选为什么要独立?
521 *调 用:write7279 send_byte
522 *入口参数:无
523 *返 回 值:无
524 ***********************************************************/
525 void ShowVer(void)
526 {
527 1 BYTE i;
528 1 i=Ver/10; //版本
529 1 write7279(DECODE0+7,i,0);
530 1 i=Ver%10;
531 1 write7279(DECODE0+6,i,0);
532 1 write7279(UNDECODE+5,LedCode[4],0); //-
533 1
534 1 i=(VerDate)/10000; //年
535 1 write7279(DECODE0+4,i,0);
536 1 i=(VerDate%10000)/1000; //月
537 1 write7279(DECODE0+3,i,0);
538 1 i=(VerDate%1000)/100;
539 1 write7279(DECODE0+2,i,0);
540 1 i=(VerDate%100)/10; //日
541 1 write7279(DECODE0+1,i,0);
542 1 i=VerDate%10;
543 1 write7279(DECODE0+0,i,0);
544 1
545 1 i=Station/100; //站号
546 1 write7279(DECODE0+2,i,1);
547 1 i=(Station%100)/10;
548 1 write7279(DECODE0+1,i,1);
549 1 i=Station%10;
550 1 write7279(DECODE0+0,i,1);
551 1 i=LedCode[0]|LedCode[2]|LedCode[4];
C51 COMPILER V7.50 HICJ6 07/20/2005 09:16:51 PAGE 10
552 1 write7279(UNDECODE+3,i,1);
553 1
554 1 for(i=0;i<4;i++)
555 1 {
556 2 Speaker=0;
557 2 delay10ms(100);
558 2 Speaker=1;
559 2 delay10ms(100);
560 2 }
561 1 send_byte(CMD_RESET,0); // 清除显示
562 1 send_byte(CMD_RESET,1); // 清除显示
563 1 cs1=cs2=1;
564 1 }
565
566
567 void HddEn_Count_Pro(void)
568 {
569 1 BYTE i,j;
570 1 HddEn_Count=0;
571 1 HddEn_Sum=0;
572 1 for (i=0;i<5;i++)
573 1 {
574 2 for(j=0;j<8;j++)
575 2 {
576 3 if((Hdd_En[i]&(1<<j))!=0)
577 3 {
578 4 HddEn_Sum++;
579 4 House_Max=i*8+j+1;
580 4 House_Max=House_Max*3;
581 4 }
582 3 }
583 2 }
584 1 }
585
586 /**********************************************************
587 *名 称:InitFram
588 *功 能:从铁电存储器FM25040中读取参数,给变量赋值
589 *说 明:参考HICJ6.H中的地址分配表
590 *调 用:Write1B Read1B Write_Hdd Read_Hdd
591 *入口参数:无
592 *返 回 值:无
593 ***********************************************************/
594
595 void InitFram()
596 {
597 1 BYTE data i,j;
598 1 unsigned long data First_Flag;
599 1 First_Flag=Read_Hdd(40);
600 1 if (First_Flag!=0x5555aaaa)
601 1 {
602 2 Hdd_Str.Hdd_L=0x5555aaaa;
603 2 Write_Hdd(40);
604 2 for(i=0;i<160;i++)
605 2 {
606 3 Write1B(0,i);
607 3 }
608 2 Write1B(1,164); //Station L
609 2 Write1B(0,165); //Station H
610 2 Write1B(40,166); //House_Sum
611 2 for(i=0;i<5;i++)
612 2 {
613 3 Write1B(0,170+i); // Clear Short_Bak
C51 COMPILER V7.50 HICJ6 07/20/2005 09:16:51 PAGE 11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -