导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:菜单

* 6992: C51编程:菜单

   boyer 
boyer发表的帖子 

 C51编程:菜单
请班主和各位大侠给看一下下面的程序,我不明白它的道理,请给指点一下.谢谢

#define    uchar unsigned char
#define    MenuId_DateTime           0
#define    MenuId_Option             1
#define    MenuId_Pwd                2
#define    MenuId_SerialNum          3
#define    MenuId_SetDate            4
#define    MenuId_SetTime            5
#define    MenuId_QueryDate          6
#define    MenuId_SetAddr            7
#define    MenuId_Transmit           8
#define    MenuId_SetWeek            9
#define    MenuId_QueryWeek         10
#define    MenuId_SetBaud           11
#define    MenuId_QueryBaud         12
#define    MenuId_SetSerial         13
#define    MenuId_QuerySerial       14
#define    MenuId_QueryRecNum       15
#define    MenuId_AddBlk            16
#define    MenuId_DelBlk            17
#define    MenuId_QueryAddr         18
#define    MenuId_RevData           19
#define    MenuId_Data              20
#define    MenuId_SetStatus         21
#define    MenuId_SetInOut          22
#define    MenuId_SetPwd            23
#define    MenuId_SetEsd            24
#define    MenuId_GetSupper         25
#define    MenuId_ClrSet            26
#define    MenuId_RamChk            27
#define    MenuId_Inter             28


#define ADD_KEY                   10    //+ butten
#define MINUS_KEY                 11    //- butten
#define UP_KEY                    12    //up butten
#define DOWN_KEY                  13    //down butten
#define PWD_KEY                   14    //POWER
#define ENTER_KEY                 15    //ENTER KEY

struct menu{
    struct menu flash *parent;
    struct menu flash *child;
    uchar      hide;
    uchar      pos;
    uchar      MenuLenght;
    uchar      MenuId; 
    uchar      str_len;
    uchar      menu_str[16];
                  };
struct menu flash menu_datetime[];
struct menu flash menu_mod[];
struct menu flash menu_serialnum[];
struct menu flash menu_transmit[];
struct menu flash menu_data[];
struct menu flash menu_inter[];
uchar menu_exe()
{
    struct menu flash *mp;
    uchar flash *str;
    uchar menu_len,position;
    mp = main_menu;
    position = 0;        
    while(1){
    menu_len = mp->MenuLenght;
        str = mp->menu_str;
        DISTY=1;
        clr_all();
        NUM = mp->str_len;
        FIR_COL =61-NUM*16/2;
        dis_str(str);
        while(!(keyb())) 
        switch(key_val){
            case UP_KEY:
                if(position == (menu_len-1)){
                    position = 0;
                    mp -= menu_len-1; 
                }else{
                    mp++;
                    position++;
                }
            break;    
            case DOWN_KEY:
                if(position == 0){
                    position = menu_len-1;
                    mp += menu_len-1; 
                }else{
                    mp--;
                    position--;
                }            
               break;    
           case ENTER_KEY:
                if(mp->child == NULL)
                    return mp->MenuId;
                mp = mp->child;
                position = 0;
            break;    
            case ESC_KEY:
                if(mp->parent == NULL)
    return 0xff;
               mp = mp->parent;
                position = mp->pos;
            break;    
            default:
            break;    
       }
     }
 }

发表时间:2002年4月8日22:05:00

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:你的E-mail?
[下一篇帖子]:我也要