?? 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 + -