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

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

?? gps.c

?? AVR MEGA162開發(fā)摩托羅拉產(chǎn)GPS模塊FCOnOre,價(jià)格比較低廉
?? C
字號(hào):
/*----------------------------------------------------------------
		GPS采集控制單元
		
	1.GPS模塊初始化采集, 串口1 19200,需要先進(jìn)行喚醒操作,然后定期接收(中斷)位置信息

------------------------------------------------------------------*/
#include<iom162v.h>
#include <macros.h>

//帶有可選回車換行符輸出的MEGA162的雙UART程序
//發(fā)送采用查詢方式,接收采用中斷方式。晶振7.3728M,無分頻。 
unsigned char gpsbuf[100];

unsigned char uartrbuffer[100];        //uart接受緩存100字節(jié) 
unsigned char uarttbuffer[50];                //uart發(fā)送緩存50字節(jié) 
int stringlon=0; 
unsigned char urflag;
unsigned char tmpchar;

//UART0 initialisation 
// desired baud rate:1200 
// actual baud rate:1200 (0.0%) 
// char size: 8 bit 
// parity: Disabled 
void uart0_init(void) 
{ 
	UCSR0B = 0x00; //disable while setting baud rate 
	UCSR0A = 0x00; //disable while setting baud rate 
	UBRR0L =0x03; //set baud rate 
	UBRR0H=0x00; 
	UCSR0C =(1<<URSEL0)|0b00000110; 
	UCSR0B=0b10011000; //enable 
} 

#pragma interrupt_handler uart0_rx_isr:20 
void uart0_rx_isr(void) 
{ 
//uart has received a character in UDR 
	uartrbuffer[stringlon]=UDR0; 
	stringlon++; 
	urflag=1; 
	if(stringlon>=100) 
  stringlon=0; 
} 

unsigned char recgpsstate;		//GPS	接收狀態(tài)字,初始化為0
unsigned char recgpsP;			//接收緩沖區(qū)指針
unsigned char recgpslen;


//UART1 initialisation 
// desired baud rate: 19200 
// actual: baud rate:19200 (0.0%) 
// char size: 8 bit 
// parity: NONE 
void uart1_init(void) 
{ 
 UCSR1B = 0x00; //disable while setting baud rate
 UCSR1A = 0x00; //disable while setting baud rate
 UBRR1L  =0x17; //set baud rate
 UBRR1H = 0x00;
 UCSR1C = (1<<URSEL1)|0b00000110;;
 UCSR1A = 0x00; //enable
 UCSR1B = 0x98; //enable
 urflag = 0;
 recgpsstate = 0;
 recgpsP = 0;
 recgpslen = 0;
} 

#pragma interrupt_handler uart1_rx_isr:21 
void uart1_rx_isr(void) 
{ 
	//uart has received a character in UDR 
	tmpchar=UDR1;
	switch(recgpsstate)
	{
		case 0:			//檢查$字符,為一句開始
			if(tmpchar=='$'){
				recgpsstate=1;
				recgpsP=0;
				uartrbuffer[recgpsP++]=tmpchar;
			}
			else recgpsstate=0; 
			break;
		case 1:			//檢查GPRMC
			uartrbuffer[recgpsP++]=tmpchar;
			if(recgpsP>6){
				if((uartrbuffer[3]=='R')&&(uartrbuffer[4]=='M')&&(uartrbuffer[5]=='C')) 
					recgpsstate=2;
				else recgpsstate=0;
			}
			break;
		case 2:
			uartrbuffer[recgpsP++]=tmpchar;
			if((tmpchar==0x0a)&&(uartrbuffer[recgpsP-2]==0x0d)){
				recgpslen=recgpsP;
				for(recgpsP=0;recgpsP<recgpslen;recgpsP++) 
					gpsbuf[recgpsP]=uartrbuffer[recgpsP];
				urflag=1;
				recgpsstate=0;
			}else{
				if(recgpsP>120) recgpsstate=0;
			}
			break;
		default:
			recgpsstate=0;
			break;
	}
} 

//*******************************************uart字符輸出*************************** 
void putchar(int upart,unsigned char charx)            
//upart表示UART標(biāo)號(hào),0表示UART0,其他表示UART1;char0表示要發(fā)出的數(shù)據(jù); 
{ 
  int i=0;
  if(upart==0) 
  { 
      while(!(UCSR0A & 0x20)); 
      UDR0 = charx; 
  } 
  else 
  { 
	while(!(UCSR1A & 0x20)); 
   	UDR1 = charx;
  } 

} 

//******************************************uart字符輸出函數(shù)結(jié)束*************** 


//*******************************帶可選回車換行的字符串輸出函數(shù)****** 
//upart表示發(fā)出數(shù)據(jù)使用的端口號(hào)0表示使用UART0,其他表示使用UART1; 
//*s表示要發(fā)出數(shù)據(jù)的指針 
//senter0表示結(jié)尾是否使用0x0d,0表示使用,其他表示不使用 
//senter1表示結(jié)尾是否使用0x0a,0表示使用,其他表示不使用 
//stringl表示所要輸出的字符串長度,0表示無限制 
void puts(unsigned char *s,int upart,int senter0,int senter1,int stringl) 
{ 
unsigned char outchar;
stringlon=0; 
if(upart==0) 
  { 
  if(stringl==0) 
      { 
      while(*s) 
        { 
        outchar=*s;    
        putchar(0,outchar); 
        s++; 
        } 
      if(senter0==0) 
        putchar(0,0x0d); 
      if(senter1==0) 
        putchar(0,0x0a); 
      } 
  else 
      { 
      while(stringlon<=(stringl-1)) 
        { 
        outchar=*(s+stringlon); 
        putchar(0,outchar); 
        stringlon++; 
        } 
      if(senter0==0) 
        putchar(0,0x0d); 
      if(senter1==0) 
        putchar(0,0x0a);      
      } 
  } 
else 
  { 
  if(stringl==0) 
      { 
      while(*s) 
        { 
        outchar=*s; 
        putchar(1,outchar); 
        s++; 
        } 
      if(senter0==0) 
        putchar(1,0x0d); 
      if(senter1==0) 
        putchar(1,0x0a); 
      } 
  else 
      { 
      while(stringlon<=(stringl-1)) 
        { 
        outchar=*(s+stringlon); 
        putchar(1,outchar); 
        stringlon++; 
        } 
      if(senter0==0) 
        putchar(1,0x0d); 
      if(senter1==0) 
        putchar(1,0x0a);      
      } 
  } 
} 
/******************************************************
	SPI 雙機(jī)通信
*******************************************************/
#define SIZE 100     
unsigned char SPI_rx_buff[SIZE];     
unsigned char SPI_tx_buff[SIZE];     
unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overflow;     
unsigned char tx_wr_index,tx_rd_index,tx_counter,SPI_ok;   
#pragma interrupt_handler spi_stc_isr:19     
void spi_stc_isr(void)     
{     
  SPI_rx_buff[rx_wr_index] = SPDR;    //從ISP口讀出收到的字節(jié) 
  SPI_ok = 1;                         // SPI 空閑 
  if (++rx_wr_index == SIZE) rx_wr_index = 0;    //放入接收緩沖區(qū),并調(diào)整隊(duì)列指針   
  if (++rx_counter == SIZE)   
  {   
    rx_counter = 0;   
    rx_buffer_overflow = 1;   
  }   
  if (tx_counter)        //如果發(fā)送緩沖區(qū)中有待發(fā)的數(shù)據(jù)   
  {   
     --tx_counter;   
     SPDR = SPI_tx_buff[tx_rd_index]; //發(fā)送一個(gè)字節(jié)數(shù)據(jù),并調(diào)整指針   
     if (++tx_rd_index == SIZE) tx_rd_index = 0;  
     SPI_ok = 0;  
  }   
}     

unsigned char getSPIchar(void)     
{     
  unsigned char data;   
  while (rx_counter == 0);     //無接收數(shù)據(jù),等待   
  data = SPI_rx_buff[rx_rd_index];    //從接收緩沖區(qū)取出一個(gè)SPI收到的數(shù)據(jù)   
  if (++rx_rd_index == SIZE) rx_rd_index = 0;    //調(diào)整指針   
  CLI();   
  --rx_counter;   
  SEI();   
  return data;   
}     
void putSPIchar(char c)      
{      
  while (tx_counter == SIZE);//發(fā)送緩沖區(qū)滿,等待    
  CLI();    
  if (tx_counter || SPI_ok==0 )      //發(fā)送緩沖區(qū)已中有待發(fā)數(shù)據(jù)    
  {                //或SPI正在發(fā)送數(shù)據(jù)時(shí)    
    SPI_tx_buff[tx_wr_index] = c;    //將數(shù)據(jù)放入發(fā)送緩沖區(qū)排隊(duì)    
    if (++tx_wr_index == SIZE) tx_wr_index = 0;    //調(diào)整指針    
    ++tx_counter;    
  }    
  else 
  {    
    SPDR = c;        //發(fā)送緩沖區(qū)中空且SPI口空閑,直接放入SPDR由SIP口發(fā)送    
    SPI_ok = 0;      //  
  } 
  SEI();   
}
void spi_init(void)     
{     
  unsigned char temp;  
  DDRB |= (1<<PB6);    //MOSI 設(shè)置為輸出,MISO and SCK,SS = input     
  SPCR = 0xC5;    //1101 0101 SPI允許,從機(jī)模式,MSB,允許SPI中斷,極性方式01,1/16系統(tǒng)時(shí)鐘速率  
  /***************************************************
  	SPCR
  	0
  	SPIE	SPE	DORDER	MSTR	CPOL	CPHAP	SPR1	SPR0
  	中斷允許	1LSB,0 MSB								時(shí)鐘方式選擇
  				允許SPI			主從
  ***************************************************/   
  SPSR = 0x00; 		//2x 0x01    
  temp = SPSR;     
  temp = SPDR;    //清空SPI,和中斷標(biāo)志,使SPI空閑     
  SPI_ok = 1;     // SPI 空閑   
}
/**************************************************
	SPI END
***************************************************/ 

void delayms(int nsec)
{
	int i=0;
	int k=0;
	for(k=0;k<nsec;k++)
		for(i=0;i<2000;i++) asm("nop");
}
const unsigned char InitGPSBUF1[8]={0x07,0x40,0x40,0x4f,0x69,0x26,0x0d,0x0a};

const unsigned char InitGPSBUF2[32]={0x1f,0x40,0x40,0x4f,0x46,0x00,0x00,0x02,0x00,0x00,0x00,
																				0x01,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
																				0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0a,0x0d,0x0a};
const unsigned char InitGPSBUF3[31]={0x1e,0x40,0x40,0x4f,0x6a,0x00,0x00,0x0a,0x03,0x70,0x07,
																				0x3c,0xff,0x11,0x92,0x07,0x0a,0x8b,0x07,0x00,0x00,
																				0x1e,0x00,0x1e,0x00,0x12,0x00,0x12,0x9a,0x0d,0x0a};
const unsigned char InitGPSBUF4[19]={0x12,0x40,0x40,0x4f,0x61,0x04,0x00,0x05,0x00,0x05,0x14,
																				0x7f,0x00,0x01,0x01,0x01,0x40,0x0d,0x0a};
const unsigned char InitGPSBUF5[14]={0x0d,0x40,0x40,0x4f,0x74,0xff,0xff,0x10,0x01,0x00,0x00,
																				0x2a,0x0d,0x0a};
//const unsigned char InitGPSBUF5[14]={0x0d,0x40,0x40,0x4f,0x74,0x01,0x00,0x00,0x01,0x00,0x01,
//																				0x3a,0x0d,0x0a};
const unsigned char InitGPSBUF6[31]={0x14,0x24,0x50,0x4d,0x4f,0x54,0x47,0x2c,0x47,0x47,0x41,
																				0x2c,0x30,0x30,0x30,0x31,0x2a,0x30,0x31,0x0d,0x0a};
const unsigned char InitGPSBUF7[31]={0x14,0x24,0x50,0x4d,0x4f,0x54,0x47,0x2c,0x52,0x4d,0x43,
																				0x2c,0x30,0x30,0x30,0x31,0x2a,0x31,0x43,0x0d,0x0a};
const unsigned char InitGPSBUF8[31]={0x14,0x24,0x50,0x4d,0x4f,0x54,0x47,0x2c,0x56,0x54,0x47,
																				0x2c,0x30,0x30,0x30,0x31,0x2a,0x30,0x35,0x0d,0x0a};
const unsigned char InitGPSBUF9[31]={0x14,0x24,0x50,0x4d,0x4f,0x54,0x47,0x2c,0x47,0x53,0x41,
																				0x2c,0x30,0x30,0x30,0x31,0x2a,0x31,0x35,0x0d,0x0a};
const unsigned char InitGPSBUF10[31]={0x14,0x24,0x50,0x4d,0x4f,0x54,0x47,0x2c,0x47,0x53,0x56,
																				0x2c,0x30,0x30,0x30,0x31,0x2a,0x30,0x32,0x0d,0x0a};
void init_FCOnOre(void)
{
	unsigned char buflen=0;
	unsigned char j=0;
	buflen=InitGPSBUF1[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF1[j+1]);
	delayms(1500);
	buflen=InitGPSBUF2[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF2[j+1]);
	delayms(100);
	buflen=InitGPSBUF3[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF3[j+1]);
	delayms(100);
	buflen=InitGPSBUF4[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF4[j+1]);
	delayms(100);
	buflen=InitGPSBUF5[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF5[j+1]);
	delayms(100);

	buflen=InitGPSBUF6[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF6[j+1]);
	delayms(100);
	buflen=InitGPSBUF7[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF7[j+1]);
	delayms(100);
	buflen=InitGPSBUF8[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF8[j+1]);
	delayms(100);
	buflen=InitGPSBUF9[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF9[j+1]);
	delayms(100);
	buflen=InitGPSBUF10[0];  for(j=0;j<buflen;j++) putchar(1,InitGPSBUF10[j+1]);
	delayms(100);
	 
}
void main()
{
 	int i;
	char recinfo[64];
	char singlech;
	char recch;
	char reccounter=0;
	//stop errant interrupts until set up
	delayms(200);
	CLI(); //disable all interrupts	uart0_init();
	uart1_init();
	uart0_init();
	spi_init();
	SEI(); //re-enable interrupts
	init_FCOnOre();
	while(1)
 	{
		if(urflag==1){
				for(i=0;i<recgpslen;i++) putchar(0,gpsbuf[i]);
				putSPIchar(0x7e);
				putSPIchar(0x7e);
				putSPIchar(0x7e);
				putSPIchar(0x7f);
				for(i=0;i<recgpslen;i++) putSPIchar(gpsbuf[i]);
				putSPIchar(0x7f);
				putSPIchar(0x7e);
				putSPIchar(0x7e);
				putSPIchar(0x7e);
				urflag=0;
		}
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba视频| 一本色道久久综合狠狠躁的推荐 | 国产精品三级视频| 欧美男女性生活在线直播观看| 大胆亚洲人体视频| 亚洲va国产天堂va久久en| 亚洲欧美综合在线精品| 国产午夜亚洲精品羞羞网站| 欧美一二三区精品| 欧美一区二区视频在线观看2020 | 日本高清不卡视频| 懂色av一区二区三区免费观看| 日韩专区欧美专区| 亚洲午夜三级在线| 亚洲午夜在线视频| 亚洲综合色视频| 亚洲一区二区在线免费看| 亚洲精品乱码久久久久久黑人| 日本一区二区三区四区在线视频| 久久这里只精品最新地址| 精品国产乱码久久久久久图片| 日韩一区二区三区四区| 91精品国产91久久久久久最新毛片| 欧美精品日韩一本| 欧美一区二区免费| 日韩一区二区三区视频| 欧美一卡二卡三卡四卡| 日韩一卡二卡三卡四卡| 日韩精品一区二| 精品国产乱码久久| 2021中文字幕一区亚洲| 久久久久国产一区二区三区四区| 久久女同互慰一区二区三区| 中文字幕第一区综合| 亚洲国产精品精华液2区45| 中文字幕不卡在线观看| 亚洲男人的天堂在线观看| 亚洲视频一区二区免费在线观看| 一区二区三区不卡在线观看| 日本怡春院一区二区| 成人免费黄色大片| 91 com成人网| 国产精品女人毛片| 天天操天天干天天综合网| 经典一区二区三区| 欧洲人成人精品| 精品少妇一区二区三区| 亚洲另类春色校园小说| 精彩视频一区二区| 91行情网站电视在线观看高清版| 精品久久久久久久久久久久久久久 | 粉嫩欧美一区二区三区高清影视| 欧美三级一区二区| 久久综合狠狠综合久久综合88| 一区二区三区精品视频在线| 国产综合久久久久久鬼色| 色婷婷国产精品久久包臀| 久久久夜色精品亚洲| 丝袜美腿高跟呻吟高潮一区| 成人在线视频首页| 日韩视频在线你懂得| 亚洲嫩草精品久久| 国产成人免费视频网站高清观看视频 | 99精品国产热久久91蜜凸| 欧美一级一级性生活免费录像| 成人免费一区二区三区在线观看| 日本视频中文字幕一区二区三区| 99re6这里只有精品视频在线观看| 日韩欧美在线不卡| 亚洲精品成人a在线观看| 国产福利91精品一区| 91精品国产乱| 亚洲午夜激情网页| 91一区一区三区| 久久久国产午夜精品| 日韩高清中文字幕一区| 欧美最猛黑人xxxxx猛交| 国产精品卡一卡二| 国产精品99久久久久久宅男| 精品入口麻豆88视频| 亚洲va国产va欧美va观看| 91丨porny丨国产| 欧美国产欧美综合| 国产一区二区三区久久悠悠色av| 欧美日韩成人在线| 亚洲综合网站在线观看| 色综合久久中文综合久久97| 国产精品伦理一区二区| 国产成人综合网| 国产亚洲欧美日韩日本| 国产一区二区三区电影在线观看| 日韩欧美一区在线| 美女看a上一区| 日韩一区二区三区在线| 免费成人在线观看视频| 欧美精品乱人伦久久久久久| 日韩专区中文字幕一区二区| 欧美日韩国产高清一区二区| 亚洲国产精品一区二区尤物区| 欧美亚洲一区三区| 亚洲成人免费av| 欧美日高清视频| 日韩和欧美一区二区三区| 91精品欧美一区二区三区综合在 | 天天影视涩香欲综合网| 欧美精品丝袜久久久中文字幕| 性久久久久久久久久久久| 欧美日韩国产片| 奇米影视在线99精品| 91精品国产欧美日韩| 久久激情五月激情| 精品国产乱码久久| 国产.精品.日韩.另类.中文.在线.播放| 久久午夜羞羞影院免费观看| 国产高清精品久久久久| 国产精品美女久久久久久久| 一本到高清视频免费精品| 亚洲免费观看高清| 欧美日韩国产一区二区三区地区| 天天影视色香欲综合网老头| 日韩视频在线永久播放| 狠狠色丁香婷婷综合| 国产女主播在线一区二区| 9i在线看片成人免费| 夜夜嗨av一区二区三区四季av | 亚洲影院在线观看| 在线不卡一区二区| 激情久久久久久久久久久久久久久久| 亚洲精品在线免费播放| 99久久精品免费看| 亚洲高清免费视频| 精品久久人人做人人爽| www.久久久久久久久| 亚洲精品免费电影| 欧美一区二区在线免费观看| 国产成人精品免费看| 国产精品精品国产色婷婷| 欧美系列一区二区| 精品一区二区三区蜜桃| 成人免费视频在线观看| 日韩一区二区免费在线电影| 国产精品一二二区| 亚洲动漫第一页| 2021中文字幕一区亚洲| 日本精品免费观看高清观看| 麻豆国产精品一区二区三区| 成人欧美一区二区三区| 欧美一级xxx| 91亚洲精品乱码久久久久久蜜桃| 婷婷综合五月天| 久久久精品影视| 欧美日韩在线不卡| 国产成人av电影在线观看| 亚洲h在线观看| 国产亚洲欧美中文| 欧美精品视频www在线观看| 成人黄页毛片网站| 蜜臀久久99精品久久久久宅男 | 久久国产乱子精品免费女| 亚洲日本电影在线| 精品久久久久香蕉网| 欧亚一区二区三区| 成人三级伦理片| 久久精品国产亚洲aⅴ| 亚洲精品一卡二卡| 久久人人超碰精品| 777a∨成人精品桃花网| 91日韩在线专区| 国产91丝袜在线播放| 日韩成人免费看| 亚洲精品久久久蜜桃| 国产色91在线| 欧美一区二区成人6969| 在线视频观看一区| 成人教育av在线| 国产综合成人久久大片91| 丝袜美腿一区二区三区| 伊人婷婷欧美激情| 久久久精品2019中文字幕之3| 欧美一级理论片| 欧美视频一区在线观看| 色综合久久中文字幕综合网| 懂色av一区二区在线播放| 国产一区二区三区四区五区美女| 日韩高清一级片| 午夜精品久久久久久久蜜桃app| 亚洲免费伊人电影| 亚洲欧洲精品一区二区精品久久久| 精品国产露脸精彩对白| 欧美一二三区在线| 欧美精品日韩精品| 精品视频在线看| 91国模大尺度私拍在线视频| av电影一区二区| 成人av网站在线| 成人网在线播放| 国产成人8x视频一区二区| 国产精品一区二区在线观看不卡 | 成人综合激情网| 国产成人小视频|