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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hal.h

?? 本代碼 實(shí)現(xiàn)了 zigbee協(xié)議的物理層與MAC層
?? H
?? 第 1 頁 / 共 5 頁
字號:
// This configures uart 0 for contact with "hyperTerminal", setting:
//      Baudrate:           115200
//      Data bits:          8
//      Parity:             None
//      Stop bits:          1
//      Flow control:       None
//

#define UART_SETUP(uart, baudRate, options)      \
   do {                                          \
      if((uart) == 0){                           \
         if(PERCFG & 0x01){                      \
            P1SEL |= 0x30;                       \
         } else {                                \
            P0SEL |= 0x0C;                       \
         }                                       \
      }                                          \
      else {                                     \
         if(PERCFG & 0x02){                      \
            P1SEL |= 0xC0;                       \
         } else {                                \
            P0SEL |= 0x30;                       \
         }                                       \
      }                                          \
                                                 \
      U##uart##GCR = BAUD_E((baudRate),CLKSPD);  \
      U##uart##BAUD = BAUD_M(baudRate);          \
                                                 \
      U##uart##CSR |= 0x80;                      \
                                                 \
                                                 \
      U##uart##UCR |= ((options) | 0x80);        \
                                                 \
      if((options) & TRANSFER_MSB_FIRST){        \
         U##uart##GCR |= 0x20;                   \
      }                                          \
   } while(0)




// Options for UART_SETUP macro
#define FLOW_CONTROL_ENABLE         0x40
#define FLOW_CONTROL_DISABLE        0x00
#define EVEN_PARITY                 0x20
#define ODD_PARITY                  0x00
#define NINE_BIT_TRANSFER           0x10
#define EIGHT_BIT_TRANSFER          0x00
#define PARITY_ENABLE               0x08
#define PARITY_DISABLE              0x00
#define TWO_STOP_BITS               0x04
#define ONE_STOP_BITS               0x00
#define HIGH_STOP                   0x02
#define LOW_STOP                    0x00
#define HIGH_START                  0x01
#define TRANSFER_MSB_FIRST          0x80
#define TRANSFER_MSB_LAST           0x00
#define UART_ENABLE_RECEIVE         0x40


// Example usage:
//   if(UART0_PARERR())
//     ...
#define UART_PARERR(num)      ((U##num##CSR & 0x08) == 0x08)
#define UART0_PARERR()        UART_PARERR(0)
#define UART1_PARERR()        UART_PARERR(1)

// Example usage:
//   if(UART1_FRAMEERR())
//     ...
#define UART_FRAMEERR(num)    ((U ##num## CSR & 0x10) == 0x10)
#define UART0_FRAMEERR()      UART_FRAMEERR(0)
#define UART1_FRAMEERR()      UART_FRAMEERR(1)


// Example usage:
//   char ch = 'A';
//   UART1_SEND(ch);
//   ...
//   UART1_RECEIVE(ch);
#define UART_SEND(num, x)   U##num##DBUF = x
#define UART0_SEND(x)       UART_SEND(0, x)
#define UART1_SEND(x)       UART_SEND(1, x)

#define UART_RECEIVE(num, x)  x = U##num##DBUF
#define UART0_RECEIVE(x)      UART_RECEIVE(0, x)
#define UART1_RECEIVE(x)      UART_RECEIVE(1, x)



/******************************************************************************
*******************    USART-SPI specific functions/macros  *******************
******************************************************************************/
// The macros in this section simplify SPI operation.

//*****************************************************************************
// Macro for setting up an SPI connection. The macro configures the appropriate
// pins for peripheral operation, sets the baudrate if the chip is configured
// to be SPI master, and sets the desired clock polarity and phase. Whether to
// transfer MSB or LSB first is also determined. _spi_ indicates whether
// to use spi 0 or 1. _baudRate_ must be one of 2400, 4800, 9600, 14400, 19200,
// 28800, 38400, 57600, 76800, 115200, 153600, 230400 or 307200.
// Possible options are defined below.

#define SPI_SETUP(spi, baudRate, options)           \
   do {                                             \
      U##spi##UCR = 0x80;                           \
      U##spi##CSR = 0x00;                           \
                                                    \
      if(spi == 0){                                 \
         if(PERCFG & 0x01){                         \
            P1SEL |= 0x3C;                          \
         } else {                                   \
            P0SEL |= 0x3C;                          \
         }                                          \
      }                                             \
      else {                                        \
         if(PERCFG & 0x02){                         \
            P1SEL |= 0xF0;                          \
         } else {                                   \
            P0SEL |= 0x3C;                          \
         }                                          \
      }                                             \
                                                    \
      if(options & SPI_SLAVE){                      \
         U##spi##CSR = 0x20;                        \
      }                                             \
      else {                                        \
         U##spi##GCR = BAUD_E(baudRate, CLKSPD);    \
         U##spi##BAUD = BAUD_M(baudRate);           \
      }                                             \
      U##spi##GCR |= (options & 0xE0);              \
   } while(0)


// Options for the SPI_SETUP macro.
#define SPI_SLAVE              0x01
#define SPI_MASTER             0x00
#define SPI_CLOCK_POL_LO       0x00
#define SPI_CLOCK_POL_HI       0x80
#define SPI_CLOCK_PHA_0        0x00
#define SPI_CLOCK_PHA_1        0x40
#define SPI_TRANSFER_MSB_FIRST 0x20
#define SPI_TRANSFER_MSB_LAST  0x00



/******************************************************************************
*******************       FLASH programming functions       *******************
*******************************************************************************
 _halFlashWritePage(...)_ writes a whole flash page. Because code memory cannot
be read during flash write, the writing routines are copied to XDATA RAM. The
function is implemented in assembly code with file extensions .s51 rather than .c

The Direct Memory Access (DMA) may also be used for flash write.
******************************************************************************/

//Macro for erasing a given flash page
#define FLASH_ERASE_PAGE(page) \
   do{                         \
      FADDRH = (page) << 1;    \
      FADDRL = 0x00;           \
      FLASH_CONFIG(ERASE);     \
   }while (0)


// Macro for configuring flash access and setting flash access mode.
#define FLASH_CONFIG(options)     \
   do {                           \
      FWT  = ( 0x2A >> CLKSPD );  \
      FCTL = options;             \
   } while (0)

// _options_ may be the following:
#define READ_WHEN_NEED  0x00
#define CONTINOUS_READ  0x10
#define WRITE           0x02
#define ERASE           0x01
#define FLASH_BUSY      0x80

/******************************************************************************
* @fn  halFlashWritePage
*
* @brief
*       This function writes a byte field in XDATA RAM to a given flash
*       page. Normal program execution is run from flash. However during flash
*       write, flash memory is not available for reading. To circumvent this
*       problem the core operation of this procedure, namely the actual flash
*       write procedure, is copied to XDATA RAM and run from there. The flash
*       write procedure is copied to a 35 byte XDATA RAM buffer.
*       Prior to a write the page is erased.
*
*       This function disables interrupts when running, and re-enables interrupt
*       if interrupts were enabled at function entry.
*
* Parameters:
*
* @param  BYTE*	 pSrcAddr
*         Pointer to first byte in xdata space which is to be written to
*         flash. The number of bytes a flash page consists of starting from
*         this address will be written to the page _page_.
* @param  BYTE*	 pBuffer
*         Pointer to a buffer of 35 bytes in XDATA RAM to which the flash
*         write procedure
*         can be copied.
* @param  BYTE	    page
*         Indicates which of the flash pages the data is to be written to.
*
* @return void
*
******************************************************************************/
void halFlashWritePage(BYTE *pSrcAddr, BYTE *pBuffer, BYTE page);


/******************************************************************************
* @fn  halFlashErasePage
*
* @brief
*       This function erases a given flash page.
*
*       This function disables interrupts when running, and re-enables interrupt
*       if interrupts were enabled at function entry.
*
* Parameters:
*
* @param  BYTE*	 pBuffer
*         Pointer to a buffer of 10 bytes in XDATA RAM to which the flash
*         erase procedure can be copied.
* @param  BYTE	    page
*         Indicates which of the flash pages is to be erased.
*
* @return void
*
******************************************************************************/
void halFlashErasePage(BYTE* buffer, BYTE page);



/******************************************************************************
*******************      Power and clock management        ********************
*******************************************************************************

These macros are used to set power-mode, clock source and clock speed.

******************************************************************************/

// Macro for getting the clock division factor
#define CLKSPD  (CLKCON & 0x07)

// Macro for getting the timer tick division factor.
#define TICKSPD ((CLKCON & 0x38) >> 3)

// Macro for checking status of the crystal oscillator
#define XOSC_STABLE (SLEEP & 0x40)

// Macro for checking status of the high frequency RC oscillator.
#define HIGH_FREQUENCY_RC_OSC_STABLE    (SLEEP & 0x20)


// Macro for setting power mode
#define SET_POWER_MODE(mode)                   \
   do {                                        \
      if(mode == 0)        { SLEEP &= ~0x03; } \
      else if (mode == 3)  { SLEEP |= 0x03;  } \
      else { SLEEP &= ~0x03; SLEEP |= mode;  } \
      PCON |= 0x01;                            \
      asm("NOP");                              \
   }while (0)


// Where _mode_ is one of
#define POWER_MODE_0  0x00  // Clock oscillators on, voltage regulator on
#define POWER_MODE_1  0x01  // 32.768 KHz oscillator on, voltage regulator on
#define POWER_MODE_2  0x02  // 32.768 KHz oscillator on, voltage regulator off
#define POWER_MODE_3  0x03  // All clock oscillators off, voltage regulator off

// Macro for setting the 32 KHz clock source
#define SET_32KHZ_CLOCK_SOURCE(source) \
   do {                                \
      if( source ) {                   \
         CLKCON |= 0x80;               \
      } else {                         \
         CLKCON &= ~0x80;              \
      }                                \
   } while (0)

// Where _source_ is one of
#define CRYSTAL 0x00
#define RC      0x01

// Macro for setting the main clock oscillator source,
//turns off the clock source not used
//changing to XOSC will take approx 150 us
#define SET_MAIN_CLOCK_SOURCE(source) \
   do {                               \
      if(source) {                    \
        CLKCON |= 0x40;               \
        while(!HIGH_FREQUENCY_RC_OSC_STABLE); \
        if(TICKSPD == 0){             \
          CLKCON |= 0x08;             \
        }                             \
        SLEEP |= 0x04;                \
      }                               \
      else {                          \
        SLEEP &= ~0x04;               \
        while(!XOSC_STABLE);          \
        asm("NOP");                   \
        CLKCON &= ~0x47;              \
        SLEEP |= 0x04;                \
      }                               \
   }while (0)



/******************************************************************************
*******************           Timer macros/functions        *******************
*******************************************************************************
General:
The timers/counters can be configured in a number of ways. The following
functions allow basic configuration of the timers as interrupt timers,
pulse width modulators (PWM) and capture timers. Other uses require manual
configuration of the timers/counters.

Generally 3 steps are nescessary to start a timer:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清无吗v一区| 欧美日精品一区视频| 亚洲一区二区三区不卡国产欧美| 欧美日韩一区中文字幕| 国产盗摄精品一区二区三区在线 | 日韩高清在线电影| 欧美极品另类videosde| 欧美一级在线视频| 99riav久久精品riav| 国产一区二区不卡在线| 午夜精品福利在线| 亚洲综合一二区| 欧美国产激情二区三区 | 欧美日韩成人激情| 国产91露脸合集magnet| 日本不卡一二三| 亚洲电影一区二区| 国产精品麻豆99久久久久久| 欧美一区二区大片| 欧美日韩aaaaa| 在线视频国内自拍亚洲视频| 国产白丝网站精品污在线入口| 日韩电影在线免费观看| 亚洲一级二级在线| 曰韩精品一区二区| 中文字幕日本不卡| 日本一区二区不卡视频| 国产肉丝袜一区二区| 欧美tickling网站挠脚心| 欧美精品精品一区| 欧美精品一二三区| 91精品久久久久久久91蜜桃| 欧美日韩免费不卡视频一区二区三区| 91久久精品国产91性色tv| kk眼镜猥琐国模调教系列一区二区| 国产成都精品91一区二区三| 国产麻豆精品theporn| 激情五月激情综合网| 紧缚捆绑精品一区二区| 久久国产精品无码网站| 卡一卡二国产精品 | 成人午夜精品在线| 国产成人av电影在线| 成人污污视频在线观看| 丁香婷婷综合色啪| 99在线精品免费| 91免费版pro下载短视频| 一本色道久久综合狠狠躁的推荐| 色综合久久88色综合天天 | 久久久精品天堂| 中文字幕的久久| 亚洲人成精品久久久久| 亚洲高清在线精品| 久久国产精品99久久人人澡| 国产精品一区二区视频| 97精品国产97久久久久久久久久久久| 成人免费看的视频| 日本道免费精品一区二区三区| 欧美视频在线观看一区二区| 日韩一级二级三级精品视频| 久久亚洲一区二区三区明星换脸| 国产日韩欧美高清在线| 亚洲免费在线观看| 午夜视频一区在线观看| 韩国成人精品a∨在线观看| 成人av在线电影| 欧美三级视频在线播放| 欧美r级在线观看| 亚洲欧美一区二区三区久本道91 | 国产精品视频第一区| 亚洲欧洲制服丝袜| 奇米777欧美一区二区| 丰满亚洲少妇av| 欧美亚洲高清一区二区三区不卡| 欧美一区二区三区成人| 欧美国产一区视频在线观看| 亚洲午夜激情网页| 国产成人在线视频网址| 欧美三级午夜理伦三级中视频| 精品美女被调教视频大全网站| 成人免费在线观看入口| 人人爽香蕉精品| 99这里只有精品| 欧美电影精品一区二区| 亚洲欧美激情一区二区| 激情久久久久久久久久久久久久久久| 99久久精品免费| 欧美一级搡bbbb搡bbbb| 亚洲欧美日韩中文播放| 精品一区二区久久| 在线观看精品一区| 国产视频一区二区在线观看| 午夜精品123| av亚洲精华国产精华精| 日韩三级精品电影久久久| 亚洲啪啪综合av一区二区三区| 久久66热偷产精品| 欧美性三三影院| 国产精品欧美一区二区三区| 日日嗨av一区二区三区四区| 91老师国产黑色丝袜在线| 久久人人超碰精品| 日韩精品一二区| 欧洲一区在线电影| 国产精品―色哟哟| 国产在线播精品第三| 欧美人成免费网站| 亚洲精品成人少妇| 粉嫩aⅴ一区二区三区四区五区 | 91国在线观看| 国产精品精品国产色婷婷| 蜜臀精品久久久久久蜜臀 | 国产成人综合精品三级| 日韩三级免费观看| 日韩黄色在线观看| 欧美欧美欧美欧美| 一区二区日韩av| 97国产一区二区| 国产精品无遮挡| 成人午夜大片免费观看| 久久亚洲精精品中文字幕早川悠里| 日日噜噜夜夜狠狠视频欧美人| 欧美主播一区二区三区| 亚洲综合一区二区精品导航| 97久久久精品综合88久久| 国产欧美日韩亚州综合 | 亚洲色欲色欲www在线观看| 国产999精品久久| 欧美国产精品专区| 成人免费毛片aaaaa**| 欧美高清一级片在线观看| 国产精品综合在线视频| 欧美精品一区二区三区很污很色的 | 亚洲毛片av在线| 色偷偷一区二区三区| 亚洲免费观看高清完整版在线观看 | 日韩影院在线观看| 欧美日韩高清不卡| 日韩电影在线观看一区| 日韩一区二区三区视频在线| 久草在线在线精品观看| 2023国产精华国产精品| 国产精品一区二区在线观看网站| 久久久综合精品| 成人久久久精品乱码一区二区三区| 国产精品无遮挡| 在线观看亚洲专区| 亚洲电影你懂得| 日韩一区二区免费电影| 国产乱码精品一区二区三区五月婷| 精品sm在线观看| 99视频精品在线| 一区二区三区四区激情| 欧美三区在线视频| 免费国产亚洲视频| 国产午夜精品久久久久久久| 99精品视频免费在线观看| 亚洲午夜免费电影| 日韩视频一区二区三区在线播放| 国产精品一区二区在线观看不卡| 国产精品网站在线| 欧美中文字幕一二三区视频| 日本不卡免费在线视频| 国产婷婷一区二区| 91黄色免费观看| 久久99这里只有精品| 国产精品毛片大码女人| 欧美视频在线不卡| 国产经典欧美精品| 一二三四区精品视频| 精品久久久久久最新网址| 白白色 亚洲乱淫| 日本免费新一区视频| 久久久精品天堂| 精品视频一区二区不卡| 黄色资源网久久资源365| 亚洲人123区| 久久综合一区二区| 欧美午夜在线一二页| 国产美女精品在线| 一区二区三区四区在线| 久久蜜桃香蕉精品一区二区三区| 国产女人18毛片水真多成人如厕| 91香蕉国产在线观看软件| 久久精品国产精品亚洲综合| 亚洲欧美日韩成人高清在线一区| 日韩视频免费观看高清完整版| 成人一级片网址| 日韩一区欧美二区| 亚洲欧美日韩人成在线播放| 精品久久久久久久一区二区蜜臀| 色系网站成人免费| 国产成人免费视频一区| 婷婷中文字幕综合| 亚洲欧美一区二区不卡| 久久综合久久综合九色| 在线观看免费成人| 北条麻妃一区二区三区| 国产精品一区一区| 久久精品国产一区二区|