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

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

?? clock.c

?? 1、學習Proteus的使用
?? C
字號:
/******************************************************************************/
/*                                                                            */
/*   多任務程序設計                                     */
/*                                                                            */
/******************************************************************************/

#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */
#include <reg51.h>

//定義各任務
#define INIT             0
#define CLOCK_RUN        1
#define CLOCK_DISPLAY    2
#define KEY_SCAN         3
#define KEY_DEAL         4
#define CLOCK_BEEP       5
//增加一個任務:CLOCK_BEEP

//定義各個鍵值
#define UPKEY            6
#define DOWNKEY          5
#define MODEKEY          3

//定義數碼管顯示字符0-9,數碼管是共陰極
unsigned char numcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//定義顯存,buf[0]對應最左邊數碼管,buf[7]對應最右邊數碼管
unsigned char buf[8];

struct  Clock_Struc 
{
   unsigned char  hour;
   unsigned char  minute;
   unsigned char  second;
}  Clock,Beep_Clock,Display_Clock;

sbit  BEEP  =  P2^3;

unsigned char keyvalue;

unsigned char status; 
/*
    status =0--Clock Run ; 1--Change Clock Minute 2--Change Clock Hour 3--Change Alarm Minute 4--Change ALARM hour
    status =1--Change Clock.minute
    status =2--Change Clock.hour
    status =3--Change Beep_Clock.minute
    status =4--Change Beep_Clock.hour
*/

/******************************************************************************/
/*       Task 0 'job0':  RTX-51 tiny starts execution with task 0            */
/******************************************************************************/
void job0 (void) _task_ INIT 
 {                  
      Clock.hour   = 11;
      Clock.minute = 59;
      Clock.second = 50;    
      
          
      Beep_Clock.hour   = 12;
      Beep_Clock.minute = 0;
      Beep_Clock.second = 0;   
      
      status  = 0;
          
       os_create_task (CLOCK_RUN);                 /* start task 1                         */
      os_create_task (CLOCK_DISPLAY);             /* start task 2                         */
  
      os_create_task (KEY_SCAN);
      os_create_task (KEY_DEAL);
    os_create_task (CLOCK_BEEP);
       
       //創建 CLOCK_BEEP 任務     
      
      os_delete_task (INIT);                /* stop init task (no longer needed)    */
 }


/******************************************************************************/
/*       Task 1 'job1':  Clock Run                                            */
/******************************************************************************/
void job1 (void) _task_ CLOCK_RUN
{                  
    while(1)
    {
         os_wait (K_IVL, 50, 0);          /* wait interval:  1 second             */
         os_send_signal(CLOCK_BEEP);
         Clock.second ++ ;
         if(Clock.second>=60)
         {
                Clock.second = 0 ;
                Clock.minute ++;
                if(Clock.minute>=60)
                {
                    Clock.minute = 0;
                    Clock.hour++;
                    if(Clock.hour>=24)
                        Clock.hour = 0; 
                }   	
           }
       }
}
    
    
/******************************************************************************/
/*       Task 2 'job2':  Clock Display                                        */
/******************************************************************************/
void job2 (void) _task_  CLOCK_DISPLAY
{                  
     unsigned char i,j;
     while(1)
     {
             if(status<=2)
                   Display_Clock = Clock;
             else
                   Display_Clock = Beep_Clock;
                   
             
             buf[0] = numcode[Display_Clock.hour/10];
           buf[1] = numcode[Display_Clock.hour%10];
           buf[2] = 0x40;
           buf[3] = numcode[Display_Clock.minute/10];
           buf[4] = numcode[Display_Clock.minute%10];
           buf[5] = 0x40;
           buf[6] = numcode[Display_Clock.second/10];
           buf[7] = numcode[Display_Clock.second%10];
             
           for(i=0;i<=7;i++)
           {
                P1 = buf[i];
                    P3 = i ;
                    for(j=0;j<20;j++)
                            ;
                    P1 = 0x00;
             }
     }
 }   
  
  void job3 (void) _task_  KEY_SCAN
  //此任務是不停地偵聽是否有鍵按下
  {
       unsigned char i;
       while(1)
       {
           os_wait (K_IVL, 10, 0); 
           i = P2&0x07 ;
           if(i!=0x07)
           {
             keyvalue = i ;
                             
             //在此添加一條語句,發送信號量給KEY_DEAL任務,告知有鍵按下
              os_send_signal(KEY_DEAL);          
             while(i!=0x07)
                  i = P2&0x07;  //等待鍵釋放    
         }
      }        
           
                                      
    }                  	
         

    
    void job4 (void) _task_  KEY_DEAL
    {
      //此任務是進行按鍵處理
       while(1)
       {
         //等待有鍵按下的信號量
          os_wait(K_SIG,0,0);
         /* 
          MODEKEY按鍵處理
           當 status = 0 時,按下MODEKEY后,status = 1,系統進入修改走時的分針狀態
           當 status = 1 時,按下MODEKEY后,status = 2,系統進入修改走時的時針狀態
             當 status = 2 時,按下MODEKEY后,status = 3,系統進入修改鬧時的分針狀態
             當 status = 3 時,按下MODEKEY后,status = 4,系統進入修改鬧時的時針狀態
             當 status = 4 時,按下MODEKEY后,status = 0,系統進入正常的走時狀態
             
         UPKEY處理
           當status = 1,走時的分針加1
           當status = 2,走時的時針加1
            當status = 3,鬧時的分針加1
            當status = 4,鬧時的時針加1
        
         DOWNKEY處理
           當status = 1,走時的分針減1
           當status = 2,走時的時針減1
            當status = 3,鬧時的分針減1
            當status = 4,鬧時的時針減1
      
        */
     if(keyvalue==MODEKEY)
    {
     status++;
        if(status>=5)
          status=0;
          keyvalue=0;
    }
     switch(status)
    {
       case 1:
          if(keyvalue==UPKEY)
           {
            Clock.minute++;
          if(Clock.minute>=60)
             Clock.minute=0;
          }
         if(keyvalue==DOWNKEY)
        {
            Clock.minute--;
            if(Clock.minute==0xFF)
            Clock.minute=59;
       }
          break;
       case 2:
          if(keyvalue==UPKEY)
              {
               Clock.hour++;
               if(Clock.hour>=24)
               Clock.hour=0;
              }
           if(keyvalue==DOWNKEY)
              {
                Clock.hour--;
                if(Clock.hour==0xFF)
                 Clock.hour=23;
               }
           break;
        case 3:
            if(keyvalue==UPKEY)
            {
             Beep_Clock.minute++;
             if(Beep_Clock.minute>=60)
                  Beep_Clock.minute=0;
             }
             if(keyvalue==DOWNKEY)
             {
             Beep_Clock.minute--;
             if(Beep_Clock.minute==0xff)
                Beep_Clock.minute=59;
              }
              break;
         case 4:
           if(keyvalue==UPKEY)
            {
             Beep_Clock.hour++;
             if(Beep_Clock.hour>=60)
                  Beep_Clock.hour=0;
             }
             if(keyvalue==DOWNKEY)
             {
             Beep_Clock.hour--;
             if(Beep_Clock.hour==0xff)
                Beep_Clock.hour=59;
              }
              break;

              }

     }
}  
  //增加一個任務,當走時Clock與設定的鬧時Beep_Clock時間相等(只要時針和分針相同),BEEP驅動LED點亮
  void job5(void)_task_ CLOCK_BEEP

  {
  while(1)
  {
      os_wait(K_SIG,0,0);
      if(Clock.hour==Beep_Clock.hour&&Clock.minute==Beep_Clock.minute)
          BEEP=0;
     }
   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品久久久久久久91蜜桃| 欧美日韩一级二级| 免费成人在线影院| 日韩av网站在线观看| 丝袜美腿亚洲综合| 手机精品视频在线观看| 亚洲成人激情av| 免费在线观看一区二区三区| 奇米影视一区二区三区| 看电视剧不卡顿的网站| 国产一区二区三区高清播放| 国产一区二区电影| 成人一区二区三区| 色综合视频在线观看| 欧美日韩国产经典色站一区二区三区 | 亚洲黄色av一区| 天天影视涩香欲综合网| 奇米888四色在线精品| 精品午夜久久福利影院| 成人高清av在线| 欧美偷拍一区二区| 精品国产一区二区三区不卡| 国产精品色婷婷久久58| 亚洲精品高清视频在线观看| 日韩国产高清影视| 风间由美中文字幕在线看视频国产欧美 | 日本麻豆一区二区三区视频| 九九久久精品视频| 95精品视频在线| 欧美一区永久视频免费观看| 久久久久99精品一区| 亚洲毛片av在线| 国产精品一区免费视频| 欧美伊人精品成人久久综合97| 日韩亚洲欧美一区| 国产精品久久国产精麻豆99网站| 亚洲va欧美va人人爽| 国产麻豆一精品一av一免费| 在线观看一区二区精品视频| 久久在线免费观看| 亚洲一区二区三区国产| 国产精品18久久久久久vr| 一本到高清视频免费精品| 久久综合资源网| 日韩激情一区二区| 99精品视频一区二区| 欧美电影免费观看高清完整版| 亚洲欧美激情小说另类| 国产馆精品极品| 精品国产乱码久久久久久久久 | 欧美成人性福生活免费看| 亚洲欧美怡红院| 成人一二三区视频| 亚洲精品一区二区在线观看| 三级在线观看一区二区 | 久久精品国产99国产精品| 91成人国产精品| 亚洲欧美日韩在线| 福利一区二区在线| 久久久不卡网国产精品二区 | 欧美一区二区三区婷婷月色| 亚洲卡通欧美制服中文| 风间由美性色一区二区三区| 久久综合久久鬼色| 久久国产精品99久久久久久老狼| 欧美私模裸体表演在线观看| 亚洲免费av网站| 91亚洲精品乱码久久久久久蜜桃| 国产精品午夜在线| 国产成人精品免费| 久久久五月婷婷| 国产精品911| 中文一区二区完整视频在线观看| 粉嫩av一区二区三区在线播放| 亚洲精品一区在线观看| 国产一区欧美二区| 国产网红主播福利一区二区| 国产成人精品免费| 欧美国产激情二区三区| 成人教育av在线| 亚洲日本护士毛茸茸| 97久久精品人人做人人爽| 亚洲精品免费在线观看| 欧美日韩一区二区欧美激情| 五月综合激情日本mⅴ| 欧美精品在线一区二区| 久久国产精品99久久人人澡| 久久久久久久性| k8久久久一区二区三区| 伊人夜夜躁av伊人久久| 欧美日韩久久一区二区| 麻豆精品在线观看| 欧美激情一二三区| 91久久奴性调教| 免费亚洲电影在线| 欧美国产精品一区| 欧美色倩网站大全免费| 老汉av免费一区二区三区| 国产三区在线成人av| 色八戒一区二区三区| 日本不卡一区二区三区| 中文字幕欧美三区| 在线观看成人免费视频| 久久99久久精品欧美| 国产精品国产三级国产aⅴ入口 | 精品国产乱码久久久久久久久| 成人蜜臀av电影| 婷婷久久综合九色综合伊人色| 精品国产一区二区三区四区四| av中文字幕亚洲| 青娱乐精品在线视频| 亚洲国产精品v| 欧美一区二区性放荡片| 波多野结衣在线一区| 日韩不卡一区二区三区| 亚洲欧洲日本在线| 精品日韩在线观看| 欧美午夜精品一区二区蜜桃| 国产精品123| 美女视频黄 久久| 亚洲免费观看高清完整版在线 | 18成人在线观看| 欧美一卡二卡在线| 色综合天天综合网天天看片| 精品一区二区三区免费播放| 亚洲人成7777| 国产精品网站在线| 日韩免费高清视频| 欧美区一区二区三区| 91麻豆福利精品推荐| 国产成人综合自拍| 精品一区二区三区香蕉蜜桃 | 日韩专区一卡二卡| 亚洲欧美日韩中文播放| 国产三级欧美三级日产三级99| 6080国产精品一区二区| 色综合天天狠狠| 91麻豆国产精品久久| 高清不卡一二三区| 国产高清不卡一区| 国产剧情一区二区| 国产精选一区二区三区| 精品一区二区三区在线播放| 美女被吸乳得到大胸91| 视频一区二区不卡| 日韩av中文字幕一区二区| 亚洲bt欧美bt精品| 亚洲一二三区视频在线观看| 一区二区三区 在线观看视频| 亚洲色图欧美偷拍| 亚洲摸摸操操av| 一区二区久久久久久| 亚洲精品欧美在线| 亚洲午夜av在线| 三级一区在线视频先锋| 免费观看日韩av| 国产一区二区精品久久99| 国产中文字幕精品| 成人午夜电影久久影院| 92精品国产成人观看免费| 91影院在线免费观看| 色婷婷av久久久久久久| 欧美日韩在线播放| 911精品产国品一二三产区| 91精品久久久久久久99蜜桃| 欧美电影免费观看高清完整版| 精品少妇一区二区三区视频免付费| 精品国产一区a| 日本一区二区免费在线| 亚洲人成影院在线观看| 午夜久久久久久电影| 青青草国产精品亚洲专区无| 国产精品亚洲视频| av中文字幕亚洲| 欧美日韩国产精品成人| 欧美精品一区二区蜜臀亚洲| 国产精品久久一卡二卡| 亚洲图片欧美色图| 国产美女视频一区| 色就色 综合激情| 欧美一区二区三区免费| 中文av一区二区| 日韩高清不卡在线| 高清免费成人av| 欧美绝品在线观看成人午夜影视| 久久先锋资源网| 亚洲五月六月丁香激情| 国内精品久久久久影院薰衣草| 日本久久电影网| 久久精品亚洲麻豆av一区二区| 一区二区三区四区五区视频在线观看 | 欧美巨大另类极品videosbest| 欧美成人猛片aaaaaaa| 中文字幕一区二区不卡| 日本女优在线视频一区二区 | 色久综合一二码| 久久久精品蜜桃| 午夜精品久久久久久久久| 不卡一区在线观看| 精品国产一区二区国模嫣然|