资源简介
基于一个单节电池电量计CW2015的单片机程序,不用学习自动测量电量。
代码片段和文件信息
#include “Cellwise CW201x Driver for MCU.h“
bit CHARGE = 0; //是否接充电器标志位,1为接充电器,0为拔出充电器
bit no_charger_full_jump =0;
unsigned int allow_no_charger_full =0;
unsigned int allow_charger_always_zero =0;
unsigned char if_quickstart =0;
unsigned char reset_loop =0;
/*定义一个全局变量,外部文件要使用时请先include Cellwise CW201x Driver for MCU.h文件,再用extern声明cw_bat*/
STRUCT_CW_BATTERY cw_bat;
////////////////////////////////////////////////////////////////////////////////////
////global function: ‘cw_bat_work()‘ and ‘cw_bat_init()‘ ////
////‘cw_bat_work()‘need be called by main.c in every second ////
////‘cw_bat_init()‘need be called by main.c in system-init after power on reset ////
////////////////////////////////////////////////////////////////////////////////////
//void delay_us(unsigned char us);
bit cw_read(unsigned char PointRegunsigned char *pData);
bit cw_write(unsigned char PointRegunsigned char *pData);
/**********************************************************************************/
/***************CW_Delay10ms() 与 CW_Delay10us() 函数是我根据51单******************/
/***************片机特性写的延迟函数,请根据自己的平台自行替换*********************/
/**********************************************************************************/
void CW_Delay10ms(unsigned int c)
{
unsigned char a b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void CW_Delay10us(unsigned char us)
{
unsigned char a b;
unsigned char i;
for(i = 0; i < us; i++){
for(b=1; b>0; b--)
{
for(a=2; a>0; a--);
}
}
}
/*这个函数的作用是更新ic内的电池profile信息,一般只有在ic VDD掉电后再上电时才执行
return 1 : i2c读写错, return 2 : 芯片处于sleep模式 return 3 : 写入的profile信息读出后与代码中的不一致*/
unsigned char cw_update_config_info(void)
{
bit ret = 0;
unsigned char i;
unsigned char reset_val;
unsigned char reg_val;
/* make sure no in sleep mode */
ret = cw_read(REG_MODE ®_val);
if(ret)
{
return 1;
}
if((reg_val & MODE_SLEEP_MASK) == MODE_SLEEP)
{
return 2;
}
/* update new battery info */
for(i = 0; i < SIZE_BATINFO; i++)
{
reg_val = cw_bat_config_info[i];
ret = cw_write(REG_BATINFO+i ®_val);
if(ret)
{
return 1;
}
}
/* readback & check */
for(i = 0; i < SIZE_BATINFO; i++)
{
ret = cw_read(REG_BATINFO+i ®_val);
if(ret)
{
return 1;
}
if(reg_val != cw_bat_config_info[i])
{
return 3;
}
}
/* set cw2015/cw2013 to use new battery info */
ret = cw_read(REG_CONFIG ®_val);
if(ret)
{
return 1;
}
reg_val |= CONFIG_UPDATE_FLG; /* set UPDATE_FLAG */
reg_val &= 0x07; /* clear ATHD */
reg_val |= ATHD; /* set ATHD */
ret = cw_write(REG_CONFIG ®_val);
if(ret)
{
return 1;
}
/* reset */
reset_val = MODE_NORMAL;
reg_val = MODE_RESTART;
ret = cw_write(REG_MODE ®_val);
if(ret)
{
return 1;
}
CW_Delay10us(10); //delay 100us
ret = cw_write(REG_MODE &reset_val);
if
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12828 2016-09-07 19:19 CW2015_MCU_DRIVER_V2.0\Cellwise CW201x Driver for MCU V2.0.c
文件 1913 2016-09-07 19:19 CW2015_MCU_DRIVER_V2.0\Cellwise CW201x Driver for MCU.h
文件 1769 2016-09-07 19:19 CW2015_MCU_DRIVER_V2.0\Cw2015_test.c
文件 4878 2016-09-07 17:09 CW2015_MCU_DRIVER_V2.0\DriverIIC_Sample.c
文件 310 2016-09-07 19:17 CW2015_MCU_DRIVER_V2.0\ReadMe.txt
目录 0 2016-09-07 19:21 CW2015_MCU_DRIVER_V2.0
----------- --------- ---------- ----- ----
21698 6
相关资源
- 基于verilog的oc8051IP核
- 基于C8051F320 USB接口的数据采集存储电
- C8051F320的USB通信USBXpress驱动包
- C8051F340 SMBus的c程序代码
- c8051f020例程
- 8051 单片机 模块 程序例程
- IAREW8051_8.20.2
- Protues仿真8051-PWM控制LED的亮度仿真程
- 空压机控制程序
- The_8051_Microcontroller
- verilog写的MCU8051单片机系统
- C8051F最新驱动
- C805在1Keil环境的C8051F仿真调试插件
- C8051F全系列代码例程
- Keil环境C8051F仿真调试驱动程序包括
- mc8051在spartan6上面的移植
- Si1000芯片手册
- mc8051开源8051软核V1.3
- c8051f020开发板使用教程
- c8051f126的程序
- C8051F310中文参考手册
- 80C51F040使用手册--中文
- SiC8051F_uVision.exe Keil调试驱动
- Silicon 单片机程序烧写软件
- U-EC5 Keil调试驱动
- C8051F320原理图以及例程
- 用C8051F020和FPGA设计的低频信号相位测
- SiC8051F_uVision4
- 基于C8051F310EVM的演讲计时器设计
- C8051FXX系列Keil开发驱动
评论
共有 条评论