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

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

?? modem.c

?? Ucosii 2.52 for lpc2100.rar 應該是個有用的東西
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機發展有限公司
**                                     研    究    所
**                                        產品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: uart0.c
**創   建   人: 陳明計
**最后修改日期: 2003年7月4日
**描        述: μCOS-II下LPC2114的UART1底層驅動(MODEM操作)
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳明計
** 版  本: v1.0
** 日 期: 2003年7月4日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define IN_MODEM
#include "config.h"
static OS_EVENT *ModemSem, *Uart1Send, *Uart1Get;
static uint8 ModemState;

/*********************************************************************************************************
** 函數名稱: UART1Init
** 功能描述: 初始化UART0 
** 輸 入: bps:波特率
**
** 輸 出:TRUE  :成功
**        FALSE:失敗
** 全局變量: Uart0Sem
** 調用模塊: OSSemCreate
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void UART1Init(uint32 bps)
{
    uint16 Fdiv;
    
    PINSEL0 = (PINSEL0 & 0x0000ffff) | 0x55550000;  /* 選擇管腳為UART0 */

    U1LCR = 0x80;                                   /* 允許訪問分頻因子寄存器 */
    Fdiv = (Fpclk / 16) / bps;                      /* 設置波特率 */
    U1DLM = Fdiv / 256;							
	U1DLL = Fdiv % 256;						
    U1LCR = 0x03;                                   /* 禁止訪問分頻因子寄存器 */
                                                    /* 且設置為8,1,n */
	U1IER = 0x0f;                                   /* 允許接收和發送中斷 */
    U1FCR = 0x87;                                   /* 初始化FIFO */
    U1MCR = 0x03;
    Uart1Send = OSSemCreate(1);
    Uart1Get = OSSemCreate(0);

}

/*********************************************************************************************************
** 函數名稱: GetModemState
** 功能描述: 發送多個字節數據
** 輸 入: Data:發送數據存儲位置
**        NByte:發送數據個數
** 輸 出:無
** 全局變量: 無
** 調用模塊: UART0Putch
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 GetModemState(void)
{
    return ModemState;
} 

/*********************************************************************************************************
** 函數名稱: ModemWrite
** 功能描述: 發送多個字節數據
** 輸 入: Data:發送數據存儲位置
**        NByte:發送數據個數
** 輸 出:無
** 全局變量: 無
** 調用模塊: UART0Putch
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ModemWrite(char *Data, uint16 NByte)
{
    uint8 err,i;
    
    OSSemPend(ModemSem, 0, &err);
    while (NByte > 0)
    {
        OSSemPend(Uart1Send, 0, &err);
        for (i = 0; i < 8; i++)
        {
            U1THR = *Data++;
            NByte--;
            if (NByte == 0)
            {
                break;
            }
        }
    }
    OSSemPost(ModemSem);
    return ModemState;
} 

/*********************************************************************************************************
** 函數名稱: UART0Getch
** 功能描述: 接收一個字節
** 輸 入: 無
** 輸 出: 接收到的數據
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ModemGetch(void)
{
    uint8 rt;

    OS_ENTER_CRITICAL();
    while ((U1LSR & 0x00000001) == 0)
    {                                           /* 沒有收到數據 */
        U1IER = U1IER | 0x01;                   /* 允許接收中斷 */
        OSSemPend(Uart1Get, 0, &rt);
    }
    rt = U1RBR;                                 /* 讀取收到的數據 */
    OS_EXIT_CRITICAL();

    return rt;
} 
/*********************************************************************************************************
** 函數名稱: ModemDialUp
** 功能描述: Modem拔號操作
** 輸 入: 
**
** 輸 出:
**
** 全局變量:
** 調用模塊:
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ModemDialUp(char Number[])
{
    char *cp;
    uint8 i;
    uint8 err;
    
    if (ModemState == MODEM_CLOSE)
    {
        while ((U1LSR & 0x00000001) != 0)
        {
            err = U1RBR;
        }
        ModemWrite("ATD", 3);
        i = 0;
        cp = Number;
        while (*cp++ != 0)
        {
            i++;
        }
        ModemWrite(Number, i);
        ModemWrite("\r", 1);

        U1IER = U1IER | 0x01;                   /* 允許接收中斷 */
        for (i = 0; i < 120; i++)
        {
            OSTimeDly(OS_TICKS_PER_SEC);
            if (ModemState == MODEM_CONNECT)
            {
                break;
            }
        }
    }
    return ModemState;
}
/*********************************************************************************************************
** 函數名稱: ModemDialDown
** 功能描述: Modem斷開。
** 輸 入: 
**
** 輸 出:
**
** 全局變量:
** 調用模塊:
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ModemDialDown(void)
{
    U1MCR = 0x02;
    OSTimeDly(OS_TICKS_PER_SEC / 10);
    U1MCR = 0x03;
    OSTimeDly(OS_TICKS_PER_SEC / 10);
    return ModemState;
}

/*********************************************************************************************************
** 函數名稱: ModemCommand
** 功能描述: 發送Modem命令。
** 輸 入: 
**
** 輸 出:
**
** 全局變量:
** 調用模塊:
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ModemCommand(char *Command)
{
    char *cp;
    uint8 i,err;
    
    if (ModemState == MODEM_CLOSE)
    {
        while ((U1LSR & 0x00000001) != 0)
        {
            err = U1RBR;
        }
        
        cp = Command;
        i = 0;
        while(*cp++ != 0)
        {
            i++;
        }
        ModemWrite(Command, i);
        ModemWrite("\r", 1);
        i = ModemGetch();
        if (i == 'A' || i == 'a')
        {
            while (1)
            {
                err = i;
                i = ModemGetch();
                if (err == 'O' || err == 'o')
                if (i == 'K' || i == 'k')
                {
                    i = ModemGetch();
                    i = ModemGetch();
                    break;
                }
            }
        }
        else
        {
            while (1)
            {
                if (i == '0')
                {   
                    i = ModemGetch();
                    break;
                }
                i = ModemGetch();
            }
        }
    }
    return ModemState;
}

/*********************************************************************************************************
** 函數名稱: ModemInit
** 功能描述: 初始化Modem 
** 輸 入: 
**
** 輸 出:
**
** 全局變量:
** 調用模塊:
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ModemInit(uint32 bps)
{
    ModemState = MODEM_CLOSE;
    UART1Init(bps);
    ModemSem = OSSemCreate(1);
    if (ModemSem != NULL)
    {
        if ((U1MSR & 0x30) != 0x30)
        {
            OSTimeDly(OS_TICKS_PER_SEC);
            if ((U1MSR & 0x30) != 0x30)
            {
                ModemState = NOT_FIND_MODEM;
            }
        }
        if (ModemState == MODEM_CLOSE)
        {
            ModemCommand("ATE0");
            ModemCommand("ATV0");
            ModemCommand("AT&C1");
            ModemCommand("AT&D2");
            ModemCommand("AT&R0");
            ModemCommand("AT&S0");
            ModemCommand("ATS0=2");
        }
    }
    else
    {
        ModemState = NOT_INIT_MODEM;
    }
    return ModemState;
}

/*********************************************************************************************************
** 函數名稱: UART1_Exception
** 功能描述: UART1中斷服務程序
** 輸 入: 無
**
** 輸 出: 無
**         
** 全局變量: 無
** 調用模塊: OSSemPost
**
** 作 者: 陳明計
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void UART1_Exception(void)
{
    uint8 IIR, temp;
    
    OS_ENTER_CRITICAL();
    while(((IIR = U1IIR) & 0x01) == 0)
    {                                                   /* 有中斷未處理完 */
        switch (IIR & 0x0e)
        {
            case 0x00:                                  /* Modem狀態變化 中斷    */
                if ((U1MSR & 0x80) != 0)
                {
                    ModemState = MODEM_CONNECT;
                }
                else
                {
                    ModemState = MODEM_CLOSE;
                }
                if ((U1MSR & 0x40) != 0)
                {
                    ModemState = MODEM_RING;
                }
                if ((U1MSR & 0x30) != 0x30)
                {
                    ModemState = NOT_FIND_MODEM;
                }
                break;
            case 0x02:                                  /* THRE中斷    */
                OSSemPost(Uart1Send);
                break;
            case 0x04:                                  /* 接收數據可用 */
                OSSemPost(Uart1Get);
                U1IER &= (~0x01);                       /* 禁止接收及字符超時中斷 */
                break;
            case 0x06:                                  /* 接收線狀態   */
                temp = U1LSR;
                break;
            case 0x0c:                                  /* 字符超時指示 */
                OSSemPost(Uart1Get);
                U1IER &= (~0x01);                       /* 禁止接收及字符超時中斷 */
                break;
            default :
                break;
        }
    } 
    VICVectAddr = 0;            // 通知中斷控制器中斷結束
    OS_EXIT_CRITICAL();
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久av资源网| 狠狠色丁香婷综合久久| 国产精品久久二区二区| 国产欧美日韩在线观看| 久久久久久亚洲综合| 久久综合九色欧美综合狠狠 | 国产人妖乱国产精品人妖| 久久奇米777| 国产欧美日韩在线看| 国产精品久久久久永久免费观看 | 欧美少妇xxx| 欧美视频一区二区三区四区| 欧美伊人久久大香线蕉综合69| 欧美亚洲图片小说| 欧美日韩国产一区| 欧美色涩在线第一页| 91精品国产综合久久精品图片| 欧美另类变人与禽xxxxx| 欧美一区欧美二区| 欧美大片国产精品| 久久久久久日产精品| 国产精品传媒入口麻豆| 亚洲一区二区3| 日韩成人伦理电影在线观看| 日本欧美韩国一区三区| 国产一区二区三区黄视频 | 国产精选一区二区三区| 懂色av一区二区三区免费观看| 一本一道波多野结衣一区二区| 日本道精品一区二区三区| 在线成人av影院| 久久久国产午夜精品| 亚洲精品欧美综合四区| 水蜜桃久久夜色精品一区的特点| 韩国女主播成人在线| 9i看片成人免费高清| 69av一区二区三区| 国产精品免费看片| 午夜欧美视频在线观看| 成人中文字幕合集| 欧美群妇大交群的观看方式| 2023国产一二三区日本精品2022| 国产精品久久久久一区| 美女视频一区在线观看| 日本久久一区二区三区| 精品国产欧美一区二区| 一区二区三国产精华液| 国产一区二区三区观看| 欧美日韩高清一区二区不卡| 日本一区二区三区视频视频| 五月综合激情日本mⅴ| 成人午夜免费视频| 5月丁香婷婷综合| 综合激情网...| 国产精品中文字幕欧美| 欧美精品自拍偷拍| 一区二区三区91| proumb性欧美在线观看| 久久久综合视频| 日韩av中文字幕一区二区| 色女孩综合影院| 国产日产亚洲精品系列| 久久99精品久久久久久动态图| 欧美日韩国产一区二区三区地区| 中文字幕在线一区二区三区| 国产成人一级电影| 亚洲精品一区二区三区在线观看| 亚洲观看高清完整版在线观看| 不卡一区二区在线| 久久精品视频网| 国内精品写真在线观看| 欧美不卡在线视频| 日韩中文字幕麻豆| 制服丝袜亚洲网站| 亚洲国产精品嫩草影院| 欧美色大人视频| 亚洲综合成人在线视频| 欧美在线一区二区三区| 一区二区三区中文免费| 色综合久久中文字幕综合网| 亚洲日本欧美天堂| 9i在线看片成人免费| 自拍偷自拍亚洲精品播放| 99久久综合99久久综合网站| 久久精品亚洲一区二区三区浴池 | 久久婷婷一区二区三区| 精品一区二区三区免费| 亚洲精品一区二区在线观看| 国产一区二区不卡老阿姨| 久久美女艺术照精彩视频福利播放| 久久成人久久爱| 国产日韩精品一区二区浪潮av| 国产盗摄一区二区三区| 国产精品视频观看| 99久久综合色| 日韩高清中文字幕一区| 精品精品国产高清a毛片牛牛| 久久精品免费观看| 国产精品久久久久毛片软件| 色屁屁一区二区| 男女男精品视频| 久久久精品中文字幕麻豆发布| 国产精品一区二区果冻传媒| 国产精品久久久久久久久快鸭 | 免费在线欧美视频| 欧美大片免费久久精品三p| 国产精品1024| 亚洲综合激情小说| 日韩情涩欧美日韩视频| 成人免费看的视频| 午夜免费久久看| 国产日产欧产精品推荐色| 欧洲视频一区二区| 国产精品香蕉一区二区三区| 亚洲蜜臀av乱码久久精品| 欧美一级生活片| 91色视频在线| 国内精品视频666| 亚洲高清视频的网址| 国产欧美一区二区三区在线看蜜臀 | 亚洲欧美成aⅴ人在线观看| 91精品国产综合久久久久久久| 东方aⅴ免费观看久久av| 天堂蜜桃91精品| 国产精品久线在线观看| 日韩一区国产二区欧美三区| 欧美一区二区三区爱爱| 成人国产一区二区三区精品| 青青草伊人久久| 亚洲乱码国产乱码精品精小说 | 风间由美性色一区二区三区| 一区二区三区四区视频精品免费| 精品福利二区三区| 欧美图区在线视频| 成年人午夜久久久| 精品夜夜嗨av一区二区三区| 亚洲国产成人av好男人在线观看| 中文字幕一区免费在线观看| 日韩久久久久久| 777午夜精品免费视频| 91蝌蚪porny九色| 国产九色sp调教91| 国产精品影视网| 另类综合日韩欧美亚洲| 一区二区三区日韩欧美精品| 欧美高清在线一区| 久久久久国产精品厨房| 国产精品久久久久影院老司| 国产三级三级三级精品8ⅰ区| 欧美一区二区三区四区五区| 欧美久久一区二区| 欧美日韩一区中文字幕| 91国模大尺度私拍在线视频| 色综合天天性综合| 成人精品免费视频| 成人爱爱电影网址| 成人精品视频一区二区三区尤物| 国产一区二区三区精品欧美日韩一区二区三区| 日本特黄久久久高潮| 午夜精品久久久久久久99水蜜桃| 一级精品视频在线观看宜春院| 亚洲美女电影在线| 亚洲最大的成人av| 亚洲h动漫在线| 蜜桃视频在线观看一区| 久久精品久久精品| 粉嫩久久99精品久久久久久夜| 成人免费毛片app| 99久久久无码国产精品| 色哟哟一区二区| 欧美麻豆精品久久久久久| 91麻豆精品国产91久久久使用方法| 欧美日韩国产影片| 精品粉嫩aⅴ一区二区三区四区| 欧美电影免费观看高清完整版在线| 日韩精品一区二区三区老鸭窝| 国产三级三级三级精品8ⅰ区| 中文字幕一区二区三区在线不卡| 亚洲丝袜制服诱惑| 日本视频中文字幕一区二区三区| 久久国产婷婷国产香蕉| 国产成人精品影视| 91国偷自产一区二区三区观看| 欧美三级蜜桃2在线观看| 日韩女优制服丝袜电影| 欧美激情一区二区三区蜜桃视频 | 免费高清成人在线| 国产成人av网站| 欧美丝袜自拍制服另类| 久久综合九色综合欧美亚洲| 专区另类欧美日韩| 蜜臀av性久久久久蜜臀aⅴ流畅| 粉嫩久久99精品久久久久久夜| 色婷婷av一区二区三区软件| 日韩欧美成人午夜| 中文字幕在线不卡一区二区三区| 美女视频黄久久| 色素色在线综合| 国产拍欧美日韩视频二区 | 欧美sm美女调教|