www.pudn.com > gprs.rar > gprs.h


 
/*********************************************************** 
PIC18f452 port define 
***********************************************************/ 
 
#define	SIG_Lap		PORTAbits.RA4 
 
#define RING_2		PORTBbits.RB1 
 
#define	PWR_Lap		PORTCbits.RC1 
#define DSR_1		PORTCbits.RC0 
#define TXD_1		PORTCbits.RC6 
#define RXD_1		PORTCbits.RC7 
 
#define SIM_ON		PORTEbits.RE2 
#define RST_2		PORTEbits.RE3 
 
#define TXD_2		PORTGbits.RG1 
#define RXD_2		PORTGbits.RG2 
 
 
//------------------------------------------------------------ 
 
#define	SIG_Lap_IO	TRISAbits.TRISA4 
#define	PORTA_INIT	0X10 
#define	TRISA_INIT	0X00 
 
#define RING_2_IO	TRISBbits.TRISB1	//L	(effect level) 
#define	PORTB_INIT	0X00 
#define	TRISB_INIT	0X02 
 
#define	PWR_Lap_IO	TRISCbits.TRISC1 
#define DSR_1_IO	TRISCbits.TRISC0 
#define TXD_1_IO	TRISCbits.TRISC6 
#define RXD_1_IO	TRISCbits.TRISC7 
#define	PORTC_INIT	0XC1 
#define	TRISC_INIT	0Xbc 
 
#define	PORTD_INIT	0X00 
#define	TRISD_INIT	0X00 
 
#define SIM_ON_IO	TRISEbits.TRISE2 
#define RST_2_IO	TRISEbits.TRISE3 
#define	PORTE_INIT	0X0c 
#define	TRISE_INIT	0X00 
 
#define	PORTF_INIT	0X00 
#define	TRISF_INIT	0X00 
 
#define TXD_2_IO	TRISGbits.TRISG1 
#define RXD_2_IO	TRISGbits.TRISG2 
#define	PORTG_INIT	0X06 
#define	TRISG_INIT	0X04 
 
 
/********************************************************** 
PIC ACCESS RAM区设置(0X4C---0X5F) 
可以直接寻址区 
***********************************************************/ 
#pragma udata  access  segdata = 0x0034	 
 
	near ram volatile unsigned char	R0,R1,R2,R3,Rint0,Rint1;	//公用变量 
 
	near ram volatile union{ 
		volatile signed   char		Schar[4]; 
		volatile unsigned char 		Uchar[4]; 
		volatile unsigned char		*Uchp; 
		volatile signed	  int		Sint; 
		volatile unsigned int		Uint; 
		volatile unsigned int		*Uintp; 
		volatile short	  long		Slong_s; 
		volatile unsigned short long	Ulong_s; 
		volatile unsigned short long	*Ulong_sp; 
		volatile signed	  long		Slong; 
		volatile unsigned long		Ulong; 
		volatile unsigned long		*Ulongp; 
		volatile double			Sdouble; 
		volatile double			*Sdoublep; 
	}temp1,temp2,temp3,temp4,tempINT;				//以上是公用变量 
 
/*********************************************************** 
主程序中IIC子程序中公用变量(共计10个字节) 
***********************************************************/ 
	near ram volatile union 
	{ 
		struct 
		{ 
			unsigned :2; 
			unsigned cnt:1; 
			unsigned iicbusy:1; 
			unsigned A0:1; 
			unsigned A1:1; 
			unsigned iic64:1; 
			unsigned noack:1; 
		}bits; 
		near ram volatile unsigned char ch; 
	}IICFLAG;				//IIC acknowledge flag 
	 
	near ram volatile unsigned char subah;    		// 
	near ram volatile unsigned char subal;    		// 
	near ram volatile unsigned char IICNUM; 
	near ram volatile unsigned char IIC_TEMP; 
	near ram volatile unsigned char IICBUF; 
	 
	volatile unsigned char *near ram IICMEM; 
	volatile unsigned char *near ram IIC1MEM;		//以上是内部EEPROM操作变量 
	 
	 
	near ram volatile union 
	{ 
		struct 
		{ 
		unsigned	:1;		// 
		unsigned	RXING:1;		//处于发送状态 
		unsigned	FramErr:1;		//处于接收状态 
		unsigned	AFrame:1;		//正确接收一帧数据 
		unsigned	rec0D:1;		//收到0x0d字符 
		unsigned	BUF_full:1;		//缓冲区满 
		unsigned	BUF_over:1;		//缓冲区溢出 
		unsigned	recTS:1;		//收到‘〉’(提示符) 
		}bits; 
		near ram volatile unsigned char ch; 
	}COMFG1,COMFG2;					//1代表外串口,2代表模块串口 
	 
	near ram volatile union 
	{ 
		struct 
		{ 
		unsigned	TSsign:1;		//收到提示符 
		unsigned	OKend:1;		//收到0x30,0x0d 即OK 
		unsigned	ERRend:1;		//收到0x34,0x0d 即ERROR 
		unsigned	unknow:1;		//收到未知通讯贞 
		unsigned	Contin:1;		//通讯贞没有收完毕 
		unsigned	cmgd:1;			//处理过一条短信,要求删除该短信 
		unsigned	CMEERR:1;		//收到"ERROR" 
		unsigned	SendMS:1;		//收到短信发送回应 
		}bits; 
		near ram volatile unsigned char ch; 
	}ATFrameFG,SFrameFG;				//ATFrameFG:模块串口接收数据处理结果 
							//SFrameFG:外串口接收数据处理结果,仅使用unknow,Contin位 
	near ram volatile union 
	{ 
		struct 
		{ 
		unsigned	InitErr:1;		//初始化错误 
		unsigned	Online:1;		//在线标志 
		unsigned	Ring:1;			//有电话接入 
		unsigned	NoSIM:1;		//无SIM卡 
		unsigned	NetERR:1;		//电信网络故障 
		unsigned	NewMS:1;		//受到新短信 
		unsigned	NetWeek:1;		//网络信号弱 
		unsigned	TestMS:1;		//要求测试短信纪录 
		}bits; 
		near ram volatile unsigned char ch; 
	}WorkFG;					//GPRS模块工作状态 
	 
	near ram volatile union 
	{ 
		struct 
		{ 
		unsigned	IPDing:1;		//正在传输下行数据(GPRS==>外串口) 
		unsigned	ATing:1;		//正在发送AT指令 
		unsigned	DATAing:1;		//正在传输上行数据 
		unsigned	HDing:1;		//正在发送ID号 
		unsigned	Tranning:1;		//有数据需上传(发送AT指令,发送ID号,传输上行数据) 
		unsigned	IPchange:1;		//服务器IP变化,重新连接 
		unsigned	WaitTS:1;		//等待提示符 
		unsigned	cipstart:1;		//正在发送ATcipstart指令, 
		}bits; 
		near ram volatile unsigned char ch; 
	}SendATFG; 
	 
#pragma udata 
 
 
#pragma udata  SegData0=0x0060		// 
 
	volatile unsigned char	HeadCS[3];		//固定数据“ID:”,为满足ID格式 
	volatile unsigned char	HeadID[14]; 		//ID号,空格结束 
	volatile unsigned char	ServerCODE[15];		//服务器IP地址 xxx.xxx.xxx.xxx 
	volatile unsigned char	ServerJYH;		//未用 
 
	volatile unsigned char	RXFREETMR1;		//串行通信free timer,未用 
	volatile unsigned char	RXOVERTMR1;		//接收字间计时器 
	volatile unsigned char	TXOVERTMR1;		//发送字间计时器 
	volatile unsigned char	BufJYH1;		//计算发送校验和,未用 
	volatile unsigned int	TXSAVED1;		//一帧已发送字节数 
	 
	volatile unsigned char	RXFREETMR2;		//同外串口含义 
	volatile unsigned char	RXOVERTMR2; 
	volatile unsigned char	TXOVERTMR2; 
	volatile unsigned char	BufJYH2; 
	volatile unsigned int	TXSAVED2;		// 
	volatile unsigned int	IPDlen;			//收到GPRS传来数据长度,即要从外串口发送出去的数据长度 
	 
	volatile union 
	{ 
		volatile unsigned char	*pt; 
		volatile unsigned long	*lpt; 
		volatile unsigned int	data; 
	}RXpt1,						//外串口接受指针 
	TXpt1,						//发送指针 
	Framept1,					//需处理数据起始指针 
	FrameEnd1,					//本通讯贞结束指针 
	FrameErr1,					//错误通讯贞的结束地址 
	RXpt2,TXpt2,Framept2,FrameEnd2,FrameErr2,	//模块串口,同外串口含义 
	RXptbak;					//临时指针变量 
	 
	volatile union 
	{ 
		struct 
		{ 
		unsigned	Have1SEC:1; 
		unsigned	IPDtran:1; 
		unsigned	Connecting:1; 
		unsigned	dispErr:1;	// 
		unsigned	ConnectOk:1;	// 
		unsigned	ConnectOkEN:1;	// 
		unsigned	:1;		// 
		unsigned	:1;		// 
		}bits; 
		volatile unsigned char ch; 
	}GeneralFlag1; 
#define	Have1SEC	GeneralFlag1.bits.Have1SEC	//秒标志 
#define	IPDtran		GeneralFlag1.bits.IPDtran	//有数据要从外串口发送出去标志 
#define	Connecting	GeneralFlag1.bits.Connecting	//在线,即是否与服务器建立连接 
#define	dispErr		GeneralFlag1.bits.dispErr	//信号灯控制 
#define	ConnectOk	GeneralFlag1.bits.ConnectOk	//与服务器建立连接成功 
#define	ConnectOkEN	GeneralFlag1.bits.ConnectOkEN	//是否从未成功连接服务器,以便首次连接发送ID 
 
	volatile union 
	{ 
		struct 
		{ 
		unsigned	enID:1;		//是否发ID 
		unsigned	enTest:1;	//是否发信跳 
		unsigned	Com1Bit9:1;	//是否带校验位 
		unsigned	:1;	// 
		unsigned	:1;		// 
		unsigned	:1;		// 
		unsigned	:1;		// 
		unsigned	:1;		// 
		}bits; 
		volatile unsigned char ch; 
	}CONFIGFG; 
 
	volatile unsigned char	Com1BPS;		//外串口波特率 
	volatile unsigned char	MSindex[2],		//待处理短信存储位置 
				ClockTMR,		//累计中断次数,产生秒信号 
				Mode,			//工作方式选择,未用 
				Com1Sec,		//外串口未收到数据的秒数,超过62秒重新初始化外串口, 
				Com2Sec,		//模块串口未收到数据的秒数,超过62秒重新初始化模块串口, 
				SetReSec,		//重新连接的秒数(设定) 
				SetMinTest;		//信跳间隔(设定值),分钟 
	volatile unsigned char	SecCnt,			//秒计时 
				SecErr,			//程序主循环没有正常执行的秒数,超过10秒,MCU重起(硬复位) 
				ReDialCnt;		//未能成功连接的次数,超过3次,MCU重起(硬复位) 
	volatile unsigned char	MinTest,		//信跳间隔计时 
				SecRedail;		//重新连接秒计时 
	volatile unsigned char	ATBUF[32];		//AT指令buffer 
	volatile unsigned char	BFIIC[32];		//公用buffer 
	volatile unsigned char	NetRssi,NetBer;		//电信网络信号强度,误码率 
	 
 
	 
#pragma udata 
 
 
#define		COMBUF1_st	0x0100 
#define		COMBUF1_end	0x03f0 
#define		COMBUF1_size	0x02f0 
 
#pragma udata  SegData1=0x0100		// 
	volatile unsigned char	COMBUF1[256];	//串行通讯数据缓冲区 
#pragma udata 
 
#pragma udata  SegData1a=0x0200		// 
	volatile unsigned char	COMBUF1a[256];	//串行通讯数据缓冲区 
#pragma udata 
 
#pragma udata  SegData1b=0x0300		// 
	volatile unsigned char	COMBUF1b[245];	//串行通讯数据缓冲区 
#pragma udata 
 
 
#define		COMBUF2_st	0x0400 
#define		COMBUF2_end	0x06f0 
#define		COMBUF2_size	0x02f0 
 
#pragma udata  SegData2=0x0400		// 
	volatile unsigned char	COMBUF2[256];	//串行通讯数据缓冲区 
#pragma udata 
#pragma udata  SegData2a=0x0500		// 
	volatile unsigned char	COMBUF2a[256];	//串行通讯数据缓冲区 
#pragma udata 
#pragma udata  SegData2b=0x0600		// 
	volatile unsigned char	COMBUF2b[245];	//串行通讯数据缓冲区 
#pragma udata 
 
 
#define	MODE_MS		'M' 
#define	MODE_GPRS	'G' 
#define	CS_rssi		6		//-101db 
#define	CS_ber		3		// 
 
#define	PIE1_init	0x20		// RC1IE 
#define PIE3_init	0x20		// RC2IE 
#define	T0CON_init	0b11000100	//timer0 ON/8bits/1:32预分频器 
 
#define	SPBRG2_init	25	//12 
#define	TXSTA2_init	0x04		//sbgH=1 , tx9=0 
#define	RCSTA2_init	0x90		//SPEN,CREN=1, RX9=0 
 
//芯片内部EEPROM地址定义 
 
#define AT_IPadr	0x10		 
#define	AT_IPport	0x20 
#define	AT_PASS		0x30 
#define	AT_MODE		0x38 
#define	AT_Com1BPS	0x39 
#define	AT_CONFIGFG	0x3a 
#define	AT_TestLong	0x3c		//min 
#define	AT_SetReSec	0x3e		// 
#define	AT_HeadID	0x40		//headID max 14bytes