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

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

?? modem.c

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

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

/*********************************************************************************************************
** 函數(shù)名稱: 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;                                   /* 允許接收和發(fā)送中斷 */
    U1FCR = 0x87;                                   /* 初始化FIFO */
    U1MCR = 0x03;
    Uart1Send = OSSemCreate(1);
    Uart1Get = OSSemCreate(0);

}

/*********************************************************************************************************
** 函數(shù)名稱: GetModemState
** 功能描述: 獲取MODEM狀態(tài)
** 輸 入: 無
**        
** 輸 出: MODEM狀態(tài)
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 GetModemState(void)
{
    return ModemState;
} 

/*********************************************************************************************************
** 函數(shù)名稱: ModemWrite
** 功能描述: 發(fā)送多個字節(jié)數(shù)據(jù)
** 輸 入: Data:發(fā)送數(shù)據(jù)存儲位置
**        NByte:發(fā)送數(shù)據(jù)個數(shù)
** 輸 出:無
** 全局變量: 無
** 調用模塊: 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;
} 

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

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

    return rt;
} 
/*********************************************************************************************************
** 函數(shù)名稱: ModemDialUp
** 功能描述: 通過modem撥號 
** 輸 入: 電話號碼
**
** 輸 出: modem狀態(tài)
**
** 全局變量: 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;
}
/*********************************************************************************************************
** 函數(shù)名稱: ModemDialDown
** 功能描述: 掛斷modem 
** 輸 入: 無
**
** 輸 出: modem狀態(tài)
**
** 全局變量: 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;
}

/*********************************************************************************************************
** 函數(shù)名稱: ModemCommand
** 功能描述: 向modem發(fā)送命令 
** 輸 入: 命令字符串
**
** 輸 出: modem狀態(tài)
**
** 全局變量: 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;
}
/*********************************************************************************************************
** 函數(shù)名稱: ModemInit
** 功能描述: 初始化Modem 
** 輸 入: 波特率
**
** 輸 出: modem狀態(tài)
**
** 全局變量: 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;
}

/*********************************************************************************************************
** 函數(shù)名稱: 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狀態(tài)變化 中斷    */
                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:                                  /* 接收數(shù)據(jù)可用 */
                OSSemPost(Uart1Get);
                U1IER &= (~0x01);                       /* 禁止接收及字符超時中斷 */
                break;
            case 0x06:                                  /* 接收線狀態(tài)   */
                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| 国产午夜精品久久久久久免费视 | 亚洲天堂网中文字| 免费高清在线视频一区·| 99re亚洲国产精品| 精品国产一区久久| 亚洲一二三四区| 国产99一区视频免费| 日韩欧美黄色影院| 日韩成人精品视频| 在线观看免费成人| 亚洲天堂a在线| 成人网男人的天堂| 亚洲精品在线观| 日产精品久久久久久久性色| 欧美性淫爽ww久久久久无| 青草国产精品久久久久久| 99精品偷自拍| 中文字幕一区二区视频| 国产激情视频一区二区三区欧美 | 国产精品久久久爽爽爽麻豆色哟哟| 日韩精品一二三四| 欧美唯美清纯偷拍| 亚洲欧洲日韩一区二区三区| 成人性色生活片免费看爆迷你毛片| 精品处破学生在线二十三| 人妖欧美一区二区| 欧美刺激午夜性久久久久久久| 日本成人超碰在线观看| 日韩一区二区中文字幕| 麻豆精品国产91久久久久久 | 91久久线看在观草草青青| 国产精品久久久久久久久动漫| 国产一区美女在线| 国产日韩欧美麻豆| 成人美女视频在线观看| 国产亲近乱来精品视频| 成人av电影在线| 亚洲靠逼com| 在线免费观看日本一区| 亚洲成人免费观看| 91精品久久久久久久91蜜桃| 琪琪久久久久日韩精品| 欧美精品一区二区三区蜜臀| 国产剧情在线观看一区二区| 国产精品―色哟哟| 99re热视频精品| 亚洲电影一级黄| 欧美zozo另类异族| 成人激情视频网站| 亚洲一级二级在线| 欧美大度的电影原声| 国产盗摄视频一区二区三区| ㊣最新国产の精品bt伙计久久| 91麻豆文化传媒在线观看| 日韩福利电影在线观看| 久久久99久久| 在线观看亚洲a| 久久国产欧美日韩精品| 午夜精品免费在线| 亚洲成人免费在线观看| 99re热这里只有精品视频| 亚洲欧洲精品一区二区精品久久久 | 男男视频亚洲欧美| 国产亚洲精品bt天堂精选| 欧美中文字幕久久| 麻豆91在线播放免费| 国产精品国产三级国产普通话蜜臀 | 一本到不卡免费一区二区| 日本怡春院一区二区| 欧美国产精品v| 欧美伦理影视网| 不卡av免费在线观看| 天天综合天天做天天综合| 亚洲国产成人私人影院tom | 日本久久电影网| 久久精品国产精品亚洲红杏| 中文成人av在线| 日韩一级二级三级| 欧洲人成人精品| 国产精品白丝av| 亚洲国产乱码最新视频| 国产人妖乱国产精品人妖| 91精品欧美福利在线观看| 一本一道波多野结衣一区二区| 狠狠色丁香九九婷婷综合五月| 亚洲一区在线观看视频| 国产精品女同互慰在线看| 欧美一级xxx| 欧美乱妇15p| 在线视频亚洲一区| 成人福利视频网站| 久草精品在线观看| 美女视频免费一区| 三级久久三级久久久| 亚洲在线观看免费| 亚洲激情五月婷婷| 亚洲欧洲中文日韩久久av乱码| 国产女人aaa级久久久级 | 国产一区二三区好的| 午夜精彩视频在线观看不卡| 一个色妞综合视频在线观看| 国产精品久久久久久久久晋中| 久久新电视剧免费观看| 精品电影一区二区| 精品国产成人在线影院| 26uuu色噜噜精品一区二区| 欧美精品一级二级| 在线综合视频播放| 在线综合+亚洲+欧美中文字幕| 欧美日韩一区三区| 欧美亚一区二区| 欧美猛男超大videosgay| 欧美老人xxxx18| 欧美精品电影在线播放| 91精品在线观看入口| 91精品国产综合久久精品| 69精品人人人人| 精品免费一区二区三区| 精品国产乱码久久久久久免费| 久久综合av免费| 国产精品人人做人人爽人人添 | 亚洲成a人片在线不卡一二三区| 亚洲午夜精品一区二区三区他趣| 亚洲国产一区二区视频| 日韩高清国产一区在线| 久草这里只有精品视频| 丁香网亚洲国际| av中文字幕一区| 欧美日韩国产片| 久久久另类综合| 国产精品国产成人国产三级| 亚洲免费视频成人| 喷白浆一区二区| 懂色中文一区二区在线播放| 99久久综合国产精品| 欧美日韩一区二区三区高清 | 国产精品自产自拍| 北岛玲一区二区三区四区| 91九色最新地址| 日韩欧美在线影院| 国产精品乱码一区二区三区软件| 伊人开心综合网| 久久99精品国产| 成人激情动漫在线观看| 欧美久久久久免费| 亚洲国产成人自拍| 日韩电影在线一区二区| 成人爱爱电影网址| 欧美精品电影在线播放| 国产精品久久福利| 免费日韩伦理电影| av动漫一区二区| 欧美一级在线观看| 国产精品电影一区二区三区| 五月婷婷色综合| 成人午夜激情视频| 欧美日韩激情一区| 国产精品国产a| 国产一区久久久| 911精品产国品一二三产区| 亚洲国产精品国自产拍av| 亚洲女同女同女同女同女同69| 美腿丝袜亚洲一区| 欧美日韩视频专区在线播放| 国产精品短视频| 国产一本一道久久香蕉| 91精品国产入口在线| 亚洲视频一二三区| 岛国av在线一区| 精品福利视频一区二区三区| 亚洲小说春色综合另类电影| 成人免费av资源| 欧美tickling网站挠脚心| 一区二区高清在线| 99精品国产热久久91蜜凸| 国产日本欧美一区二区| 韩国精品在线观看| 日韩亚洲欧美综合| 奇米精品一区二区三区在线观看 | 夫妻av一区二区| 26uuu另类欧美亚洲曰本| 日本伊人色综合网| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久久久久久电影| 国产麻豆成人传媒免费观看| 日韩欧美精品在线视频| 日韩高清在线一区| 91精品国产综合久久久久久漫画 | 成人午夜激情片| 欧美精彩视频一区二区三区| 精品综合久久久久久8888| 欧美一区二区三区在线| 日韩影院精彩在线| 制服丝袜亚洲播放| 蜜桃91丨九色丨蝌蚪91桃色| 日韩精品一区二区在线| 精品在线观看视频| 国产日韩欧美a|