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

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

?? modem.c

?? ucos下的modem通信程序
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機發展有限公司
**                                     研    究    所
**                                        產品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: uart0.c
**創   建   人: 陳明計
**最后修改日期: 2003年7月4日
**描        述: μCOS-II下LPC2000的Modem底層驅動 
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳明計
** 版  本: v1.0
** 日 期: 2004年2月25日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

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

/*********************************************************************************************************
** 函數名稱: UART1Init
** 功能描述: 初始化UART0 
** 輸 入: bps:波特率
**
** 輸 出:TRUE  :成功
**        FALSE:失敗
** 全局變量: Uart0Sem
** 調用模塊: OSSemCreate
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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
** 功能描述: 獲取MODEM狀態
** 輸 入: 無
**        
** 輸 出: MODEM狀態
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 GetModemState(void)
{
    return ModemState;
} 

/*********************************************************************************************************
** 函數名稱: ModemWrite
** 功能描述: 發送多個字節數據
** 輸 入: Data:發送數據存儲位置
**        NByte:發送數據個數
** 輸 出:無
** 全局變量: 無
** 調用模塊: UART0Putch
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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
** 功能描述: 接收一個字節
** 輸 入: 無
** 輸 出: 接收到的數據
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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撥號 
** 輸 入: 電話號碼
**
** 輸 出: modem狀態
**
** 全局變量: ModemState
** 調用模塊: ModemWrite,OSTimeDly
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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\n", 2);

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

/*********************************************************************************************************
** 函數名稱: ModemCommand
** 功能描述: 向modem發送命令 
** 輸 入: 命令字符串
**
** 輸 出: modem狀態
**
** 全局變量: ModemState
** 調用模塊: ModemWrite,ModemGetch,
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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\n", 2);
        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')
                {
                    break;
                }
                i = ModemGetch();
                i = ModemGetch();
            }
        }
    }
    return ModemState;
}
/*********************************************************************************************************
** 函數名稱: ModemInit
** 功能描述: 初始化Modem 
** 輸 入: 波特率
**
** 輸 出: modem狀態
**
** 全局變量: ModemState
** 調用模塊: UART1Init,OSTimeDly,ModemCommand,
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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中斷服務程序
** 輸 入: 無
**
** 輸 出: 無
**         
** 全局變量: ModemState
** 調用模塊: OSSemPost
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        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在线播放中文字幕| 91在线丨porny丨国产| 精品理论电影在线| 亚洲va国产天堂va久久en| 9i在线看片成人免费| 精品国产乱码久久久久久久| 亚欧色一区w666天堂| 在线中文字幕不卡| 综合久久久久久| 国产91丝袜在线18| 久久久蜜桃精品| 久久99国产精品免费网站| 欧美日韩一区高清| 亚洲午夜三级在线| 欧美在线观看一二区| 国产精品乱码人人做人人爱| 激情综合网激情| 精品久久久久久久人人人人传媒| 午夜精品久久久| 欧美日韩日日骚| 亚洲综合男人的天堂| 欧洲一区二区av| 尤物av一区二区| 色诱视频网站一区| 依依成人精品视频| 色欧美片视频在线观看| 亚洲女同ⅹxx女同tv| 色综合久久中文字幕| 亚洲色图视频网站| 91在线免费看| 亚洲欧美日韩国产一区二区三区| 本田岬高潮一区二区三区| 中文字幕一区二区三区四区不卡| 成人免费黄色大片| 国产精品的网站| 色婷婷久久综合| 亚洲成a人v欧美综合天堂下载| 欧美日韩中字一区| 免费看欧美女人艹b| 精品国产乱码91久久久久久网站| 国产一区二区三区免费播放| 久久久久久毛片| 成人性生交大片免费看在线播放| 国产精品毛片a∨一区二区三区| 不卡一区二区三区四区| 亚洲欧美色综合| 欧美少妇bbb| 另类小说图片综合网| 2020国产成人综合网| 成人免费视频网站在线观看| 亚洲视频网在线直播| 欧美老年两性高潮| 精品一二三四区| √…a在线天堂一区| 日本道精品一区二区三区 | 亚洲综合丁香婷婷六月香| 欧美欧美欧美欧美| 久久99热国产| 成人免费在线视频| 在线播放日韩导航| 国产成人三级在线观看| 洋洋av久久久久久久一区| 欧美一二三四在线| av资源网一区| 美女www一区二区| 专区另类欧美日韩| 欧美一区二区成人| 91在线丨porny丨国产| 蜜桃在线一区二区三区| 中文字幕一区在线观看视频| 91精品国产手机| 99这里都是精品| 久草在线在线精品观看| 一区二区三区.www| 国产女人aaa级久久久级| 欧美日韩二区三区| av在线这里只有精品| 久久99精品久久久久久| 一区二区不卡在线视频 午夜欧美不卡在| 欧美一区二区在线视频| 91在线精品一区二区三区| 美女视频一区二区三区| 亚洲电影你懂得| 亚洲欧洲精品一区二区三区 | 亚洲成人动漫在线观看| 国产精品福利在线播放| 久久亚洲一区二区三区四区| 欧美乱妇20p| 欧洲一区二区av| 99视频在线精品| 国产91丝袜在线18| 国内精品自线一区二区三区视频| 亚洲成人黄色影院| 一区二区日韩av| 亚洲欧美精品午睡沙发| 国产女人18毛片水真多成人如厕 | 欧美一级免费大片| 在线精品视频免费播放| 成人免费不卡视频| 国产一区二区三区国产| 久久国产人妖系列| 美女一区二区在线观看| 日本最新不卡在线| 日本成人在线电影网| 天天操天天干天天综合网| 亚洲一区二区在线视频| 夜夜嗨av一区二区三区网页| 亚洲免费观看高清完整版在线 | 欧美性xxxxxx少妇| 色综合天天综合网天天看片| av一区二区不卡| 99久久er热在这里只有精品15| 国产69精品久久777的优势| 国产成人在线观看| 福利一区二区在线| 国产91富婆露脸刺激对白| 成人激情图片网| 成人av电影在线网| 色激情天天射综合网| 欧美日韩激情一区| 欧美一级片在线| 久久久久久久久久久黄色| 国产亚洲制服色| 成人欧美一区二区三区视频网页| 亚洲免费观看高清| 日本视频在线一区| 韩国v欧美v日本v亚洲v| jlzzjlzz欧美大全| 欧美日韩中文另类| 欧美tk丨vk视频| 日本一区二区三区免费乱视频| 亚洲人精品一区| 天堂va蜜桃一区二区三区漫画版| 奇米影视7777精品一区二区| 国产伦精品一区二区三区免费迷| 丁香婷婷综合网| 欧美精品三级日韩久久| 精品卡一卡二卡三卡四在线| 一色桃子久久精品亚洲| 日韩va欧美va亚洲va久久| 国产成人在线影院| 在线观看视频一区二区欧美日韩| 欧美一区二区三区色| 中文在线资源观看网站视频免费不卡 | 亚洲成年人网站在线观看| 免费成人深夜小野草| av不卡在线播放| 在线一区二区三区| 亚洲精品在线电影| 一区二区在线免费观看| 国产乱对白刺激视频不卡| 91啪九色porn原创视频在线观看| 制服丝袜激情欧洲亚洲| 五月天亚洲婷婷| 国产又粗又猛又爽又黄91精品| 色丁香久综合在线久综合在线观看| 欧美一区二区三区在线电影| 国产精品九色蝌蚪自拍| 免费在线观看日韩欧美| 色综合久久综合| 久久精品男人天堂av| 婷婷成人激情在线网| 岛国精品在线观看| 欧美一级欧美一级在线播放| 日韩一区在线看| 国产91综合网| 精品国产1区二区| 首页亚洲欧美制服丝腿| 色屁屁一区二区| 国产精品免费免费| 国产一区在线观看麻豆| 欧美乱妇23p| 亚洲最新在线观看| jlzzjlzz亚洲日本少妇| 337p日本欧洲亚洲大胆精品 | 中文字幕在线观看不卡视频| 国产一区二区电影| 5858s免费视频成人| 亚洲九九爱视频| www..com久久爱| 国产精品污污网站在线观看| 国产做a爰片久久毛片| 日韩一区二区三区视频| 日日夜夜精品视频天天综合网| 日本高清不卡视频| 一区二区三区视频在线观看| 99视频国产精品| 亚洲婷婷综合色高清在线| av中文字幕不卡| 综合色天天鬼久久鬼色| 色呦呦网站一区| 亚洲午夜久久久久久久久久久| 在线一区二区三区四区五区| 一区2区3区在线看| 欧美日韩第一区日日骚|