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

📄 communicate.h

📁 基于单片机的多费率电能表源程序
💻 H
字号:
#ifdef	COMM_GLOBALS
	#define	COMM_EXT
#else
	#define	COMM_EXT extern
#endif
#define	RECEIVEMAXLENGTH 	60
#define SENDMAXLENGTH    	55
#define MAXCOMMUNICATENUM    28

#define KPRG 
//485控制
#define	P_485NEnDe		HF_PDR9_P93
#define	En_485Re		P_485NEnDe=1;DelayXus(50)
#define	En_485Tr		P_485NEnDe=0;DelayXus(50)
//IR控制
#define  Close_IRReceiveEdgInt	HF_IENR1_IEN0=0;HF_PMR2_IRQ0=0   

#define  Open_IRReceiveEdgInt	HF_PMR2_IRQ0=1;HF_IEGR_IEG0=0;\
	                                                 HF_IRR1_IRRI0=0;HF_IENR1_IEN0=1

#define   Start_IrMdlt   HF_PMR3_TMOFL=1 								
#define   Stop_IrMdlt	HF_PMR3_TMOFL=0
    
#define UartReceiveEnable  HF_SCR3_RE=1
#define UartReceiveDisable  HF_SCR3_RE=0

#define UartTransmitEnable  HF_SCR3_TE=1
#define UartTransmitDisable  HF_SCR3_TE=0

#define  	Is_ProGramPermit			HF_PDR5_P53==0
#define     Is_ProGramDisable			HF_PDR5_P53==1
#define  ERROR_PASSWORD   		0
#define  SUPER_PASSWORD   		1
#define  CLEAR0_PASSWORD   		2
#define  PROGRAM_PASSWORD   	3
//////////////////////////////
struct CommunicateDataStruct 
{
	INT16U CommunicateDataID;//数据标识	
	INT8U DataLength;//数据长度
	INT8U PropertyData1;//特征数据1
	//INT8U PropertyData2;//特征数据2
	INT8U EepromDataId;//EEPROM数据ID
	INT16U RamDataAddress;//RAM数据地址;
};
////////////////////////////////////////
COMM_EXT union	Union_ByteDef    CommStateFlag;
#define _Broadcast_ CommStateFlag.BIT.b0
#define _Communicate_ CommStateFlag.BIT.b1
#define _DataSend_ CommStateFlag.BIT.b2
#define _BroadCalibrateTimeAllow_ CommStateFlag.BIT.b3
///////////////////////////////////////////
COMM_EXT  INT8U Com485ReceiveBytes;
COMM_EXT  INT8U Com485Cnt;
COMM_EXT  INT8U SendDelayCnt;
COMM_EXT  INT8U SendPnt,SendLen;
COMM_EXT  INT8U SendBuf[SENDMAXLENGTH];
COMM_EXT INT8U 	RecBuf[RECEIVEMAXLENGTH];
COMM_EXT INT8U 	PreCharactorCnt;
COMM_EXT INT8U	RecPnt,RecTmr,RecState,ReceiveCnt;
COMM_EXT INT8U UserNumber[6];
COMM_EXT INT8U CommunicateCnt;
COMM_EXT INT8U	ProgramPassWord[4];
COMM_EXT INT8U	Clear0PassWord[4];
COMM_EXT INT8U  ProgramTimes[2];


COMM_EXT void CommunicateInit(void); 
COMM_EXT void CommunicateReceiveEnable(void);
COMM_EXT void CommunicateSendEnable(void);
COMM_EXT INT8U  DichotomySearch(INT16U DataID);
COMM_EXT void DatagramDeal(void);
COMM_EXT INT8U CommunicateReadData(void);
COMM_EXT INT8U CommunicateWriteData(void);
COMM_EXT void BroadcastSetTime(void);
COMM_EXT void CommunicateWriteUserID(void);
COMM_EXT INT8U CommunicateChangePassword(void);
COMM_EXT void SetProgramPassword(void);
COMM_EXT void SetClear0Password(void);
COMM_EXT void CommunicateClearDemand(void);
COMM_EXT INT8U CheckDeviceNumber(INT8U *PDeviceNumber);
COMM_EXT void DatagramDealTask(void);
COMM_EXT INT8U CheckTimeErrorOfMeter(void);
COMM_EXT void WriteProgramRecord(void);
COMM_EXT void DataReceive(void);
COMM_EXT INT8U CommunicateReadEeromPageData(void);
COMM_EXT INT8U IsBroadCalibrateTimePermit(void);

⌨️ 快捷键说明

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