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

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

?? untitled1.txt

?? 一個多任務調度器
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
間觸發合作式調度器在avr中的移植(cvavr編譯器) 

/*****************************************************  
This program was produced by the  
CodeWizardAVR V1.24.7d Standard  
Automatic Program Generator  
?Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.  
http://www.hpinfotech.com  
e-mail:office@hpinfotech.com  

Project : os_mega16  
Version :   
Date    : 2006-2-12  
Author  : SHAOZH                            
Company : SZH                               
Comments:   


Chip type           : ATmega16L  
Program type        : Application  
Clock frequency     : 8.000000 MHz  
Memory model        : Small  
External SRAM size  : 0  
Data Stack size     : 256  
*****************************************************/  

#include <mega16.h>  

#define uchar unsigned char  
#define uint  unsigned int  
#define ulong unsigned long  

void LED1_Flash(void);  
void LED2_Flash(void);  
void LED3_Flash(void);   
                              
/********************************************************  
    ××××××××××××××公用數據類型聲明××××××××××××××××××××  
    每個任務的存儲器總和為7個字節  
********************************************************/  
typedef struct {  
                void (* pTask)(void);  
                uint Delay;  
                uint Period;  
                uchar RunMe;   
               }sTask;          

/********************************************************  
    ××××××××××××××公用的常數××××××××××××××××××××  
    任務的最大數目  
    注意:每個新建項目必須調整    
********************************************************/    
#define OS_MAX_TASKS   (4)           //每個新建項目必須調整   
//*******************************************************  
#define ERROR_OS_MANY_TASKS    1      //任務滿  
#define ERROR_OS_DELETE_TASK   2      //任務刪除  
#define RETURN_ERROR           1      //任務刪除   
#define RETURN_OK              0           
                  
/********************************************************  
    ××××××××××××××公用變量定義××××××××××××××××××××  
/********************************************************/  
sTask OS_tasks_G[OS_MAX_TASKS];   //任務隊列    
uchar Error_code_G=0;             //顯示錯誤代碼    
uchar old_Error_code_G=0;         //保存顯示錯誤代碼   
//*****************私有函數原型**************************  
static void OS_Go_To_Sleep(void);  
//*****************私有變量******************************  
static uint Error_tick_count_G;   //跟蹤自從上一次記錄錯誤以來的時間  
static uchar Last_error_code_G;   //上次錯誤代碼(在一分鐘后復位)  

#define OS_REPORT_ERRORS  1       //1:顯示錯誤代碼  0:不顯示錯誤代碼函數    
#define OS_SLEEP_MODE     1       //1:進入空閑  0: 不進入空閑         

/********************************************************  
    ××××××××××××××公用的函數原型××××××××××××××××××××  
    調度器內核函數  
********************************************************/                 
void OS_Dispatch_Tasks(void);  
uchar OS_Add_Task(void(*)(void),const uint ,const uint );  
uchar OS_Delete_Task(const uchar);  
void OS_Report_Status(void);    

/********************************************************  
      ×××××××××××××××調度函數×××××××××××××××××  
********************************************************/  
void OS_Dispatch_Tasks(void)  
     {uchar Index;  
      for (Index=0;Index<OS_MAX_TASKS;Index++)  
           {
           if(OS_tasks_G[Index].RunMe>0)      
              { 
              (*OS_tasks_G[Index].pTask)();  
                OS_tasks_G[Index].RunMe-=1;  
                if(OS_tasks_G[Index].Period==0)  
                  {
                  OS_Delete_Task(Index);  
                  }  
              }  
           }                             
     // OS_Report_Status();  //報告系統狀態  
     // OS_Go_To_Sleep();    //進入空閑模式       
     }  
/********************************************************  
      ×××××××××××××××加任務函數×××××××××××××××××  
      Fn_P    任務名  (必須是無傳人參數,無返回值的任務)  
      DELAY   在任務第一次被運行之前的間隔(時標)  
      PERIOD  如果為 0 :該函數將在DELAY確定的時間被調用一次  
              如果為非0 : 該函數將按DELAY的值在確定的時間被重復調用  
********************************************************/   
uchar OS_ADD_Task(void (*pFunction)(),const uint DELAY,const uint PERIOD)  
      {
       uchar Index=0;  
       while ((OS_tasks_G[Index].pTask!=0)&&(Index<OS_MAX_TASKS))  
             {
             Index++;  
             }          
       if(Index==OS_MAX_TASKS)  
         {Error_code_G=ERROR_OS_MANY_TASKS;   //設置全局錯誤變量  
          return OS_MAX_TASKS;                //返回錯誤代碼  
         }       
       OS_tasks_G[Index].pTask=pFunction;  
       OS_tasks_G[Index].Delay=DELAY;  
       OS_tasks_G[Index].Period=PERIOD;  
       OS_tasks_G[Index].RunMe=0;  
       return Index;     
      }  
/********************************************************  
      ×××××××××××××××刪除任務函數×××××××××××××××××  
********************************************************/   
uchar OS_Delete_Task(const uchar TASK_INDEX)  
    {bit Return_code;  
     if(OS_tasks_G[TASK_INDEX].pTask==0)  
        {Error_code_G=ERROR_OS_DELETE_TASK;  //設置全局錯誤變量  
         Return_code=RETURN_ERROR;           //返回錯誤代碼  
        }  
     else  
        {Return_code=RETURN_OK;  
        }   
     OS_tasks_G[TASK_INDEX].pTask=0x0000;  
     OS_tasks_G[TASK_INDEX].Delay=0;  
     OS_tasks_G[TASK_INDEX].Period=0;  
     OS_tasks_G[TASK_INDEX].RunMe=0;  
     return Return_code;                   //返回狀態  
    }                                                  
/********************************************************  
      ×××××××××××××××顯示錯誤代碼函數×××××××××××××××××  
********************************************************/   
#if OS_REPORT_ERRORS  
void OS_Report_Status()  
     {  
             if(Error_code_G!=old_Error_code_G)  
               {   
                //在次處編寫錯誤顯示程序  
                old_Error_code_G=Error_code_G;                    
                if(Error_code_G!=0)  
                  {Error_tick_count_G=60000;  
                  }         
                else  
                  {Error_tick_count_G=0;         
                  }                                           
               }                                              
             else  
               {if(Error_tick_count_G!=0)  
                  {if(--Error_tick_count_G==0)  
                     {Error_code_G=0;        //復位錯誤代碼  
                     }  
                  }  
               }                                
     }                                 
#endif  
/********************************************************  
      ×××××××××××××××進入空閑函數×××××××××××××××××  
********************************************************/   
#if OS_SLEEP_MODE     
#include <SLEEP.h>  
void OS_Go_To_Sleep(void)  
  { sleep_enable();  //使能進入空閑  
    idle();          //進入空閑        
  }                              
#endif     
/********************************************************  
      ×××××××××××××××調度器初始化函數×××××××××××××××××  
********************************************************/  
void OS_Init_T0(void)  
     {
      uchar i;  
      for(i=0;i<OS_MAX_TASKS;i++)  
         {
         OS_Delete_Task(i);  
         }                    
      Error_code_G=0;  
      // Timer/Counter 0 initialization  
// Clock source: System Clock  
// Clock value: 125.000 kHz  
      TCCR0=0x03;  
      TCNT0=0x7D;  
// Timer(s)/Counter(s) Interrupt(s) initialization  
      TIMSK=0x01;     
     }                                              
/********************************************************  
      ×××××××××××××××啟動調度器函數×××××××××××××××××  
********************************************************/       
OS_Start(void)  
     {#asm("sei")  
     }      
       
/********************************************************  
      ×××××××××××××××調度中斷函數×××××××××××××××××  
********************************************************/  
interrupt [TIM0_OVF] void timer0_ovf_isr(void)  
{
uchar Index;  
TCNT0=0x7D;  
for(Index=0;Index<OS_MAX_TASKS;Index++)  
    {
    if(OS_tasks_G[Index].pTask)  
       {
       if(OS_tasks_G[Index].Delay==0)  
           {
           OS_tasks_G[Index].RunMe+=1;  
           if(OS_tasks_G[Index].Period)  
              {
              OS_tasks_G[Index].Delay=OS_tasks_G[Index].Period;  
              }  
           }                                                      
        else  
          {OS_tasks_G[Index].Delay-=1;  
          }     
       }  
    }  

}     


void main(void)  
{  
// Declare your local variables here  

// Input/Output Ports initialization  
// Port A initialization  
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out   
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0   
PORTA=0x00;  
DDRA=0xFF;  

// Port B initialization  
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out   
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0   
PORTB=0x00;  
DDRB=0xFF;  

// Port C initialization  
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out   
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0   
PORTC=0x00;  
DDRC=0xFF;  

// Port D initialization  
// Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In   
// State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T   
PORTD=0x00;  
DDRD=0x40;  

// Timer/Counter 0 initialization  
// Clock source: System Clock  
// Clock value: 125.000 kHz  
// Mode: Normal top=FFh  
// OC0 output: Disconnected  
TCCR0=0x03;  
TCNT0=0x7D;  
OCR0=0x00;  

// Timer/Counter 1 initialization  
// Clock source: System Clock  
// Clock value: Timer 1 Stopped  
// Mode: Normal top=FFFFh  
// OC1A output: Discon.  
// OC1B output: Discon.  
// Noise Canceler: Off  
// Input Capture on Falling Edge  
// Timer 1 Overflow Interrupt: Off  
// Input Capture Interrupt: Off  
// Compare A Match Interrupt: Off  
// Compare B Match Interrupt: Off  
TCCR1A=0x00;  
TCCR1B=0x00;  
TCNT1H=0x00;  
TCNT1L=0x00;  
ICR1H=0x00;  
ICR1L=0x00;  
OCR1AH=0x00;  
OCR1AL=0x00;  
OCR1BH=0x00;  
OCR1BL=0x00;  

// Timer/Counter 2 initialization  
// Clock source: System Clock  
// Clock value: Timer 2 Stopped  
// Mode: Normal top=FFh  
// OC2 output: Disconnected  
ASSR=0x00;  
TCCR2=0x00;  
TCNT2=0x00;  
OCR2=0x00;  

// External Interrupt(s) initialization  
// INT0: Off  
// INT1: Off  
// INT2: Off  
MCUCR=0x00;  
MCUCSR=0x00;  

// Timer(s)/Counter(s) Interrupt(s) initialization  
TIMSK=0x01;  

// Analog Comparator initialization  
// Analog Comparator: Off  
// Analog Comparator Input Capture by Timer/Counter 1: Off  
ACSR=0x80;  
SFIOR=0x00;  
OS_ADD_Task(LED1_Flash,0,250);    //led1閃爍頻率2Hz  
OS_ADD_Task(LED2_Flash,3,500);    //led2閃爍頻率1Hz  
OS_ADD_Task(LED3_Flash,7,1000);   //led3閃爍頻率0.5Hz  
OS_Start();  
// Global enable interrupts  
//#asm("sei")  

while (1)  
      {  
       OS_Dispatch_Tasks();  
      };  
}  

/************************************************  
my_mega16_dome.c  
************************************************/  
#define LED1   PORTD.6  
#define LED2   PORTC  
#define LED3   PORTA  
void LED1_Flash(void)  
{ LED1^=1;  
}  
void LED2_Flash(void)  
{ LED2^=0xff;  
}  
void LED3_Flash(void)  
{ LED3^=0xff;  
}  
以上程序硬件實驗通過 

----------項目實例----------- 
#include "Main.H"  


#define  CU_AU     P3_0  
#define  KW1       P3_1  
#define  KW3       P3_2  
#define  LED_3KW   P3_3  
#define  LED_1KW   P3_4  
#define  LED_CUO   P3_5  
#define  LED_AUO   P3_7  
#define  OUT_1KW   P1_1  
#define  OUT_3KW   P1_2  
#define  COM1      P1_7  
#define  COM2      P1_6  
#define  COM3      P1_5  
#define  DATA      P1_4  
#define  CLK       P1_3  
                          //  0     1    2    3    4    5    6    
const unsigned char Tab[13]={0xf9,0xc0,0xa4,0xb0,0x99,0x92,0x82,  
                     //  7     8    9    A    C    U        
                        0xf8,0x80,0x90,0x88,0xc6,0xc1};  


bit CU_AU_fg=0;       //  0  手動 ;1   自動;  
bit Work_fg=0;        //  0  停止 ;1   工作;  
bit AU_start_fg=0;    //  0  自動狀態不工作;1 自動狀態工作;  
bit KW1_fg=0;         //  0  停止 ;1   工作;   
bit KW3_fg=0;         //  0  停止 ;1   工作;  
bit CU_AU_down_fg=0;  //鍵按下標志;  
bit Sec_500ms_fg=0;   //500ms標志;  
bit start_one=0;      //開機有無鍵按下標志;  
unsigned char led_disp_index=0; //數碼管掃描指針;  
unsigned int  CU_AU_count=0;    //按鍵延遲計數器  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品中文字幕一区二区三区| 91精品国产色综合久久| 亚洲三级视频在线观看| 色屁屁一区二区| 丝袜美腿一区二区三区| 欧美精品黑人性xxxx| 日韩av中文字幕一区二区三区 | 国产精品成人网| 日本道在线观看一区二区| 亚洲成人手机在线| 日韩亚洲欧美一区二区三区| 韩国v欧美v亚洲v日本v| 欧美激情中文不卡| 欧美在线观看一二区| 久久99久久99| 日韩美女精品在线| 99久久精品免费看| 亚洲欧美色图小说| 日韩一区二区免费视频| 国产精品99久久久久久久vr| 一区二区高清在线| 精品国产一区二区三区忘忧草| 懂色av噜噜一区二区三区av| 亚洲欧美激情小说另类| 精品美女在线播放| 在线欧美一区二区| 国产剧情一区在线| 日韩**一区毛片| 亚洲视频网在线直播| 精品久久久久久久久久久久久久久久久| 亚洲韩国一区二区三区| 精品国偷自产国产一区| 欧美日韩在线播放三区| 成人激情动漫在线观看| 国产自产高清不卡| 奇米精品一区二区三区在线观看一| 日本一区二区三区在线不卡| 9191成人精品久久| 在线免费av一区| 99久久精品国产一区二区三区| 极品少妇xxxx精品少妇| 日本欧美韩国一区三区| 亚洲国产成人av网| 一二三区精品视频| 亚洲日本中文字幕区| 中文字幕视频一区| 久久久精品影视| 久久久国产午夜精品| 国产综合久久久久影院| 亚洲人吸女人奶水| 久久久噜噜噜久久中文字幕色伊伊| 日韩一区二区在线看| 欧美一区二区三区婷婷月色| 欧美日韩视频在线观看一区二区三区| 91麻豆免费视频| 91欧美一区二区| 91黄色免费网站| 欧美日韩国产成人在线91| 日韩一级成人av| 精品成人a区在线观看| 精品国产三级a在线观看| 久久久久国产精品麻豆| 国产精品久久久久一区| 国产精品久久久久一区二区三区 | 夜夜爽夜夜爽精品视频| 一区二区三区在线免费观看| 性久久久久久久久| 久久99国产精品免费| 国产精品亚洲午夜一区二区三区| 不卡的av在线| 欧美午夜精品一区二区三区| 日韩欧美黄色影院| 欧美国产在线观看| 午夜不卡在线视频| 国产精品亚洲午夜一区二区三区| 色综合色狠狠天天综合色| 欧美日韩午夜影院| 国产午夜精品美女毛片视频| 国产欧美日韩视频在线观看| 亚洲线精品一区二区三区八戒| 麻豆成人久久精品二区三区红 | 久久精品夜色噜噜亚洲a∨| 国产精品久久久久天堂| 午夜精品福利一区二区蜜股av| 国产乱子伦一区二区三区国色天香| 成人久久视频在线观看| 91精品一区二区三区久久久久久| 国产精品免费久久久久| 美洲天堂一区二卡三卡四卡视频| av高清久久久| 精品999久久久| 午夜精品视频在线观看| 97精品久久久久中文字幕 | 欧美激情一区二区三区四区| 日韩—二三区免费观看av| 日本精品一级二级| 国产精品看片你懂得| 国产精品一区二区你懂的| 制服丝袜在线91| 亚洲一区二区三区四区在线观看 | 天涯成人国产亚洲精品一区av| 不卡av电影在线播放| 国产午夜精品久久| 国产真实乱对白精彩久久| 色欧美片视频在线观看在线视频| 国产人伦精品一区二区| 久久精品噜噜噜成人av农村| 3d动漫精品啪啪1区2区免费 | 麻豆免费看一区二区三区| 色婷婷久久综合| 一区二区三区丝袜| 91啪亚洲精品| 亚洲精品欧美激情| 欧美视频一二三区| 亚洲国产精品久久久久秋霞影院| 欧美在线视频你懂得| 亚洲丶国产丶欧美一区二区三区| 色婷婷激情一区二区三区| 亚洲自拍欧美精品| 精一区二区三区| 国模娜娜一区二区三区| 欧美成人video| 国产精品一区在线观看乱码| 国产精品视频九色porn| fc2成人免费人成在线观看播放 | 色婷婷av一区二区三区之一色屋| 国产精品色噜噜| 一本一道久久a久久精品| 亚洲一区在线播放| 欧美一级二级三级乱码| 国内成人精品2018免费看| 国产精品乱码一区二区三区软件 | 国产精品91xxx| 亚洲精品久久嫩草网站秘色| 3d动漫精品啪啪1区2区免费 | 国产福利视频一区二区三区| 亚洲欧美综合另类在线卡通| 欧美综合一区二区三区| 国产麻豆精品一区二区| 亚洲美女淫视频| 欧美精品一区二区三区蜜桃| 99麻豆久久久国产精品免费| 视频在线观看一区| 中文字幕av一区二区三区高 | 久久久久9999亚洲精品| 日本高清不卡视频| 国产九色sp调教91| 三级一区在线视频先锋| 国产精品久久久久久久午夜片| 欧美日韩aaaaaa| 99久久国产综合精品麻豆| 韩国一区二区视频| 丝袜美腿成人在线| 一区二区三区四区在线播放 | 蜜臀av一区二区在线观看 | 欧美xxxxx裸体时装秀| 日本二三区不卡| 成人免费视频国产在线观看| 蜜桃一区二区三区在线| 午夜视频在线观看一区二区| 国模套图日韩精品一区二区 | 国产一二精品视频| 亚洲成人精品一区| 一区二区三区产品免费精品久久75| 精品久久国产97色综合| 欧美丰满美乳xxx高潮www| 色88888久久久久久影院野外| 国产99久久精品| 狠狠色伊人亚洲综合成人| 蜜桃av一区二区三区| 奇米影视7777精品一区二区| 亚洲成人在线免费| 亚洲综合一二区| 天堂精品中文字幕在线| 视频一区在线视频| 日韩高清不卡一区二区三区| 舔着乳尖日韩一区| 老汉av免费一区二区三区 | 亚洲免费av在线| 亚洲综合男人的天堂| 亚洲大片免费看| 日韩精品午夜视频| 国产一区二区三区四 | 亚洲免费在线播放| 亚洲乱码国产乱码精品精小说| 国产精品久久久久久久蜜臀| 国产精品久久久久久久岛一牛影视 | 欧美午夜精品久久久久久孕妇| 国产一区 二区 三区一级| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久狠狠亚洲综合| 国产一区视频网站| 91在线国内视频| 亚洲日本丝袜连裤袜办公室| 中文av一区二区| 一区二区三区在线观看视频| 午夜精品久久久久久久99樱桃| 日韩国产一区二| bt7086福利一区国产| 欧美性猛交xxxx乱大交退制版|