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

📄 define.h

📁 使用51单片机开发的一个集团电话系统
💻 H
字号:

#ifndef _define_h_
#define _define_h_

/*****************************
当前编译程序定义
*****************************/
#define	debug		1
#define	w78e58b		0		//1系统可以ISP功能
#define	Test			0		//1系统需要对8816测试计数
#define	ExtSameTrk	1		//使用用户替代中继,实现供电群呼

/*************************
当前程序功能定义
*************************/
#define	Module_Trk		0	//system have analog trk ext function
#define	Module_Trans		1	//system have call transfer function
#define	Module_Hot		1	//system have call hot function
#define	Module_Troop		1	//system have the troop function
#define	Module_Meet		1	//system have the meet function
#define	Module_Host		0	//system have attemper and host function
#define	Module_Class		0	//system have part ext class function
#define	Module_Add		1	//system have addtion function
#define	Module_Cid		0	//system have cid function
#define	Module_Pulse		0	//system have rec pulse dail function
#define	Module_BusyRecall	0	//system have rec pulse dail function


#define	Counter_Trans	1	//转移最大次数



/*************************
外部端口操作地址
**************************/
#define	Addr_8816_Data	0XA000		//8816写数据地址
#define	Addr_DTMF_State	0XA800		//读收号器解码状态数据地址
#define	Addr_DTMF_Data	0XB000		//读收号器解码数据首地址
#define	Addr_EXT_State	0X8000		//读用户状态首地址
#define	Addr_EXT_Drive	0X8000		//写用户动作首地址
#define	Addr_Offset		0X0800		//用户状态、用户动作地址偏移量

/************************
Flash Ram 操作地址
**********************/
#define	W29c040p1		0x5555		//写040操作1地址
#define	W29c040p2		0x2aaa		//写040操作2地址
#define	R29c040p1		0x0000		//读040操作1地址
#define	R29c040p2		0x0001		//读040操作2地址
#define	R29c040p3		0x0002		//读040操作3地址
#define	R29c040p4		0x7fff2		//读040操作4地址
/**************************
flash ram 操作模式分析
**************************/
#define	Enable_Protect	0			//写FLASH保护
#define	Disable_Protect	1			//去除FLASH保护
#define	Erase_Flash		2			//檫除FLASH数据
#define	Load_FlashID		3			//读FLASH芯片ID
#define	Boot_First16K		4			//使用FLASH前16K启动
#define	Boot_Last16K		5			//使用FLASH后16K启动

/************************
uart 通信模式分析
***********************/
#define	CommHead		0xcc

#define	RepSystem		0x01
#define	RepExtParma		0x02
#define	RepMeet			0x03
#define	RepTrk			0x04
#define	RepTempMeet	0x05
#define	RepTempExt		0x06
#define	RepCable		0x07
#define	RepKeyset		0x08
#define	RepRespond		0x0b
#define	RepCallHost		0x0c
#define	RepCID			0x0d
#define	RepState			0x0e//返回用户的基本状态和事件
#define	RepWorking		0x0f//返回系统工作情况
#define	RepAllExtSta		0x10//返回所有用户状态情况
#define	RepTroop		0x11//返回群呼事件状态
#define	RepSystemType	0x12//返回系统使用的类型


#define	RepSetHead1		0x31//返回系统设置的用户字头
#define	RepSetHead2		0x32//返回系统设置的会议字头
#define	RepSetHead3		0x33//返回系统设置的群呼字头

#define	SingnedHead		0xce//特别信息发送



#define	CheckSystem		0xf1
#define	CheckExtParma	0xf2
#define	CheckMeet		0xf3
#define	CheckTrk			0xf4
#define	CheckTempMeet	0xf5
#define	CheckTempExt	0xf6
#define	CheckCable		0xf7
#define	CheckKeyset		0xf8
#define	KeyCommand		0xff

#define	SetSystem		0xe1
#define	SetExtParma		0xe2
#define	SetMeet			0xe3
#define	SetTrk			0xe4
#define	SetKeyset		0xe8


/**********************************
用户的状态机分析
**********************************/
#define	state0_Free				0
#define	state1_DailNo			1
#define	state2_RecOneDtmf		2
#define	state3_RecTwoDtmf		3
#define	state4_DailOk			4
#define	state5_TalkTo			5
#define	state6_Ring				6
#define	state7_TalkFrom			7
#define	state8_MeetTalk			8
#define	state9_CommandExt		9
#define	state10_TroopRing		10
#define	state11_					11
#define	state12_					12
#define	state13_					13
#define	state14_					14
#define	state15_					15
#define	state16_					16
#define	state17_					17
#define	state18_					18
#define	state19_					19
/*****
调度权利				12
(调度采用会议模式,只要调度就开始会议
无论谁退出都采用退出会议的方式退出)
******/
/**********************************
用户信号音的状态机分析
**********************************/
#define	state20_DailOver			20
#define	state21_ResRingOver		21
#define	state22_OppHookOff		22
#define	state23_CallFreeNo 		23
#define	state24_NoRightCall		24
#define	state25_OppBusy			25
#define	state26_CableBusy			26
#define	state27_TrkBusy			27
#define	state28_					28
#define	state29_					29
/**********************************
用户测试的状态机分析
**********************************/
#define	state30_						30
#define	state31_TestDailSingal			31
#define	state32_TestBusySingal			32
#define	state33_TestFreeSingal			33
#define	state34_TestHarrySingal			34//用户催挂音
#define	state35_TestRing				35
#define	state36_TestResSingal			36
#define	state37_						37
#define	state38_						38
#define	state39_						39
/**********************************
用户事件触发原因分析
**********************************/
#define	event1_ExtHookOn			1
#define	event2_ExtHookOff			2
#define	event3_ExtRecDtmf			3
#define	event4_ExtRing				4
#define	event5_ExtReleaseRing		5
#define	event6_SExtHookOn			6
#define	event7_SExtHookOff			7
#define	event8_DailOver				8
#define	event9_ExtCallWaitOver		9
#define	event10_NoRightCall			10
#define	event11_CallFreeNo			11
#define	event12_CableBusy			12
#define	event13_SExtBusy			13
#define	event14_HostCallingExt		14
#define	event15_HostCalledExt		15
#define	event16_TroopRing			16
#define	event17_ExtFlash				17
#define	event18_MangerRelease		18
#define	event19_					19

/***********************************
定义振铃和打开的数据
***********************************/
#define	RING			0x01
#define	OPEN			RING

/************************************
定义忙音通道在15号绳路
系统所有话路绳路..由于硬件原因450HZ信号分3路进入
才不引起阻抗降低
************************************/
#define	BUSY_Channel		15
#define	BUSY2_Channel	14
#define	BUSY3_Channel	13

#define	TAL_CABLE		13

/************************************
定义用户容量
************************************/
#define	MAX_Ext			24

/************************************
定义用户键盘容量
************************************/
#define	TAL_KEY			80

/************************************
定义用户特殊功能长度数据参数
功能参数的拨号模式和号码编号
0	系统测试功能字头(*03x)
1	系统参数修改字头(*1xx)
2	系统定时开关参数字头(*2xx)
3	系统计费字头(*3xx)
4	分机免打扰字头(*400)
************************************/
#define	Fun_Head	0x0b		//定义*号键
#define	Fun_Len		4		//定义功能号长为3
#define	Password_Len 5		//定义密码长度
#define	Fun_End		0x0c		//定义#号键

/*************************************
定义扫描状态
**************************************/
#define	EXT_SCAN_ON	0x80	//用户当前可以扫描
#define	EXT_SCAN_OFF	0x00	//用户当前不可以扫描
#define	EXT_SCAN_PRI	0x09	//用户扫描精度
#define	EXT_SCAN_LEN	EXT_SCAN_ON+EXT_SCAN_PRI//34*9=306ms
								//用户扫描判断长度

#define	Flash_Scan_Start	0x02		//挂叉,闪断的起始判断34ms*2=68ms
#define	Flash_Scan_End	0x17		//挂叉,闪断的终止判断34ms*24=800ms


#define	MT8870_EnOut	0x08	//前次8870通道有解码输出
#define	MT8870_NoOut	0x01	//前次8870通道无解码输出
#define	MT8870_EnRec	0x10	//当前8870通道可以解码
#define	MT8870_NoRec	0x00	//当前8870通道不可以解码

/*************************************
定义信号音构成时间
**************************************/
#define	busysignal		10		//10*34ms = 340ms
#define	dailsignal		441		//441*34ms = 18000ms
#define	hooksignal		7		//7*34ms = 238ms
#define	ressignal			1230		//1230*34ms = 42000ms
#define	openoffset		30		//30*34ms = 1000ms
#define	closeoffset		150		//132*34ms = 

/**************************
定义宏功能模块
**************************/
#define	LOAD_TIMER0(TH,TL)\
{\
	TH0 = (TH);\
	TL0 = (TL);\
}
#define	LOAD_TIMER1(NOWBPS)\
{\
	TH1 = (NOWBPS);\
	TL1 = (NOWBPS);\
}
#define MICRO_SendToBuf(Buf, Data, WP, Tal, BufSize) \
{\
	(Buf) = (Data) ; \
	(Tal)++ ; \
	(WP)++ ; \
	if( (WP) == (BufSize) ) \
		(WP) = 0 ; \
}
#define MICRO_GetFromBuf(Buf, cData, RP, Tal, BufSize) \
{ \
	(cData) = (Buf) ; \
	(Tal)-- ; \
	(RP)++ ; \
	if( (RP) == (BufSize) ) \
		(RP) = 0 ; \
}

/*****************************
定义用户参数结构体
******************************/
typedef struct {
	unchar	Num_H_Logic;				//B0用户的高位逻辑号码
	unchar	Num_L_Logic;				//B1用户的低位逻辑号码
	unchar	Num_Hot_Call;				//B2热线用户呼叫号码
	unchar	Num_Trans_Call;			//B3转移用户呼叫号码
	unchar	Num_Busy_Recall;			//B4遇忙回叫号码
	unchar	Num_Group_Call;			//B5组呼叫号码(每位表示一组会议,最高位
									//为组呼权利表示位)
	unchar	Trk_Group_Right;			//B6用户的中继组权参数
	unchar	Trk_Group_Num;			//B7中继组号参数
	unchar	Trk_Group_Param;			//B8中继配置参数
	/*      7               6              5                4                     3                   2                   1                 0
	**                                                                                                 open/close       10  出开11双向开
	**    1                 1              1                1                     1                  1/0                 01入开00不定义
	**/
	unchar	Bit_Param;				//B9用户位参数
	/*      7               6              5                4                     3                   2                   1                0
	**Trk/Ext      Class      HotCall    TransCall    BusyReCall    GroupCall     Host_EXT   Busy/Free
	**    1/0          1/0           1/0            1/0                1/0               1/0              1/0            1/0
	**/
	unchar	Num_ExtKey;				//用户对应的键盘号
	unchar	Num_Call_Other;			//A0用户呼叫其他用户的物理号
	unchar	Num_Call_Me;				//A1其他用户呼叫我的号码
	unchar	Num_Switch_Cable;			//A2呼叫连接的绳路
	unchar	Num_MeetGroup;			//A3呼叫的会议组号码
	unchar	RecDTMF_Data;			//A4用户接收的的双音频数据
	unchar	RecDTMF_En;				//A5用户接收双音频使能判断
	unchar	Ext_EVENT;				//A6用户当前的事件存储
	unchar	Ext_State;				//A7用户当前的状态
	unchar	Ext_RecDtmf_List[12];		//A8用户双音频接收区
	unchar	Flag_Signal;				//AA当前用户的信号音接续状态
							//高4位为信号音的类型标志
							//低4位为信号音的反转标志
	unchar	Num_Troop_Call;			//分机自己群呼组号
	unchar	Temp_Troop_Call;			//分机自己临时群呼组号
}  PhysicalParam;
typedef struct {
	unchar	Counter_HK;			//AB用户摘挂机识别计数
	unint	Counter_Signal;		//AC用户信号音计数
	unchar	Counter_Pause;		//AD用户脉冲收号计数器
	unchar	Counter_Rec_DTMF;	//AE用户双音频收号计数器
} CounterParam;
typedef struct {
	unchar	MeetLen;			//用户会议组字头长度
	unchar	MeetHead;		//用户会议组的头号码1
	unchar	Num_Member;		//用户会议组现有的成员数
	unchar	Meetstate;		//当前会议的使用状态
	unchar	Meet_Member[MAX_Ext];	//用户会议组成员列表,最大为32
} MeetParam;		//C0~Ca用户会议组最大为7
typedef struct {
	unchar	TrkLen;			//用户中继组字头长度
	unchar	TrkHead;			//用户中继组的头号码
	unchar	Num_Member;		//用户中继组现有的成员数
	unchar	Num_Use;		//用户中继组已被占用的成员数
	unchar	No_Use_Now;		//用户中继组当前使用的中继序号
	unchar	Trk_Member[MAX_Ext];	//用户中继组成员列表,最大为32
							//数据高4位表示使用0XF0,低4位为用户号
} TrkParam;			//D0~DA用户中继组最大为7,
typedef struct {
	unchar	SCN;				//当前读取用户摘挂状态数据
	unchar	LL;				//前次用户摘挂数据
	unchar	AP;				//当前用户脉冲间隔数据
	unchar	LAP;				//前次用户脉冲间隔数据
	unchar	DTMF_ST;		//当前双音频解码状态
	unchar	DTMF_Data[4];	//当前双音频解码数据
	unchar	Ext_Ring_ST;		//当前用户振铃数据
} GroupParam;		//E0~E3当前用户组的参数
typedef struct{
	unchar	MeetGroup;		//用户会议组对应的固定会议组号,大于15表示是调度
	unchar	Manager_Ext;		//临时会议组主席
	unchar	Num_Member;		//临时会议组成员数
	unchar	Meetstate;		//当前会议的使用状态
	unchar	Meet_Member[MAX_Ext];//临时会议组成员最大数
}TempMeetGroup;	//F0~FF当前临时会议组
typedef struct{
	unchar	KeyType;			//该键类型,0表示内线,1表示外线,ff表示不使用
	unchar	Logic_Num[12];	//键对应的逻辑号码
}STKeyParam;
typedef struct{
	unchar	TroopLen;		//群呼组号码长度
	unchar	TroopHead;		//群呼组号码头
 	unchar	Num_Member;		//群呼组成员数
 	unchar	TroopType;		//是采用群呼还是轮巡(0为群呼,其他是轮巡)
	unchar	Troopstate;		//当前群呼组的使用状态(0~32,0表示为使用,其他表示正在使用的人)
							//同一群呼号码可以被32个用户呼叫
	unchar	Troop_Member[MAX_Ext];//群呼组成员最大数32
}TroopGroup;
/***************************
定义变量设置基本长度
****************************/
#define	BufSize		255
#define	AlignSize		1000


#endif

⌨️ 快捷键说明

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