?? scanner.h
字號:
#define TRUE 1
#define FALSE 0
#define m_POWERLIMIT1 (3150) //2。44v//電壓分壓后應2。64v(正負12V)1.76V(正負8v)
#define m_POWERLIMIT3 (2550) //對應外部參考時,分壓電壓范圍低值 //2.64v/veref*4096 = 3600
#define m_POWERLIMIT4 (2750) //對應外部參考時,分壓電壓范圍高值
//******************************************
//錯誤碼定義
#define m_MAINPOWERERROR 0x11 //正負電源電壓(或其中之一)異常,或器件內部AD失效
#define m_EXREFERROR 0x12 //外部3V參考電壓異常
#define INVAILDCOMMANDERROR 0x13 //下位機收到錯誤的命令。
#define RXBUFFOVERLOADERROR 0x14 //下位即接收緩沖區滿或已被鎖定
#define TIMEOVERERROR 0x16 //不允許進入升級主程序狀態
#define SUCCESS 0x7f //成功代碼
//**************************************************
//**********************************************
#define PRODUCTION_NAME 0x19 //產品名稱主動采集型18顆電池采集板
#define SOFTWARE_REVISON 01 //ver1.8
//**********************************************
#define RXJA 0x55 //通訊用字節
#define TimesADDRESS 0xf200 //每通道采集次數地址
//0xf200~0xf225 保存數據依次是:MAXTIMES ChTimes1 ChTimes2 ChTimes3...... 19組
//0xf226~0xf249 ChZero1 Chzero2 Chzero3.... 18組
//0xf24a~0xf26d ChVolHig1,ChVolHig2 18組
//0xf26e~0xf291 保存ChVolLow1,ChVolLow2.... 18組
//0xf292~0xf2b5 保存充電時dv/dt閾值 18組
//0xf2b6~0xf2d9 保存放電時dv/dt閾值 18組
//0xf2da~0xf2de //保存充電時總電壓dv閾值,放電時總電壓閾值
#define IDADDRESS 0xf402 //id空間起始地址 0XF400 ~0XF402
#define SELFIDADDRESS 0xf600 //唯一標識地址為0XF600~0XF60F
#define MODE1 0xA2 //工作模式一;
#define MODE2 0xA4 //工作模式二;
#define CHARGESTATE 0x62 //充電模式 這里的
#define DISCHARGESTATE 0x74 //放電模式
#define HOLDSTATE 0x58 //靜置狀態
#define OTHERSTATE 0X49 //其他狀態或不正常狀態
//bypass #define MODE3 0xA6 //工作模式三; //bypass 功能
#define DEFAULTTIMES 2048 //1024 //默認的采集數目
#define P1DATAADDRESS 0xf000 //每通道采集次數地址
#define P2DATAADDRESS 0xf018 //每通道采集次數地址
#define VOLCHANGEVALUE 0x200 //定義判斷電壓變化的量,小于這個量將認為是正常的采集波動
typedef unsigned char BOOL;
void InitSys(void);
int SelfTest(void); //系統自檢測試
void RxComResp(void);
char BinToBcd(unsigned char);
char BcdToBin(unsigned char);
void SendByte(void); //啟動發送子程序,該程序負責發送第一個字節,剩余字節由中斷服務程序發送
void DelayAMoment(void);
void SetiErrorCode(unsigned char);
void SetNormalTxBuff(unsigned char);
unsigned char ReadPara(unsigned int); //讀取外部的設定參數
extern void Update(void);
//---******************* 以下程序因代碼空間不足轉用匯編語言實現**********------
extern void Delay1ms(void);
unsigned char ta; //用于實現1秒計時和60秒計時的軟件時鐘寄存器
unsigned char RxBuff[0x10]; //串口接收緩沖區,16字節
unsigned char RxIndex; //接收指針
BOOL RxComRes;
BOOL RxComLock; //當串口接收到的數據在進行處理時,鎖定緩沖區,防止進入新數據。這導致不能完全的全雙工
//串行數據發送:定義一個十六字節的發送緩沖區,待發送的數據放入緩沖區即可,然后向TXBUF0送數啟動發送,并將發送指針變更為1
//數據發送完成后進入發送中斷服務程序,完成其他數據的發送,‘$'為結束標記
unsigned char TxBuff[18]; //串口發送緩沖區,48字節
unsigned char TxIndex; //發送指針
unsigned char WriteNum; //待發送的字節數目
int iErrorCode;
char *ptrFlashData;
unsigned char m_IDH,m_IDL;
//協議處理需要的變量單元
unsigned char m_Mode; //工作模式 模式一,接收到命令則采集一次數據,等待上傳;模式二,不斷采集數據,等待上傳
unsigned char m_ResID,m_ResIDbuf; //命令序號用于在模式一時,確定采集的數據是否是采集命令要求的數據,模式二時固定為0
//當工作在模式三時,m_ResID固定為0x99
BOOL ScanRes; //模式一時,要求進行一次電池電壓采集
unsigned int ChTimes; //通道的采集次數,保存在FLASH中,可由上位機下載
int ChZero; //通道的零點電壓,保存在flash中,可由上位機下載
unsigned long ChAdder;
unsigned int m_ChannelCur[18]; //用于保存當前的采集數據
//unsigned int m_ChannelHis[18]; //用于保存歷史
unsigned int m_ChannelHis2[18]; //用于計算dv/dt,保存上一次的電壓值
//unsigned long m_TotalChannelCur; //用于保存當前的電壓之和
//unsigned long m_TotalChannelHis; //用于保存歷史的電壓之和
unsigned char ChNum;
BOOL LampFlashRes;
BOOL ScanInitRes;
BOOL OwnScanReady;
BOOL OwnScanEnable;
unsigned int FlashPara; //用于保存從flash中讀出的配置參數
unsigned int SecTimer; //每秒加一,擬用于記錄主動采集中最大未傳輸數據間隔
unsigned char m_State; //用于記錄當前的充放狀態,當其為Mode1時,表示為充電,當其為模式2時,表示放電
unsigned char VolUpNum,VolDownNum; //用于記錄電壓升高的電池和電壓降低的電池個數。
//unsigned char StateSwitchPoint; //用于記錄是否發現拐點,當放電到充電時,為1,當充電到放電時為2,其他時為0
//unsigned char UploadStateOverTimer; //當檢測到拐點時,一段時間內將禁止采集,等待上位機將數據上傳后再進行采集,但若超時則丟棄
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -