⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 微程序控制器采用ATMEL AVR MEGA162
💻 C
字号:
//ICC-AVR application builder : 2007-6-9 11:45:19
// Target : M162
// Crystal: 3.6864Mhz
#include "sci.h"

#include "modem.h"
#include <stdlib.h>
#include <eeprom.h>

#pragma data:eeprom
BYTE ip[]="000.000.000.000";
#pragma data:data


char * GPRSCommand [] = {
	"AT\r",
    "ATE0\r",//////////
    "AT+CGDCONT=1,\"IP\",\"CMWAP\"\r",
    "AT%CGPCO=1,\"PAP,,\",1\r", 
	//"AT$DESTINFO=\"218.6.64.240\",2,80\r",//UDP 2 TCP 1
	"AT$NOSLEEP=1\r"
};

BYTE IPADD[]="000.000.000.000";
BYTE *p_IPADD=IPADD;
BYTE CC=0;
void conGPRS(void);
void init_devices(void);
void iniGPS(void);

void main(void)
{
    BYTE num;
	BYTE Res;
	BYTE ResSendSucc=1;
	
	init_devices();    
    timer1_init();
    initTimer2();
    WriteCommStr0("start");
	
	ModemInit();
	if(Waitfor ("ip", 250)){
		WriteCommStr0("input ip add end with ;");
		UCSR0B &= ~(1<<RXCIE0);//stop u0 int
		while((num=ReadComm0())!=';'){
			*p_IPADD++=num;
		}
		*p_IPADD=0;
		EEPROM_WRITE((int)ip,IPADD);
		WriteCommStr0("\nyou ip is:");
		WriteCommStr0(IPADD);
		WriteCommStr0("\nturn switch to gps mode\n");
		UCSR0B |= (1<<RXCIE0);//start u0 int
		DelayMORE(100);
	}else{
		EEPROM_READ((int)ip,IPADD);	
		WriteCommStr0("config time has pass");
		DelayMORE(10);
	}
    
	WriteCommStr0("\nif you have not turn switch ,you must restart device");
	WriteCommStr0("at\r");
	conGPRS();
	DelayMORE(50);
	WriteCommStr0 ("ATD*97#\r");
	ModemInit();
	iniGPS();
	while(!Waitfor ("en", 254)){ // Wait for OK	
		//WriteCommStr0 ("ATD*97#\r");
		if(Waitfor ("CAR",50)){
			conGPRS();
		}
		if(CC++>3)
			break;
	}
	DelayMORE(50);
    while(1)
    {      
		UCSR1B |= (1<<RXCIE1);
		DelayMORE(100);
		UCSR1B &= ~(1<<RXCIE1);
		if(Waitfor ("CAR",50)){
			conGPRS();
		}
    }
}

void conGPRS(){
	BYTE index ;
	BYTE Res = 0 ;
	for (index = 0; index <= 4; index++) 
    { 
		WriteCommStr0 (GPRSCommand [index]);
		
		Res = Waitfor ("OK", 50); // Wait for OK	
		DelayMORE(30);//40
		if (!Res)
   		{ 
       		ModemInit (); 
          	index = 0;
			WriteCommStr0("ATH\r");
			Waitfor ("OK", 30);
       	}     
    }
	WriteCommStr0 ("AT$DESTINFO=\"");
	WriteCommStr0 (IPADD);
	WriteCommStr0 ("\",2,80\r");
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -