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

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

?? main.c

?? source of ZLG_GUI for ARM
?? 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一区二区三区免费野_久草精品视频
国产网站一区二区三区| 免费看日韩精品| 肉色丝袜一区二区| 国产成a人亚洲精| 欧美性猛交xxxxxx富婆| 久久精品亚洲麻豆av一区二区| 亚洲日穴在线视频| 久久精品国产999大香线蕉| 色天天综合久久久久综合片| 精品久久99ma| 天涯成人国产亚洲精品一区av| 国产精品一区在线观看你懂的| 欧美在线一二三四区| 国产日本欧洲亚洲| 免费人成精品欧美精品| 在线观看日韩电影| 中文字幕在线免费不卡| 国产一区二区主播在线| 91精品蜜臀在线一区尤物| 亚洲私人黄色宅男| 福利一区二区在线| 精品免费国产一区二区三区四区| 亚洲午夜激情av| 在线精品视频免费观看| 国产精品初高中害羞小美女文| 国产一区二区成人久久免费影院 | 亚洲欧洲日韩综合一区二区| 美国av一区二区| 91精品国产综合久久香蕉的特点| 一区二区三区欧美激情| av男人天堂一区| 国产精品国产三级国产普通话蜜臀 | 亚洲乱码国产乱码精品精小说| 国产精品18久久久久久久网站| 日韩免费观看高清完整版| 日日摸夜夜添夜夜添精品视频| 91国产成人在线| 亚洲老妇xxxxxx| 色婷婷国产精品久久包臀 | 成人黄色国产精品网站大全在线免费观看 | 国产.欧美.日韩| 久久久五月婷婷| 懂色一区二区三区免费观看 | 亚洲黄色av一区| 欧洲一区二区三区在线| 亚洲第一久久影院| 日韩一区二区不卡| 久久99久久久欧美国产| 久久久久久电影| 丁香桃色午夜亚洲一区二区三区| 国产精品家庭影院| 日本韩国欧美国产| 午夜私人影院久久久久| 日韩欧美国产三级| 成人午夜又粗又硬又大| 亚洲欧美成aⅴ人在线观看| 欧美午夜理伦三级在线观看| 日韩有码一区二区三区| 精品国产区一区| 成人99免费视频| 亚洲午夜精品久久久久久久久| 制服丝袜亚洲网站| 国产精品亚洲第一| 伊人性伊人情综合网| 欧美一区二区三区免费| 成人综合婷婷国产精品久久蜜臀| 亚洲欧美激情在线| 日韩免费一区二区三区在线播放| 国产99久久久国产精品潘金| 一区二区三区精密机械公司| 日韩欧美资源站| 99视频热这里只有精品免费| 亚洲午夜电影网| 久久精品在线免费观看| 91豆麻精品91久久久久久| 久久国产精品第一页| 中文字幕一区二区视频| 67194成人在线观看| www.久久久久久久久| 婷婷国产v国产偷v亚洲高清| 国产精品欧美久久久久一区二区| 在线成人免费观看| 99视频在线精品| 国产一区二区久久| 亚洲国产精品综合小说图片区| 久久久精品国产99久久精品芒果 | 亚洲激情校园春色| 久久综合九色综合欧美亚洲| 欧美日韩一二区| 99国产欧美久久久精品| 国内精品久久久久影院薰衣草 | 日韩精品五月天| 中文字幕第一页久久| 欧美一级二级三级乱码| 色美美综合视频| thepron国产精品| 久久99精品国产.久久久久| 亚洲一区二区三区四区在线免费观看 | 欧美一区二区在线免费观看| www.色精品| 国产精品小仙女| 久久se精品一区精品二区| 亚洲午夜久久久久久久久电影院| 中文字幕国产精品一区二区| 亚洲精品在线观看网站| 7777精品伊人久久久大香线蕉最新版| av资源站一区| 成人理论电影网| 国产激情视频一区二区在线观看 | 欧美日韩在线电影| 91蝌蚪porny九色| 99在线精品一区二区三区| 成人毛片老司机大片| 成人晚上爱看视频| 国产在线精品国自产拍免费| 久久精品国产久精国产| 久久国产婷婷国产香蕉| 久热成人在线视频| 麻豆传媒一区二区三区| 久久成人羞羞网站| 国产一区二区主播在线| 国产毛片精品国产一区二区三区| 久久99热这里只有精品| 国产一区二区导航在线播放| 黄网站免费久久| 国产尤物一区二区| 成人中文字幕合集| 91婷婷韩国欧美一区二区| 色94色欧美sute亚洲线路二 | 亚洲高清不卡在线观看| 亚洲.国产.中文慕字在线| 三级精品在线观看| 久久99精品国产.久久久久| 国产精品资源站在线| 99免费精品视频| 欧美三级午夜理伦三级中视频| 在线精品视频一区二区| 欧美一区二区三区四区五区| 日韩欧美国产系列| 国产精品妹子av| 亚洲综合久久av| 久久99精品久久久久婷婷| 国产suv精品一区二区883| 91日韩在线专区| 欧美电影一区二区| 久久亚洲春色中文字幕久久久| 国产精品久线在线观看| 一区二区免费视频| 美女脱光内衣内裤视频久久影院| 国产伦理精品不卡| 欧美综合欧美视频| 精品人伦一区二区色婷婷| 中文字幕免费观看一区| 亚洲午夜国产一区99re久久| 精品制服美女丁香| 色哟哟一区二区三区| 日韩精品一区二区三区四区 | 久久亚洲私人国产精品va媚药| 国产精品看片你懂得| 日韩av中文字幕一区二区| 国产成人精品亚洲777人妖| 欧美专区日韩专区| 日韩欧美国产综合在线一区二区三区| 国产精品视频看| 婷婷综合五月天| 成人av网站在线| 日韩西西人体444www| 国产精品不卡在线观看| 久久国产精品色婷婷| 欧美特级限制片免费在线观看| 久久久久久久久久久久电影| 亚洲国产日韩在线一区模特| 成人午夜私人影院| 日韩免费性生活视频播放| 亚洲一区在线视频| 成人黄页毛片网站| 欧美成人精品3d动漫h| 午夜视黄欧洲亚洲| 91首页免费视频| 国产欧美中文在线| 黑人巨大精品欧美黑白配亚洲 | www.亚洲免费av| 久久综合狠狠综合| 免费在线看成人av| 欧美色视频一区| 亚洲麻豆国产自偷在线| 国产91精品一区二区麻豆亚洲| 欧美大片一区二区| 青青草97国产精品免费观看| 91久久一区二区| 国产精品免费久久| 国产露脸91国语对白| 日韩一级二级三级| 日本va欧美va精品| 6080yy午夜一二三区久久| 夜色激情一区二区| 91免费版在线| 综合欧美亚洲日本| 色噜噜狠狠色综合中国| 亚洲卡通欧美制服中文|