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

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

?? wdt_drv.h

?? avr USBusbdemoavr USBusbdemo
?? H
字號:
//! @file wdt_drv.h,v
//!
//! Copyright (c) 2004 Atmel.
//!
//! Use of this program is subject to Atmel's End User License Agreement.
//! Please read file license.txt for copyright notice.
//!
//! @brief This file contains the Watchdog low level driver definition
//!
//! @version 1.10 at90usb128-demo-cdc-1_0_3 $Id: wdt_drv.h,v 1.10 2006/05/11 09:06:16 rletendu Exp $
//!
//! @todo
//! @bug


#ifndef _WDT_DRV_H_
#define _WDT_DRV_H_

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

#ifdef AVRGCC
   #include <avr/io.h>
   #include <avr/wdt.h>
#endif


//_____ M A C R O S ________________________________________________________

//! @defgroup wdt_drv Watchdog and reset sytem drivers module
//! @{

#define Is_ext_reset()  ((MCUSR&(1<<EXTRF)) ? TRUE:FALSE)
#define Ack_ext_reset() (MCUSR= ~(1<<EXTRF))
#define Is_POR_reset()  ((MCUSR&(1<<(MCUSR= ~(1<<PORF)))) ? TRUE:FALSE)
#define Ack_POR_reset() (MCUSR= ~(1<<PORF))
#define Is_BOD_reset()  ((MCUSR&(1<<BORF)) ? TRUE:FALSE)
#define Ack_BOD_reset() (MCUSR= ~(1<<BORF))
#define Is_wdt_reset()  ((MCUSR&(1<<WDRF)) ? TRUE:FALSE)
#define Ack_wdt_reset() (MCUSR= ~(1<<WDRF))

#ifdef AVRGCC
//#define Wdt_reset_instruction()   (asm("WDR"))
#define Wdt_reset_instruction()  (wdt_reset())
#else
#define Wdt_reset_instruction()  (__watchdog_reset())
#endif
#define Wdt_clear_flag()         (Ack_wdt_reset())
#define Wdt_change_enable()      (WDTCSR |= (1<<WDCE) | (1<<WDE))
#define Wdt_enable_16ms()        (WDTCSR =  (1<<WDE))
#define Wdt_enable_32ms()        (WDTCSR =  (1<<WDE) | (1<<WDP0) )
#define Wdt_enable_64ms()        (WDTCSR =  (1<<WDE) | (1<<WDP1) )
#define Wdt_enable_125ms()       (WDTCSR =  (1<<WDE) | (1<<WDP1) | (1<<WDP0))
#define Wdt_enable_250ms()       (WDTCSR =  (1<<WDE) | (1<<WDP2) )
#define Wdt_enable_500ms()       (WDTCSR =  (1<<WDE) | (1<<WDP2) | (1<<WDP0))
#define Wdt_enable_1s()          (WDTCSR =  (1<<WDE) | (1<<WDP2) | (1<<WDP1))
#define Wdt_enable_2s()          (WDTCSR =  (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0))
#define Wdt_enable_4s()          (WDTCSR =  (1<<WDE) | (1<<WDP3) )
#define Wdt_enable_8s()          (WDTCSR =  (1<<WDE) | (1<<WDP3) | (1<<WDP0))

#define Wdt_interrupt_16ms()     (WDTCSR =  (1<<WDIE))
#define Wdt_interrupt_32ms()     (WDTCSR =  (1<<WDIE) | (1<<WDP0) )
#define Wdt_interrupt_64ms()     (WDTCSR =  (1<<WDIE) | (1<<WDP1) )
#define Wdt_interrupt_125ms()    (WDTCSR =  (1<<WDIE) | (1<<WDP1) | (1<<WDP0))
#define Wdt_interrupt_250ms()    (WDTCSR =  (1<<WDIE) | (1<<WDP2) )
#define Wdt_interrupt_500ms()    (WDTCSR =  (1<<WDIE) | (1<<WDP2) | (1<<WDP0))
#define Wdt_interrupt_1s()       (WDTCSR =  (1<<WDIE) | (1<<WDP2) | (1<<WDP1))
#define Wdt_interrupt_2s()       (WDTCSR =  (1<<WDIE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0))
#define Wdt_interrupt_4s()       (WDTCSR =  (1<<WDIE) | (1<<WDP3) )
#define Wdt_interrupt_8s()       (WDTCSR =  (1<<WDIE) | (1<<WDP3) | (1<<WDP0))

#define Wdt_enable_reserved5()   (WDTCSR =  (1<<WDE) | (1<<WDP3) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0))
#define Wdt_stop()               (WDTCSR = 0x00)

#define Wdt_ack_interrupt()      (WDTCSR = ~(1<<WDIF))


//! Wdt_off.
//!
//! This macro stops the hardware watchdog timer.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_off()                (Wdt_reset_instruction(),  \
                                  Wdt_clear_flag(),         \
                                  Wdt_change_enable(),      \
                                  Wdt_stop())




//! wdt_change_16ms.
//!
//! This macro activates the hardware watchdog timer for 16ms timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_16ms()        (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_32ms() )
                              
//! wdt_change_32ms.
//!
//! This macro activates the hardware watchdog timer for 32ms timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_32ms()        (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_32ms() )


//! wdt_change_64ms.
//!
//! This macro activates the hardware watchdog timer for 64ms timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_64ms()        (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_64ms() )




//! wdt_change_32ms.
//!
//! This macro activates the hardware watchdog timer for 125ms timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_125ms()       (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_125ms() )

//! wdt_change_250ms.
//!
//! This macro activates the hardware watchdog timer for 250ms timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_250ms()       (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_250ms() )

//! wdt_change_500ms.
//!
//! This macro activates the hardware watchdog timer for 500ms timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_500ms()       (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_500ms() )

//! wdt_change_1s.
//!
//! This macro activates the hardware watchdog timer for 1s timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_1s()          (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_1s() )


//! wdt_change_2s.
//!
//! This macro activates the hardware watchdog timer for 2s timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_2s()          (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_2s() )
//! wdt_change_4s.
//!
//! This macro activates the hardware watchdog timer for 4s timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_4s()          (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_4s() )


//! wdt_change_8s.
//!
//! This macro activates the hardware watchdog timer for 8s timeout.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_8s()          (Wdt_reset_instruction(), \
                                  Wdt_change_enable(),     \
                                  Wdt_enable_8s() )


//! wdt_change_interrupt_16ms.
//!
//! This macro activates the hardware watchdog timer for 16ms interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_16ms()    (Wdt_reset_instruction(), \
                                        Wdt_change_enable(),     \
                                        Wdt_interrupt_16ms() )

//! wdt_change_interrupt_32ms.
//!
//! This macro activates the hardware watchdog timer for 32ms interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_32ms()    (Wdt_reset_instruction(), \
                                        Wdt_change_enable(),     \
                                        Wdt_interrupt_32ms() )

//! wdt_change_interrupt_64ms.
//!
//! This macro activates the hardware watchdog timer for 64ms interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_64ms()    (Wdt_reset_instruction(), \
                                        Wdt_change_enable(),     \
                                        Wdt_interrupt_64ms() )

//! wdt_change_interrupt_125ms.
//!
//! This macro activates the hardware watchdog timer for 125ms interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_125ms()      (Wdt_reset_instruction(), \
                                           Wdt_change_enable(),     \
                                           Wdt_interrupt_125ms() )

//! wdt_change_interrupt_250ms.
//!
//! This macro activates the hardware watchdog timer for 250ms interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_250ms()      (Wdt_reset_instruction(), \
                  Wdt_change_enable(),     \
                  Wdt_interrupt_250ms() )

//! wdt_change_interrupt_500ms.
//!
//! This macro activates the hardware watchdog timer for 500ms interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_500ms()      (Wdt_reset_instruction(), \
                  Wdt_change_enable(),     \
                  Wdt_interrupt_500ms() )

//! wdt_change_interrupt_1s.
//!
//! This macro activates the hardware watchdog timer for 1s interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_1s()      (Wdt_reset_instruction(), \
                  Wdt_change_enable(),     \
                  Wdt_interrupt_1s() )

//! wdt_change_interrupt_2s.
//!
//! This macro activates the hardware watchdog timer for 2s interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_2s()      (Wdt_reset_instruction(), \
                  Wdt_change_enable(),     \
                  Wdt_interrupt_2s() )

//! wdt_change_interrupt_4s.
//!
//! This macro activates the hardware watchdog timer for 4s interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_4s()      (Wdt_reset_instruction(), \
                  Wdt_change_enable(),     \
                  Wdt_interrupt_4s() )

//! wdt_change_interrupt_8s.
//!
//! This macro activates the hardware watchdog timer for 8s interrupt.
//!
//! @warning Interrupts should be disable before call to ensure
//! no timed sequence break.
//!
//! @param none
//!
//! @return none.
//!
#define Wdt_change_interrupt_8s()      (Wdt_reset_instruction(), \
                  Wdt_change_enable(),     \
                  Wdt_interrupt_8s() )

#define Wdt_change_reserved5()   (Wdt_reset_instruction(), \
                                 Wdt_change_enable(),     \
                                 Wdt_enable_reserved5() )

#define Soft_reset()             {asm("jmp 0000");}

//! @}




#endif  // _WDT_DRV_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清一级片在线| 日韩一卡二卡三卡国产欧美| 国产精品一区二区久久不卡 | 亚洲色图一区二区| 国产欧美一区二区精品秋霞影院 | 国内成人精品2018免费看| 奇米色一区二区三区四区| 三级不卡在线观看| 美女视频第一区二区三区免费观看网站| 一区二区高清在线| 五月婷婷综合在线| 日韩—二三区免费观看av| 另类小说一区二区三区| 国产做a爰片久久毛片| 国产不卡视频在线观看| 91日韩一区二区三区| 欧美日韩不卡一区| 日韩一级片网址| 中文一区在线播放| 亚洲国产成人精品视频| 精品一区二区在线视频| 成人听书哪个软件好| 欧美自拍偷拍一区| 日韩欧美色综合| 国产精品日韩成人| 日韩国产欧美在线观看| 国产精品99久久久久久久vr | 成人av午夜影院| 在线观看日韩精品| 亚洲精品一区二区三区精华液| 欧美激情中文字幕| 日韩电影在线免费观看| 成人h版在线观看| 欧美精品18+| 中文久久乱码一区二区| 五月激情丁香一区二区三区| 国产在线视频不卡二| 在线这里只有精品| 久久综合色8888| 亚洲v日本v欧美v久久精品| 国产乱码精品一区二区三区av | 亚洲免费在线电影| 国产永久精品大片wwwapp| 91福利国产成人精品照片| 精品免费国产一区二区三区四区| 中文字幕一区在线观看视频| 久久精品噜噜噜成人av农村| 色88888久久久久久影院野外 | 亚洲不卡一区二区三区| 成人av资源在线观看| 欧美电视剧免费全集观看| 亚洲自拍偷拍欧美| 99久久综合国产精品| 2欧美一区二区三区在线观看视频| 亚洲成人黄色小说| 色婷婷精品大在线视频| 中文成人av在线| 国产v综合v亚洲欧| 精品黑人一区二区三区久久| 日韩av成人高清| 欧美人狂配大交3d怪物一区| 亚洲另类春色校园小说| 91丨九色porny丨蝌蚪| 国产午夜亚洲精品午夜鲁丝片| 日韩精品电影在线| 精品视频资源站| 午夜精品久久久久久| 欧美中文字幕一二三区视频| 亚洲六月丁香色婷婷综合久久 | 欧美在线|欧美| 一区二区高清在线| 欧美日韩在线免费视频| 亚洲午夜免费视频| 欧美日韩综合色| 午夜伦理一区二区| 88在线观看91蜜桃国自产| 午夜久久久影院| 日韩欧美三级在线| 国产高清久久久| 中文字幕在线观看不卡| 91麻豆成人久久精品二区三区| 亚洲人一二三区| 91成人国产精品| 日韩国产在线观看一区| 日韩女优av电影| 国产麻豆精品一区二区| 中文字幕一区三区| 欧美视频精品在线观看| 美女诱惑一区二区| 欧美久久婷婷综合色| |精品福利一区二区三区| 777午夜精品视频在线播放| 欧美一区二区三区免费视频| 免费欧美在线视频| 久久久三级国产网站| 成人av免费观看| 亚洲一区二区五区| 日韩欧美一区电影| 成年人国产精品| 亚洲愉拍自拍另类高清精品| 日韩一区二区精品葵司在线| 国产精品一二三四区| 综合久久一区二区三区| 欧美一区二区在线观看| 国产suv精品一区二区三区 | 国产米奇在线777精品观看| 日本一区二区成人在线| 欧美性极品少妇| 亚洲成人自拍偷拍| 欧美日韩国产一二三| 久久精品国产久精国产爱| 国产精品理论片在线观看| 欧美裸体一区二区三区| av在线一区二区三区| 天堂久久一区二区三区| 国产精品久久久久久久久免费相片| 色天使色偷偷av一区二区| 极品美女销魂一区二区三区免费| 亚洲欧洲一区二区三区| 欧美一区二区三区影视| 91丨porny丨国产入口| 国产一二精品视频| 五月天亚洲精品| 亚洲色图另类专区| 日韩欧美综合在线| 99久久99久久精品国产片果冻| 悠悠色在线精品| 欧美精品一区二| 色噜噜久久综合| 国产精品一区久久久久| 一区二区日韩av| 精品剧情v国产在线观看在线| 欧美又粗又大又爽| 不卡视频在线观看| 粉嫩一区二区三区在线看| 天天影视涩香欲综合网| 一区二区三区精品在线观看| 一区二区激情视频| 日本高清无吗v一区| 丁香另类激情小说| 国产精品正在播放| 国内成人免费视频| 蜜桃av一区二区| 日产欧产美韩系列久久99| 亚洲国产一区在线观看| 亚洲国产欧美在线| 亚洲精品中文字幕乱码三区| 国产精品久久久久久久久动漫| 精品第一国产综合精品aⅴ| 日韩欧美亚洲国产另类| 日韩视频免费观看高清完整版在线观看| 色天天综合色天天久久| 欧美怡红院视频| 欧美日韩成人一区| 91麻豆精品国产综合久久久久久| 欧美视频中文字幕| 欧美日韩精品专区| 欧美一区二区三区在线观看| 欧美一区二区三区播放老司机| 欧美猛男超大videosgay| 欧美一区二区三区男人的天堂| 91精品国产综合久久香蕉的特点 | 欧美性感一类影片在线播放| 日本电影欧美片| 一本色道久久综合精品竹菊| 成人高清av在线| 国产精品系列在线播放| 亚洲欧洲综合另类| 亚洲日本免费电影| 亚洲免费视频成人| 亚洲尤物在线视频观看| 中文字幕一区二区在线观看| 中文字幕电影一区| 亚洲精品第一国产综合野| 五月综合激情婷婷六月色窝| 蜜桃久久久久久久| av成人动漫在线观看| 9191成人精品久久| 国产人妖乱国产精品人妖| 最新中文字幕一区二区三区| 五月婷婷综合网| 成人免费视频caoporn| 欧美手机在线视频| 久久先锋资源网| 亚洲免费在线播放| 国产一区在线观看麻豆| 色哟哟精品一区| 26uuu成人网一区二区三区| 1000精品久久久久久久久| 日韩电影在线免费| 97精品电影院| 欧美一二三四区在线| 国产精品福利av| 美女视频一区二区| 色94色欧美sute亚洲线路一ni| 2024国产精品| 亚洲成av人片在线| 成人av电影在线网| 精品日产卡一卡二卡麻豆| 一区二区三区中文字幕电影|