• 大小: 140KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签:

资源简介

现在多数bms都采用6803作为采集芯片 此为经典bms程序

资源截图

代码片段和文件信息

#include 
#include“ltc6802_1.h“
#include“reg6802.h“
#include “config.h“
#include“intrins.h“
#include“main.h“
#include “temp.h“


sbit CSBI=P3^3; //使能端
sbit MISO=P3^2;  //SPI输出MISO CPU输入采集模块输出
sbit MOSI=P3^4;  //SPI输入 CPU输出采集模块输入
sbit SCK=P3^5;  //SPI时钟

unsigned char bdata DATA_BUF;
sbit flag =DATA_BUF^7;
sbit flag1 =DATA_BUF^0;
unsigned char xdata CFGR[6];
bit Ltc6801OK;
unsigned char xdata CVR[19];//电池电压寄存器组
unsigned char xdata SECONDCVR[19];//缓存测内阻时的第二次电压值
unCVR xdata CellV[12]; //电池电压值
//unCVR xdata CellDischargeVoltage[2]; //电池放电电压
unCVR xdata AdjustV[12];

unCVR xdata FirstTestIRCellV[12]; //测内阻时 第一次测的电池电压值
unCVR xdata SecondTestIRCellV[12]; //测内阻时 第二次测的电池电压值
 

unsigned char xdata Tempr[5]; //温度寄存器
unCTR xdata CellT[2]; //温度值对应的电压值
READFLAG xdata Readflag[3];
READFLAG xdata PreReadflag[3];
DISCHARGESWITCH xdata DischargeSwitch[2];



//===============================================================================
// 计算CRC校验码函数;
// 输  入: 要计算数据缓冲区的起始指针pBuff,缓冲区的字节数Len;
// 输  出: CRC校验码;
// 功  能: 计算CRC校验码。
//------------------------------------------------------------------------------------------------------
//crc算法说明:
/*校验多项式为G(X)=X8+X2+X+1,对每个控制字或信息字的
前5个字节进行CRC校验,生成一个8位的余数,该余数取反
后即可作为校验码尾随前5字节发送。计算方法如下:
将每个控制字或信息字中的前5个字节按从低到高的顺序排列,
每个字节的位从高到低排列,构成一个位流,在这个位流的后面加上8个0,
从而得到一个48位的位流。例如,对某个信息字有B0-B5共6个字节,
每个字节8位分别为bi7-bi0(i为字节序号,取值范围0~4),
则按上面的方法得到的位序列为b07b06...b00,b17b16..b10,...,b47b47...b40,00000000,
用校验多项式107H (X^8+X^2+X+1)作为除数去除这个码流,
相除时不做减法而做异或,最后得到一个8位的余数*/
//===============================================================================
unsigned char CRC107(unsigned char  *buff  int len)
{
int q r;
int crc;
int  i;

crc = 0;
q = 0; //字节计数器
r = 0; //字节内位的计数器
while(q < len)
{
if(buff[q] & (0x80>>r))//当字节内某位为1时,在余数末尾置1,否则置0
crc |= 0x01;
if(crc >= 0x100)
crc ^= 0x107; //异或多项余子式
crc <<= 1;
r++;
if(r == 8) //处理下一个字节
{
r = 0;
q++;
}
}
for(i=0; i<8; i++) //对位流的后8位计算CRC校验码
{
if(crc >= 0x100)
crc ^= 0x107;
crc <<= 1;
}
crc >>= 1;
//crc = (~crc); //余数取反
return (unsigned char)crc;
}
//================================================================
//函数功能:片内SPI接口操作
//filename:SpiWrite()
//input:char 读操作,输入参数0
//output:none
//================================================================
void SpiWrite(unsigned char  byte)
{
unsigned char i;
DATA_BUF=byte; // Put function‘s parameter into a bdata variable
for (i=0;i<8;i++) // Setup byte circulation bits
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if (flag) // Put DATA_BUF.7 on data line
MOSI=1;
else
MOSI=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCK=1; // Set clock line high
DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCK=0; // Set clock line low 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        622  2010-01-08 10:38  BATmonitor 1.7\config.h

     文件      75850  2010-01-08 10:38  BATmonitor 1.7\LTC6802-1

     文件       9624  2010-01-08 10:38  BATmonitor 1.7\ltc6802-1.c

     文件        101  2010-01-08 10:38  BATmonitor 1.7\LTC6802-1.lnp

     文件      22237  2010-01-08 10:38  BATmonitor 1.7\ltc6802-1.LST

     文件      66910  2010-01-08 10:38  BATmonitor 1.7\LTC6802-1.M51

     文件      30096  2010-01-08 10:38  BATmonitor 1.7\ltc6802-1.OBJ

     文件      29110  2010-01-08 10:38  BATmonitor 1.7\LTC6802-1.plg

    .......     72296  2016-07-06 11:12  BATmonitor 1.7\LTC6802-1.uvgui.Administrator

    .......      9646  2016-07-06 11:12  BATmonitor 1.7\LTC6802-1.uvopt

    .......     14566  2016-07-06 11:12  BATmonitor 1.7\LTC6802-1.uvproj

     文件         39  2010-01-08 10:38  BATmonitor 1.7\ltc6802-1.__i

     文件      74813  2010-01-08 10:38  BATmonitor 1.7\LTC6802-11

     文件      21091  2010-01-08 10:38  BATmonitor 1.7\LTC6802-11.hex

     文件      66042  2010-01-08 10:38  BATmonitor 1.7\LTC6802-11.M51

     文件        160  2010-04-14 00:39  BATmonitor 1.7\LTC6802-11.plg

     文件       3443  2010-01-08 10:38  BATmonitor 1.7\LTC6802-1_Opt.Bak

     文件       2300  2010-01-08 10:38  BATmonitor 1.7\LTC6802-1_Uv2.Bak

     文件       2316  2010-01-08 10:38  BATmonitor 1.7\LTC6802_1.h

     文件      17079  2010-01-08 10:38  BATmonitor 1.7\main.c

     文件        701  2010-01-08 10:38  BATmonitor 1.7\main.h

     文件      38737  2010-01-08 10:38  BATmonitor 1.7\main.LST

     文件      33287  2010-01-08 10:38  BATmonitor 1.7\main.OBJ

     文件       3035  2010-01-08 10:38  BATmonitor 1.7\reg6802.H

     文件       1405  2010-01-08 10:38  BATmonitor 1.7\rom.c

     文件        390  2010-01-08 10:38  BATmonitor 1.7\rom.h

     文件       3803  2010-01-08 10:38  BATmonitor 1.7\rom.LST

     文件       7167  2010-01-08 10:38  BATmonitor 1.7\rom.OBJ

     文件          0  2010-01-08 10:38  BATmonitor 1.7\spi.c

     文件        709  2010-01-08 10:38  BATmonitor 1.7\spi.LST

............此处省略15个文件信息

评论

共有 条评论

相关资源