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

📄 main.c

📁 无线音频电话(gprs)
💻 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 + -