📄 vfdtask.lst
字号:
519 {
520 1 VFD_SendCmd(0x8f);
521 1 }
522 /*===================================================================
523 描述: 清除VFD显示数据
524 参数: 无
525 返回: 无
526 ===================================================================*/
527 void VFD_ClearALL(void)
528 {
529 1 // BYTE i;
530 1 VFD_Display(" ",5, 0, 0);
531 1 VFD_ICON_Display(0);
532 1 }
533
534 /*===================================================================
535 描述: VFD显示特殊字符
536 参数: 要显示的VFD_ICON
537 返回: 无
538 ===================================================================*/
539 void VFD_ICON_Display(WORD ICON_Special)
540 {
541 1 VFD_SendCmd(VFD_ADDRESS_INC);
542 1 CLEAR_VFD_CS;
543 1 Delay5US();
544 1 VFD_SendByte(VFD_ADDRESS_MASK);
545 1 VFD_SendByte(LowByte(ICON_Special));
546 1 VFD_SendByte(HighByte(ICON_Special));
547 1 Delay5US();
548 1 SET_VFD_CS;
549 1 }
550 /*===================================================================
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 10
551 描述: VFD显示关闭
552 参数: 无
553 返回: 无
554 ===================================================================*/
555 /*void VFD_DisplayOff(void)
556 {
557 VFD_ClearALL();
558 VFD_SendCmd(VFD_Dimming[VFD_Dim] & 0x7F);
559 }
560 */
561 /*===================================================================
562 描述: 读取VFD的按键输入,并得到键值
563 参数: 无
564 返回: 无
565 ===================================================================*/
566 void VFD_SearchKey(void)
567 {
568 1 BYTE KEY_TEMP;
569 1 CLEAR_VFD_CS;
570 1 Delay5US();
571 1 VFD_SendByte(VFD_READ_KEY);
572 1 Delay5US();
573 1 KEY_TEMP = VFD_ReadByte();
574 1 VFD_ReadByte();
575 1 VFD_ReadByte();
576 1 Delay5US();
577 1 SET_VFD_CS;
578 1 if(KEY_TEMP != 0)
579 1 {
580 2 if(Key_Timer == 0)
581 2 Key_Timer = 1;
582 2 Panel_Key = KEY_TEMP;
583 2 }
584 1 else
585 1 {
586 2 if(Panel_Key != 0)
587 2 {
588 3 if(Key_Timer > 40)
589 3 {
590 4 Panel_Key = 8;
591 4 }
592 3 Key_Timer = 0;
593 3 Panel_KeyAct = 1;
594 3 }
595 2 }
596 1 }
597 /*===================================================================
598 描述: VFD驱动控制芯片的初始化
599 参数: 无
600 返回: 无
601 ===================================================================*/
602 void VFD_Init(void)
603 {
604 1 // BYTE i;
605 1 VFD_ModeSet();
606 1 VFD_DisplayOn();
607 1 VFD_WriteLedPort(0xF); //将代表POWER OFF的LED点亮,同时将代表POWER ON的LED灯熄灭
608 1 VFD_ClearALL();
609 1
610 1
611 1 }
612
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 11
613 /*===================================================================
614 描述: VFD显示内容清零
615 参数: 无
616 返回: 无
617 ===================================================================*/
618 /*
619 void VFD_RAMZero(void)
620 {
621 BYTE i;
622 for(i = 0; i < Grid_Size; i++)
623 {
624 VFD_RAMData[i] = 0;
625 }
626 }
627 */
628 void Frequency_Display(void)
629 {
630 1 if(FM_AM_Select == FM_MODE)
631 1 {
632 2 VFD_Display(" ", 0, 8750 + DeltFMFreq * 5, 1);
633 2 VFD_ICON_Display(ICON_FM | ICON_MHZ);
634 2 }
635 1 else
636 1 {
637 2 VFD_Display(" ", 0, 530 + DeltAMFreq * 5, 0);
638 2 VFD_ICON_Display(ICON_AM | ICON_KHZ);
639 2 }
640 1
641 1 }
642 void Main_Display(void)
643 {
644 1 BYTE TEMP;
645 1 switch(Current_State)
646 1 {
647 2
648 2 case TUNER:
649 2 if(Channel_Display > 0)
650 2 {
651 3 String_Display[0] = 'C';
652 3 String_Display[1] = 'H';
653 3 String_Display[2] = ' ';
654 3 if((Scan_Channel+1) > 9)
655 3 {
656 4 TEMP = (Scan_Channel+1)/10;
657 4 String_Display[3] = '0' + TEMP;
658 4 }
659 3 else
660 3 String_Display[3] = ' ';
661 3 String_Display[4] = '0' + ((Scan_Channel+1) % 10);
662 3 //VFD_DisplayString(String_Display,5);
663 3 VFD_Display(String_Display, 5, 0, 0);
664 3 Channel_Display--;
665 3 if(FM_AM_Select == FM_MODE)
666 3 VFD_ICON_Display(ICON_FM);
667 3
668 3 else
669 3 VFD_ICON_Display(ICON_AM);
670 3
671 3 }
672 2 else
673 2 Frequency_Display();
674 2 break;
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 12
675 2 case AUX1:
676 2
677 2 //VFD_DisplayString("AUX 1", 5);
678 2 VFD_Display("AUX 1 ", 5, 0, 0);
679 2 VFD_ICON_Display(0);
680 2 break;
681 2 case AUX2:
682 2
683 2 VFD_Display("AUX 2 ", 5, 0, 0);
684 2 VFD_ICON_Display(0);
685 2 break;
686 2 case CH5:
687 2
688 2 VFD_Display("6CH ", 5, 0, 0);
689 2 VFD_ICON_Display(0);
690 2 break;
691 2 }
692 1 }
693 /*===================================================================
694 描述: VFD任务调度函数
695 参数: 无
696 返回: 无
697 ===================================================================*/
698 void VFD_Task_Proc(void)
699 {
700 1 if( (TO_MAIN_DISPLAY == 0) && (Mute_Switch == 0) )
701 1 {
702 2 Main_Display();
703 2 FUNCTION_Count = 0;
704 2 Memory_Start = 0;
705 2 Digital_Number = 0;
706 2 }
707 1 else if((TO_MAIN_DISPLAY > 0) && (Memory_Start == 1))
708 1 {
709 2 if(FLASH_TEMP == 0)
710 2 {
711 3 String_Display[3] = (Digital_Number / 10) + '0';
712 3 String_Display[4] = (Digital_Number % 10) + '0';
713 3
714 3 }
715 2 else
716 2 {
717 3 String_Display[3] = ' ';
718 3 String_Display[4] = ' ';
719 3 }
720 2 VFD_Display(String_Display, 5, 0, 0);
721 2 }
722 1 }
723
724
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 13
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION VFD_ReadByte (BEGIN)
; SOURCE LINE # 38
; SOURCE LINE # 39
; SOURCE LINE # 41
0000 E4 CLR A
0001 F500 R MOV ReceiveData,A
; SOURCE LINE # 42
0003 F500 R MOV i,A
0005 ?C0001:
; SOURCE LINE # 43
; SOURCE LINE # 44
0005 E500 R MOV A,ReceiveData
0007 C3 CLR C
0008 13 RRC A
0009 F500 R MOV ReceiveData,A
; SOURCE LINE # 45
000B C295 CLR VFD_CLK
; SOURCE LINE # 46
000D 120000 E LCALL Delay5US
; SOURCE LINE # 47
0010 D295 SETB VFD_CLK
; SOURCE LINE # 48
0012 120000 E LCALL Delay5US
; SOURCE LINE # 49
0015 309603 JNB VFD_DATA,?C0003
; SOURCE LINE # 50
0018 430080 R ORL ReceiveData,#080H
; SOURCE LINE # 51
001B ?C0003:
001B 0500 R INC i
001D E500 R MOV A,i
001F C3 CLR C
0020 9408 SUBB A,#08H
0022 40E1 JC ?C0001
0024 ?C0002:
; SOURCE LINE # 52
0024 D296 SETB VFD_DATA
; SOURCE LINE # 53
0026 AF00 R MOV R7,ReceiveData
; SOURCE LINE # 54
0028 ?C0005:
0028 22 RET
; FUNCTION VFD_ReadByte (END)
; FUNCTION _VFD_SendByte (BEGIN)
; SOURCE LINE # 60
0000 8F00 R MOV VFD_SendByte,R7
; SOURCE LINE # 61
; SOURCE LINE # 63
0002 C296 CLR VFD_DATA
; SOURCE LINE # 64
0004 120000 E LCALL Delay5US
; SOURCE LINE # 65
;---- Variable 'i' assigned to Register 'R7' ----
0007 E4 CLR A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -