📄 main.c
字号:
/***************************************************************
程序程序:GPRS_DTU通信程序
功能描述:
该程序是基于AT89C51RD2的GPRS_DTU通信程序,用于完成无线IP数据传输。
****************************************************************/
#include <reg52.h>
#include <absacc.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
sfr WMCON = 0x96; /* Watchdog and Memory Control Register */
#define WDTC() (WMCON |= 0x02)
#define TIMER2_VECTOR_NUMBER 5
sbit LED = P3^7;
sbit PD = P3^6;
const unsigned char code menu[] =
"\n\r"
"+***************SETUP MENU for TDX-GSM Modem****************+\n\r"
"| 泰达鑫GPRS无线音频传输终端设置菜单 |\n\r"
"| 深圳泰达鑫通信技术有限公司 |\n\r"
"|***********************************************************|\n\r"
"+ 功能选择 +--------------功能描述------------------------|\n\r"
"| 1 |固定电话号码设置 |\n\r"
"| 2 |移动电话号码设置 |\n\r"
"| 3 |管理员密码设定 |\n\r"
"| 4 |状态查询 |\n\r"
"| Q/q |退出设置程序 |\n\r"
"+------------+----------------------------------------------+\n\r";
extern void setup(void);
extern void ReadUserBlock(uchar idata *input,uint Address,uchar Number);
//------COMM.C------------------
extern void _SysInit(void);
extern bit _AsyncGetTest(void);
extern uchar _AsyncGet(void);
extern void _AsyncOpen(uint Baud, uchar Parity);
extern void _EXP_InfoRec(void);
extern void Switch_OFF(void);
extern void Vol_control(void);
extern uchar data Vol_Rec;
//------GsmModem.c----------------
extern void Mc35Rst();
//------LOGIN.C-------------------
extern uchar login_ack();
//-----Public Variable declare----
unsigned char idata input[32];
unsigned char idata tempbuf[32];
unsigned char bdata flags; /* bit value flag declare */
sbit PUB_Async_TI = flags^2;
sbit PUB_Async_RI = flags^3;
unsigned long data SYSTIME ;
unsigned long data TempCount;
/***************************
***get current SYSTIME value.
****************************/
unsigned long GET_COUNT()
{
unsigned long tempcount;
ET2 = 0;
tempcount = SYSTIME;
ET2 = 1;
return tempcount;
}
/*************************
Timer 2 interval 10 ms
**************************/
void timer2() interrupt TIMER2_VECTOR_NUMBER
{
TF2 = 0;
SYSTIME ++;
}
/*************************
函数名称:Delay(uint x)
函数功能:延时 x * 10 ms,最长65535 * 10 ms
**************************/
void Delay(uint x)
{
unsigned long CT;
CT = GET_COUNT();
while(GET_COUNT() - CT < x)
{
if(Vol_Rec)
{
Vol_Rec = 0;
Vol_control();
}
WDTC();
PCON = PCON | 0x01;
}
}
/*************************
主函数:main()
**************************/
main()
{
uchar cc;
uint swconter;
bit int1_state;
int1_state = 1;
_SysInit();
_AsyncOpen(9600, 0); /* open the UART */
LED = 0;
PD = 0;
TempCount = GET_COUNT();
while(GET_COUNT() - TempCount < 300 )
{
if (_AsyncGetTest())
{
cc = _AsyncGet();
if(cc == 0x0D)
{
setup();
break;
}
}
}
PD = 1;
while(1)
{
_SysInit();
_AsyncOpen(9600, 0); /* open the UART */
swconter = 0;
LED=1;
// Mc35Rst();
// if(login_ack()==0)continue;
LED=0;
WMCON = 0xa3; //1010001B WDT is 512MS and enbale function.
TempCount = GET_COUNT();
while(1)
{
WDTC();
PCON = PCON | 0x01;
if(_AsyncGetTest())
_EXP_InfoRec();
if (INT0==0)
{
LED = 0;
TempCount = GET_COUNT();
if ( (++swconter) >= 300 )
{
LED = 1;
WMCON = 0x00; //1010001B WDT is 512MS and enbale function.
while(1)
{
while (INT0==0);
Delay(5);
if (INT0)
{
Switch_OFF();
}
}
}
}
else
{
swconter = 0;
}
if( (GET_COUNT() - TempCount) >= 1000)
LED=1;
if(Vol_Rec)
{
Vol_Rec = 0;
Vol_control();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -