?? lna3.h
字號:
/****************************************************************************************
定義變量時,數組定義在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 + -