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

📄 lna3.h

📁 GSM低噪声放大器模块监控处理程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************************
   定义变量时,数组定义在BANK0和BANK1
   其余变量定义在BANK2和BANK3。
   BANK0是编译器默认的局部变量定义范围,尽量不要使用
******************************************************************************************/

/*****************************************************************************************
    宏定义
******************************************************************************************/
#include "pic.h" 
#define _nop()	{ asm("NOP");}
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
//#define MOD_ID_L    1	//模块ID号低字节
//#define MOD_ID_H    0	//模块ID号高字节
#define PWR_CNT    20
#define TEMP_CNT   20
#define V7_CNT     20
#define ID_CNT     100
#define IIC_DELAY  15	
#define BUF_LENGTH 80
#define PROTL      0x02   //协议版本
#define TYPE       0x01	//协议类型
//#define CTR_CNT       20
#define MOD_Num       19
#define MOD_ADDR      1
#define Para_Num     57
//#define Basic_Para_Num  1
//温补参数有3个:输出功率电压控制、ATT1、ATT2,输出功率检测补偿值(DBM)
#define  tn   3//此模块中温补参数个数(包括控制项与检测项 增益1、增益2、输出功率电压控制、输出功率电压检测)
//#define  tnzj   3//此模块中某温度下温补参数占多少字节(与tn不同,因为栅压控制补偿实际值参数占两个字节)
#define  pn   0//此模块中频响补偿实际值参数个数
#define  zyn   2//此模块中增益补偿实际值参数个数
#define tpnumb  30//温度划分段数30段
#define fnumb   30//频率划分段数30段
#define bcnumb  32//标称值划分段数32段
#define tempd   0x0100//温度值在EEPROM中首地址(即温度值1的EEPROM地址,共30个温度值,占30个字节)
#define freqd   0x0120//频率值在EEPROM中首地址(即频率值1的EEPROM地址,共30个频率值,占60个字节)
#define bczd    0x0140//标称值在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 max;	//最大输出功率控制
	char GCU1;	//数控衰减控制1
	char GCU2;	//数控衰减控制2
	
	char PWR;	//输出功率检测参数
    uchar alm;	//低噪放过功率告警参数
	uchar  ctr;	//功率控制深度检测参数
	uchar v7L;	//+7V电压检测参数低字节
	uchar v7H;	//+7V电压检测参数高字节
	char TEMP;	//温度检测参数
	uchar maxu;	//最大输出功率控制电压值低字节
	uchar  POFFSET1;
	uchar  POFFSET2;
	//uchar BB;	//最大输出功率校准电压值
	uchar CTRU;	//功率控制深度检测电压值低字节
	uchar CTRBB;//控制深度偏置值
	uchar v7U;	//+7v电压检测电压值低字节
	uchar PWRU;	//输出功率检测电压值低字节
	uchar TEMPU;	//温度检测电压值低字节
	uchar IDU;//电流检测电压值低字节
	uchar ID1;//电流检测值
	uchar IDST;
	uchar ADDR;	//模块地址
//	uchar PROTL_ETN;//协议版本
//	uchar 	GCU1JZ;//数控衰减1校准值
//	uchar GCU2JZ;//数控衰减2校准值
    uchar MAXUJZ;//最大输出功率控制电压的校准(温补)
    char PWRJZ;//功率检测值温度补偿值
};
/*********************************************************************************
                             内部变量
***********************************************************************************/ 
uchar B[3];//B[0],B[1]为EEPROM中补偿值,B[2]为实际的补偿值
uchar v7_buf[2],pwr_buf[2];
uchar sumgcu;//总衰减数
uint chushi;//定时器中断计数器
char  tempinit;//温度初始值
uchar tempcheck;//=0,为刚上电初始化,=1,为已进行过一次温度检测
uint idbuf,tempbuf;
uchar pwr_cnt,temp_cnt,v7_cnt,id_cnt;
uchar erro;
/********************************
bit 0	    查询出错
bit 1       设置出错
********************************/
uchar porta_wbuf,portb_wbuf,portc_wbuf,portd_wbuf,porte_wbuf;
uchar receive_over;   //接收是否完成标志:1 接收完成   0 接收未完成
uchar receive_time_on;  //接收超时定时器开关  1 打开  0关闭
uchar receive_time_count; //接口超时定时计数器
uchar receive_cnt;       //发送或者接收的字节数
uchar  tran_flag;//转义处理标志位,1:进行了0X4E的转义处理(将0X4E转义为0X5E,0X4D);0:未进行转义处理

uchar  headend_flag;//接收到包头标志1:接收到包头,2:接收到包尾,0:没收到包头.
uchar pChecksum[2];
uchar err_eeprom;
uchar dog_soft;
static uchar bank1 receive_buf[BUF_LENGTH];
//static uchar bank2 receive_buf1[BUF_LENGTH];
static struct data_struct bank2 Prmter1;
/********************************************************************************
 							内部固定函数
**********************************************************************************/
void init();
void dog();
void init_mcu();
void init_menu();
void sign_collect();
void init_sign_ctl();
void gcu_ctl(uchar ctbuf,char gcubuf);
void max_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);
uchar Query_Address();
uchar Query_Basic_Parameter();
uchar Set_Basic_Parameter();
uchar Set_Parameter();
uchar Query_Parameter();
/***************************************************************************
表格通信函数
***************************************************************************/
uchar Set_tp(uint fstadr);//设置温度值或频率信道号
uchar Query_tp(uint fstadr,uchar bytenumb);//设置温度值或频率信道号
uchar Query_csd(uchar adsnumb,uchar bubuf );//查询所有温补、标称值补偿、频响补偿参数编码,编码占2个字节
uchar Set_cszd(uint firstadr,uchar bubuf);//设置所有温补、标称值补偿、频响补偿参数表内容,所有补偿参数占1个字节
uchar Query_cszd(uint firstadr,uchar bubuf);//查询所有温补、标称值补偿、频响补偿参数表内容,所有补偿参数占1个字节

/********************************************************************************
 							内部配置函数
**********************************************************************************/
uchar TEMP(uchar tempnb);//温补函数
uchar ATTBU(char attin,uchar attnb);//增益标称值补偿函数
//uchar FREQBU(uchar freqin,uchar freqnb);//频响补偿
void CHECK_PWR();			//输出功率检测和过功率告警检测
//void CHECK_ALM();			//过功率告警检测
void CHECK_ctr();			//功率控制深度检测参数
void CHECK_v7();			//+7V电压检测参数
void CHECK_temp();			//温度电压检测参数
void CHECK_id();
void gcu_jz();			//增益校准函数;
void DAC(uchar addr,uchar buf);
void 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();

⌨️ 快捷键说明

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