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

📄 main.c

📁 本程序是一个RS232转网口的。是一个透明传输的模块
💻 C
字号:
/*
*****************************************************************************************************
*
*  File name: main.c
*****************************************************************************************************
*/
#include "..\head\includes.h"



/*
*****************************************************************************************************
* PORTA初始化
*****************************************************************************************************
*/
xdata  PSD_REGS  PSD_reg  _at_ 0x8000; //该地址与PSD软件里RAM配置的地址要一致
void Mcu_Port_Init(void)
{
    PSD_reg.CONTROL_A.byte = 255;
    PSD_reg.DIRECTION_A.byte = 255;

}

/*
*****************************************************************************************************
* 变量初始化
*****************************************************************************************************
*/
void ValueInit(void)
{
    LED(CONNECT_LED,ON);                      //在线LED
	LED(RUN_LED,ON);                          //运行LED
	DEFAULT_PIN   = 1;                        //恢复出厂值引脚初始化为高电平
	bConnect      = FALSE;                    //设置未连接  
    HttpFlag      = FALSE;                    //WEB模式
    SendHeartFlag = FALSE;                    //已发送心跳包
	ConnectNum = RECONNECT_NUM;               //设置一个本地端口号重连几次
	LocalPort  = 1024;                        //本地端口初始设置为1024
    ModelStatu = MODEL_CONFIG_STATU;          //初始为配置状态
}

/*
*****************************************************************************************************
*FUNC:  各功能初始化
*NOTE: 	 		
*****************************************************************************************************
*/
#if 0
#define VOID_FUNC_NUM   9

typedef void(*VoidFuncPtr)(void);

VoidFuncPtr code VoidInitFunc[VOID_FUNC_NUM]=
{ 
    Mcu_Port_Init,      //端口PORTA初始化
	ValueInit,          //变量值初始化
	Uart0Init,          //波特率要跟根据FALSH里的设置串口初始化
	Uart0BufferInit,    //串口缓冲区初始化
	Timer0Init,         //定时器初始化
	Rtl8019Init,        //初始化8019as
	InitPingTable,      //初始化PING表
	InitArpTable,       //初始化ARP表
	TcpInit             //初始化tcp套接字
};
#endif

void Mcu_Init(void)
{
#if 0
    unsigned char i;
	
	for (i=0; i<VOID_FUNC_NUM; i++) {
	    if (VoidInitFunc[i]) {
            VoidInitFunc[i]();
		}
	}
#endif

    Mcu_Port_Init();      //端口PORTA初始化
	ValueInit();          //变量值初始化
	NetConfigInit();      //网络配置初始化 这一定要在UART0INIT前,因为波特率是根据读出来配置
	Uart0Init();          //波特率要跟根据FALSH里的设置串口初始化
	Uart0BufferInit();    //串口缓冲区初始化
	Timer0Init();         //定时器初始化
	Rtl8019Init();        //初始化8019as
	InitPingTable();      //初始化PING表
	InitArpTable();       //初始化ARP表
	TcpInit();            //初始化tcp套接字

	DHCPInit();

#ifdef  PROTOCOL_2004
    Pro2004Init();
#endif
}

/*
*****************************************************************************************************
*FUNC:  模块参数配置
*NOTE:  
    1:TimerMil[T_DELAY_NUM] int型 每1MS自减一次.		
	2:1s之内有收到"0x30"空格键,进入配置,ModelStatu = MODEL_CONFIG_STATU
	3:退出配置时ModelStatu = MODEL_RUN_STATU;以便主程序里判断
*****************************************************************************************************
*/
void Model_Config(void)
{
    unsigned char xdata key=0;

	HintMsg(6,NULL);
    TimerMil[T_DELAY_NUM] = 1500;  
    while (TimerMil[T_DELAY_NUM]) {
	    inRxBuf_Bak = inRxBuf;         //减少分侦的可能
        Mygetch(&key);
		if ((key == 'S')||(key == 's')) {
            break;
		}
	}	
	if ((key == 'S')||(key == 's')) {
        ModelStatu = MODEL_CONFIG_STATU;
 	    TimerSec[T_EXIT_CONFIG] = EXIT_CONFIG_SEC;
		HintMsg(3,NULL);              //提示进入配置
	} else {
        ModelStatu = MODEL_RUN_STATU;
		HintMsg(4,NULL);              //提示退出配置
	}

	DelayHMSM(0,0,0,100);             //进入主程序前初始化指针,这里延时是让提示信息先发完   
    Uart0BufferInit();                //缓冲区指针一定要初始化
}

/*
*****************************************************************************************************
*FUNC:  
*NOTE:  
*****************************************************************************************************
*/
void main(void)
{
	//WDTEN();                                 //看门狗使能 
	WDTDIS();
    Mcu_Init();                                //单片机定时,串口初始化,网络配置初始化
	Model_Config();                            //是否进入配置状态

	while(1) {
		if (Query8019()) {	                   //表示收到数据包
			MainCycle();
	    }
	
        Cycle10ms();                           //10MS一个周期运行
        Cycle1s();                             //1S一个周期运行

		Data2_Te2NetBuf();                     //串口数据扫描,有数据存入Te2NetBuf
		Parse_Te2NetBuf();                     //如果Te2NetBuf有数据,解析 配置命令/发到NET
        Parse_Net2TeBuf();                     //如果Net2TeBuf有数据,解析 配置命令/发到终端
        #ifdef  PROTOCOL_2004
            ParseReSentBuf();
        #endif
	}
}


⌨️ 快捷键说明

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