专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
请问keilc没有battcharge.h文件怎么办?
2019-03-24 21:13
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
Atmel MCU
4990
4
1732
要做个智能充电器,但是程序部分有个声明叫#define _BATTCHARGER_H,编译后说这个文件不存在。。。哪位高手知道该怎么办。 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
zxpla
2019-03-25 07:22
哦,谢谢前辈.是我在网上找的.但是我记得头文件不是在keil C自带的么。。。。程序如下,大意是利用单片机的一个口控制电源芯片开关,一个中断口控制电源管理芯片充电与否,充完要响蜂鸣器,battcharger要是真得自己写我就真懵了。。。
//BattCharger.h程序
#ifndef _BATTCHARGER_H // 防止BattCharger.h被重复引用
#define _BATTCHARGER_H
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit GATE = P2^0;
sbit BP = P2^1;
uint t_count,int0_count;
#endif
//BattCharger.c程序
#include "BattCharger.h"
/* 定时器0中断服务子程序 */
void timer0() interrupt 1 using 1
{
TR0 = 0; // 停止计数
TH0 = -5000/256; // 重设计数初值
TL0 = -5000%256;
t_count++;
if (t_count>600) // 第一次外部中断0产生后3s
{
if (int0_count==1) // 还没有出现第二次外部中断0,则认为充电完毕
{
GATE = 0; // 关闭充电电源
BP = 0; // 打开蜂鸣器报警
}
else // 否则即是充电出错
{
GATE = 1;
BP = 1;
}
ET0 = 0; // 关闭T0中断
EX0 = 0; // 关闭外部中断0
int0_count = 0;
t_count = 0;
}
else
TR0 = 1; // 启动T0计数
}
/* 外部中断0服务子程序 */
void int0() interrupt 0 using 1
{
if (int0_count==0)
{
TH0 = -5000/256; // 5ms定时
TL0 = -5000%256;
TR0 = 1; // 启动定时/计数器0计数
t_count = 0; // 产生定时器0中断的计数器清零
}
int0_count++;
}
/* 初始化 */
void init()
{
EA = 1; // 打开CPU中断
PT0 = 1; // T0中断设为高优先级
TMOD = 0x01; // 模式1,T0为16位定时/计数器
ET0 = 1; // 打开T0中断
IT0 = 1; // 外部中断0设为边沿触发
EX0 = 1; // 打开外部中断0
GATE = 1; // 光耦正常输出电压
BP = 1; // 关闭蜂鸣器
int0_count = 0; // 产生外部中断0的计数器清零
}
void main()
{
/* 调用初始化函数 */
init();
/* 无限循环 */
while(1);
}
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
相关文章
Arduino-每个人的微控制器
0个评论
一款由长短音密码控制的门禁密码锁的设计
0个评论
IAR Embedded Workbench for Atmel AVR 6.10 环境配置
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
//BattCharger.h程序
#ifndef _BATTCHARGER_H // 防止BattCharger.h被重复引用
#define _BATTCHARGER_H
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit GATE = P2^0;
sbit BP = P2^1;
uint t_count,int0_count;
#endif
//BattCharger.c程序
#include "BattCharger.h"
/* 定时器0中断服务子程序 */
void timer0() interrupt 1 using 1
{
TR0 = 0; // 停止计数
TH0 = -5000/256; // 重设计数初值
TL0 = -5000%256;
t_count++;
if (t_count>600) // 第一次外部中断0产生后3s
{
if (int0_count==1) // 还没有出现第二次外部中断0,则认为充电完毕
{
GATE = 0; // 关闭充电电源
BP = 0; // 打开蜂鸣器报警
}
else // 否则即是充电出错
{
GATE = 1;
BP = 1;
}
ET0 = 0; // 关闭T0中断
EX0 = 0; // 关闭外部中断0
int0_count = 0;
t_count = 0;
}
else
TR0 = 1; // 启动T0计数
}
/* 外部中断0服务子程序 */
void int0() interrupt 0 using 1
{
if (int0_count==0)
{
TH0 = -5000/256; // 5ms定时
TL0 = -5000%256;
TR0 = 1; // 启动定时/计数器0计数
t_count = 0; // 产生定时器0中断的计数器清零
}
int0_count++;
}
/* 初始化 */
void init()
{
EA = 1; // 打开CPU中断
PT0 = 1; // T0中断设为高优先级
TMOD = 0x01; // 模式1,T0为16位定时/计数器
ET0 = 1; // 打开T0中断
IT0 = 1; // 外部中断0设为边沿触发
EX0 = 1; // 打开外部中断0
GATE = 1; // 光耦正常输出电压
BP = 1; // 关闭蜂鸣器
int0_count = 0; // 产生外部中断0的计数器清零
}
void main()
{
/* 调用初始化函数 */
init();
/* 无限循环 */
while(1);
}
一周热门 更多>