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

📄 prj.c

📁 移动电源主程序
💻 C
📖 第 1 页 / 共 2 页
字号:
		{
			r_CtrKey_Delay=0;
			b_LongKey_Status=0;
			b_pin_CtrKey_Sleep=1;
		}
	}
	else
	{
		b_pin_CtrKey_Sleep=0;
		if(b_CtrKey_1)
		{
			r_CtrKey_Delay++;
			if(r_CtrKey_Delay>100)
			{
				 b_CtrKey_1=0;
				 r_LongKeyTime=0;
				 b_LongKey_Status=0;
			}
		}
		else
		{
			if(b_250MS_5S)
			{
				b_250MS_5S=0;
				r_LongKeyTime++;
				if(r_LongKeyTime>4&&!b_LongKey_Status) 
				{
					b_CtrKey_Action=1;
					b_LongKey_Status=1;
				}
			}	
			r_CtrKey_Delay=0;
		}
	}
}

#if 0
///================================================================
void pro_LightKEY()
{
	if(_pin_LightKEY)
	{
		if(!b_LightKey_1)
		{
			r_LightKey_Delay++;
			if(r_LightKey_Delay>100) 
			{
				b_LightKey_1=1;
			}
			
		}
		else 
		{
			r_LightKey_Delay=0;
			b_LongKey_Status_Light=0;
			b_pin_LightKey_Sleep=1;
		}
	}
	else
	{
		b_pin_LightKey_Sleep=0;
		if(b_LightKey_1)
		{
			r_LightKey_Delay++;
			if(r_LightKey_Delay>100)
			{
				 b_LightKey_1=0;
				 r_LongKeyTime_Light=0;
				 b_LongKey_Status_Light=0;
			}
		}
		else
		{
			if(b_250MS_5S_Light)
			{
				b_250MS_5S_Light=0;
				r_LongKeyTime_Light++;
				if(r_LongKeyTime_Light>4&&!b_LongKey_Status_Light) 
				{
					r_LightNum++;
					if(r_LightNum>2) r_LightNum=0;
					b_LongKey_Status_Light=1;
				}
			}
			r_CtrKey_Delay=0;
		}
	}
}
#endif

///================================================================
void pro_PowerInput()
{
	if(_pin_PowerIN)
 	{
 		if(!b_PowerIN)
		{
			r_PowerInput_Delay++;
			if(r_PowerInput_Delay>150) 
			{
				b_PowerIN=1;
				b_Out_5V=0;										///  拔掉充电线路的时候, 关闭输出. ///2012-2-3 14:06
				_pin_Out_5V=0;
			}
		}
		else	
		{
			r_PowerInput_Delay=0;
			b_EXT_PWR=0;
			b_pin_PowerIN_Sleep=1;	 					
		}
 	}
 	else
	{
		b_pin_PowerIN_Sleep=0;
		if(b_PowerIN)
		{
			r_PowerInput_Delay++;
			if(r_PowerInput_Delay>150) 
			{
				b_PowerIN=0;
				b_EXT_PWR=1;
				r_250MS_20S=0;
			}
		}
		else 
			r_PowerInput_Delay=0;
	}
}


///================================================================
void pro_LED()
{
	if(b_Charge)
	{
		if(b_ChargeFull) 	///  Charge Full Flag
		{
			_pin_LEDH=0;
			_pin_LEDMH=0;
			_pin_LEDML=0;
			_pin_LEDL=0;
		} 
		else
		{
			if(b_250MS_1S) 
			{
				b_250MS_1S=0;
				r_blink_Time++;
				if(r_blink_Time>=10) 
				{
					if(r_VBat_Step==0) r_blink_Time=0;
					if(r_VBat_Step==1) r_blink_Time=2;
					if(r_VBat_Step==2) r_blink_Time=4;
					if(r_VBat_Step==3) r_blink_Time=6;
					if(r_VBat_Step==4) r_blink_Time=6;
				}
			}
				
			if((r_blink_Time>>1)==0) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=1;
				_pin_LEDML=1;
				_pin_LEDL=1;
			}
			if((r_blink_Time>>1)==1) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=1;
				_pin_LEDML=1;
				_pin_LEDL=0;
			}
			if((r_blink_Time>>1)==2) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=1;
				_pin_LEDML=0;
				_pin_LEDL=0;
			}
			if((r_blink_Time>>1)==3) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=0;
				_pin_LEDML=0;
				_pin_LEDL=0;
			}
			if((r_blink_Time>>1)==4) 
			{
				_pin_LEDH=0;
				_pin_LEDMH=0;
				_pin_LEDML=0;
				_pin_LEDL=0;
			}
		}
	}
	else
	{
		if(b_Out_5V)
		{
			if(r_VBat_Step==0) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=1;
				_pin_LEDML=1;
				
				if(b_250MS_1S)	
				{ 
					b_250MS_1S=0;
					_pin_LEDL=!_pin_LEDL;
				}
			}
			if(r_VBat_Step==1) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=1;
				_pin_LEDML=1;
				_pin_LEDL=0;
			}
			if(r_VBat_Step==2) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=1;
				_pin_LEDML=0;
				_pin_LEDL=0;
			}
			if(r_VBat_Step==3) 
			{
				_pin_LEDH=1;
				_pin_LEDMH=0;
				_pin_LEDML=0;
				_pin_LEDL=0;
			}	
			if(r_VBat_Step==4) 
			{
				_pin_LEDH=0;
				_pin_LEDMH=0;
				_pin_LEDML=0;
				_pin_LEDL=0;
			}	
		}
		if(!b_Out_5V)
		{
			_pin_LEDH=1;
			_pin_LEDMH=1;
			_pin_LEDML=1;
			_pin_LEDL=1;
		}
	}
}
///================================================================
/// 通话结束 // 无对外放电(无5V输出) // 无外部电源输入 // 按键释放 
void sleep()
{
	if(b_pin_CtrKey_Sleep&&b_pin_PowerIN_Sleep&&!b_Out_5V&&b_pin_LightKey_Sleep)
	{
		_pin_LEDH=1;
		_pin_LEDMH=1;
		_pin_LEDML=1;
		_pin_LEDL=1;
		_pin_Out_5V=0;

		_adcr=0;										//==========HT46R065
		_acsr=0x41;									// ADC module power off		
				
		_halt();

		_adcr=0x10;
		_acsr=0x01;

		r_Low_Voltage_Time=0;
	}
		
}
///================================================================
void main()
{
	
	pro_function_initial();
	r_8Count=8;
	_t0on=1;

	for(;r_250MS_20S<8;)
	{
		if(b_2ms) 
		{
			b_2ms=0;
			rl_VBat=AdcSub(c_Bat_Voltage);
		}
		pro_VBat_L();
	}

	while(1)
	{
		_clrwdt();
		pro_CtrKEY();
	//	pro_LightKEY();

		pro_PowerInput();
		pro_Check_ChargeFull();

		//if(!_pin_Out_5V)  pro_VBat();
		//	else 
			 pro_VBat_L();
					
		if(b_2ms)
		{							
			if(r_8Count)
			{
				r_8Count--;
				rl_OUT_Current_sum+=AdcSub(c_OUT_Current);
				rl_VBat_sum+=AdcSub(c_Bat_Voltage);
			}
			else
			{
				rl_Out_Current=rl_OUT_Current_sum/4;
				rl_VBat=rl_VBat_sum/4;
				
				rl_OUT_Current_sum=0;
				rl_VBat_sum=0;
				r_8Count=4;
			}
		}
		//-------------------------------------------------------------------------
		if(b_EXT_PWR)													// 有外部电源
		{
			b_Charge=1;
			_pin_Out_5V=1;
		}
		else															// 无外部电源
		{
			b_Charge=0;
			b_ChargeFull=0;
			r_blink_Time=10;
		}
		
		if(b_CtrKey_Action)
		{
			b_CtrKey_Action=0;
			b_Out_5V=!b_Out_5V;
			r_Close_5V_Delay=0;
		}
				
		switch(r_LightNum)
		{
			case 0: 
				_pin_Light=1;
				_pin_LLight=1;
				break;
			case 1:
				_pin_LLight=1;
				_pin_Light=0;
				break;
			case 2:
				_pin_Light=1;
				_pin_LLight=0;
				break;
			default:
				r_LightNum=0;
				break;
		}
			
		if(b_Out_5V)									// 对外放电的状态控制
		{
			_pin_Out_5V=1;
			
			if(rl_Out_Current_OVER_Time>2500&&(rl_Out_Current<=c_C100mA))
			{
				b_Out_5V=0;
			}	
				
		}
		else 
		{
			//_pin_Out_5V=0;
			rl_Out_Current_OVER_Time=0;
		}
				
		if(rl_Out_Current>=c_C100mA)
		{
			rl_Out_Current_OVER_Time=0;
		}	
		//-------------------------------------------------------------------------

		if(b_2ms)
		{
			b_2ms=0;
			pro_LED();
			sleep();
		}
	
	}
}

/* 定时器中断程序 */  /// 2ms 中断
void TIMER_ISR()
{
	b_2ms=1;
	r_VBat_Delay++;
	if(rl_Out_Current_OVER_Time<4000&&b_Out_5V)
		rl_Out_Current_OVER_Time++;
	r_250MS++;
	if(r_250MS>=125)
	{
		 b_250MS_1S=1;
		 b_250MS_2S=1;
		 b_250MS_3S=1;
		 b_250MS_5S=1;
		 b_250MS_5S_Light=1;
		 b_250MS_20S=1;
		 r_250MS=0;
	}
	if(b_250MS_20S)
	{
		if(!b_Low_Voltage) 
		{
			r_Low_Voltage_Time=0;
		}
		else 
		{
			if(r_Low_Voltage_Time<80) r_Low_Voltage_Time++;
			else 
			{
				b_Out_5V=0;
				//_pin_Out_5V=0;
			}
		}	
		if(r_250MS_20S<250) r_250MS_20S++;	
		b_250MS_20S=0;
	}	
}

⌨️ 快捷键说明

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