📄 g1.h
字号:
/*****************************************************************************************
宏定义
******************************************************************************************/
#include "pic.h"
#define _nop() { asm("NOP");}
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define PWRAV_CNT 20
#define ALC_CNT 20
#define V28_CNT 20
#define TEMP_CNT 20
#define IIC_DELAY 15
#define BUF_LENGTH 80
#define PROTL 0x02 //协议版本
#define TYPE 0x01 //协议类型
#define ID_CNT 100
//#define MOD_ID_L 1
//#define MOD_ID_H 0
//#define MOD_ADDR 4
#define Para_Num 196 // 38*4+11*4=196
//#define Basic_Para_Num 5
//#define MOD_Num 38
//温补参数有12个:ATT1、ATT2,vgs1,vgs2,vgs3,vgs4,pc1u,pc2u,freq1,freq3,pwr1,pwr2
#define tn 10//此模块中温补参数个数(包括控制项与检测项
//#define tnzj 3//此模块中某温度下温补参数占多少字节(与tn不同,因为栅压控制补偿实际值参数占两个字节)
#define pn 2//此模块中频响补偿实际值参数个数
#define zyn 2//此模块中增益补偿实际值参数个数
#define tpnumb 30//温度划分段数30段
#define fnumb 30//频率划分段数30段
//#define fnumbbyte 60//频率信道在EEPROM中占用字节数60byte
#define bcnumb 64//标称值划分段数64段
#define tempd 0x0100//温度值在EEPROM中首地址(即温度值1的EEPROM地址,共30个温度值,占30个字节)
#define freqd 0x0120//频率值在EEPROM中首地址(即频率值1的EEPROM地址,共30个频率值,占60个字节)
#define bczd 0x0160//标称值在EEPROM中首地址(即标称值1的EEPROM地址,共32个标称值,占30个字节)
//#define tempcsd 0x0190//温补参数编码在EEPROM中首地址(即温补参数1编码的EEPROM地址)编码为补偿参数在标准化协议中的地址
//#define freqcsd 0x0200//频补参数编码在EEPROM中首地址(即频补参数1编码的EEPROM地址)编码为补偿参数在标准化协议中的地址
//#define bczcsd 0x0230//标称值补偿参数编码在EEPROM中首地址(即标称值补偿参数1编码的EEPROM地址)编码为补偿参数在标准化协议中的地址
#define tempcszd 0x0260//温补参数值在EEPROM中首地址(即温补参数值1的EEPROM地址)
#define freqcszd 0x0500//频补参数值在EEPROM中首地址(即频补参数值1的EEPROM地址)
#define bczcszd 0x0600//标称值补偿参数值在EEPROM中首地址(即标称值补偿参数值1的EEPROM地址)
/**************************************************************************************
数据类型定义
****************************************************************************************/
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 TYPE;//协议类型
uchar ADDR;//模块地址
uchar ATT1;//衰减1
uchar ATT2;//衰减2
uchar ACTATT1;//衰减1的实际值
uchar ACTATT2;//衰减2的实际值
uchar BUTTON1;//功放开关1
uchar BUTTON2;//功放开关2
//uchar BUTTON3;//功放开关3
//uchar BUTTON4;//功放开关4
uchar VGS1_L;//第一个管子第一级栅压低字节
uchar VGS2_L;//第二个管子第一级栅压低字节
uchar VGS3_L;//第一个管子第二级栅压低字节
uchar VGS4_L;//第二个管子第二级栅压低字节
uchar VGS1_H;
uchar VGS2_H;
uchar VGS3_H;
uchar VGS4_H;
uchar PC1;//最大输出功率
uchar PC1U_L;
uchar PC1U_H;
uchar PC2;//最大输出功率
uchar PC2U_L;
uchar PC2U_H;
uchar ACTVPL[6];//数组[0]为栅压1的实际值低字节.....数组[5]为PCU2的实际值低字节;
uchar ACTVPH[6];//数组[0]为栅压1的实际值高字节.....数组[5]为PCU2的实际值高字节;
uchar FREQ1_L;//上行本振控制1低字节
uchar FREQ3_L;//上行本振控制3低字节
uchar FREQ1_H;
uchar FREQ3_H;
char TEMP;
uchar TEMPU_L;
uchar TEMPU_H;
uchar V28_L;
uchar V28_H;
uchar V28U_L;
uchar V28U_H;
uchar PWR1;
uchar PWR1U;
uchar PWR2;
uchar PWR2U;
uchar ID1;//功放管1第1级电流检测低字节
uchar ID1U;
uchar ID1ST;
uchar ID2;//功放管2第1级电流检测低字节
uchar ID2U;
uchar ID2ST;
uchar ID3;//功放管1第2级电流检测低字节
uchar ID3U;
//uchar ID3ST;
uchar ID4;//功放管1第2级电流检测低字节
uchar ID4U;
// uchar ID4ST;
uchar PLL_STATE1;//本振锁定指示1
uchar PLL_STATE3;//本振锁定指示3
uchar POFFSET1;
uchar POFFSET2;
uchar POFFSET3;
uchar POFFSET4;
uchar GCUTPBC;//增益1、2的温度补偿参数
uchar VTPBC;//栅压1、栅压2、3、4或输出功率电压的温度补偿参数
// uchar FREQTPBC;//本振1的温度补偿参数
uchar PWR1BC;//前向功率1检测补偿(dB)
uchar PWR2BC;//前向功率2检测补偿(dB)
uchar GCUBC;//增益1、2的标称值补偿
uchar FQGCUBC;//频响1\2补偿
// uchar PROTL_ETN; //协议版本
};
/*********************************************************************************
内部变量
***********************************************************************************/
static struct data_struct bank2 Prmter1;
uint bank2 chushi;
char tempinit;//温度初始值
union buf_union vbuf;
uint tempbuf;
uchar tempcheck;//=0,为刚上电初始化,=1,为已进行过一次温度检测
uchar B[3];//B[0],B[1]为EEPROM中补偿值,B[2]为实际的补偿值
uint bank2 idbuf1,idbuf2,idbuf3,idbuf4;
uchar bank2 id1_cnt,id2_cnt,id3_cnt,id4_cnt,temp_cnt;
uint FR1,FR3;//FR1=FREQ1_L+FREQ1_H,都是总的信道号
uchar bank2 PLL_count11,PLL_count12;
//PLL_count11,PLL_count21为锁定状态记数;PLL_count22,PLL_count22为失锁状态记数
uchar bank2 PLL_count31,PLL_count32;
//PLL_count31,PLL_count31为锁定状态记数;PLL_count42,PLL_count42为失锁状态记数
uchar PLL_count1,PLL_count3;//锁相环循环次数计数器
uchar erro;
/********************************
bit 0 查询出错
bit 1 设置出错
********************************/
uchar porta_wbuf,portb_wbuf,portc_wbuf,portd_wbuf,porte_wbuf;
//uchar alarm_time_cnt;
uchar dog_soft;
uchar bank1 receive_buf[BUF_LENGTH];
uchar receive_over; //接收是否完成标志:1 接收完成 0 接收未完成
uchar receive_time_on; //接收超时定时器开关 1 打开 0关闭
uchar receive_time_count; //接口超时定时计数器
uchar receive_cnt; //发送或者接收的字节数
uchar headend_flag;//接收到包头标志1:接收到包头,2:接收到包尾,0:没收到包头.
uchar tran_flag;//转义处理标志位,1:进行了0X4E的转义处理(将0X4E转义为0X5E,0X4D);0:未进行转义处理
//uchar datend_flag;//接收到包尾包尾标志1:接收到包尾,0:没收到包尾.
//uchar receive_cnt1; //发送或者接收的字节数
uchar pChecksum[2];
uchar err_eeprom;
//auto union buf_union receive_tran;//转义处理
/********************************************************************************
内部固定函数
**********************************************************************************/
void init();
void dog();
//void DAC(uchar addr,uchar buf);
void DAC(uchar addr,uchar dac_H,uchar dac_L);
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 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);
uchar Query_Address();
//uchar Query_Basic_Parameter();
uchar Set_Basic_Parameter();
uchar Set_Parameter();
//uchar Query_Parameter();
/***************************************************************************
表格通信函数
***************************************************************************/
//uchar Query_temp();//查询温度值
//uchar Query_freq();//查询频率值
//uchar Query_att();//查询标称值
//uchar Query_tempcsd();//查询所有温补参数编码
//uchar Query_freqcsd();//查询所有频补参数编码
//uchar Query_bczcsd();//查询所有标称值补偿参数编码
//uchar Query_tempcszd();//查询所有温补参数表内容
//uchar Query_freqcszd();//查询所有频补参数表内容
//uchar Query_bczcszd();//查询所有标称值补参数表内容
//uchar Set_temp();//设置温度值
//uchar Set_freq();//设置频率值
//uchar Set_att();//设置标称值
//uchar Set_tempcszd();//设置所有温补参数表内容
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -