⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_prc.lst

📁 楼宇对讲系统里用的文字信息接收。用可视对讲话机的TFT屏可看到从管理中心发过来的广播信息和本户的特发信息
💻 LST
📖 第 1 页 / 共 5 页
字号:
 693   1               disp_mode = SECOND_MENU_DISP ;
 694   1           select_position = select_position_old ;
 695   1               disp_no_u_old = 6 ;
 696   1               disp_no_u = 0;
 697   1      }
 698          
 699          
 700          
 701          /**********************************************************/
 702          /* mes_list指针指向的是在二级界面菜单显示时,待显示的链表**/
 703          /*中的某一处,首次进入二级菜单时 mes_list -> disp_tcb_list*/
 704          /**********************************************************/
 705          unsigned char  Judge_mes_num(void)
 706          {
 707   1         unsigned char i ;
 708   1      
 709   1         if(mes_list == &MES_NULL)   //无信息就返回0
 710   1             return 0;
 711   1         mes_list_old = mes_list ;   //为了显示*形所用
 712   1      /*经过以下处理,mes_list指向该屏的信息内存块的末端*/
 713   1         for(i=0;i<5;i++)   //最多只判5条
 714   1         {
 715   2              if(mes_list ->next != &MES_NULL)
 716   2                      {         
 717   3                   mes_list = mes_list -> next ;
 718   3                      }
 719   2                      else
 720   2                      {       
 721   3                      last_mes_list = mes_list;
 722   3                  mes_list = &MES_NULL;
 723   3                          i++;
 724   3                  break;
 725   3                      }
 726   2              }
 727   1              
 728   1              return i;
 729   1      }
 730           
 731          
 732          
 733          /*******************************************************/
 734          /*******************************************************/
 735          unsigned char  R_judge_mes_num(void)
 736          {
 737   1         unsigned char i=0 ;
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 13  

 738   1         struct MES_CON_BLOCK *p = mes_list;
 739   1          if((mes_list == &MES_NULL)&&(last_mes_list != &MES_NULL))
 740   1          {
 741   2                       p = last_mes_list;
 742   2              }
 743   1          if(p->next == &MES_NULL)        
 744   1            i=1;
 745   1         for(;i<5;i++)
 746   1         {      
 747   2      //            if(p->prev != (struct  MES_CON_BLOCK xdata *)END)
 748   2                              if(p->prev != &MES_NULL)
 749   2                      p = p -> prev ;
 750   2                              else
 751   2                              {
 752   3                                i++;
 753   3                                break;
 754   3                              }
 755   2                                  
 756   2         }
 757   1         mes_list_old = p ;
 758   1              return i;
 759   1      }
 760          
 761          
 762          /*******************************************************/
 763          /*******************************************************/
 764          void In_third_menu(void)
 765          {
 766   1        disp_mode = THIRD_MENU_DISP;
 767   1        content_disp_F = P_DISP ;
 768   1        select_position_old = select_position;    //阅读信息后返回时正常情况下仍选中该条信息
 769   1        disp_no_u_old= 6;        //disp_no_u不可能达到6
 770   1        disp_no_u=0;
 771   1      }
 772          
 773          
 774          /*******************************************************/
 775          /*******************************************************/
 776          void Get_mes_content(unsigned char scr_disp_num,unsigned char select)
 777          {
 778   1       
 779   1         struct  MES_CON_BLOCK xdata *p;
 780   1         if(mes_list == &MES_NULL)
 781   1         {    
 782   2             p = last_mes_list;
 783   2             scr_disp_num --;
 784   2         }
 785   1         else
 786   1             p=mes_list ;
 787   1         while(scr_disp_num-- > select)
 788   1               p=p->prev;
 789   1        
 790   1         mes_content = (unsigned char xdata*)p->mes_addr.address.address;
 791   1         read_mes_page_adr =(unsigned char)(p->mes_addr.address.page_addr) ;
 792   1         p->new_old_F = OLD;             //进入该信息阅读,表示信息是旧的
 793   1         /*以下为编删除信息时增加*/
 794   1         del_mes_p = p ;  //将现在这条信息的控制块存入,以备删除信息时用
 795   1      }
 796          
 797          /*******************************************************/
 798          /*  该函数为删除信息时需处理的动作                     */
 799          /*******************************************************/
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 14  

 800          void Del_mes_prc(void)
 801          {
 802   1        
 803   1         if(del_mes_p == last_mes_list )  //如果删除的信息是列表中的最后一条
 804   1         {  
 805   2             if(last_mes_list->prev !=&MES_NULL)     //不是第一条
 806   2             {
 807   3                 last_mes_list = last_mes_list->prev;  
 808   3                         select_position_old -= 1;    //防止将选择框移到"返回" 处
 809   3                 }
 810   2                 else                                   //删除的是最后一条信息
 811   2                 {
 812   3                    last_mes_list = &MES_NULL ;
 813   3                 }
 814   2         }
 815   1         Del_disp_tcb_block(del_mes_p);     // 从显示链表中脱开,然后放回到空链表中
 816   1         list_num--;                        //总的信息数减1
 817   1         scr_mes_num--;                     //当前这一屏的信息数量减1
 818   1         if(scr_mes_num != 0)
 819   1             Return_second_menu(scr_mes_num);   //直接返回二级菜单
 820   1         else                              //这一屏已没有信息列表了,那么返回上一屏列表
 821   1         {  
 822   2            if(list_num >= 5)              //之前有超过5条信息
 823   2                 Return_second_menu(5);         
 824   2                else                           //之前不超过5条
 825   2                 Return_second_menu(list_num);
 826   2      
 827   2                select_position = 0;           //新屏的选项位置重新从第一行信息位置开始
 828   2         }
 829   1      
 830   1      }
 831          
 832          /************************************************/
 833          /************************************************/
 834          
 835            void Get_num_code(unsigned char num)
 836            {
 837   1            unsigned char i;
 838   1                if(num>=100)
 839   1                {
 840   2                   i= num/100;
 841   2                       (unsigned int)num_code[0]= num_to_code[i];
 842   2                       num = num%100;
 843   2                       i=num/10;
 844   2               (unsigned int)num_code[2]= num_to_code[i];
 845   2                       i = num%10;
 846   2                       (unsigned int)num_code[4]= num_to_code[i];
 847   2                       num_code[6]='\0';
 848   2                }
 849   1                else if(num>=10)
 850   1                {
 851   2                   i=num/10;
 852   2               (unsigned int)num_code[0]= num_to_code[i];
 853   2                       i = num%10;
 854   2                       (unsigned int)num_code[2]= num_to_code[i];
 855   2                       num_code[4]='\0';
 856   2                }
 857   1                else 
 858   1                {
 859   2                   i = num;
 860   2                   (unsigned int)num_code[0]= num_to_code[i]; 
 861   2                       num_code[2]='\0';
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 15  

 862   2                }
 863   1         }
 864          
 865          /************************************************/
 866          /************************************************/
 867             void Get_list_str(unsigned char num)
 868             {
 869   1      //      memset(list_str,0x00,11);           //clear  list_str
 870   1            register char i=0 ;
 871   1            
 872   1                while(i < 11)
 873   1               *(list_str + i++)= 0x00;
 874   1      
 875   1            Get_num_code(num);
 876   1            strcat(list_str,"第");
 877   1                strcat(list_str,num_code);
 878   1                strcat(list_str,"条");
 879   1         }   
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 16  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION Key_dummy (BEGIN)
                                           ; SOURCE LINE # 66
                                           ; SOURCE LINE # 67
                                           ; SOURCE LINE # 69
0000         ?C0001:
0000 22                RET     
             ; FUNCTION Key_dummy (END)

             ; FUNCTION Key_hd (BEGIN)
                                           ; SOURCE LINE # 75
                                           ; SOURCE LINE # 76
                                           ; SOURCE LINE # 77
0000 120000      R     LCALL   Key_scan
                                           ; SOURCE LINE # 78
0003 E500        E     MOV     A,key_tmr
0005 6003              JZ      ?C0002
                                           ; SOURCE LINE # 79
0007 1500        E     DEC     key_tmr
0009 22                RET     
000A         ?C0002:
                                           ; SOURCE LINE # 81
                                           ; SOURCE LINE # 82
000A 750002      E     MOV     key_tmr,#02H
                                           ; SOURCE LINE # 83
000D 120000      R     LCALL   Key_judge
0010 5003              JNC     ?C0005
                                           ; SOURCE LINE # 84
0012 120000      R     LCALL   Con_key
                                           ; SOURCE LINE # 85
                                           ; SOURCE LINE # 87
0015         ?C0005:
0015 22                RET     
             ; FUNCTION Key_hd (END)

             ; FUNCTION Key_scan (BEGIN)
                                           ; SOURCE LINE # 91
                                           ; SOURCE LINE # 93
                                           ; SOURCE LINE # 95
0000 43B018            ORL     P3,#018H
                                           ; SOURCE LINE # 97
0003 E5B0              MOV     A,P3
0005 F4                CPL     A
0006 5418              ANL     A,#018H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -