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

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

?? linsci.c

?? 基于FREESCALE單片機9S08DZ60的LIN從節點的應用層源代碼.LIN是通過UART串口來實現的.開發環境為CODEWARRIOR FOR HC08
?? C
字號:
#define LINSCI_C
/******************************************************************************
*                                                       
*       Copyright (C) 2005 Freescale Semiconductor, Inc.
*       All Rights Reserved								              
*														                            
* Filename:     linsci.c                
*														                            
* Revision:      										                    
*														                            
* Functions:    SCI management module
*												                            
* Description:
*
* Notes:        
*
******************************************************************************/

#include <linbase.h>

#pragma MESSAGE DISABLE C4200 /* WARNING C4200: other segment than in previous declaration */

/****************************************************************************
 * All common-purpose RAM variables shall be declared here.
 ***************************************************************************/
/****************************************************************************
 * Some of the variables (more often used) can be declared using LIN_ZPAGE
 * modifier.
 * It require to perform zero page RAM placement optimisation.
 ***************************************************************************/
#if defined(S08) && defined(CW08)
#pragma DATA_SEG SHORT ZeroSeg
#endif /* defined(S08) && defined(CW08) */

LIN_ZPAGE LIN_BYTE  LIN_TmpSCIStatus;   /* byte to clear SCI status, and to receive byte   */

#if defined(S08) && defined(CW08)
#pragma DATA_SEG DEFAULT
#endif /* defined(S08) && defined(CW08) */

#if defined(LINAPI_1_0)

/***************************************************************************
 * Function :   l_ifc_init_sci0
 *
 * Description: Initialize SCI to work with LIN bus. 
 *                  Set specified baud rate;
 *                  Disable all SCI interrupts;
 *                  Enable Tx and RX pins
 *
 * Returns:     none
 *
 * Notes:       LIN API service
 *
 **************************************************************************/

void l_ifc_init_sci0( void )
{
    LIN_BYTE    intMask;

    LIN_DBG_SET_PORT_7;
    intMask = LIN_DisableInt();     /* disable interrupts */

    /* Disconnect SCI and set initial state -- this is abort any activity */
    LIN_StateFlags = LIN_FLAG_IGNORE | LIN_FLAG_DISCONNECT;
    
    /* ??? SCI not disabled while initialization */
#if defined(S08DZ60) 
    LIN_SCISetBaudRate(LIN_CfgConst.LIN_BaudRate);

    /* one start bit, eight data bits, one stop bit */
    LIN_SCCR1 = 0;                            
    /* enable transmitter & receiver and disable all SCI interrupts */
    LIN_SCCR2 = LIN_SCCR2_TE | LIN_SCCR2_RE;  

    /* SCI flags clearing and interrupts enables in ifc_connect */
#endif   /* defined(S08DZ60) */

    LIN_EnableInt(intMask);         /* enable interrupts */
    LIN_DBG_CLR_PORT_7;
}


/***************************************************************************
 * Function :   l_ifc_connect_sci0
 *
 * Description: Connect SCI -- clear all SCI flags,
 *              enable SCI interrupts, reset idle timeout.
 *
 * Returns:     0   -- success
 *              ~0  -- called before l_ifc_init()
 *
 * Notes:       LIN API.
 *              If already connected then do nothing.
 *
 **************************************************************************/
l_bool l_ifc_connect_sci0( void )
{
    l_irqmask   intMask;
    l_bool      ret;

    ret = 0;    /* suppose that connecting OK */

    LIN_DBG_SET_PORT_7;
    intMask = LIN_DisableInt();     /* disable interrupts */

    /* if l_ifc_connect called before l_ifc_init then return error */
    if ( (LIN_StateFlags & LIN_FLAG_NOINIT) != 0 )
    {
        ret = ~0;
    }

    /* we are after l_ifc_init */

    /* if an interrupt occurs here and call l_sys_init() then we in LIN_FLAG_NOINIT
       so we need interrupt disabling -- OPTIM */

    /* if interface is already connected then do nothing */
    else if ( (LIN_StateFlags & LIN_FLAG_DISCONNECT) != 0 )
    {
        /* we are in disconnected state -> connect */

        /* connect SCI hardware */
#if defined(S08DZ60)
                                        /* clear SCI status */
        LIN_TmpSCIByte = LIN_SCSR1;
        LIN_TmpSCIByte = LIN_SCDR;

        LIN_SCCR2 |= LIN_SCCR2_RIE;     /* enable RX complited interrupt */
#endif /* defined(S08DZ60) */

        /* start to wait break */
        LIN_StateFlags = LIN_FLAG_IGNORE;

        /* reset idle timeout */
        LIN_SetIdleTimeout();               
    }

    LIN_EnableInt(intMask);         /* enable interrupts */
    LIN_DBG_CLR_PORT_7;

    return ret;
}

/***************************************************************************
 * Function :   l_ifc_disconnect_sci0
 *
 * Description: Disconnect SCI -- disable SCI interrupts.
 *
 * Returns:     0   -- success
 *              ~0  -- called before l_ifc_init()
 *
 * Notes:       LIN API.
 *              If already disconnected then do nothing.
 *
 **************************************************************************/
l_bool l_ifc_disconnect_sci0( void )
{
    l_irqmask   intMask;
    l_bool      ret;

    ret = 0;    /* suppose that disconnecting OK */

    LIN_DBG_SET_PORT_7;
    intMask = LIN_DisableInt();     /* disable interrupts */

    /* if l_ifc_disconnect called before l_ifc_init then return error */
    if ( (LIN_StateFlags & LIN_FLAG_NOINIT) != 0 )
    {
        ret = ~0;
    }

    /* we are after l_ifc_init */

    /* if an interrupt occurs here and call l_sys_init() then we in LIN_FLAG_NOINIT
       so we need interrupt disabling -- OPTIM */

    /* if interface is already disconnected then do nothing */
    else if ( (LIN_StateFlags & LIN_FLAG_DISCONNECT) == 0 )
    {
        /* we are in connected state -> disconnect */

        /* disconnect SCI hardware */
#if defined(S08DZ60)
        /* enable transmitter and receiver, disable all SCI interrupts */
        LIN_SCCR2 = LIN_SCCR2_TE | LIN_SCCR2_RE;  
#endif /* defined(S08DZ60) */

        /* set disconnected state */
        LIN_StateFlags = LIN_FLAG_IGNORE | LIN_FLAG_DISCONNECT;
    }

    LIN_EnableInt(intMask);         /* enable interrupts */
    LIN_DBG_CLR_PORT_7;

    return ret;
}


#else /* !defined(LINAPI_1_0) */


/***************************************************************************
 * Function :   LIN_SCIInit
 *
 * Description: Initialize SCI to work with LIN bus. 
 *                  Set specified baud rate;
 *                  Disable all SCI interrupts;
 *                  Enable Tx and RX pins
 *                  Enable Rx interrupt
 *
 * Returns:     none
 *
 * Notes:       1. SLAVE, MASTER node
 *
 **************************************************************************/
void LIN_SCIInit( void )
{
    /* ??? SCI not disabled while initialization */
#if defined(S08DZ60)
                                    /* initialization order correct */
    LIN_SCISetBaudRate(LIN_CfgConst.LIN_BaudRate);

    /* one start bit, eight data bits, one stop bit */
    LIN_SCCR1 = 0;                            
    /* enable transmitter & receiver and disable all SCI interrupts */
    LIN_SCCR2 = LIN_SCCR2_TE | LIN_SCCR2_RE;  

#if defined (MASTER)
    LIN_SCSR2 |= LIN_SCSR2_BRK13;  /* init sending 13 bit break with M=0*/
#endif   /* defined(MASTER) */       
                             
																	  /* clear SCI status */
    LIN_TmpSCIByte = LIN_SCSR1;
    LIN_TmpSCIByte = LIN_SCDR;

    LIN_SCCR2 |= LIN_SCCR2_RIE;    /* enable RX complete interrupt */
    LIN_SCCR3 |= LIN_SCCR3_FEIE;   /* Enable Frame Error interrupt */
#endif   /* defined(S08DZ60) */
}

#endif  /* !defined(LINAPI_1_0) */

/***************************************************************************
 * Function :   LIN_SCISetBaudRate
 *
 * Description: Programm SCI to particular baud rate
 *
 * Returns:     none
 *
 * Notes:       none
 *
 **************************************************************************/
void LIN_SCISetBaudRate( LIN_WORD baudRate )
{
    /* set the baud rate divider  */
#if defined(S08DZ60)    
    LIN_SCBDH = (LIN_BYTE)((baudRate >> 8) & 0x001f);               
    LIN_SCBDL = (LIN_BYTE)(baudRate & 0x00ff);
#endif  /* defined(S08DZ60) */  
     
}

/****************************************************************************/
/****************************************************************************/
/***                     Interrupt Driven Routines                        ***/
/****************************************************************************/
/****************************************************************************/
#if defined(LINAPI_1_0)

/***************************************************************************
 * Function :   l_ifc_tx_sci0
 *
 * Description: SCI transmit processing
 *
 * Returns:     none
 *
 * Notes:       1. Tx enable interrupt disabled forever
 *                 Tx completed interrupt enabled only while send wakeup symbol 
 *              2. LIN API function
 *
 **************************************************************************/
void l_ifc_tx_sci0( void )
{
    LIN_DBG_SET_PORT_0;

    if ( (LIN_StateFlags & LIN_FLAG_DISCONNECT) == 0 )
    {   
        /* work only if SCI connected */

        LIN_DBG_SET_PORT_2;

#if defined(S08DZ60)
        LIN_SCCR2  &= ~( LIN_SCCR2_TCIE );    /* Disable Tx completed */
#endif  /* defined(S08DZ60) */        

        LIN_TxCompleted();

        LIN_DBG_CLR_PORT_2;
    }

    LIN_DBG_CLR_PORT_0;
}

/***************************************************************************
 * Function :   l_ifc_rx_sci0
 *
 * Description: SCI receive and SCI error processing
 *
 * Returns:     none
 *
 * Notes:       1. Only for LIN API
 *              2. Set bit 1 in debug port while working.
 *              3. Rx interrupt enabled forever
 *
 **************************************************************************/
void l_ifc_rx_sci0( void )
{
    LIN_DBG_SET_PORT_0;

    if ( (LIN_StateFlags & LIN_FLAG_DISCONNECT) == 0 )
    {   
        /* work only if SCI connected */

#if defined(S08DZ60)
        LIN_TmpSCIStatus = LIN_SCSR1;
        LIN_TmpSCIByte   = LIN_SCDR;                  /* clear all flags */
#endif  /* defined(S08DZ60) */
        
#if defined(S08DZ60)
        if ( LIN_TmpSCIStatus & LIN_SCSR1_FE ) 
        {
            if ( LIN_TmpSCIByte == 0 )      /* Check SCI  RX data bit if 0 so count next 
                                               bittime to receive 11 bittime break else frame error */          
            {
#endif  /* defined(S08DZ60) */              

                /* Normal Break */

                LIN_DBG_SET_PORT_5;

                LIN_FrameError(LIN_NORMALBREAK);

                LIN_DBG_CLR_PORT_5;
            }
            else
            {

#if defined(S08DZ60)
                LIN_SCCR2 &= ~LIN_SCCR2_RE;    /* NB: disable and enable SCI to prevent */
                                                /*     distinction next zero level bit as start bit */
#endif  /* defined(S08DZ60) */                                                 
                                                
                LIN_DBG_SET_PORT_3;         /* indicate frame error recognized */

                LIN_FrameError(LIN_FRAMEERROR);                  

                LIN_DBG_CLR_PORT_3;

#if defined(S08DZ60)                
                LIN_SCCR2 |= LIN_SCCR2_RE;     /* enable SCI Rx */
#endif  /* defined(S08DZ60) */
            }                                      
        }

        else
        {
            /* SCI Receive */

            LIN_DBG_SET_PORT_1;

            LIN_RxCompleted();
        
            LIN_DBG_CLR_PORT_1;
        }
    }

    LIN_DBG_CLR_PORT_0;
}


#else /* defined(LINAPI_1_0) */
/***************************************************************************
 * Function :   LIN_ISR_SCI_Receive
 *
 * Description: SCI receive interrupt
 *
 * Returns:     none
 *
 * Notes:       1. Set bit 1 in debug port while working.
 *              2. Rx interrupt enabled forever
 *              3. For Freescale API only
 *
 **************************************************************************/
LIN_INTERRUPT LIN_ISR_SCI_Receive ( void )
{
    LIN_DBG_SET_PORT_0;
    LIN_DBG_SET_PORT_1;

#if defined(S08DZ60)
    LIN_TmpSCIStatus = LIN_SCSR1;
    LIN_TmpSCIByte   = LIN_SCDR;                  /* clear all flags */
#endif  /* defined(S08DZ60) */
		
    LIN_RxCompleted();
        
    LIN_DBG_CLR_PORT_1;
    LIN_DBG_CLR_PORT_0;
}

/***************************************************************************
 * Function :   LIN_ISR_SCI_Error
 *
 * Description: SCI error interrupt
 *                        
 * Returns:     none
 *
 * Notes:       1. Set bit 1 in debug port while working.
 *              2. For Freescale API only
 * 
 **************************************************************************/
LIN_INTERRUPT LIN_ISR_SCI_Error ( void )
{
    LIN_DBG_SET_PORT_4;

    LIN_DBG_SET_PORT_0;

#if defined(S08DZ60)
    LIN_TmpSCIStatus = LIN_SCSR1;
    LIN_TmpSCIByte   = LIN_SCDR;                  /* clear all flags */
#endif  /* defined(S08DZ60) */

#if defined(MASTER)

    LIN_DBG_SET_PORT_3;             /* indicate frame error recognized */

    LIN_FrameError();

    LIN_DBG_CLR_PORT_3;

   
#endif /* defined(MASTER) */

#if defined(SLAVE)

#if defined(S08DZ60)
        if ( LIN_TmpSCIByte == 0 )      /* Check SCI  RX data bit if 0 so count next 
                                           bittime to receive 11 bittime break else frame error */          
#endif  /* defined(S08DZ60) */ 
				{ 
        LIN_DBG_SET_PORT_5;

        LIN_FrameError(LIN_NORMALBREAK);

        LIN_DBG_CLR_PORT_5;
    }
    else
    {
        LIN_DBG_SET_PORT_3;         /* indicate frame error recognized */

        LIN_FrameError(LIN_FRAMEERROR);                  

        LIN_DBG_CLR_PORT_3;

    }                                      
#endif /* defined(SLAVE) */

    LIN_DBG_CLR_PORT_0;
}

#endif /* defined(LINAPI_1_0) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲观看高清完整版在线观看| 激情六月婷婷久久| 美女任你摸久久| 成人97人人超碰人人99| 制服丝袜成人动漫| 国产精品久久久久aaaa樱花| 亚洲午夜电影在线观看| 成人99免费视频| 精品国产污网站| 午夜一区二区三区在线观看| 成人午夜免费视频| 日韩欧美国产麻豆| 亚洲午夜久久久久久久久电影院| 国产成人免费视频精品含羞草妖精 | 一区二区国产盗摄色噜噜| 国产麻豆精品一区二区| 91麻豆精品国产91久久久更新时间 | 亚洲综合网站在线观看| 成人一区在线看| 欧美精品一区二区三区蜜臀| 青娱乐精品在线视频| 欧美三级在线播放| 亚洲久本草在线中文字幕| 国产999精品久久| 久久久精品人体av艺术| 精品亚洲porn| 精品国产凹凸成av人导航| 日韩电影免费一区| 欧美一三区三区四区免费在线看| 一区二区三区日韩精品| 91精品办公室少妇高潮对白| 中文字幕在线播放不卡一区| 成人综合在线网站| 日本一区二区电影| 菠萝蜜视频在线观看一区| 国产亚洲欧美一区在线观看| 国产在线不卡一区| 精品成a人在线观看| 国产风韵犹存在线视精品| 久久久国产一区二区三区四区小说 | 7777精品久久久大香线蕉| 亚洲成人免费看| 欧美亚一区二区| 亚洲777理论| 欧美一区二区在线播放| 精品在线播放午夜| 国产视频一区不卡| 99国产精品久| 亚洲一卡二卡三卡四卡| 欧美精品一二三| 精品系列免费在线观看| 欧美韩国日本一区| 91久久人澡人人添人人爽欧美| 一级中文字幕一区二区| 欧美久久久久久久久久| 欧美aⅴ一区二区三区视频| 欧美精品一区二区三区视频| 成人黄色国产精品网站大全在线免费观看 | 精品视频999| 蜜桃视频第一区免费观看| 久久婷婷色综合| a4yy欧美一区二区三区| 偷窥国产亚洲免费视频| 久久综合五月天婷婷伊人| 97久久人人超碰| 日本中文字幕不卡| 中文字幕av一区二区三区免费看| 97精品超碰一区二区三区| 亚洲成av人片| 久久精品欧美一区二区三区不卡| 中文字幕一区二区三中文字幕| 国产在线一区二区| 国产精品丝袜黑色高跟| 在线亚洲+欧美+日本专区| 卡一卡二国产精品| 一二三区精品视频| 精品国产一区二区三区忘忧草| 波多野结衣中文字幕一区| 男女视频一区二区| ...xxx性欧美| 久久久久高清精品| 欧美日韩的一区二区| 国产v综合v亚洲欧| 麻豆一区二区99久久久久| 亚洲欧洲一区二区三区| 日韩美女视频在线| 91激情在线视频| 国产精品一二三区| 蜜臀av性久久久久av蜜臀妖精| 中文字幕视频一区| 久久久99精品久久| 日韩亚洲国产中文字幕欧美| 99精品国产99久久久久久白柏| 激情av综合网| 免费人成精品欧美精品| 亚洲你懂的在线视频| 国产日产欧美精品一区二区三区| 欧美一区二区三区小说| 在线免费视频一区二区| 国产999精品久久久久久绿帽| 麻豆精品精品国产自在97香蕉| 艳妇臀荡乳欲伦亚洲一区| 国产精品久久久久久久午夜片| 久久影院午夜片一区| 欧美电影免费观看高清完整版 | 精品一区二区免费视频| 午夜视频一区在线观看| 亚洲影视在线播放| 一区二区免费在线| 亚洲免费av高清| 亚洲欧美激情插| 自拍偷在线精品自拍偷无码专区| 国产视频不卡一区| 欧美国产乱子伦| 中文字幕不卡在线播放| 中文字幕一区二| 亚洲天堂a在线| 亚洲精品国产第一综合99久久 | 丁香亚洲综合激情啪啪综合| 国产一区二区三区黄视频| 精品一区二区在线播放| 精品一区二区三区久久久| 国产一区在线视频| 成人丝袜高跟foot| av在线一区二区| 在线亚洲一区观看| 欧美女孩性生活视频| 欧美一区二区三区免费| 精品欧美一区二区三区精品久久| 日韩免费福利电影在线观看| 久久夜色精品国产噜噜av| 精品国产1区二区| 国产人成一区二区三区影院| 中文子幕无线码一区tr | xfplay精品久久| 久久久久久**毛片大全| 国产精品日日摸夜夜摸av| 亚洲日本va午夜在线电影| 亚洲国产精品久久久男人的天堂| 日韩专区在线视频| 国产一区二区在线影院| 99久久精品国产毛片| 欧美三区免费完整视频在线观看| 欧美精品99久久久**| 久久久不卡网国产精品二区| 国产精品久久久久桃色tv| 亚洲高清久久久| 国产美女精品人人做人人爽| 色综合久久中文字幕综合网| 在线播放中文一区| 中文在线一区二区| 亚洲一区二区精品视频| 加勒比av一区二区| 91福利区一区二区三区| 日韩欧美成人一区二区| 中文字幕中文字幕一区二区| 五月婷婷综合网| 成人久久视频在线观看| 51精品国自产在线| 国产精品久久久久久亚洲毛片 | 日韩女优毛片在线| 亚洲女同ⅹxx女同tv| 精品一区精品二区高清| 在线观看国产日韩| www国产精品av| 亚洲国产日韩综合久久精品| 国产成人综合在线观看| 欧美精品一卡两卡| 中文字幕视频一区| 国产精品中文字幕日韩精品 | 久久久亚洲午夜电影| 亚洲成人一区在线| 9久草视频在线视频精品| 日韩欧美一级精品久久| 亚洲一卡二卡三卡四卡无卡久久| 国产aⅴ综合色| 日韩精品一区二区三区视频| 一区二区三区国产精品| 成人黄色在线网站| 久久综合av免费| 日本强好片久久久久久aaa| 色综合天天综合网天天看片| 国产午夜精品一区二区| 久久国产精品第一页| 欧美老肥妇做.爰bbww视频| 亚洲三级理论片| 懂色av中文字幕一区二区三区 | 欧美精品粉嫩高潮一区二区| 亚洲人成在线播放网站岛国| 国产精品99久久久久久似苏梦涵 | 色av成人天堂桃色av| 国产精品色呦呦| 国产91精品精华液一区二区三区| 欧美成人精品高清在线播放| 奇米精品一区二区三区在线观看一| 欧美日韩在线不卡| 亚洲综合一二区| 欧美色图12p| 亚洲福利视频导航| 欧美视频精品在线观看|