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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 周立功在EasyARM2200上的有關UCO/SII的例子。
?? C
字號:
/****************************************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個圖標結構變量 */
MENUICO  mainmenu[8];       

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

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

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


/* 定義三個圖標菜單的顯示位置 */
#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個圖標菜單,并實現菜單選擇顯示。
* 入口參數: start       顯示3個圖標菜單的第一個菜單序號
*           select      當前所選中的菜單序號
*           disp_all    全部更新控制(非0值時,3個圖標菜單重新顯示)
* 出口參數: 無
****************************************************************************/
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;
                
        /* 設置圖標顯示位置 */
        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;
        
        /* 設置選擇的圖標,然后顯圖標 */
        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]);
        }
        
        /* 設置新的選擇 */
        mainmenu[select].state = 1;				
        GUI_MenuIcoDraw(&mainmenu[select]);
        s_select_old = select;
    }
}


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


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

   message.x = 5;       // 設置窗口位置和大小
   message.y = 14;
   message.with = 120;
   message.hight = 48;
   message.title = (uint8 *) "Message for Demo"; // 窗口標題
   message.state = (uint8 *) 0;
   GUI_WindowsDraw(&message);       // 顯示對話框窗口
   GUI_PutString(8, 35, "Hello,");  // 顯示對話框的消息"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"按鈕的選中狀態
      }
      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結構數組。即初始化各圖標變量的成員,如圖標
*       圖形點陣數據指針,圖標標題點陣數據指針,相應的功能函數等等。
* 入口參數: 無
* 出口參數: 無
****************************************************************************/
void  MenuIcoInit(void)
{   int  i;
    extern uint8 *pic_all[][2];	// 圖標資源(pic1--pic8)
        
    for(i=0; i<8; i++)
    {   /* 初始化為末選中狀態 */
        mainmenu[i].state = 0;	
        
        /* 連接相應的圖標數據 */
        mainmenu[i].icodat = (uint8 *) pic_all[i][0];
        mainmenu[i].title = (uint8 *) pic_all[i][1];
        
        /* 連接菜單功能函數 */
        mainmenu[i].Function = ( void(*) (void) ) DemoMessage;
    }
}


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


/*********************************************************************************************************
**                            Task0 任務0
** 功能:使用ZLG/GUI實現圖標菜單演示。在LCD屏幕上顯示圖標菜單,
**       通過KEY2、KEY3按鍵選擇菜單,通過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);

    /* 圖標菜單初始化 */
    MenuIcoInit();
    
    /* 顯示窗口 */
    DrawMainWindow();
    
    /* 循環調用圖標菜單操作,并執行相應功能 */
    while(1)
    {  select = SelectMenuIco();   // 選擇菜單
    
       if(select<8) 
       {    (*mainmenu[select].Function)();     // 執行功能
       }
       OSTimeDly(1);
    }
}



/*********************************************************************************************************
**                            Task1 任務1
** 功能: 等待一個按鍵,然后發送按鍵消息。具有去抖動功能和按鍵超時退出功能。
** 說明:按鍵和鍵值的對應關系如下
**       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);   // 發送按鍵消息                
        OSTimeDly(OS_TICKS_PER_SEC / 3);    // 延時(防止按鍵連擊)
    } // end of while(1)...
} 

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区三区在线观看 | 欧美xingq一区二区| 欧美在线播放高清精品| 丁香一区二区三区| 国精产品一区一区三区mba视频| 亚洲国产成人av网| 成人免费在线观看入口| 欧美变态凌虐bdsm| 欧美日本精品一区二区三区| 91丨porny丨在线| 99久久国产综合精品女不卡| 成人性生交大合| 国产精品一级片| 国产美女久久久久| 福利一区二区在线| 波多野结衣亚洲一区| gogogo免费视频观看亚洲一| 成人av网址在线| k8久久久一区二区三区| 成人免费看黄yyy456| av在线这里只有精品| 99精品一区二区| 欧洲在线/亚洲| 91麻豆精品国产91久久久| 欧美美女直播网站| 69av一区二区三区| 日韩欧美综合一区| 久久久久久久av麻豆果冻| 国产女同互慰高潮91漫画| 国产精品国产三级国产aⅴ入口 | 欧美一二三区在线观看| 日韩一区二区三区av| 日韩欧美一级在线播放| 久久综合色之久久综合| 中文字幕成人在线观看| 亚洲一区视频在线| 久久av中文字幕片| 91美女在线视频| 欧美一区三区二区| 久久久国际精品| 亚洲国产日韩精品| 国产精品996| 91激情五月电影| 久久久99精品免费观看不卡| 亚洲欧洲综合另类| 麻豆精品视频在线观看| 99re8在线精品视频免费播放| 欧美精品免费视频| 国产精品久久久一区麻豆最新章节| 亚洲国产精品影院| 国产成人av一区二区三区在线观看| 91国偷自产一区二区使用方法| 欧美xxxx在线观看| 亚洲图片有声小说| 成人97人人超碰人人99| 日韩亚洲欧美综合| 亚洲人被黑人高潮完整版| 精品一二三四区| 91麻豆精品国产91久久久更新时间| 国产精品天美传媒沈樵| 美女性感视频久久| 欧美剧情电影在线观看完整版免费励志电影| 久久精品一区二区三区不卡牛牛 | 成人国产精品免费观看动漫| 日韩亚洲欧美在线观看| 亚洲一区av在线| 99vv1com这只有精品| 日本一区二区视频在线观看| 奇米色一区二区三区四区| 色噜噜夜夜夜综合网| 国产精品色在线观看| 国产精品一二三在| 国产日韩欧美精品一区| 国内一区二区视频| 精品久久人人做人人爰| 青青草原综合久久大伊人精品优势| 欧美羞羞免费网站| 香蕉乱码成人久久天堂爱免费| 欧美性极品少妇| 午夜精品久久久久久久久| 欧美精品乱码久久久久久按摩 | 一区二区三区日韩在线观看| 91在线观看成人| 一区二区三区四区蜜桃| 欧洲色大大久久| 午夜视频一区在线观看| 欧美人伦禁忌dvd放荡欲情| 亚洲一区二区中文在线| 欧美老年两性高潮| 免费不卡在线观看| 久久久夜色精品亚洲| 成人国产在线观看| 亚洲图片你懂的| 7777精品伊人久久久大香线蕉超级流畅 | 欧美精品三级日韩久久| 日韩黄色在线观看| 久久久99精品免费观看| 91在线高清观看| 日韩电影在线一区二区三区| 精品99久久久久久| 处破女av一区二区| 夜夜嗨av一区二区三区网页| 91.com在线观看| 高清免费成人av| 亚洲一卡二卡三卡四卡五卡| 欧美va亚洲va在线观看蝴蝶网| 成人晚上爱看视频| 亚洲第一综合色| 国产亚洲欧美日韩日本| 精品视频123区在线观看| 国产一区二区三区美女| 亚洲国产欧美在线人成| 欧美mv日韩mv亚洲| 在线观看日韩电影| 久久亚洲欧美国产精品乐播| 91麻豆精东视频| 国产在线不卡一区| 午夜伊人狠狠久久| 中文字幕成人在线观看| 91精品国产高清一区二区三区 | 国产亚洲综合av| 在线成人午夜影院| 97久久精品人人做人人爽50路| 日本网站在线观看一区二区三区 | 日本成人在线看| 一区二区三区产品免费精品久久75| 久久久不卡影院| 日韩精品专区在线影院观看| 色素色在线综合| av网站一区二区三区| 国产综合色精品一区二区三区| 亚洲动漫第一页| 亚洲乱码一区二区三区在线观看| 久久久综合激的五月天| 日韩女同互慰一区二区| 欧美美女激情18p| 欧美日韩精品是欧美日韩精品| 99精品久久久久久| 91在线精品一区二区| 粉嫩aⅴ一区二区三区四区五区 | 欧美经典一区二区三区| 亚洲精品在线电影| 日韩精品一区二区三区三区免费| 欧美一级黄色录像| 日韩欧美视频在线 | 91在线高清观看| 色噜噜狠狠成人中文综合| 亚洲精品日产精品乱码不卡| 日韩理论在线观看| 亚洲裸体xxx| 夜夜操天天操亚洲| 亚洲成在人线免费| 日韩av二区在线播放| 青青草国产精品亚洲专区无| 精品一区二区久久| 国产成人精品午夜视频免费| 成年人国产精品| 欧美色国产精品| 欧美成人高清电影在线| 国产无一区二区| 中文字幕亚洲不卡| 亚洲国产精品人人做人人爽| 久久99久久久久| 国产福利一区在线观看| 色综合咪咪久久| 制服丝袜亚洲色图| 国产欧美一区二区精品仙草咪| 亚洲免费av观看| 捆绑调教美女网站视频一区| 国产a久久麻豆| 欧美日韩dvd在线观看| 精品久久久久久久久久久院品网| 国产精品视频你懂的| 自拍偷拍国产精品| 午夜精品123| 成人美女在线观看| 欧日韩精品视频| 精品国产百合女同互慰| 亚洲乱码国产乱码精品精可以看| 老汉av免费一区二区三区| 91丝袜美女网| 精品理论电影在线观看| 亚洲欧美偷拍另类a∨色屁股| 久久精品国产秦先生| 欧洲国内综合视频| 国产精品久久久久久久久搜平片| 天天做天天摸天天爽国产一区| 国产激情91久久精品导航 | 91精品国产乱码久久蜜臀| 《视频一区视频二区| 久久99精品国产麻豆婷婷洗澡| 欧美性生活大片视频| 国产精品视频你懂的| 黄色资源网久久资源365| 午夜精品久久久久久久久久久 | 欧美成人精品福利| 日韩精品福利网| 色屁屁一区二区| 国产精品青草综合久久久久99| 国产寡妇亲子伦一区二区|