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