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

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

?? modem.c

?? 在S3C2440上運行的"電子日歷“(支持平年,閏年,星期自動調整). 開發環境是RVDS2.2
?? C
字號:
/**---------------------版權 (c)----------------------------------------------------------***
***                     作者:顏章健                                                      ***
***                     郵件:jenkinyan@163.com                                           ***
***                                                                                       ***
***---------------------File Info---------------------------------------------------------***
*** 創 建 人:          顏章健                                                            ***
*** 創建日期:          2008-03-08                                                        ***
*** 創建版本:                                                                            ***
*** 文件描述:                                                                            ***
***---------------------------------------------------------------------------------------***
*** 修 訂 人:                                                                            ***
*** 修訂日期:                                                                            ***
*** 修訂版本:                                                                            ***
*** 修訂描述:                                                                            ***
***---------------------------------------------------------------------------------------**/
#include 	"config.h"

// 全局變量
PHY_LAYER		PhyLayer;
//static	uint8	EventUp;


/********************************************************************************************
*** 函數名稱:	StrToInt
*** 函數描述:	字符串轉換成32位整形變量
*** 入    口:	s:字符串
*** 出    口:	轉換數值
********************************************************************************************/
/*
static uint32 StrToInt(char *s)
{
	const uint32 tab[10] = {1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
	uint32 val = 0;
	int8   i;	
	uint8  cnt,tmp;
	char   *bak;
	
	bak = s;
	while(*s)	
	{
		tmp = *s++;
        if((tmp < 0x30) || (tmp > 0x39))	return 0;	// 字符無效
		cnt++;
	}
	
	cnt--;
	for(i=cnt; i>=0; i--)
	{
		tmp = (*bak++) - 0x30;
		val = val + tmp * tab[i];
	}
	
	return val;
}*/

/********************************************************************************************
*** 函數名稱:	Delay		
*** 函數描述:	軟件延時		
*** 入    口:	t:延時參數		
*** 出    口:	無		
********************************************************************************************/
static void		Delay(uint32 t)	{while(--t);}

/********************************************************************************************
*** 函數名稱:  ModemLinkOk
*** 函數描述:  檢查 MODEM 是否已建立載波連接
*** 入    口:  無
*** 出    口:  1:成功			0:失敗	
********************************************************************************************/
uint8	ModemLinkOk(void) 
{
	if(IO0PIN & UART1_DCD)	return 0;	
	else 					return 1;
}

/********************************************************************************************
*** 函數名稱:	ModemSetBaud		
*** 函數描述:	設置MODEM 波特率		
*** 入    口:	baud:波特率(單位:bps)		
*** 出    口:	無		
********************************************************************************************/
/*
static	void	Uart1SetBaud(uint32 baud)
{
	uint16	Fdiv;
	uint8 	bak;
	Fdiv  = (Fpclk >> 4) / baud;			// 計算波特率計數器	
	
	bak   = U1LCR;							// 備份	U1LCR
	U1LCR = bak & 0x7f;						// 允許訪問分頻因子寄存器    
    U1DLM = Fdiv >> 8;						// 設置波特率計數器
	U1DLL = Fdiv & 0xff;					// 設置波特率計數器
    U1LCR = bak;							// 恢復U1LCR
}*/

/********************************************************************************************
*** 函數名稱:	Uart1Init		
*** 函數描述:	UART1初始化		
*** 入    口:	baud:波特率(單位:bps)		
*** 出    口:	無		
********************************************************************************************/
void	Uart1Init(uint32 baud)
{
	uint16 Fdiv;
	
	PINSEL0 = (PINSEL0 & (~(0x03<<16  )))|(0x01<<16);	// P0.8  設置為 UART1 TXD
	PINSEL0 = (PINSEL0 & (~(0x03<<18  )))|(0x01<<18);	// P0.9  設置為 UART1 RXD
	PINSEL0 = (PINSEL0 & (~(0x03<<20  )))|(0x00<<20);	// P0.10 設置為 UART1 DTR (GPIO)
	PINSEL0 = (PINSEL0 & (~(0x03<<22  )))|(0x00<<22);	// P0.11 設置為 UART1 DCD (GPIO)
	IO0DIR |= UART1_DTR;					// DTR 設置為輸出
	IO0DIR &= (~(UART1_DCD));				// DCD 設置為輸入
	IO0SET  = UART1_DTR;					// 數據終端(UART1)準備好
	
	U1LCR = 0x83;							// DLAB=1,允許設置波特率
	Fdiv  = (Fpclk / 16) / baud;			// 設置波特率
	U1DLM = Fdiv / 256;
	U1DLL = Fdiv % 256;
    U1LCR = 0x03;							// 設置為8,1,n 格式
	U1IER = 0x01;							// 僅允許 RBR 中斷
    U1FCR = 0xc1;							// 初始化FIFO,觸發點為14個字節
}


/********************************************************************************************
*** 函數名稱:	ModemWriteByte		
*** 函數描述:	發送單個字節數據		
*** 入    口:	dat:	要發送的數據		
*** 出    口:	無		
********************************************************************************************/
void 	ModemWriteByte(uint8 dat)
{
	U1THR = dat;
	while ((U1LSR & 0x40) == 0);
}


/********************************************************************************************
*** 函數名稱:	ModemPutCmd		
*** 函數描述:	發送命令		
*** 入    口:	*command	AT命令		
*** 出    口:	無			
********************************************************************************************/
void	ModemPutCmd(char *command)
{
	while(*command)		ModemWriteByte(*command++);
}

/********************************************************************************************
*** 函數名稱:	ModemGetCmd		
*** 函數描述:	檢查回顯命令中是否包含有指定字符串		
*** 入    口:	*command	AT命令		
*** 出    口:	返回指定字符串所處偏移量		
********************************************************************************************/
uint16	ModemGetCmd(char *command)
{
	uint8 	success = 0;
	char	*cmd;
	uint16	ofs = 0xffff;
	uint16	offset = 0;

	
	if(RxFifo.DatLen == 0)			return	0xffff;
	while(1)
	{
		if(offset > RxFifo.DatLen)	return	0xffff;
		//if(RxFifo.Read(offset) == *command)				// 搜索到字符串第一個字符
		if(ModemFifoRead(offset) == *command)
		{
			ofs = offset;
			cmd = command;
			success = 1;
			while(*cmd)									// 檢查整個字符串是否匹配
			{
				if(ofs > RxFifo.DatLen)	return	0xffff;
				//if(RxFifo.Read(ofs++) != *cmd++)		// 字符串不匹配,停止檢查
				if(ModemFifoRead(ofs++) != *cmd++)
				{
					success = 0;	
					break;
				}
			}
			if(success == 1)	return	offset;	
		}		
		offset++;										// 繼續搜索下一個			
	}	
}

/********************************************************************************************
*** 函數名稱:	ModemOpen		
*** 函數描述:	MODEM 撥號		
*** 入    口:	無	
*** 出    口:	1:成功			0:失敗		
********************************************************************************************/
uint8	ModemOpen(void)
{
	if(ModemLinkOk())	return 1;
	
	
	ModemPutCmd("AT+CGATT=1\r\n");
	while(ModemGetCmd("OK") > RxFifo.DatLen);	
	//RxFifo.Release(RxFifo.BufLen);
	ModemFifoRelease(RxFifo.BufLen);
	
	ModemPutCmd("AT+CGDCONT=1,IP,CMNET\r\n");	// China Mobile
	//ModemPutCmd("AT+CGDCONT=1,IP,UNIWAP\r\n");	// China Unicom
	while(ModemGetCmd("OK") > RxFifo.DatLen);	
	//RxFifo.Release(RxFifo.BufLen);
	ModemFifoRelease(RxFifo.BufLen);
	
	ModemPutCmd("AT+CGACT=1\r\n");
	while(ModemGetCmd("OK") > RxFifo.DatLen);	
	//RxFifo.Release(RxFifo.BufLen);
	ModemFifoRelease(RxFifo.BufLen);
	
	ModemPutCmd("ATD*99***1#\r\n");
	while(ModemGetCmd("CONNECT") > RxFifo.DatLen);	
	//RxFifo.Release(RxFifo.BufLen);
	ModemFifoRelease(RxFifo.BufLen);
	
	if(ModemLinkOk())	return	1;
	else				return	0;

}

/********************************************************************************************
*** 函數名稱:	ModemClose		
*** 函數描述:	MODEM 掛機		
*** 入    口:	無		
*** 出    口:	1:成功			0:失敗		
********************************************************************************************/
uint8	ModemClose(void)
{
	IO0CLR = UART1_DTR;		Delay(10000);
	IO0SET = UART1_DTR;		Delay(5000000);
	
	if(ModemLinkOk())		
	{
		return 0;			
	}
	else					
	{
		//RxFifo.Release(RxFifo.BufLen);
		ModemFifoRelease(RxFifo.BufLen);
		return 1;		
	}
}

/********************************************************************************************
*** 函數名稱:			
*** 函數描述:			
*** 入    口:			
*** 出    口:			
********************************************************************************************/
/*
uint8	ReadEvent(void)
{
	uint8 Event;
	
	Event = EventUp;
	EventUp = PHYE_NONE;
	return	Event;	
}*/


/********************************************************************************************
*** 函數名稱:			
*** 函數描述:			
*** 入    口:			
*** 出    口:			
********************************************************************************************/
uint8	ModemInit(char *baud)
{
	//EventUp = PHYE_NONE;
	
	FifoInit();
	PINSEL0 = (PINSEL0 & (~(0x03<<14  )))|(0x00<<14);	// P0.10 設置為 MC35_IGT (GPIO)
	IO0DIR |= MC35_IGT;
	IO0CLR  = MC35_IGT;	Delay(1000000);
	IO0SET  = MC35_IGT;	Delay(80000000);
	
	// 物理層初始化
	//EventUp = PHYE_NONE;
	//PhyLayer.Event		= ReadEvent;
	/*
	PhyLayer.Pop		= RxFifo.Pop;
	PhyLayer.Read		= RxFifo.Read;
	PhyLayer.Relea		= RxFifo.Release;
	*/
	PhyLayer.Pop		= ModemFifoPop;
	PhyLayer.Read		= ModemFifoRead;
	PhyLayer.Relea		= ModemFifoRelease;
	
	PhyLayer.Open		= ModemOpen;
	PhyLayer.Close		= ModemClose;
	PhyLayer.PutCmd		= ModemPutCmd;
	PhyLayer.GetCmd		= ModemGetCmd;	
	PhyLayer.Write		= ModemWriteByte;
	
	ModemClose();
	Uart1Init(56000);

	//RxFifo.Release(RxFifo.BufLen);			// 清空FIFO
	ModemFifoRelease(RxFifo.BufLen);
	return 1;
}

/********************************************************************************************
*** 函數名稱:			
*** 函數描述:			
*** 入    口:			
*** 出    口:			
********************************************************************************************/
void	__irq IRQ_MODEM (void)
{
	uint8 i;

	switch(U1IIR & 0x0f)
	{
		case	0x04:						// FIFO 達到觸發點
			for(i=0; i<14; i++)
			{
				ModemFifoPush(U1RBR);
			}
			break;
		case	0x0c:						// FIFO 字符超時
			while(U1LSR & 0x01)
			{
				ModemFifoPush(U1RBR);
			}
			break;
		default:	break;
	}
	
	VICVectAddr = 0x00;	
}

/********************************************************************************************
*** 					文件結束														  ***	
********************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人永久看片免费视频天堂| 色偷偷久久一区二区三区| 国产一区美女在线| 菠萝蜜视频在线观看一区| 色哟哟精品一区| 精品视频123区在线观看| 一本久久a久久免费精品不卡| 在线免费不卡电影| 日韩丝袜情趣美女图片| 中文字幕电影一区| 国产精品婷婷午夜在线观看| 国产精品久久久久aaaa| 日韩中文字幕亚洲一区二区va在线| 精品一区二区三区影院在线午夜| 大白屁股一区二区视频| 欧美精品 国产精品| 国产精品久久久久久久久晋中 | √…a在线天堂一区| 视频在线观看91| 成人av电影在线观看| 日韩一区二区免费在线电影| 亚洲欧美色图小说| 国产尤物一区二区在线| 欧美日韩国产一级| 国产欧美一区视频| 麻豆精品久久精品色综合| 91成人免费网站| 国产蜜臀av在线一区二区三区| 日韩在线a电影| 91麻豆国产精品久久| 中文字幕一区二区三区不卡| 国产91精品精华液一区二区三区 | 亚洲毛片av在线| 91老司机福利 在线| 亚洲日本在线a| 在线观看av一区| 亚洲不卡av一区二区三区| 欧洲国内综合视频| 天天操天天色综合| 91精品国产麻豆| 久久成人精品无人区| 久久久久久麻豆| 国产凹凸在线观看一区二区| 中文字幕不卡的av| 99免费精品视频| 亚洲一区二区三区不卡国产欧美| 欧洲精品中文字幕| 麻豆久久久久久| 国产日产欧美一区二区视频| 9色porny自拍视频一区二区| 亚洲精品精品亚洲| 欧美浪妇xxxx高跟鞋交| 久久99最新地址| 国产精品久久午夜| 91国偷自产一区二区三区成为亚洲经典 | 午夜国产精品一区| 日韩色在线观看| 风间由美一区二区av101 | 亚洲免费观看高清完整版在线观看熊| 色综合视频在线观看| 亚洲国产精品久久久男人的天堂| 51午夜精品国产| 国产成人午夜精品影院观看视频 | 欧美三级午夜理伦三级中视频| 五月激情六月综合| 日韩欧美视频在线| caoporn国产一区二区| 亚洲综合在线视频| 精品国产乱码久久久久久久久 | 91久久线看在观草草青青| 午夜成人免费视频| 欧美国产禁国产网站cc| 在线一区二区三区四区五区 | 亚洲精选免费视频| 日韩欧美色综合网站| 99精品久久久久久| 美女国产一区二区| 亚洲欧美另类图片小说| 欧美va亚洲va香蕉在线| 在线精品视频免费观看| 国产一区二区日韩精品| 午夜日韩在线观看| 中文字幕一区在线观看视频| 日韩免费性生活视频播放| 91美女视频网站| 国产精品原创巨作av| 日韩成人一区二区| 一区二区三区高清| 国产精品成人免费在线| 精品sm在线观看| 欧美一级片在线看| 在线观看成人免费视频| 成人国产精品免费| 国产一区二区三区av电影| 五月综合激情网| 亚洲综合在线第一页| 国产精品网曝门| 久久久99久久| 精品国免费一区二区三区| 欧美群妇大交群中文字幕| av不卡免费电影| 国产91丝袜在线播放九色| 奇米精品一区二区三区四区| 亚洲韩国精品一区| 一区二区三区免费看视频| 国产精品久久久久久久久晋中| 精品对白一区国产伦| 欧美一级午夜免费电影| 宅男在线国产精品| 欧美肥大bbwbbw高潮| 欧美网站大全在线观看| 色老综合老女人久久久| 91麻豆精品视频| 欧美精品一区二区在线播放| 欧美午夜一区二区| 欧美色综合天天久久综合精品| 色av一区二区| 欧美视频一区二区三区| 欧美优质美女网站| 欧美最猛性xxxxx直播| 欧美探花视频资源| 欧美精品777| 精品日本一线二线三线不卡 | 色综合色综合色综合| 色综合天天综合色综合av| 91免费观看视频| 欧美伊人久久久久久午夜久久久久| 91久久国产最好的精华液| 欧美在线不卡一区| 91精品麻豆日日躁夜夜躁| 欧美大片一区二区三区| www久久精品| 国产精品免费久久| 亚洲日本在线天堂| 天天影视涩香欲综合网| 久久99热国产| 成人一二三区视频| 91福利在线看| 日韩午夜在线观看| 国产精品色噜噜| 亚洲在线视频免费观看| 另类的小说在线视频另类成人小视频在线| 久久国产夜色精品鲁鲁99| 成人手机在线视频| 在线观看日韩av先锋影音电影院| 91精品久久久久久久91蜜桃 | 7777精品伊人久久久大香线蕉完整版 | 亚洲与欧洲av电影| 裸体一区二区三区| 成人福利视频在线| 中文字幕在线播放不卡一区| 亚洲成a人v欧美综合天堂下载 | 日韩一级高清毛片| 国产精品入口麻豆九色| 亚洲中国最大av网站| 国产呦精品一区二区三区网站| 91小视频在线观看| 亚洲精品一区二区三区影院 | 亚洲人成精品久久久久久| 热久久免费视频| 成人亚洲一区二区一| 欧美日韩国产另类不卡| 国产日韩亚洲欧美综合| 午夜视频在线观看一区| kk眼镜猥琐国模调教系列一区二区| 欧美日本韩国一区二区三区视频| 国产亚洲一本大道中文在线| 亚洲gay无套男同| 成人av先锋影音| 日韩美女天天操| 亚洲二区视频在线| 成人av中文字幕| 2019国产精品| 日韩在线一区二区三区| 91蝌蚪国产九色| 国产欧美一区二区三区沐欲 | 一区二区三区四区视频精品免费 | 成人一区在线看| 精品理论电影在线| 亚洲午夜精品在线| 91在线视频播放| 中文字幕欧美国产| 国产一区二区三区在线看麻豆| 制服丝袜激情欧洲亚洲| 亚洲五码中文字幕| 色综合久久88色综合天天6| 国产丝袜欧美中文另类| 久久99精品久久只有精品| 欧美欧美欧美欧美首页| 亚洲一区二区五区| 色呦呦一区二区三区| 中文字幕一区二区三区在线不卡| 国产成人在线视频免费播放| 亚洲精品在线观看视频| 精品系列免费在线观看| 欧美精品一区二区久久婷婷| 久久成人免费网| 精品国产一区二区亚洲人成毛片| 免费久久精品视频| 日韩欧美久久一区|