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

📄 battcharger.c

📁 包含电路图及c语言程序
💻 C
字号:
/*****************************************/
/* Copyright (c) 2005, 通信工程学院      */
/* All rights reserved.                  */
/* 作    者:戴 佳						 */
/*****************************************/

#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);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -