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

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

?? drivers.c

?? 用于WSN的PDA搜救器
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Description : driver functions.
 *
 * $Author: 王琢玉
 * $Date: 2007/02/23 
 * $Name:  drivers.c 
 */
 

#define  DRIVERS_GLOBALS
 
#include "include.h"

/* Defines */
#define AssertCE()      MC13192_CE = 0; /* Asserts the MC13192 CE pin */
#define DeAssertCE()    MC13192_CE = 1; /* Deasserts the MC13192 CE pin */
#define SPIClkInvert    SPI1C1 |= 0x04; /*Set CPHA bit of SPCR (clk polarity) */
#define SPIClkNormal    SPI1C1 &= 0xFB; /*clr CPHA bit of SPCR (clk polarity) */


/* Globals */


 
/************************************************************
Function:    void interrupt IRQIsr(void)

Parameter:    

Return:       
             
Description: 
************************************************************/
void interrupt IRQIsr(void) 
{
    volatile UINT16 u16StatusContent, u16Reg;   /* 
                                                 * Result of the status register
                                                 * read
                                                 */
    CLRWDT();
    
    CLEAR_IRQ_FLAG;      /* Acknowledge the interrupt. MC13192 IRQ pin still low. */     
    u16StatusContent = SPIDrvRead(STATUS_ADDR); /* 
                                                 * Read the MC13192 status 
                                                 * register.
                                                 */
    /* Test for IRQ glitch or possible fast double IRQ. */

    if(IRQPinLow())
    {         //__isflag_int_enabled
    /* IRQ is low. Re-read status. */
        CLEAR_IRQ_FLAG; /* Acknowledge the interrupt. MC13192 IRQ pin still low. */     
        u16Reg = SPIDrvRead(STATUS_ADDR);   /* Read the MC13192 status register. */
        u16StatusContent = u16StatusContent | u16Reg;   /* 
                                                         * Actual status is the OR 
                                                         * of both.
                                                         */
    }   
    
   // u16StatusContent &= TX_IRQ_MASK | RX_IRQ_MASK | CRC_VALID_MASK | CCA_IRQ_MASK | TIMER1_IRQ_MASK ;
    
    if ((gu8RTxMode == IDLE_MODE) || ((u16StatusContent & CCA_IRQ_MASK) != 0) || \
       ((u16StatusContent & TX_IRQ_MASK) != 0)) 
    {
    //If in idle mode already or if CCA or TX is done, just return. 
        PLMESetTrxStateRequest(IDLE_MODE);            // Forces the MC13192 to idle.  
        return;
    }
    
    if((u16StatusContent & TIMER1_IRQ_MASK) != 0)
    {
        SPIDrvWrite(T1_HI_ADDR, 0x8000); // Disables TC1 and clears IRQ  
        SPIDrvWrite(T1_LO_ADDR, 0x0000);
        PLMESetTrxStateRequest(IDLE_MODE);
        return;
    }       
       
    // If rx is done  
    if ((u16StatusContent & RX_IRQ_MASK) != 0) 
    {  
        
        PLMESetTrxStateRequest(IDLE_MODE);            // Forces the MC13192 to idle.  
        
        if((u16StatusContent & CRC_VALID_MASK) == 0) 
        {
            // If an invalid CRC, restart receiver.  
            PLMESetTrxStateRequest(RX_MODE); // Forces the MC13192 to enter the receive mode. 
            return;
        }
        else 
        {
            UINT8 u8DataLength;
            
            u8DataLength = (UINT8) (SPIDrvRead(RX_PKT_LEN) & 0x7F);
            
            if (u8DataLength < 3) // Rx_pkt_length is bad when < 3 because of CRC .
            {
               PLMESetTrxStateRequest(RX_MODE);  
               return;
            }
            
            Zigbee_Flags.bits.RFDataIndication = 1;            
            return;
        }
    }
}

/************************************************************
Function:    void RTXENDeAssert(void)

Parameter:   

Return:      
             
Description: Deassert the MC13192 RTXEN pin (forces IC to idle)
************************************************************/
void RTXENDeAssert(void)
{
    MC13192_RTXEN = 0;      /* Deassert RTXEN */
}

/************************************************************
Function:    void RTXENAssert(void)

Parameter:   

Return:      
             
Description: Assert the MC13192 RTXEN pin (initiates programmed cycle)
************************************************************/
void RTXENAssert(void)
{
    MC13192_RTXEN = 1;      /* Assert RTXEN */
}

/************************************************************
Function:    void SPIDrvWrite(UINT8 u8Addr, UINT16 u16Content)

Parameter:   u8Addr        address of register 
             u16Content    the value that want to write to the register

Return:      
             
Description: Write 1 word to SPI
************************************************************/
void SPIDrvWrite(UINT8 u8Addr, UINT16 u16Content)
{
    UINT8 u8TempValue;
    
    CLRWDT();
  
    SaveStatusReg();
  
    SPIClearRecieveStatReg(); /* Clear status register (possible SPRF, SPTEF) */  
    SPIClearRecieveDataReg(); /* 
                               * Clear receive data register. SPI entirely ready 
                               * for read or write 
                               */                       
   
    AssertCE();                   /* Enables MC13192 SPI */
    SPISendChar(u8Addr & 0x3F);   /*
                                   * Mask address, 6bit addr. 
                                   * Set write bit (i.e. 0). 
                                   */
    SPIWaitTransferDone();        /* 
                                   * For this bit to be set, SPTED MUST be set.
                                   * Now write content MSB
                                   */
    SPIClearRecieveDataReg();     /* 
                                   * Clear receive data register. SPI entirely 
                                   * ready for read or write 
                                   */
    SPISendChar(u16Content >> 8); /* Write MSB *///  SPI1D = u16Content >> 8;        
    SPIWaitTransferDone();        /* 
                                   * For this bit to be set, SPTED MUST be set. 
                                   * Now write content LSB 
                                   */
    SPIClearRecieveDataReg();     /* 
                                   * Clear receive data register. SPI entirely 
                                   * ready for read or write
                                   */
    SPISendChar(u16Content & 0x00FF); /* Write LSB */
    SPIWaitTransferDone();        /* 
                                   * For this bit to be set, SPTED MUST be set.
                                   * Now read last of garbage
                                   */
    SPIClearRecieveDataReg();     /* 
                                   * Clear receive data register. SPI entirely 
                                   * ready for read or write 
                                   */
    DeAssertCE();                 /* Disables MC13192 SPI */
 
    RestoreStatusReg();
}

/************************************************************
Function:    UINT16 SPIDrvRead(UINT8 u8Addr)

Parameter:   u8Addr        address of register 
             
Return:      u16Data       u16Data[0] is the MSB, u16Data[1] is the LSB
             
Description: Read 1 word from SPI
************************************************************/
UINT16 SPIDrvRead(UINT8 u8Addr)
{
    UINT8 u8TempValue;
    UINT16  u16Data;            /* u16Data[0] is MSB, u16Data[1] is LSB */

    CLRWDT();
    
    SaveStatusReg();
    
    SPIClearRecieveStatReg();  /* Clear status register (possible SPRF, SPTEF) */  
    SPIClearRecieveDataReg();  /* 
                                 * Clear receive data register. SPI entirely 
                                 * ready for read or write

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情图片qvod| 欧美色区777第一页| 国产麻豆精品95视频| 秋霞av亚洲一区二区三| 日本少妇一区二区| 日韩国产精品久久久久久亚洲| 亚洲成人久久影院| 亚洲国产精品久久久男人的天堂| 亚洲一区二区在线视频| 午夜精品成人在线| 麻豆国产一区二区| 国产在线麻豆精品观看| 国产麻豆成人传媒免费观看| 国产99久久久精品| av影院午夜一区| 在线观看av不卡| 91精品国产手机| 久久久www免费人成精品| 国产亚洲精品免费| 亚洲男人电影天堂| 午夜伊人狠狠久久| 紧缚奴在线一区二区三区| 高清不卡在线观看| 色就色 综合激情| 777午夜精品免费视频| 欧美一级黄色录像| 久久久久久久国产精品影院| 国产精品进线69影院| 亚洲综合男人的天堂| 日产欧产美韩系列久久99| 精品亚洲porn| av电影天堂一区二区在线| 欧美日韩一区中文字幕| 日韩女优电影在线观看| 亚洲国产精品成人综合| 亚洲一二三区不卡| 另类小说一区二区三区| 成人理论电影网| 欧美三级在线播放| 久久午夜电影网| 亚洲欧美日韩国产成人精品影院| 视频在线观看91| 豆国产96在线|亚洲| 欧美亚洲动漫精品| 亚洲精品一区二区三区精华液| 国产精品天干天干在观线| 性做久久久久久久久| 国产精品一区二区视频| 91国偷自产一区二区三区观看| 日韩欧美区一区二| 亚洲精品乱码久久久久久| 久久草av在线| 在线免费观看日韩欧美| 久久久久久免费网| 亚洲高清三级视频| 成人av在线资源| 91精品黄色片免费大全| 中文字幕免费观看一区| 老司机一区二区| 欧美系列日韩一区| 国产精品色在线观看| 美女国产一区二区| 欧美色综合久久| 国产精品视频看| 美女mm1313爽爽久久久蜜臀| 色拍拍在线精品视频8848| 欧美精品一区二区蜜臀亚洲| 亚洲国产精品自拍| www.亚洲在线| 亚洲精品在线网站| 视频一区二区中文字幕| 色综合天天综合网天天看片| 久久这里只精品最新地址| 五月激情六月综合| 在线一区二区三区四区五区| 久久精品一区二区三区av| 日韩成人一级大片| 99精品久久只有精品| 久久久久久久久久久99999| 日韩 欧美一区二区三区| 欧美吻胸吃奶大尺度电影| 国产精品色在线观看| 国产精品白丝jk黑袜喷水| 日韩欧美国产小视频| 日韩激情视频在线观看| 欧美色图免费看| 亚洲美女视频一区| 91网站最新地址| 国产精品久久看| 国产精品77777| 精品国产在天天线2019| 久热成人在线视频| 欧美成人一级视频| 麻豆精品一二三| 日韩精品中文字幕一区二区三区| 天堂在线亚洲视频| 欧美色视频在线| 亚洲成av人片一区二区梦乃| 欧美性生活影院| 亚洲成人av一区二区| 欧美日韩成人综合| 婷婷开心久久网| 91麻豆精品国产综合久久久久久 | 亚洲成人免费影院| 欧美丝袜丝nylons| 亚洲观看高清完整版在线观看| 欧美在线小视频| 亚洲一二三四在线| 欧美高清www午色夜在线视频| 天堂成人免费av电影一区| 日韩一区国产二区欧美三区| 蜜臀久久99精品久久久画质超高清| 欧美精品v日韩精品v韩国精品v| 婷婷国产在线综合| 日韩一二三区视频| 国产自产v一区二区三区c| 日韩精品最新网址| 国产麻豆精品一区二区| 国产精品午夜在线观看| 一本大道久久精品懂色aⅴ| 亚洲国产一区二区三区| 欧美日韩免费观看一区二区三区 | 亚洲国产一区视频| 3d成人动漫网站| 精品一区中文字幕| 国产精品国产精品国产专区不蜜| 色综合久久久久网| 日韩高清欧美激情| 久久久久青草大香线综合精品| proumb性欧美在线观看| 伊人婷婷欧美激情| 91精品国产91久久久久久一区二区| 久久超级碰视频| 国产精品国产a级| 欧美精品v国产精品v日韩精品| 看片网站欧美日韩| 国产精品欧美经典| 欧美日韩一区二区三区不卡| 美国毛片一区二区| 欧美激情一二三区| 欧美精品三级在线观看| 国产在线精品免费| 亚洲精品乱码久久久久久日本蜜臀| 欧美精选一区二区| 成人久久视频在线观看| 天堂久久久久va久久久久| 欧美国产精品中文字幕| 欧美在线视频全部完| 精东粉嫩av免费一区二区三区| 亚洲欧洲精品天堂一级| 555www色欧美视频| 岛国av在线一区| 日韩福利视频导航| 亚洲欧洲中文日韩久久av乱码| 日韩一区二区在线播放| thepron国产精品| 亚洲成人免费视| 国产精品国产三级国产aⅴ无密码| 6080yy午夜一二三区久久| 成人午夜电影网站| 美女一区二区视频| 一区二区在线观看视频| 久久这里只有精品首页| 欧美三电影在线| 99精品热视频| 久久精工是国产品牌吗| 亚洲人成精品久久久久| 国产日韩av一区| 欧美一区二区免费| 色婷婷综合久久| 成人免费av在线| 国产一区啦啦啦在线观看| 三级不卡在线观看| 亚洲欧美日韩国产综合在线| 日本一区二区三区四区| 精品福利一二区| 欧美日韩国产综合一区二区 | 国产欧美精品一区| 91.麻豆视频| 欧美视频中文字幕| 91免费版在线| 成人美女在线观看| 国产高清无密码一区二区三区| 日本视频免费一区| 舔着乳尖日韩一区| 亚洲观看高清完整版在线观看| 亚洲欧美视频一区| 国产精品白丝在线| 亚洲国产高清在线| 国产色91在线| 久久精品夜色噜噜亚洲aⅴ| 日韩欧美国产高清| 欧美一区二区免费视频| 欧美日韩不卡视频| 欧美性大战久久| 精品视频在线免费看| 欧美综合久久久| 色哦色哦哦色天天综合| 一本一道波多野结衣一区二区| 91色在线porny|