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

📄 scanner.h

📁 msp430例程
💻 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 + -