📄 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -