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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gps.c.bak

?? 使用CYAN單片機的ECOG1開發(fā)板連接SIM300C的GSM模塊開發(fā)的短信收發(fā)程序.供UART和AT指令編程者參考
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
MODE:		AML--#GPS+accelerator+compass
MCU:		Cyan eCOG1k
COMPILER:	CyanIDE v1.41
FILE NAME:	GPS C source code files
******************************************************************************/

#define gps_code

/******************************************************************************
Project level include files.
******************************************************************************/

#include "gps.h"

/******************************************************************************
Declaration of static functions.
******************************************************************************/
int __irq_code _str_cmp(char *str1,char *str2);
void gps_initialization(void);
void __irq_code RMC_receive(void);
void __irq_code GGA_receive(void);
void __irq_code GSA_receive(void);
void __irq_code GSV_receive(void);
void __irq_code GPS_one_group_receive(void);
void __irq_code GPS_STR_head_receive(void);

void __irq_code GPS_data_transmit(void);
void __irq_code GPS_transmit_one_byte(char *transmit_P);

/******************************************************************************
NAME
    _str_cmp

SYNOPSIS
    int __irq_code _str_cmp(char *str1,char *str2)

FUNCTION
    Be invoked for interrupt function.
    Compares the string pointed to by str1 to the string pointed to by str2.
	Returns an integer 0(equal) or 1(not equal).

RETURNS
    0 or 1.
******************************************************************************/
int __irq_code _str_cmp(char *str1,char *str2)
{
	int cmp_value = 0;
	while((*str1 != '\0') || (*str2 != '\0'))
	{
		if(*str1 != *str2) break;
		else
		{		
			str1++;
			str2++;
		}
	}
	if((*str1 == '\0') && (*str2 == '\0')) cmp_value = 0;
	else cmp_value = 1;
	return(cmp_value);
}



/******************************************************************************
NAME
    usr_rx_handler

SYNOPSIS
    void __irq_entry usr_rx_handler(void)

FUNCTION
    Interrupt handler for usr receive ready
    Receive one byte data from GPS mode.

RETURNS
    Nothing.
******************************************************************************/

void __irq_entry usr_rx_handler(void)
{
	
	int test = fd.duart.a_sts.rx_1b_rdy;		// Read rx interrupt status register
	
	test += fd.duart.a_sts.rx_act;				// Ensure that the receiver is currently inactive.
	if (1 == test)								// Received character ready?
	{
		c = rg.duart.a_rx;					// Yes, read receive register
		if(c >= '\x80') goto usr_rx_handler_end;// If Receive value isn't ASCII,abandon current value.
		
		switch(c)								// Judge receive value.
		{
			case '$' :							// Receive value equ $?
				checksum = 0;					// Start count checksum;
				receive_buffer_count = 0;		// CLR receive character counter.
				str_head_flag = _GPHAD_;
				break;
			
			case CR:												// Receive value equ ENTER?
				
			case LF:												// Receive value equ line advance?
				
				break;
				
			default:												// Other value 
				checksum ^= c;										// Count checksum.
				
				switch(str_head_flag)
				{
					case _GPHAD_:
						GPS_STR_head_receive();
						break;
					
					case _GPGGA_:
						GGA_receive();
						break;
						
					case _GPGSA_:
						GSA_receive();
						break;
						
					case _GPGSV_:
						GSV_receive();
						break;
						
					case _GPRMC_:
						RMC_receive();
						break;
						
					
					default:
						break;
				}
				break;	
		}
	}
usr_rx_handler_end:
	nop();
}

/******************************************************************************
NAME
    usr_ex_handler

SYNOPSIS
    void __irq_entry usr_ex_handler(void)

FUNCTION
    Interrupt handler for usr exceptions

RETURNS
    Nothing.
******************************************************************************/

void __irq_entry usr_ex_handler(void)
{
	// Clear any exceptions
    rg.duart.a_int_clr = 0xfff2;
	// Disable any exceptions
    rg.duart.a_int_dis = 0xfff2;
}


/******************************************************************************
NAME
    gps_initialization

SYNOPSIS
    void gps_initialization(void)

FUNCTION
    Display gps fix character.

RETURNS
    Nothing.
******************************************************************************/
void gps_initialization(void)
{
	char *P;
	int i;
	P = "$GPGSA,";
	for(i = 0;i < 7;i++)
	{
		GPGSA.head[i] = *P;
		P++;
	}
	
	P = "$GPGGA,";
	for(i = 0;i < 7;i++)
	{
		GPGGA.head[i] = *P;
		P++;
	}
	
	P = "$GPRMC,";
	for(i = 0;i < 7;i++)
	{
		GPRMC.head[i] = *P;
		P++;
	}
	
	P = "$GPGSV,";
	for(i = 0;i < 7;i++)
	{
		GPGSV1.head[i] = *P;
		P++;
	}
	
	P = "$GPGSV,";
	for(i = 0;i < 7;i++)
	{
		GPGSV2.head[i] = *P;
		P++;
	}
	
	P = "$GPGSV,";
	for(i = 0;i < 7;i++)
	{
		GPGSV3.head[i] = *P;
		P++;
	}
	
	P = "$GPGSV,";
	for(i = 0;i < 7;i++)
	{
		GPGSV4.head[i] = *P;
		P++;
	}
	GPGSA.CR_LF[0] = CR;
	GPGSA.CR_LF[1] = LF;
	
	GPGGA.CR_LF[0] = CR;
	GPGGA.CR_LF[1] = LF;
	
	GPRMC.CR_LF[0] = CR;
	GPRMC.CR_LF[1] = LF;
	
	GPGSV1.CR_LF[0] = CR;
	GPGSV1.CR_LF[1] = LF;
	
	GPGSV2.CR_LF[0] = CR;
	GPGSV2.CR_LF[1] = LF;
	
	GPGSV3.CR_LF[0] = CR;
	GPGSV3.CR_LF[1] = LF;
	
	GPGSV4.CR_LF[0] = CR;
	GPGSV4.CR_LF[1] = LF;
	
	GPS_TX_ready_flag = 0;
	receive_buffer_count = 0;
	receive_flag = 0;
	temp_count = 0;
	gps_state = '0';
	GPS_TX_gradation_flag = 0;
	GPS_TX_count = 0;
	_GSV_TX_sum_ = 0;
	
	GPGGA_TX_pointer = (char *)(&GPGGA);
	GPGSA_TX_pointer = (char *)(&GPGSA);
	GPGSV1_TX_pointer = (char *)(&GPGSV1);
	GPGSV2_TX_pointer = (char *)(&GPGSV2);
	GPGSV3_TX_pointer = (char *)(&GPGSV3);
	GPGSV4_TX_pointer = (char *)(&GPGSV4);
	GPRMC_TX_pointer = (char *)(&GPRMC);
	    
}   
    
/******************************************************************************
NAME
    display_gps_data

SYNOPSIS
    void display_gps_data(void)

FUNCTION
    Display gps data.

RETURNS
    Nothing.
******************************************************************************/

/******************************************************************************
end
******************************************************************************/

void __irq_code RMC_receive(void)
{
	switch(receive_flag)
	{
		case RMC_TIME:									// Receive UTC time character.
			if(c != ',')
			{
				GPRMC.UTC_timer[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 10)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.UTC_timer[receive_buffer_count] = ',';
				while(receive_buffer_count < (10 - 1))
				{
					receive_buffer_count ++;
					GPRMC.UTC_timer[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_WORK_STATE;
			}
			break;
			
			
		case RMC_WORK_STATE:									// Receive UTC time character.
			if(c != ',')
			{
				GPRMC.work_state[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 2)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.work_state[receive_buffer_count] = ',';
				while(receive_buffer_count < (2 - 1))
				{
					receive_buffer_count ++;
					GPRMC.work_state[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_LATITUDE;
			}
			break;
		
		case RMC_LATITUDE :								// Receive latitude character.
			if(c != ',')
			{
				GPRMC.latitude[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 10)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.latitude[receive_buffer_count] = ',';
				while(receive_buffer_count < (10 - 1))
				{
					receive_buffer_count ++;
					GPRMC.latitude[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_LATITUDE_ASPECT;
			}
			break;
			
		
		case RMC_LATITUDE_ASPECT:						// Receive latitude aspect character.
			if(c != ',')
			{
				GPRMC.latitude_aspect[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 2)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.latitude_aspect[receive_buffer_count] = ',';
				while(receive_buffer_count < (2 - 1))
				{
					receive_buffer_count ++;
					GPRMC.latitude_aspect[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_LONGITUDE;
			}
			break;
		
		
		case RMC_LONGITUDE:								// Receive longitude character.
			if(c != ',')
			{
				GPRMC.longitude[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 11)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.longitude[receive_buffer_count] = ',';
				while(receive_buffer_count < (11 - 1))
				{
					receive_buffer_count ++;
					GPRMC.longitude[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_LONGITUDE_ASPECT;
			}
			break;
		
		
		case RMC_LONGITUDE_ASPECT:						// Receive longitude aspect character.
			if(c != ',')
			{
				GPRMC.longitude_aspect[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 2)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.longitude_aspect[receive_buffer_count] = ',';
				while(receive_buffer_count < (2 - 1))
				{
					receive_buffer_count ++;
					GPRMC.longitude_aspect[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_SPEED;
			}
			break;
			
		
		
		case RMC_SPEED:									// Receive speed character.
			if(c != ',')
			{
				GPRMC.speed[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 6)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.speed[receive_buffer_count] = ',';
				while(receive_buffer_count < (6 - 1))
				{
					receive_buffer_count ++;
					GPRMC.speed[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_ASPECT;
			}
			break;
		
		case RMC_ASPECT:									//Not receive aspect character.
			if(c != ',')
			{
				GPRMC.bearing_pointer[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 6)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.bearing_pointer[receive_buffer_count] = ',';
				while(receive_buffer_count < (6 - 1))
				{
					receive_buffer_count ++;
					GPRMC.bearing_pointer[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_DATE;
			}
			break;	
			
			
		case RMC_DATE:									// Receive UTC date character.
			if(c != ',')
			{
				GPRMC.UTC_date[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 7)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.UTC_date[receive_buffer_count] = ',';
				while(receive_buffer_count < (7 - 1))
				{
					receive_buffer_count ++;
					GPRMC.UTC_date[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_SUN_DATA1;
			}
			break;
			
			
		case RMC_SUN_DATA1:									// Receive UTC date character.
			if(c != ',')
			{
				GPRMC.sun_data1[receive_buffer_count] = c;
				receive_buffer_count++;
				if(receive_buffer_count == 6)
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.sun_data1[receive_buffer_count] = ',';
				while(receive_buffer_count < (6 - 1))
				{
					receive_buffer_count ++;
					GPRMC.sun_data1[receive_buffer_count] = ' ';
					
				}
				
				receive_buffer_count = 0;
				receive_flag = RMC_SUN_DATA2;
			}
			break;
			
		case RMC_SUN_DATA2:									// Receive UTC date character.
		
			if(c != '*')
			{
				GPRMC.sun_data2[receive_buffer_count] = c;
				if((++receive_buffer_count) > (4 - 1))
				{
					receive_buffer_count--;
				}
			}
			else
			{
				GPRMC.end_flag = '*';
				
				c2 = checksum & 0x0f; c1 = ((checksum >> 4) & 0x0f);	// Change checksum to ASCII.
				if (c1 < 10) c1+= '0'; else c1 += 'A' - 10;
				if (c2 < 10) c2+= '0'; else c2 += 'A' - 10;
				
				while(receive_buffer_count < (4 - 1))
				{
					receive_buffer_count ++;
					GPRMC.sun_data2[receive_buffer_count] = ' ';
				}
				
				receive_flag = RMC_CHECKSUM;
				receive_buffer_count = 0;
			}
			break;
			
		case RMC_CHECKSUM:									// Receive UTC date character.
			
				GPRMC.checksum[receive_buffer_count] = c;
				if(receive_buffer_count++ >= 1)
				{
					if((c1 == GPRMC.checksum[0]) && (c2 == GPRMC.checksum[1]))
					{
						
					}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲同性同志一二三专区| 欧美日韩精品电影| 国产夜色精品一区二区av| 久久狠狠亚洲综合| 久久―日本道色综合久久| 国内精品久久久久影院薰衣草 | 日韩av二区在线播放| 欧美精品日韩一区| 美日韩黄色大片| 久久青草国产手机看片福利盒子 | 亚洲精品一区二区三区影院 | 国产成人综合亚洲91猫咪| 国产欧美日韩一区二区三区在线观看| 国产精品一区二区久久精品爱涩 | 国产成人av在线影院| 中文字幕一区二区三区色视频| 色先锋久久av资源部| 五月婷婷久久综合| 26uuu亚洲综合色| 91色porny| 日本aⅴ亚洲精品中文乱码| 久久麻豆一区二区| 91福利精品第一导航| 免费欧美在线视频| 国产精品福利电影一区二区三区四区| 欧美伊人精品成人久久综合97| 久久精品国产77777蜜臀| 国产精品日韩成人| 7777精品伊人久久久大香线蕉最新版| 国产一区二区成人久久免费影院| 亚洲人成伊人成综合网小说| 在线播放视频一区| 国产mv日韩mv欧美| 五月天中文字幕一区二区| 国产欧美一区二区精品婷婷 | 成人欧美一区二区三区白人 | 欧美日韩一区不卡| 国产成人aaa| 午夜精品久久久| 国产精品久久久久久久久动漫| 欧美乱妇一区二区三区不卡视频| 国产 日韩 欧美大片| 天天影视网天天综合色在线播放| 日本一区二区成人| 日韩一卡二卡三卡国产欧美| 91亚洲精品乱码久久久久久蜜桃 | 色综合视频一区二区三区高清| 免费不卡在线观看| 一个色综合av| 国产精品丝袜久久久久久app| 欧美一区二区视频观看视频 | 9191国产精品| 91美女片黄在线观看| 福利一区在线观看| 精品在线免费观看| 日韩电影在线一区二区三区| 一区二区三区四区在线免费观看 | 亚洲成人激情社区| 国产精品久久久久一区二区三区 | 国产一区二区三区最好精华液 | 久久精品国产**网站演员| 亚洲最新视频在线观看| 亚洲欧洲成人精品av97| 久久久久九九视频| 亚洲精品一区二区三区四区高清| 欧美一区二区三区成人| 欧美日韩高清一区二区不卡| 日本韩国精品一区二区在线观看| av电影在线不卡| 国产**成人网毛片九色 | 毛片基地黄久久久久久天堂| 亚洲综合图片区| 亚洲小说欧美激情另类| 亚洲黄色片在线观看| 一区二区在线观看免费视频播放| 亚洲欧美在线视频观看| 亚洲欧美日韩国产手机在线| 国产精品乱人伦中文| 成人免费一区二区三区在线观看| 中文字幕一区在线| 亚洲人成7777| 亚洲午夜三级在线| 丝袜脚交一区二区| 人妖欧美一区二区| 国产美女精品一区二区三区| 国产高清精品在线| 99久久综合色| 在线免费观看视频一区| 欧美日韩aaaaaa| 日韩欧美在线不卡| 国产偷国产偷精品高清尤物| 国产精品乱人伦| 亚洲欧美日韩一区二区| 亚洲成人av一区| 免费看日韩a级影片| 国产真实乱偷精品视频免| 国产精品亚洲午夜一区二区三区| 丁香五精品蜜臀久久久久99网站| 99国产精品99久久久久久| 色婷婷激情久久| 欧美日韩aaaaaa| 久久久久久久综合日本| 中文字幕在线不卡国产视频| 亚洲精品美国一| 日本在线观看不卡视频| 国产一区二区毛片| 91在线国产福利| 欧美人与禽zozo性伦| 久久久一区二区| 亚洲美女屁股眼交| 九九国产精品视频| 91麻豆123| 欧美电影免费观看完整版| 国产精品久久久久久久久动漫 | 婷婷六月综合网| 国产真实乱偷精品视频免| 色综合天天综合给合国产| 欧美日韩色综合| 国产亚洲精品aa| 亚洲电影第三页| 成人综合在线观看| 欧美人妇做爰xxxⅹ性高电影| 337p日本欧洲亚洲大胆色噜噜| 日韩一区在线播放| 韩国毛片一区二区三区| 色欧美日韩亚洲| 久久久99久久| 日韩精品乱码av一区二区| 懂色av中文一区二区三区| 欧美日本一区二区三区四区| 欧美激情一区二区三区不卡| 偷偷要91色婷婷| 色综合天天做天天爱| 26uuu精品一区二区三区四区在线| 亚洲精品免费播放| 国产成人在线视频网址| 欧美一级在线免费| 一区二区三区在线观看视频| 国产成人综合视频| 日韩视频永久免费| 亚洲高清在线精品| 在线免费观看不卡av| 久久久久久久久久美女| 日韩高清国产一区在线| 欧美午夜理伦三级在线观看| 国产精品人妖ts系列视频| 久久99精品久久久久久国产越南| 欧美日本国产视频| 亚洲午夜国产一区99re久久| 成人美女视频在线看| 欧美精品一区二区三区四区| 免费观看在线色综合| 欧美日韩精品一区二区天天拍小说| 自拍偷拍欧美激情| 成人免费看黄yyy456| 精品国产a毛片| 极品少妇一区二区三区精品视频| 欧美日韩一本到| 亚洲午夜在线观看视频在线| 在线观看中文字幕不卡| 亚洲欧美一区二区三区极速播放| 国产69精品久久久久777| 精品成人一区二区三区| 国产资源精品在线观看| 精品福利一区二区三区免费视频| 蜜臀精品一区二区三区在线观看 | 极品尤物av久久免费看| 欧美成人一区二区三区| 九九视频精品免费| 久久久99精品免费观看| 国产v综合v亚洲欧| 亚洲图片另类小说| 欧美亚洲高清一区| 五月天久久比比资源色| 日韩亚洲欧美高清| 久久激情五月激情| 欧美激情一区三区| 91免费看视频| 亚洲国产欧美在线| 日韩一区二区三区免费看| 麻豆91在线播放| 久久久久久黄色| 色综合天天综合色综合av | 欧美精品一区二区三区蜜桃视频| 国内偷窥港台综合视频在线播放| 久久综合九色综合久久久精品综合| 狠狠色伊人亚洲综合成人| 国产精品污污网站在线观看| 一本色道综合亚洲| 午夜私人影院久久久久| 精品国产凹凸成av人网站| 大尺度一区二区| 亚洲在线中文字幕| 日韩免费成人网| www.亚洲免费av| 日日摸夜夜添夜夜添国产精品 | 欧美精品久久一区二区三区| 精久久久久久久久久久| 亚洲视频图片小说| 3d动漫精品啪啪|