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

📄 main.c

📁 UCOS-2.rar
💻 C
📖 第 1 页 / 共 3 页
字号:
       { 
         if((IO1PIN&IO_KEY1)==0)
	     {
	        OSTimeDly(4);
	        if((IO1PIN&IO_KEY1)==0)
	          {
	             while((IO1PIN&IO_KEY1)==0);
	              i=i+1;   
	          }
	     }
       if(i==0) {OSTimeDly(OS_TICKS_PER_SEC/50);}
       
       if(i==1) CCR=0x00; 
       if(i==2) 
        {  
           for(s2=0;s2<400;s2++)   
             {
                if((IO1PIN&IO_KEY1)==0)
	             {
	               OSTimeDly(OS_TICKS_PER_SEC/50);
	               if((IO1PIN&IO_KEY1)==0)
	                {
	                  while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
	                  a1=a1+1;
	                }
	             }
           
               GUI_LoadPic1(0,0,*(num+a1),8,16);             //反白显示小时第一位
               if(a1==3)a1=0;
            }
          i=3; 
       }
   
      if(i==3) 
       { 
           GUI_LoadPic(0,0,*(num+a1),8,16);                  //恢复显示小时第一位
           for(s2=0;s2<400;s2++)   
             {
               if((IO1PIN&IO_KEY1)==0)
	            {
	              OSTimeDly(OS_TICKS_PER_SEC/50);
	              if((IO1PIN&IO_KEY1)==0)
	                {
	                  while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
	                  a2=a2+1;
	                }
	            }
               GUI_LoadPic1(8,0,*(num+a2),8,16);             //反白显示小时第二位
               if(a2==10)a2=0;
             }
          i=4;
      }
      
     if(i==4)
        {   
           GUI_LoadPic(8,0,*(num+a2),8,16);                  //恢复显示小时第二位
           for(s2=0;s2<600;s2++)   
            {
               if((IO1PIN&IO_KEY1)==0)
	             {
	               OSTimeDly(OS_TICKS_PER_SEC/50);
	               if((IO1PIN&IO_KEY1)==0)
	                 {
	                   while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
	                   a3=a3+1;
	                 }
	             }
               GUI_LoadPic1(24,0,*(num+a3),8,16);      //反白显示分钟第一位  
               if(a3==6)a3=0;
        
           }
         i=5; 
       }
    if(i==5) 
       {  
          GUI_LoadPic(24,0,*(num+a3),8,16);            //恢复显示分钟第一位  
          for(s2=0;s2<400;s2++)   
           {
              if((IO1PIN&IO_KEY1)==0)
	           {
	              OSTimeDly(OS_TICKS_PER_SEC/50);
	              if((IO1PIN&IO_KEY1)==0)
	               {
	                 while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
	                 a4=a4+1;
	               }
	           }
              GUI_LoadPic1(32,0,*(num+a4),8,16);         //反白显示分钟第二位 
              if(a4==10)a4=0;
         }
         i=6;
      }
  if(i==6)
      {  
           GUI_LoadPic(32,0,*(num+a4),8,16);               //恢复显示分钟第二位 
          for(s2=0;s2<600;s2++)   
            {
               if((IO1PIN&IO_KEY1)==0)
	             {
	                OSTimeDly(OS_TICKS_PER_SEC/50);
	                if((IO1PIN&IO_KEY1)==0)
	                 {
	                   while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);;
	                   a5=a5+1;
	                 }
	             }
              GUI_LoadPic1(48,0,*(num+a5),8,16);         //反白显示秒第一位
              if(a5==6)a5=0;
           }
         i=7;
      }
  if(i==7)
     {  
         GUI_LoadPic(48,0,*(num+a5),8,16);              //恢复显示秒第一位
         for(s2=0;s2<800;s2++)   
           {
               if((IO1PIN&IO_KEY1)==0)
	            {
	               OSTimeDly(OS_TICKS_PER_SEC/50);
	               if((IO1PIN&IO_KEY1)==0)
	                 {
	                    while((IO1PIN&IO_KEY1)==0) OSTimeDly(OS_TICKS_PER_SEC/500);;
	                    a6=a6+1;
	                 }
	            }
            GUI_LoadPic1(56,0,*(num+a6),8,16);         //反白显示秒的第二位  
            if(a6==10)a6=0;
          }  
       GUI_LoadPic(56,0,*(num+a6),8,16);                  //恢复显示秒的第二位   
       a=0;i=0;    
       HOUR  = a1*10+a2;
	   MIN   = a3*10+a4;
	   SEC   = a5*10+a6; 
       CCR=0x01;
      
    }  
        
  }       
      OSTaskResume(4);
      OSTaskResume(2);
}
   
    	
/****************************************************************************
** 名称:     DemoMessage()
** 功能:     显示一个消息框(包含OK和CANSEL两个命令按纽),显示消息
             为"Hello,ZLG/GUI",然后等待按键输入
** 入口参数:无
** 出口参数:无
****************************************************************************/ 
void   DemoMessage(void)
{
   uint8  select;
   uint8  *key;
   uint8  err;
   
   WINDOWS  message;
   
   message.x=0;                                 //设置窗口的位置和大小
   message.y=0;
   message.with=128;
   message.hight=64;
   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);                //取消CANSEL按钮的选中状态
       if((int)key==KEY_OK)
       {
          GUI_WindowsHide(&message);  
          sh();
           return;
       }
     }
     else
     {
       GUI_Button_OK(72,29);                    //取消OK按钮的选中状态
       GUI_Button_Cancle1(72,45);               //选中CANSEL按钮
       
       if((int)key==KEY_OK)
       {
          GUI_WindowsHide(&message);  
          return;
       }
     }
     key=OSMboxPend(KeyMbox,0,&err);
     
     
     
     if(((int)key==KEY_LEFT)||((int)key==KEY_RIGHT))
     {
       select=1-select;
     }
     
     
     
     
     
  }
}
/****************************************************************************
** 名称:     MenuIcoInit()
** 功能:     初始化mainmenu结构数组。即初始化各图标变量的成员,如图标
             图形点阵数据指针、图标标题点阵数据指针及相应的功能函数等
** 入口参数:无
** 出口参数:无
****************************************************************************/ 
void   MenuIcoInit(void)
{
   int i;   
   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(void)
** 功能:     在屏幕上显示一个主窗口,大小为128X64
** 入口参数:无
** 出口参数:无
****************************************************************************/
void  DrawMainWindow(void)
{

   
    WINDOWS   mainw;
    mainw.x=0;
    mainw.y=0;
    mainw.with=128;
    mainw.hight=64;
    mainw.title=(uint8*)NULL;
    mainw.state=NULL; 
    GUI_WindowsDraw(&mainw);
    
}
/****************************************************************************
** 名称:     Task0任务0有先级为3
** 功能:     
** 入口参数:无
** 出口参数:无
****************************************************************************/ 

void  Task0(void  *pdata)
{
   uint8   select;	
   pdata=pdata;
   
   while(1)
   { 
     select=SelectMenuIco();
     if(select<8)
     {
        (*mainmenu[select].Function)();
         DrawMainWindow();
     }
   }
}




/****************************************************************************
** 名称:     Task1任务1有先级为3
** 功能:     
** 入口参数:无
** 出口参数:无
****************************************************************************/ 

void   Task1(void *pdata)
{ 
    uint32  i;
    uint32  io_dat;
    uint8   key;
    pdata=pdata;
    TargetInit();
    GUI_Initialize();
    GUI_SetColor(1,0);
    MenuIcoInit();
    DrawMainWindow();
    OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 3);
    OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 4);	
    while(1)
    {
       OSTimeDly(8); 
       if((IO1PIN&IO_KEYALL)!=IO_KEYALL)
       {
         OSTimeDly(2);
         io_dat=IO1PIN;
        if((io_dat&IO_KEYALL)!=IO_KEYALL)
        { 
         if((io_dat&IO_KEY2)==0)key=KEY_LEFT;
         if((io_dat&IO_KEY3)==0)key=KEY_RIGHT; 
         if((io_dat&IO_KEY4)==0)key=KEY_OK;
         for(i=0;i<10000000;i++)
         {
            if((IO1PIN&IO_KEYALL)==IO_KEYALL) break;
         }
         OSMboxPost(KeyMbox,(void*)key);
        }
       }
      
    }
}
              
void TaskDisp(void *pdata)                             //Task0 任务0 优先级2
{   
    uint32 times;
    uint8  bak,shuz[6];
    pdata=pdata;
    
    
    
    
    while(1)
    {
      
       times=CTIME0;
       bak=(times>>16)&0x1F;                              // 获取小时
       shuz[0]=bak/10;
       shuz[1]=bak%10;
       bak=(times>>8)&0x3F;                               // 获取分钟
       shuz[2]=bak/10;
       shuz[3]=bak%10;
       bak=times&0x3F;                                    // 获取秒
       shuz[4]=bak/10;
       shuz[5]=bak%10;
       
       GUI_LoadPic(20,4,*(FONT5x7ASCII_1+shuz[0]),5,8);             //显示小时
       GUI_LoadPic(26,4,*(FONT5x7ASCII_1+shuz[1]),5,8);             //显示小时
       GUI_LoadPic(32,4,*(FONT5x7ASCII_1+10),5,8);                  //显示冒号
       GUI_LoadPic(38,4,*(FONT5x7ASCII_1+shuz[2]),5,8);             //显示分钟  
       GUI_LoadPic(44,4,*(FONT5x7ASCII_1+shuz[3]),5,8);             //显示分钟 
       GUI_LoadPic(50,4,*(FONT5x7ASCII_1+10),5,8);                  //显示冒号
       GUI_LoadPic(56,4,*(FONT5x7ASCII_1+shuz[4]),5,8);             //显示秒
       GUI_LoadPic(62,4,*(FONT5x7ASCII_1+shuz[5]),5,8);             //显示秒
       
   } 
}





















⌨️ 快捷键说明

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