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

📄 zhubo.h

📁 驻波模块的监控数据处理
💻 H
字号:
/*****************************************************************************************
    宏定义
******************************************************************************************/
#include "pic.h" 
#define _nop()	{ asm("NOP");}
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
#define POF_CNT  1000
#define POR_CNT  1000
#define IIC_DELAY  15	
#define BUF_LENGTH 80
#define PROTL      0x02
#define TYPE       0x01	//协议类型
//#define MOD_ID_L    1	
//#define MOD_ID_H    0
#define MOD_ADDR    1
#define Para_Num    18
#define Basic_Para_Num 5
#define MOD_Num     6
/**************************************************************************************
								数据类型定义
****************************************************************************************/
union buf_union
{
	uint buf1;
	uchar buf2[2];
};

union reg_n_buf
{
	ulong buf1;
	uchar buf2[4];
	uint buf3[2];
};
struct data_struct
{
//	uchar ID_L;
//	uchar ID_H;
	uchar POF;//正向输出功率检测
	uchar POR;//反向输出功率检测
	uchar POFU;//正向输出功率检测
	uchar PORU;//反向输出功率检测
	uchar  POFFSET1;
	uchar  POFFSET2;
    //uchar SWR;//驻波系数检测
	uchar ADDR;//模块地址

	//uchar TEMPL;//温度检测参数
	//uchar TEMPH;//温度检测参数
//	uchar PROTL_ETN;  //协议版本
};
/*********************************************************************************
                             内部变量
***********************************************************************************/ 
//uchar bank3 rebuf[80];//调试用
static struct data_struct bank2 Prmter1;
uchar pof_buf2[2],por_buf2[2];
uchar pof_buf1[2],pof_buf2[2],por_buf1[2],por_buf2[2];
uchar tmp_buf[2];
uint  tmp_cnt,pof_cnt,por_cnt;
uchar erro;
/********************************
bit 0	    查询出错
bit 1       设置出错
********************************/
uchar porta_wbuf,portb_wbuf,portc_wbuf,portd_wbuf,porte_wbuf;
//uchar alarm_time_cnt;
uchar dog_soft;
static uchar bank1 receive_buf[BUF_LENGTH];
//static uchar bank3 receive_buf1[BUF_LENGTH];//调试用
uchar receive_over;   //接收是否完成标志:1 接收完成   0 接收未完成
uchar receive_time_on;  //接收超时定时器开关  1 打开  0关闭
uchar receive_time_count; //接口超时定时计数器
uchar receive_cnt;       //发送或者接收的字节数
//uchar receive_cnt1;       //发送或者接收的字节数
uchar  tran_flag;//转义处理标志位,1:进行了0X4E的转义处理(将0X4E转义为0X5E,0X4D);0:未进行转义处理

uchar  headend_flag;//接收到包头标志1:接收到包头,2:接收到包尾,0:没收到包头.
uchar pChecksum[2];
uchar err_eeprom;
/********************************************************************************
 							内部固定函数
**********************************************************************************/
void init();
void dog();
void init_mcu();
void init_menu();
//void delay_unit(uint buf); 
void sign_collect();
void init_sign_ctl();
void delay_Tad(uchar j);
uchar adc_read(uchar buf);
void delay_unit(uint buf); 
void init_serial();
void serial_data();
void CheckCRC(uchar *pData, uchar nDataLength,uchar start, uchar *pChecksum);
void interrupt int_process(void);//中断处理程序
//void byte_combine(uchar *pdata,uchar length,uchar start);
//void byte_divide(uchar *pdata,uchar length,uchar start);
void receive_free();//将接收缓冲数组清零
void send_reply_flag(uchar reply_flag,uchar length);
void init_eeprom(void);//初始化	EEPROM
uchar Query_Address();//查询模块参数地址
uchar Query_Basic_Parameter();//查询基本信息项
uchar Set_Basic_Parameter();//设置基本信息项
uchar Set_Parameter();//设置参数值
uchar Query_Parameter();//查询参数值
/********************************************************************************
 							内部配置函数
**********************************************************************************/
void CHECK_TEMP();//温度检测
void CHECK_POFDN();//下行正向输出功率检测
void CHECK_PORDN();//下行反向输出功率检测
void CHECK_SWR();//驻波系数检测
void DAC(uchar addr,uchar buf);
uchar wrom(uint addr,uchar buf);
uchar rrom(uint addr);
void iic_delay();
void iic_star();
void iic_stop();
void iic_send(uchar buf) ;
uchar iic_get();
uchar iic_ack();
void ack_iic(uchar buf);
/****************************************************************************************
								通信协议内参数地址
*****************************************************************************************/	
	
//检测参数
//#define temp		0x8400 //驻波温度
#define poffset1		0x00d8 //上行前向功率检测偏置控制值(1个字节)
#define poffset2		0x00d9 //上行反向功率检测偏置控制值(1个字节)
#define pof		0x8402 //下行正向功率检测
#define por		0x8406 //下行反向功率检测
#define pofu		0x840c //下行正向功率检测
#define poru		0x8414 //下行反向功率检测

//#define SWR_dn		0x8600//驻波系数检测
//#define m_addr 	0x00ff  //模块地址
//#define id		0x0200  //模块ID地址
//#define pro_etn	0x0202	//协议版本
/****************************************************************************************
								Eeprom内参数地址
*****************************************************************************************/
#define poff1add 	0x0000
#define poff2add 	0x0002

#define mod_idadd		0x0700  //模块识别id地址
#define mod_add_add     0x070c  //模块地址地址
#define product_add     0x070f  //生产序列号参数地址

/*****************************************************************************************
						CRC  变换参数表
******************************************************************************************/
const uint CRCTable[256]={
0, 4129, 8258,12387,16516,20645,24774,28903,
33032,37161,41290,45419,49548,53677,57806,61935,
 4657,  528,12915, 8786,21173,17044,29431,25302,
37689,33560,45947,41818,54205,50076,62463,58334,
 9314,13379, 1056, 5121,25830,29895,17572,21637, 
42346,46411,34088,38153,58862,62927,50604,54669,
13907, 9842, 5649, 1584,30423,26358,22165,18100, 
46939,42874,38681,34616,63455,59390,55197,51132,
18628,22757,26758,30887, 2112, 6241,10242,14371,
51660,55789,59790,63919,35144,39273,43274,47403,
23285,19156,31415,27286, 6769, 2640,14899,10770,
56317,52188,64447,60318,39801,35672,47931,43802,
27814,31879,19684,23749,11298,15363, 3168, 7233,
60846,64911,52716,56781,44330,48395,36200,40265,
32407,28342,24277,20212,15891,11826, 7761, 3696,
65439,61374,57309,53244,48923,44858,40793,36728,
37256,33193,45514,41451,53516,49453,61774,57711,
 4224,  161,12482, 8419,20484,16421,28742,24679,
33721,37784,41979,46042,49981,54044,58239,62302,
  689, 4752, 8947,13010,16949,21012,25207,29270,
46570,42443,38312,34185,62830,58703,54572,50445,
13538, 9411, 5280, 1153,29798,25671,21540,17413,
42971,47098,34713,38840,59231,63358,50973,55100,
 9939,14066, 1681, 5808,26199,30326,17941,22068,
55628,51565,63758,59695,39368,35305,47498,43435,
22596,18533,30726,26663, 6336, 2273,14466,10403,
52093,56156,60223,64286,35833,39896,43963,48026,
19061,23124,27191,31254, 2801, 6864,10931,14994,
64814,60687,56684,52557,48554,44427,40424,36297,
31782,27655,23652,19525,15522,11395, 7392, 3265,
61215,65342,53085,57212,44955,49082,36825,40952,
28183,32310,20053,24180,11923,16050, 3793, 7920
};

/************************************************************************************
							归零码变化表
*************************************************************************************/
const ally_2_table[] = 
{
	0x00,0x01,0x10,0x11,0x02,0x03,0x12,0x13,
	0x20,0x21,0x30,0x31,0x22,0x23,0x32,0x33
};

const divide_2_table[] = 
{
	0xaa,0xa9,0xa6,0xa5,0x9a,0x99,0x96,0x95,
	0x6a,0x69,0x66,0x65,0x5a,0x59,0x56,0x55
};
/************************************************************************************
							参数地址配置表格
*************************************************************************************/
const Para_Num_Conf[Para_Num] = 
{
	//0x00,0x84,0x0c,0x84,0x12,0x84
0xd8,0x00,0x00,0xd9,0x00,0x00,0x02,0x84,0x00,0x06,0x84,0x00,0x0c,0x84,0x01,0x14,0x84,0x01
};
//const data[13] = 
//{
//	0x00,0xf0,0x01,0x00,0x02,0xf0,0x00,0x03,0xf0,0x08,0x04,0xf0,0x02
//};

//基本信息只读项表(地址+信息内容)
const basic_table[32] = 
{
	0x01,0xf0,'Z',0x20,0x20,0x20,0x20,0x20,0x20,0x20,//模块类型
	0x03,0xf0,0x02,//协议版本
	0x04,0xf0,0x06,//模块参数个数为6个
//	0x05,0xf0,0x00,//温补参数个数为0个
//	0x06,0xf0,0x00,//频响补偿参数个数为0个
//	0x07,0xf0,0x00,//增益标称值补偿参数个数为0个
//	0x08,0xf0,0x40,//增益刻度为64
	0x17,0xf0,'0','5','1','2','3','1','1',0x20,0x20,0x20,//程序ID号为0512311,表示05年12月31日,模块版本为1.
	0x18,0xf0,0x01,0x00//程序版本号
};

⌨️ 快捷键说明

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