📄 zhubo.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 + -