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

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

?? timer_soft.h

?? atmel c5122 USB C51程序
?? H
字號:
/*H**************************************************************************
* NAME:         timer_soft.h         
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      c5122-scib-usb-hid-2_4_0      
* REVISION:     1.16     
*----------------------------------------------------------------------------
* PURPOSE: 
* Macro definition for soft timers.
* Note that the standard unit for time is the millisecond (ms).
*
* Typical use of:
* Type:  Timer setup:     Accuracy:    Advised Timeout:
* bits_t Min/Advised/Max  Logical/Phy  Std   / required               
* __16s  0ms/32s/65s      1ms / tick   33s   /  > sched_rollover_time
* __16l  0s/2h20/4h40     256ms        2h20  / >> sched_rollover_time 
* __8s   0ms/127ms/255ms  1ms / tick   127ms /  > sched_rollover_time
* __8l   0ms/32s/65s      256ms        33s   /  > sched_rollover_time
*****************************************************************************/
#ifndef TIMER_SOFT_H
#define TIMER_SOFT_H

/*_____ I N C L U D E S ____________________________________________________*/


/*_____ M A C R O S ________________________________________________________*/

/*M**************************************************************************
* NAME: set_timerxy
*----------------------------------------------------------------------------
* PARAMS:
* delay: delay in ms before timeout
* return:   value to store in the timer variable (x bits)
*----------------------------------------------------------------------------
* PURPOSE: 
* Set a timer variable.
* x=8 or 16 or nothing for default (number of bits of the variable, 
* default=16)
* y=s for short or l for long or nothing for default (default=short)
*----------------------------------------------------------------------------
* EXAMPLE:
* my_timer=set_timer(TIMER_4_S);  
* my_timer=set_timer16s(4000);
*----------------------------------------------------------------------------
* NOTE: 
* Use (x-1) bits value for a correct usage of soft timers.
* Be careful that scheduler roll over must be shortest than (x-1) ms.
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* The gl_soft_timer_tick must be updated correctly, according crystal & x2 
* mode
*****************************************************************************/
#define set_timer(delay)     set_timer16s(delay) 
#define set_timer8(delay)    set_timer8s(delay) 
#define set_timer8s(delay)   ((Uint8) (delay)+(Uint8) gl_soft_timer_tick) 
#define set_timer8l(delay)   ((Uint8) ((delay)>>8)+(Uint8) (gl_soft_timer_tick>>8)+(Uint8)1) 
#define set_timer16(delay)   set_timer16s(delay) 
#define set_timer16s(delay)  ((Uint16)(delay)+(Uint16)gl_soft_timer_tick) 
#define set_timer16l(delay)  ((Uint16)((delay)>>8)+(Uint16)(gl_soft_timer_tick>>8)+1) 


/* {for langdoc}*/


/*M**************************************************************************
* NAME: timeoutxy
*----------------------------------------------------------------------------
* PARAMS:
* timer:    variable used for timer, type xy
* delay:    delay in ms
* return:   TRUE if timeout, FALSE anyelse.
*----------------------------------------------------------------------------
* PURPOSE:
* Test if a timeout occurs on a timer.
* x=8 or 16 or nothing for default (number of bits of the variable, default=16)
* y=s for short or l for long or nothing for default (default=short)
*----------------------------------------------------------------------------
* EXAMPLE:
* if (timeout(my_timer,TIMER_1_S)) // action 
* else // wait
*----------------------------------------------------------------------------
* NOTE: 
* Use (x-1) bits value for a correct usage of soft timers.
* Be careful that scheduler roll over must be shortest than 2^(x-1) ms.
*
* This function is more accurate than std_timeoutxy but the speed is lower.
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* The gl_soft_timer_tick must be updated correctly, according crystal & x2 mode
*****************************************************************************/
#define timeout(timer,delay)    timeout16s(timer,delay)
#define timeout8(timer,delay)   timeout8s(timer,delay) 
#define timeout8s(timer,delay)  ((((Uint8)(timer)-(Uint8)gl_soft_timer_tick)<=(Uint8)(delay))?FALSE:TRUE)
#define timeout8l(timer,delay)  ((((Uint8)(timer)-(Uint8)(gl_soft_timer_tick>>8))<=(Uint8)((delay)>>8))?FALSE:TRUE)
#define timeout16(timer,delay)  timeout16s(timer,delay)
#define timeout16s(timer,delay) ((((Uint16)(timer)-(Uint16)gl_soft_timer_tick)<=(Uint16)(delay))?FALSE:TRUE)
#define timeout16l(timer,delay) ((((Uint16)(timer)-(Uint16)(gl_soft_timer_tick>>8))<=(Uint16)((delay)>>8))?FALSE:TRUE)

/* {for langdoc}*/


/*M**************************************************************************
* NAME: std_timeoutxy
*----------------------------------------------------------------------------
* PARAMS:
* timer:    variable used for timer, type xy
* return:   TRUE if timeout, FALSE anyelse.
*----------------------------------------------------------------------------
* PURPOSE:
* Test if a timeout occurs on a timer.
* x=8 or 16 or nothing for default (number of bits of the variable, default=16)
* y=s for short or l for long or nothing for default (default=short)
*----------------------------------------------------------------------------
* EXAMPLE:
* if (std_timeout(my_timer)) // action 
* else // wait
*----------------------------------------------------------------------------
* NOTE: 
* Use (x-1) bits value for a correct usage of soft timers.
* Be careful that scheduler roll over must be shortest than 2^(x-1) ms.
*
* This function is less accurate than timeoutxy but the speed is faster.
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* The gl_soft_timer_tick must be updated correctly, according crystal & x2 mode
*****************************************************************************/
#define std_timeout(timer)      std_timeout16s(timer)
#define std_timeout8s(timer)    ((((Uint8)(timer)-(Uint8)gl_soft_timer_tick)<=(Uint8)127)?FALSE:TRUE)
#define std_timeout8(timer)     std_timeout8s(timer) 
#define std_timeout8l(timer)    ((((Uint8)(timer)-(Uint8)(gl_soft_timer_tick>>8))<=(Uint8)127)?FALSE:TRUE)
#define std_timeout16(timer)    std_timeout16s(timer)
#define std_timeout16s(timer)   ((((Uint16)(timer)-(Uint16)gl_soft_timer_tick)<=(Uint16)32767)?FALSE:TRUE)
#define std_timeout16l(timer)   ((((Uint16)(timer)-(Uint16)(gl_soft_timer_tick>>8))<=(Uint16)32767)?FALSE:TRUE)

/* {for langdoc}*/

/*M**************************************************************************
* NAME: reset_timerxy
*----------------------------------------------------------------------------
* PARAMS:
* timer:    timer to reset
* return:   the new value of timer
*----------------------------------------------------------------------------
* PURPOSE:
* Force a timeout on timer.
* x=8 or 16 or nothing for default (number of bits of the variable, default=16)
* y=s for short or l for long or nothing for default (default=short)
*----------------------------------------------------------------------------
* EXAMPLE:
* my_timer=set_timer(TIMER_1_S);
* reset_timer(my_timer);
* if (timeout(my_timer)) ... // Always true due to reset_timer
*----------------------------------------------------------------------------
* NOTE: 
* Use (x-1) bits value for a correct usage of soft timers.
* Be careful that scheduler roll over must be shortest than 2^(x-1) ms.
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* The gl_soft_timer_tick must be updated correctly, according crystal & x2 mode
*****************************************************************************/
#define reset_timer(timer)      reset_timer16s(timer)
#define reset_timer8(timer)     reset_timer8s(timer) 
#define reset_timer8s(timer)    ((timer)=(Uint8)gl_soft_timer_tick-(Uint8)1)
#define reset_timer8l(timer)    ((timer)=(Uint8)(gl_soft_timer_tick>>8)-(Uint8)1)
#define reset_timer16(timer)    reset_timer16s(timer)
#define reset_timer16s(timer)   ((timer)=(Uint16)gl_soft_timer_tick-1)
#define reset_timer16l(timer)   ((timer)=(Uint16)(gl_soft_timer_tick>>8)-1)


/* {for langdoc}*/

/*M**************************************************************************
* NAME: update_timerxy
*----------------------------------------------------------------------------
* PARAMS:
* timer:    variable used for timer, type xy
* delay:    delay in ms
* return:   the new value of timer
*----------------------------------------------------------------------------
* PURPOSE:
* Update a timer,
* when a timeout occurs, to keep accuracy
* when an event occurs, to delay a timeout keeping time past
*
* x=8 or 16 or nothing for default (number of bits of the variable, default=16)
* y=s for short or l for long or nothing for default (default=short)
*----------------------------------------------------------------------------
* EXAMPLE:
* if (timeout(my_timer,TIMER_1_S)) {  // Action
*   update_timer(my_timer,TIMER_1_S); // to keep accuracy on the clock
*   ...
*   }
* else // wait
*----------------------------------------------------------------------------
* NOTE: 
* Use (x-1) bits value for a correct usage of soft timers.
* Be careful that scheduler roll over must be shortest than 2^(x-1) ms.
*
* Do not forget that timer type "s" have a bad accuracy: 256ms/operation on timer.
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* The gl_soft_timer_tick must be updated correctly, according crystal & x2 mode
*****************************************************************************/
#define update_timer(timer,delay)    update_timer16s(timer,delay)
#define update_timer8(timer,delay)   update_timer8s(timer,delay) 
#define update_timer8s(timer,delay)  ((timer)+=(delay))
#define update_timer8l(timer,delay)  ((timer)+=((Uint8)((delay)>>8)+(Uint8)1))
#define update_timer16(timer,delay)  update_timer16s(timer,delay)
#define update_timer16s(timer,delay) ((timer)+=(delay))
#define update_timer16l(timer,delay) ((timer)+=((Uint16)((delay)>>8)+1))

/* {for langdoc}*/

#ifdef I_HAVE_SETUP_SOFT_TIMER_TICK
#define init_soft_timers() (gl_soft_timer_tick=0) 
#endif

/*_____ D E F I N I T I O N S ______________________________________________*/
typedef Uint16          Timer16s;
typedef Uint16          Timer16l;
typedef Uint16          Timer16;
typedef Uint16          Timer;
typedef Uint8           Timer8s;
typedef Uint8           Timer8l;
typedef Uint8           Timer8;


#define TIMER_1_MS      1
#define TIMER_2_MS      2
#define TIMER_3_MS      3
#define TIMER_4_MS      4
#define TIMER_5_MS      5
#define TIMER_10_MS     10
#define TIMER_20_MS     20
#define TIMER_30_MS     30
#define TIMER_40_MS     40
#define TIMER_50_MS     50
#define TIMER_100_MS    100
#define TIMER_200_MS    200
#define TIMER_500_MS    500
#define TIMER_1_S       1000
#define TIMER_2_S       2000
#define TIMER_3_S       3000
#define TIMER_4_S       4000
#define TIMER_5_S       5000
#define TIMER_10_S      10000
#define TIMER_20_S      20000
#define TIMER_30_S      30000
#define TIMER_60_S      60000
#define TIMER_120_S     120000L
#define TIMER_180_S     180000L
#define TIMER_300_S     300000L
#define TIMER_1_MIN     60000
#define TIMER_2_MIN     120000L
#define TIMER_3_MIN     180000L
#define TIMER_5_MIN     300000L


#ifndef I_HAVE_SETUP_SOFT_TIMER_TICK
#ifndef FOSC
#error You must define FOSC in config.h
// FOSC = 22118 => 1843.2 timer inc/ms
// To update software timer each 2 ms: 3,684.3 timer inc for 2ms
// we need a power of 2 for TH0 so 4096 inc => 2^8*2^4 so TH0=1111 0000b=240
// To keep accuracy: 4096 / 1843.2 = 2,222.. ms = 2 + 14564 / 65536
// FOSC = 12000 => 1,000 timer inc/ms ( 2,000 in X2 mode)
// To update software timer each 2 ms: 2,000 timer inc for 2ms
// we need a power of 2 for TH0 so 2000 <=> 2048 inc => 2^8*2^3 so TH0=1111 1000b=248
// To keep accuracy: 2,048 / 1,000 = 2,048 ms = 2/65536*65536 + 3146 / 65536
// INC_MS = 2 ; REMINDER_INC_MS = 3146
// FOSC = 11059 => 921.6 timer inc/ms
// To update software timer each 2 ms: 1,843.2 timer inc for 2ms
// we need a power of 2 for TH0 so 1843 <=> 2048 inc => 2^8*2^3 so TH0=1111 1000b=248
// To keep accuracy: 2,048 / 921.6 = 2,222.. ms = 2 + 14564 / 65536
#elif FOSC == 48000
#define RELOAD_TH0      224    // to optimize CPU load
#define INC_MS          2      // to have something near 2 ms
#define REMINDER_INC_MS 3146   // to keep accuracy, reminder in tick/65536
#elif FOSC == 32000
#define RELOAD_TH0      224    // to optimize CPU load
#define INC_MS          3      // to have something near 2 ms
#define REMINDER_INC_MS 4719  // to keep accuracy, reminder in tick/65536
#elif FOSC == 24000
#define RELOAD_TH0      240    // to optimize CPU load
#define INC_MS          2      // to have something near 2 ms
#define REMINDER_INC_MS 3146   // to keep accuracy, reminder in tick/65536
#elif FOSC == 22118
#define RELOAD_TH0      240    // to optimize CPU load
#define INC_MS          2      // to have something near 2 ms
#define REMINDER_INC_MS 14564  // to keep accuracy, reminder in tick/65536
#elif FOSC == 16000
#define RELOAD_TH0      240    // to optimize CPU load
#define INC_MS          3      // to have something near 2 ms
#define REMINDER_INC_MS 4719  // to keep accuracy, reminder in tick/65536
#elif FOSC == 12000
#define RELOAD_TH0      248    // to optimize CPU load
#define INC_MS          2      // to have something near 2 ms
#define REMINDER_INC_MS 3146   // to keep accuracy, reminder in tick/65536
#elif FOSC == 11059
#define RELOAD_TH0      248    // to optimize CPU load
#define INC_MS          2      // to have something near 2 ms
#define REMINDER_INC_MS 14564  // to keep accuracy, reminder in tick/65536
#elif FOSC == 8000
#define RELOAD_TH0      248    // to optimize CPU load
#define INC_MS          3      // to have something near 2 ms
#define REMINDER_INC_MS 4719  // to keep accuracy, reminder in tick/65536
#else
#define INC_MS          2
#define RELOAD_TH0      reload_TH0()
//#define REMINDER_INC_MS => computed in reload_TH0, #define => variable
#define SOFT_TIMER_CUSTOM_FOSC
#endif
#endif


/*_____ D E C L A R A T I O N S ____________________________________________*/
extern volatile Uint32 data gl_soft_timer_tick;  // number of ms since Reset

void tempo                  (Uint16 delay);
void init_soft_timers       (void);
void timer_soft_update_task (void); 


#endif  /* TIMER_SOFT_H */



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久资源速度| 北条麻妃一区二区三区| 久久99精品国产麻豆婷婷| 国产成人在线免费| 久久久久久亚洲综合影院红桃| 国产视频不卡一区| 亚州成人在线电影| 国产伦理精品不卡| 欧美午夜片在线观看| 国产日韩欧美一区二区三区综合| 亚洲福利视频一区| 91色porny| 中文在线资源观看网站视频免费不卡| 天天综合网 天天综合色| 99这里只有精品| 国产欧美日韩精品一区| 久久精品国产精品亚洲综合| 欧美在线短视频| 国产精品护士白丝一区av| 国产另类ts人妖一区二区| 欧美顶级少妇做爰| 亚洲狠狠爱一区二区三区| 99精品视频一区| 国产精品女人毛片| 国产成人免费高清| 国产日韩三级在线| 国产精品911| 国产午夜三级一区二区三| 蜜桃av一区二区三区电影| 欧美日韩高清一区二区| 亚洲国产日韩一级| 欧美日韩一级大片网址| 亚洲成a人在线观看| 欧美日韩色综合| 五月婷婷激情综合网| 欧美日韩高清影院| 日本美女视频一区二区| 日韩欧美123| 韩国在线一区二区| 久久久久久**毛片大全| 国产suv一区二区三区88区| 久久久久久黄色| zzijzzij亚洲日本少妇熟睡| 自拍偷在线精品自拍偷无码专区| 97久久久精品综合88久久| 亚洲免费观看高清完整版在线| 91日韩在线专区| 五月天一区二区三区| 日韩一区二区在线看| 国产一区二区导航在线播放| 久久免费午夜影院| 91女人视频在线观看| 亚洲尤物在线视频观看| 欧美喷潮久久久xxxxx| 美腿丝袜亚洲综合| 国产欧美一区二区三区鸳鸯浴| 成人免费av在线| 亚洲亚洲精品在线观看| 日韩情涩欧美日韩视频| 国产精品一二一区| 亚洲猫色日本管| 欧美一级日韩不卡播放免费| 国产成人在线看| 亚洲电影一级黄| 精品成人一区二区三区| 99综合影院在线| 久久国内精品视频| 亚洲视频在线一区观看| 欧美一区二区播放| 99久久精品99国产精品| 日韩av电影免费观看高清完整版| 久久精品免视看| 欧美日韩精品免费观看视频| 国产九色sp调教91| 亚洲h动漫在线| 欧美国产成人精品| 欧美一区二区三区小说| 99久久精品国产导航| 精品一区二区av| 夜夜夜精品看看| 国产午夜精品在线观看| 欧美日韩精品三区| 一本久久综合亚洲鲁鲁五月天| 老司机午夜精品| 尤物在线观看一区| 国产亚洲综合在线| 91精品在线免费| 一本色道综合亚洲| 国产激情一区二区三区桃花岛亚洲| 亚洲一区二区精品3399| 亚洲欧洲另类国产综合| 欧美精品一区在线观看| 欧美狂野另类xxxxoooo| 91丝袜国产在线播放| 国精产品一区一区三区mba视频| 亚洲一区二区三区四区五区黄| 国产日产欧产精品推荐色| 日韩一级黄色大片| 欧美日韩激情一区| 色婷婷综合久久久| 成人av高清在线| 国产成人在线免费观看| 国产一区二区在线电影| 免费人成在线不卡| 有码一区二区三区| 国产日韩精品一区二区三区 | 国产欧美视频一区二区三区| 欧美日韩另类国产亚洲欧美一级| www.久久久久久久久| 成人一区二区三区视频在线观看| 成人短视频下载| 国产成人亚洲精品青草天美| 精品一区二区综合| 久久精品国产精品青草| 美女精品自拍一二三四| 免费人成在线不卡| 精品一区二区久久久| 国产一区二区三区国产| 国产麻豆精品95视频| 国产一区二区三区四区五区美女| 麻豆成人91精品二区三区| 免费成人在线观看| 国产一区二区三区国产| 国产福利91精品一区二区三区| 国产精品66部| 成人ar影院免费观看视频| 97se狠狠狠综合亚洲狠狠| 91免费看视频| 欧美日韩国产天堂| 精品少妇一区二区三区在线播放| 欧美电视剧在线观看完整版| 精品少妇一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 91精品国产一区二区三区| 91精品在线免费观看| 精品国产制服丝袜高跟| 久久嫩草精品久久久久| 国产精品第四页| 亚洲成av人在线观看| 欧美午夜影院一区| 97久久超碰国产精品电影| 日韩码欧中文字| 日韩精品中文字幕在线一区| 久久综合色综合88| 亚洲欧美综合另类在线卡通| 亚洲欧美日韩国产成人精品影院| 亚洲一区二区在线免费观看视频 | 亚洲欧美中日韩| 亚洲国产另类av| 精品制服美女久久| 94色蜜桃网一区二区三区| 欧美日韩国产高清一区二区三区| 精品国产亚洲一区二区三区在线观看 | 福利电影一区二区三区| 色婷婷狠狠综合| 欧美大度的电影原声| 1区2区3区精品视频| 日本视频中文字幕一区二区三区 | 久久99久国产精品黄毛片色诱| 成人亚洲一区二区一| 欧美日韩精品一区二区在线播放| 国产三级精品三级在线专区| 亚洲成人自拍偷拍| 成人做爰69片免费看网站| 成人高清免费观看| 色哦色哦哦色天天综合| 久久蜜臀中文字幕| 91极品视觉盛宴| 91国偷自产一区二区三区成为亚洲经典| 欧美大片在线观看一区| 91精品国产麻豆国产自产在线 | www久久久久| 久久久一区二区三区| 亚洲大片免费看| 色综合久久中文字幕综合网| 久久久www免费人成精品| 成人精品视频一区| 欧美亚洲免费在线一区| 日韩精品专区在线影院重磅| 国产日韩欧美麻豆| 成人欧美一区二区三区1314| 国内精品免费在线观看| 日韩欧美国产一区二区三区| 五月婷婷综合在线| 久久久亚洲高清| 久久国产精品99精品国产 | 亚洲欧美日本韩国| 日韩黄色一级片| 丁香亚洲综合激情啪啪综合| 久久久久久久免费视频了| 亚洲欧美偷拍另类a∨色屁股| 精品亚洲国内自在自线福利| 精品成人在线观看| 成人美女视频在线观看18| 中日韩免费视频中文字幕| 99国产麻豆精品| 日韩国产高清影视| 国产日韩av一区| 欧美日韩精品三区| 91精品国产综合久久福利软件|