亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? 周立功 GUI在ucosii上的應(yīng)用
?? C
字號(hào):
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"

#define  LCM_LEDCON	 	(1<<22)


/* 按鍵消息郵箱 */
OS_EVENT  *KeyMbox = NULL;  // 按鍵消息郵箱 (直接使用其msg指針保存為按鍵值)

/* 定義8個(gè)圖標(biāo)結(jié)構(gòu)變量 */
MENUICO  mainmenu[8];       

/* 按鍵值定義 */
#define  KEY_LEFT       1
#define  KEY_RIGHT      2
#define  KEY_OK         3

#define	TaskStkLengh	160			//Define the Task0 stack length 定義用戶任務(wù)0的堆棧長(zhǎng)度
OS_STK	TaskStk0[TaskStkLengh];	    //Define the Task0 stack 定義用戶任務(wù)0的堆棧
OS_STK	TaskStk1[TaskStkLengh];	    //Define the Task1 stack 定義用戶任務(wù)1的堆棧
void 	Task0(void *pdata);			//Task0 任務(wù)0 (圖形顯示)
void 	Task1(void *pdata);			//Task1 任務(wù)1 (按鍵輸入)

/****************************************************************************
* 名稱: main()
* 功能: 初始化uC/OS-II操作系統(tǒng),建立第一個(gè)任務(wù),建立一個(gè)消息郵箱,
*       然后啟動(dòng)系統(tǒng)。
****************************************************************************/
int  main(void)
{
	OSInit ();																										
	OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 3);		
	
	KeyMbox = OSMboxCreate(NULL);   // 建立一個(gè)郵箱,用于傳遞按鍵消息
	
	OSStart ();
	return 0;															
}


/* 定義三個(gè)圖標(biāo)菜單的顯示位置 */
#define  ICO1_X         7 
#define  ICO1_Y         14  
#define  ICO2_X         (ICO1_X + 41)
#define  ICO2_Y         ICO1_Y
#define  ICO3_X         (ICO2_X + 41)  
#define  ICO3_Y         ICO1_Y

/****************************************************************************
* 名稱: DrawSelectMenuIco()
* 功能: 在屏幕指定位置上顯示3個(gè)圖標(biāo)菜單,并實(shí)現(xiàn)菜單選擇顯示。
* 入口參數(shù): start       顯示3個(gè)圖標(biāo)菜單的第一個(gè)菜單序號(hào)
*           select      當(dāng)前所選中的菜單序號(hào)
*           disp_all    全部更新控制(非0值時(shí),3個(gè)圖標(biāo)菜單重新顯示)
* 出口參數(shù): 無(wú)
****************************************************************************/
void  DrawSelectMenuIco(uint8 start, uint8 select, uint8  disp_all)
{   static  uint8  s_start_no = 255;
    static  uint8  s_select_old = 255;
    
       
    /* 判斷是否要全部更新 */
    if( (s_start_no != start) ||
        (disp_all != 0) )           // 需全部更新  
    {   s_start_no = start;
        s_select_old = select;
                
        /* 設(shè)置圖標(biāo)顯示位置 */
        mainmenu[start].x = ICO1_X;
        mainmenu[start].y = ICO1_Y;
        mainmenu[start+1].x = ICO2_X;
        mainmenu[start+1].y = ICO2_Y;
        mainmenu[start+2].x = ICO3_X;
        mainmenu[start+2].y = ICO3_Y;
        
        /* 設(shè)置選擇的圖標(biāo),然后顯圖標(biāo) */
        mainmenu[start].state = 0;
        mainmenu[start+1].state = 0;
        mainmenu[start+2].state = 0;        
        mainmenu[select].state = 1;				
        GUI_MenuIcoDraw(&mainmenu[start]);
        GUI_MenuIcoDraw(&mainmenu[start+1]);
        GUI_MenuIcoDraw(&mainmenu[start+2]);      
    }
    else                        // 只需更新選擇
    {   /* 清除舊的選擇 */
        if(s_select_old<8)
        {   mainmenu[s_select_old].state = 0;
            GUI_MenuIcoDraw(&mainmenu[s_select_old]);
        }
        
        /* 設(shè)置新的選擇 */
        mainmenu[select].state = 1;				
        GUI_MenuIcoDraw(&mainmenu[select]);
        s_select_old = select;
    }
}


/****************************************************************************
* 名稱: SelectMenuIco()
* 功能: 選擇圖標(biāo)菜單。在屏幕上同時(shí)顯示三個(gè)圖標(biāo)菜單,然后等待按鍵操作,
*       當(dāng)確定選擇后返回所選的菜單序號(hào)(0--7)。
* 入口參數(shù): 無(wú)
* 出口參數(shù): 返回值即是所選的菜單項(xiàng)(序號(hào))
****************************************************************************/
uint8  SelectMenuIco(void)
{   static uint8  s_menu_start = 0;     // 屏幕顯示的第一個(gè)圖標(biāo)菜單序號(hào)
    static uint8  s_select = 0;         // 當(dāng)前所選擇的圖標(biāo)菜單序號(hào)
    
    uint8  s_disp_sta = 0;              // 需要更新顯示標(biāo)志    
    void  *key;
    uint8  err;
    
    // 顯示當(dāng)前選擇菜單
    DrawSelectMenuIco(s_menu_start, s_select, 1);
    
    while(1)
    {   /* 若更新了選擇的菜單項(xiàng),則調(diào)用DrawSelectMenuIco顯示當(dāng)前選擇菜單 */
        if(s_disp_sta!=0)
        {   DrawSelectMenuIco(s_menu_start, s_select, 0);
            s_disp_sta = 0;
        }
        
        /* 讀取一按鍵 */
        key = OSMboxPend(KeyMbox, 0, &err);
        
        /* 分析按鍵并作相應(yīng)操作 */
        switch((int)key)
        {   case KEY_LEFT:
                if(s_select!=0)
                {   s_select--;         // 選擇項(xiàng)左移
                
                    /* 判斷是否需要更新s_menu_start */
                    if(s_select<s_menu_start)
                    {   s_menu_start = s_select;
                    }
                    
                    s_disp_sta = 1;     // 需要更新顯示
                }                
                break;
                
            case KEY_RIGHT:
                if(s_select<7)
                {   s_select++;         // 選擇項(xiàng)右移
                    
                    if((s_select-s_menu_start) > 2)
                    {   s_menu_start++;
                    }
                    
                    s_disp_sta = 1;     // 需要更新顯示
                }  
                break;
                
            case KEY_OK:
                return(s_select);       // 確定,返回所選菜單序號(hào)
                
            default:
                break;        
        } // end of switch(key)...
    } // end of while(1)...
}


/****************************************************************************
* 名稱: DemoMessage()
* 功能: 顯示一個(gè)消息框(包含OK和CANCEL兩個(gè)命令按鈕),顯示消息
*       為"Hello,ZLG/GUI",然后等待按鍵輸入。
* 入口參數(shù): 無(wú)
* 出口參數(shù): 無(wú)
****************************************************************************/
void  DemoMessage(void)
{  uint8  select;
   uint8  *key;
   uint8  err;
   
   WINDOWS  message;

   message.x = 5;       // 設(shè)置窗口位置和大小
   message.y = 14;
   message.with = 120;
   message.hight = 48;
   message.title = (uint8 *) "Message for Demo"; // 窗口標(biāo)題
   message.state = (uint8 *) 0;
   GUI_WindowsDraw(&message);       // 顯示對(duì)話框窗口
   GUI_PutString(8, 35, "Hello,");  // 顯示對(duì)話框的消息"Hello,ZLG/GUI"
   GUI_PutString(8, 45, "ZLG/GUI!");
   
   select = 0;
   while(1)
   {  if(select==0)
      {  GUI_Button_OK1(72,29);     // 選中"OK"按鈕
         GUI_Button_Cancle(72,45);  // 取消"CANCEL"按鈕的選中狀態(tài)
      }
      else
      {  GUI_Button_OK(72,29);
         GUI_Button_Cancle1(72,45);
      }
      
      key = OSMboxPend(KeyMbox, 0, &err);
           
      if( ((int)key==KEY_LEFT)||
          ((int)key==KEY_RIGHT) ) 
      { select = 1- select;
      }
      
      if((int)key==KEY_OK)
      {  GUI_WindowsHide(&message); // 清除窗口顯示
         return;
      }
   }
}


/****************************************************************************
* 名稱: MenuIcoInit()
* 功能: 初始化mainmenu結(jié)構(gòu)數(shù)組。即初始化各圖標(biāo)變量的成員,如圖標(biāo)
*       圖形點(diǎn)陣數(shù)據(jù)指針,圖標(biāo)標(biāo)題點(diǎn)陣數(shù)據(jù)指針,相應(yīng)的功能函數(shù)等等。
* 入口參數(shù): 無(wú)
* 出口參數(shù): 無(wú)
****************************************************************************/
void  MenuIcoInit(void)
{   int  i;
    extern uint8 *pic_all[][2];	// 圖標(biāo)資源(pic1--pic8)
        
    for(i=0; i<8; i++)
    {   /* 初始化為末選中狀態(tài) */
        mainmenu[i].state = 0;	
        
        /* 連接相應(yīng)的圖標(biāo)數(shù)據(jù) */
        mainmenu[i].icodat = (uint8 *) pic_all[i][0];
        mainmenu[i].title = (uint8 *) pic_all[i][1];
        
        /* 連接菜單功能函數(shù) */
        mainmenu[i].Function = ( void(*) (void) ) DemoMessage;
    }
}


/****************************************************************************
* 名稱: DrawMainWindow()
* 功能: 在屏幕上顯示一個(gè)主窗口,大小為128x64。
* 入口參數(shù): 無(wú)
* 出口參數(shù): 無(wú)
****************************************************************************/
void  DrawMainWindow(void)
{   WINDOWS  mainw;   
    
    mainw.x = 0;
    mainw.y = 0;
    mainw.with = 128;
    mainw.hight = 64;
    mainw.title = (uint8 *) "MenuIco Demo"; // 窗口標(biāo)題
    mainw.state = NULL;  // 狀態(tài)欄不顯示
    
    GUI_WindowsDraw(&mainw);    // 顯示窗口
}


/*********************************************************************************************************
**                            Task0 任務(wù)0
** 功能:使用ZLG/GUI實(shí)現(xiàn)圖標(biāo)菜單演示。在LCD屏幕上顯示圖標(biāo)菜單,
**       通過(guò)KEY2、KEY3按鍵選擇菜單,通過(guò)KEY4按鍵確定選擇。
********************************************************************************************************/
void  Task0(void *pdata)
{   uint8  select;

	pdata = pdata;
	TargetInit ();
	IO1DIR = LCM_LEDCON;
    IO1SET = LCM_LEDCON;
    
    OSTimeDly(50);
    // 顯示按鍵的鍵值"Hit   00"
    ZLG7290ShowChar(7, 0x11);
    ZLG7290ShowChar(6, 0x12);
    ZLG7290ShowChar(5, 0x19);
    ZLG7290ShowChar(1, 0x00);
    ZLG7290ShowChar(0, 0x00);    
    
	OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 2);
	    
    /* 初始化ZLG/GUI */
    GUI_Initialize();
    GUI_SetColor(1, 0);

    /* 圖標(biāo)菜單初始化 */
    MenuIcoInit();
    
    /* 顯示窗口 */
    DrawMainWindow();
    
    /* 循環(huán)調(diào)用圖標(biāo)菜單操作,并執(zhí)行相應(yīng)功能 */
    while(1)
    {  select = SelectMenuIco();   // 選擇菜單
    
       if(select<8) 
       {    (*mainmenu[select].Function)();     // 執(zhí)行功能
       }
       OSTimeDly(1);
    }
}



/*********************************************************************************************************
**                            Task1 任務(wù)1
** 功能: 等待一個(gè)按鍵,然后發(fā)送按鍵消息。具有去抖動(dòng)功能和按鍵超時(shí)退出功能。
** 說(shuō)明:按鍵和鍵值的對(duì)應(yīng)關(guān)系如下
**       S1   --------   KEY_LEFT
**       S2   --------   KEY_RIGHT
**       S3   --------   KEY_OK
********************************************************************************************************/
void  Task1(void *pdata)
{   uint16  Key;
    
    pdata = pdata;
    
    while(1)
    {   Key = ZLG7290GetKey();
        if (Key == 0 || Key >= 0x100)
        {
            OSTimeDly(OS_TICKS_PER_SEC / 100);
            continue;
        }                       
        
        OSMboxPost(KeyMbox, (void *)Key);   // 發(fā)送按鍵消息                
        OSTimeDly(OS_TICKS_PER_SEC / 3);    // 延時(shí)(防止按鍵連擊)
    } // end of while(1)...
} 

   
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产欧美亚州国产日韩mv天天看完整| 亚洲一区日韩精品中文字幕| 日韩欧美在线一区二区三区| 日本高清视频一区二区| aaa亚洲精品一二三区| 成人免费av资源| 不卡免费追剧大全电视剧网站| 国产精品一区二区久久不卡| 国产一区二区按摩在线观看| 黄页网站大全一区二区| 国产原创一区二区三区| 国内不卡的二区三区中文字幕| 精品亚洲免费视频| 国产美女av一区二区三区| 国产精品一区二区x88av| 国产伦精品一区二区三区免费迷 | 日韩精品自拍偷拍| 日韩三级在线免费观看| 欧美不卡在线视频| 久久午夜免费电影| 国产精品乱人伦中文| 亚洲欧美视频在线观看| 亚洲成国产人片在线观看| 午夜精彩视频在线观看不卡| 蜜臀va亚洲va欧美va天堂| 精东粉嫩av免费一区二区三区| 国产一区三区三区| 9l国产精品久久久久麻豆| 在线观看不卡视频| 日韩欧美高清在线| 亚洲国产经典视频| 亚洲午夜一二三区视频| 蜜臀av性久久久久蜜臀aⅴ| 国产精品影音先锋| 色综合久久久网| 日韩一区二区三区四区| 国产日韩亚洲欧美综合| 一区二区三区四区视频精品免费| 日日摸夜夜添夜夜添精品视频| 加勒比av一区二区| 91免费视频网址| 欧美一区二区三区四区高清| 国产欧美日本一区视频| 一区二区三区四区av| 久久精品国产99国产精品| 成人a区在线观看| 欧美精品色综合| 国产女同互慰高潮91漫画| 亚洲国产欧美另类丝袜| 激情深爱一区二区| 91成人网在线| 久久天天做天天爱综合色| 一区二区三区四区视频精品免费 | 奇米亚洲午夜久久精品| 国产成人免费视| 欧美日韩精品欧美日韩精品一 | 成人欧美一区二区三区小说| 日韩国产欧美在线视频| 91社区在线播放| 欧美成人欧美edvon| 一区二区在线看| 国产成人aaa| 91精品国产综合久久福利软件| 国产精品久久久一本精品 | 极品少妇xxxx精品少妇偷拍| 91在线免费视频观看| 日韩精品一区在线| 亚洲一区二区中文在线| 成人污视频在线观看| 日韩免费在线观看| 一区二区三区在线视频免费| 国产成人精品一区二区三区四区 | 国产精品少妇自拍| 男男gaygay亚洲| 在线精品国精品国产尤物884a| 国产丝袜在线精品| 毛片一区二区三区| 欧美性生活一区| 国产精品第13页| 韩国成人福利片在线播放| 欧美日韩精品欧美日韩精品| 亚洲乱码日产精品bd| 成人性生交大片免费看中文网站| 欧美成人精精品一区二区频| 亚洲国产精品综合小说图片区| av男人天堂一区| 久久久久9999亚洲精品| 国产自产v一区二区三区c| 91精品国产麻豆国产自产在线| 亚洲亚洲精品在线观看| 91精品福利视频| 亚洲欧美日韩精品久久久久| 白白色亚洲国产精品| 欧美国产一区二区| 国产成人在线看| 国产日产欧美精品一区二区三区| 黄色日韩三级电影| 精品国产露脸精彩对白| 久久精品国产亚洲aⅴ| 日韩欧美国产麻豆| 麻豆国产一区二区| 精品久久免费看| 国产自产v一区二区三区c| 精品久久人人做人人爰| 国模少妇一区二区三区| 精品成人a区在线观看| 久久成人18免费观看| 精品久久久久久久久久久院品网| 久久超级碰视频| www久久久久| 国产成人免费视频 | 国产福利精品导航| 26uuu另类欧美| 国产精品99久久久久久久女警| 久久久久久**毛片大全| 成人精品国产免费网站| 中文字幕综合网| 欧美性色aⅴ视频一区日韩精品| 亚洲国产日韩在线一区模特| 91精品免费在线| 精品在线你懂的| 日本一区二区免费在线观看视频| 成人听书哪个软件好| 亚洲欧美日本韩国| 欧美视频一区二区在线观看| 日本成人中文字幕在线视频| 日韩欧美国产wwwww| 成人妖精视频yjsp地址| 亚洲乱码国产乱码精品精小说| 欧美少妇一区二区| 麻豆精品精品国产自在97香蕉| 国产色91在线| 91丨porny丨中文| 日韩经典一区二区| 国产日韩欧美激情| 色婷婷av一区二区三区大白胸| 偷偷要91色婷婷| 国产性天天综合网| 91久久精品网| 精品一区二区三区免费| 国产精品电影一区二区三区| 欧美剧情电影在线观看完整版免费励志电影 | 午夜一区二区三区在线观看| 日韩限制级电影在线观看| 国产一级精品在线| 亚洲综合一区二区三区| 精品精品欲导航| 一本久久a久久免费精品不卡| 日韩电影免费在线看| 国产精品入口麻豆原神| 欧美精品日韩综合在线| 国产91精品一区二区麻豆网站| 亚洲激情图片qvod| 日韩欧美一区二区久久婷婷| 成人激情动漫在线观看| 五月激情六月综合| 国产欧美一区二区精品性色| 欧美日韩国产高清一区二区三区| 国产久卡久卡久卡久卡视频精品| 一二三区精品福利视频| 久久久亚洲精品一区二区三区| 欧美色视频在线| 成人免费福利片| 久久国产尿小便嘘嘘| 一区二区三区四区五区视频在线观看 | 精品亚洲成a人| 一区二区在线免费观看| 欧美国产日本视频| 日韩西西人体444www| 欧美优质美女网站| 成人午夜在线播放| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区免费在线观看| 国产午夜亚洲精品不卡 | 午夜精品成人在线视频| 综合婷婷亚洲小说| 国产亚洲欧洲997久久综合 | 欧美成人vr18sexvr| 欧美在线|欧美| 91在线国内视频| 国产成人精品aa毛片| 九九精品视频在线看| 婷婷六月综合亚洲| 亚洲资源中文字幕| 一色桃子久久精品亚洲| 欧美激情一区二区在线| 精品福利av导航| 日韩视频在线一区二区| 欧美日韩一区二区三区不卡| 色婷婷综合激情| 成人av电影免费观看| 粉嫩aⅴ一区二区三区四区| 精品中文字幕一区二区小辣椒| 日韩一区精品视频| 亚瑟在线精品视频| 成人av免费在线观看| 国产精品99精品久久免费| 久久精品国产亚洲aⅴ| 蜜臂av日日欢夜夜爽一区| 日本va欧美va精品|