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

📄 nicd.i

📁 针对蓄电池充电过程中出现的种种问题
💻 I
字号:
#line 1 "nicd.c"

#line 23 "nicd.c"

#line 1 "D:\avr\电路设计\充电器程序\2333_C/NiCd.h"

#line 21 "D:\avr\电路设计\充电器程序\2333_C/NiCd.h"



#line 1 "C:/icc/include/ina90.h"

#line 1 "C:/icc/include/macros.h"






























#line 33 "C:/icc/include/macros.h"











void _StackCheck(void);
void _StackOverflowed(char);




#line 3 "C:/icc/include/ina90.h"
#line 25 "D:\avr\电路设计\充电器程序\2333_C/NiCd.h"
#line 1 "C:/icc/include/math.h"




float fabs(float x);
float frexp(float x, int *eptr);
float tanh(float x);
float sin(float x);
float atan(float x);
float atan2(float y, float x);
float asin(float x);
float exp10(float x);
float log10i(float x);
float log10(float x);
float fmod(float y, float z);
float sqrt(float x);
float cos(float x);
float ldexp(float d, int n);
float modf(float y, float *i);
float floor(float y);
float ceil(float y);
float fround(float d);
float tan(float x);
float acos(float x);
float exp(float x);
float log(float x);
float pow(float x,float y);
float sinh(float x);
float cosh(float x);


















#line 50 "C:/icc/include/math.h"















#line 26 "D:\avr\电路设计\充电器程序\2333_C/NiCd.h"
#line 1 "D:\avr\电路设计\充电器程序\2333_C/BC.H"

#line 18 "D:\avr\电路设计\充电器程序\2333_C/BC.H"

#line 1 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"

#line 9 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"

#pragma language=extended









#line 22 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"







sfrb UBRRH     = 0x03;


sfrw ADC       = 0x04;
sfrb ADCL      = 0x04;
sfrb ADCH      = 0x05;


sfrb ADCSR     = 0x06;


sfrb ADMUX     = 0x07;


sfrb ACSR      = 0x08;


sfrb UBRR      = 0x09;
sfrb UBRRL     = 0x09;


sfrb UCR       = 0x0A;


sfrb USR       = 0x0B;


sfrb UDR       = 0x0C;


sfrb SPCR      = 0x0D;


sfrb SPSR      = 0x0E;


sfrb SPDR      = 0x0F;


sfrb PIND      = 0x10;


sfrb DDRD      = 0x11;


sfrb PORTD     = 0x12;


sfrb PINC      = 0x13;


sfrb DDRC      = 0x14;


sfrb PORTC     = 0x15;


sfrb PINB      = 0x16;


sfrb DDRB      = 0x17;


sfrb PORTB     = 0x18;


sfrb EECR      = 0x1C;


sfrb EEDR      = 0x1D;


sfrw EEAR      = 0x1E;
sfrb EEARL     = 0x1E;
sfrb EEARH     = 0x1F;


sfrb WDTCR     = 0x21;


sfrw ICR1      = 0x26;
sfrb ICR1L     = 0x26;
sfrb ICR1H     = 0x27;


sfrw OCR1      = 0x2A;
sfrb OCR1L     = 0x2A;
sfrb OCR1H     = 0x2B;


sfrw TCNT1     = 0x2C;
sfrb TCNT1L    = 0x2C;
sfrb TCNT1H    = 0x2D;


sfrb TCCR1B    = 0x2E;


sfrb TCCR1A    = 0x2F;


sfrb TCNT0     = 0x32;


sfrb TCCR0     = 0x33;


sfrb MCUSR     = 0x34;


sfrb MCUCR     = 0x35;


sfrb TIFR      = 0x38;


sfrb TIMSK     = 0x39;


sfrb GIFR      = 0x3A;


sfrb GIMSK     = 0x3B;


sfrb SP        = 0x3D;
sfrb SPL       = 0x3D;


sfrb SREG      = 0x3F;































#line 192 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"



























































































































































































































#line 20 "D:\avr\电路设计\充电器程序\2333_C/BC.H"
#line 1 "C:/icc/include/ina90.h"

#line 1 "C:/icc/include/macros.h"






























#line 33 "C:/icc/include/macros.h"

















#line 3 "C:/icc/include/ina90.h"
#line 21 "D:\avr\电路设计\充电器程序\2333_C/BC.H"
#line 1 "D:\avr\电路设计\充电器程序\2333_C/BC_debug.H"

#line 18 "D:\avr\电路设计\充电器程序\2333_C/BC_debug.H"

#line 1 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"

#line 9 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"

#pragma language=extended









#line 22 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"







sfrb UBRRH     = 0x03;


sfrw ADC       = 0x04;
sfrb ADCL      = 0x04;
sfrb ADCH      = 0x05;


sfrb ADCSR     = 0x06;


sfrb ADMUX     = 0x07;


sfrb ACSR      = 0x08;


sfrb UBRR      = 0x09;
sfrb UBRRL     = 0x09;


sfrb UCR       = 0x0A;


sfrb USR       = 0x0B;


sfrb UDR       = 0x0C;


sfrb SPCR      = 0x0D;


sfrb SPSR      = 0x0E;


sfrb SPDR      = 0x0F;


sfrb PIND      = 0x10;


sfrb DDRD      = 0x11;


sfrb PORTD     = 0x12;


sfrb PINC      = 0x13;


sfrb DDRC      = 0x14;


sfrb PORTC     = 0x15;


sfrb PINB      = 0x16;


sfrb DDRB      = 0x17;


sfrb PORTB     = 0x18;


sfrb EECR      = 0x1C;


sfrb EEDR      = 0x1D;


sfrw EEAR      = 0x1E;
sfrb EEARL     = 0x1E;
sfrb EEARH     = 0x1F;


sfrb WDTCR     = 0x21;


sfrw ICR1      = 0x26;
sfrb ICR1L     = 0x26;
sfrb ICR1H     = 0x27;


sfrw OCR1      = 0x2A;
sfrb OCR1L     = 0x2A;
sfrb OCR1H     = 0x2B;


sfrw TCNT1     = 0x2C;
sfrb TCNT1L    = 0x2C;
sfrb TCNT1H    = 0x2D;


sfrb TCCR1B    = 0x2E;


sfrb TCCR1A    = 0x2F;


sfrb TCNT0     = 0x32;


sfrb TCCR0     = 0x33;


sfrb MCUSR     = 0x34;


sfrb MCUCR     = 0x35;


sfrb TIFR      = 0x38;


sfrb TIMSK     = 0x39;


sfrb GIFR      = 0x3A;


sfrb GIMSK     = 0x3B;


sfrb SP        = 0x3D;
sfrb SPL       = 0x3D;


sfrb SREG      = 0x3F;































#line 192 "D:\avr\电路设计\充电器程序\2333_C/io2333.h"



























































































































































































































#line 20 "D:\avr\电路设计\充电器程序\2333_C/BC_debug.H"
#line 1 "C:/icc/include/ina90.h"

#line 1 "C:/icc/include/macros.h"






























#line 33 "C:/icc/include/macros.h"

















#line 3 "C:/icc/include/ina90.h"
#line 21 "D:\avr\电路设计\充电器程序\2333_C/BC_debug.H"



void Inituart(unsigned char);
void Send_int(int);
void Send_char(char);
void Send_state_change(void);
void Send_charge_state(void);
void Send_CR_LF (void);



#line 22 "D:\avr\电路设计\充电器程序\2333_C/BC.H"



int  Battery(unsigned char);
void Setup(void);
void Stop_PWM(void);
void Stable_ADC(void);
void interrupt[(0x0A)] T1Ovf(void);



extern void FAST_charge(void);
extern void TRICKLE_charge(void);



typedef struct
{
    int t_count;
    char sec;
    char min;
    char hour;
}time_struct;



























































#line 105 "D:\avr\电路设计\充电器程序\2333_C/BC.H"





#line 27 "D:\avr\电路设计\充电器程序\2333_C/NiCd.h"



void FAST_charge(void);
void TRICKLE_charge(void);































#line 25 "nicd.c"


extern time_struct time;










void FAST_charge(void)
{
	char fast_finish_hour	=	0;
	char trickle_finish_min	=	0;
	int	last_min_temp = 0;
	int	last_min_volt = 0;
	int	temp = 0;
	int temp2 = 0;
	char last_min	=	0;
	char last_sec	=	0;
	int	top_volt	=	0;
	int	new_top_volt	=	0;
	char i = 0;
	int	last_temp	=	0;





	time.sec = 0x00;
  	time.min = 0x00;
  	time.hour = 0x00;
  	time.t_count = 0x3878;
	OCR1 = 0x00;
    TCCR1B = 0x01;

	temp = Battery(5);

	if ((temp	< 0x02C7) &&	(temp	> 0x0175))
	{
		temp2 = Battery(3);

		if (temp2 <(int)((CELLS * 1600)/VOLTAGE_STEP))
		{

			if (temp < 0x0296)
			{
				OCR1 = 0x00;
				TCCR1B = 0x01;
				last_min_temp = Battery(5);
				last_min_volt = Battery(3);


				trickle_finish_min = (time.min + 0x5A);
				fast_finish_hour = time.hour;
				while	(trickle_finish_min	>	60)
				{
					trickle_finish_min = trickle_finish_min	-	60;
					fast_finish_hour++;
				}

				while	(((EEAR & (0x01)))	&& (!((EEAR & (0x04)))))
				{
					do
					{

						temp = Battery(1);
						if ((temp	<	((int)(CAPACITY /CURRENT_STEP)+1))&&(OCR1 < 0xFF))
						{
							OCR1++;
						}
						else if	((temp > ((int)(CAPACITY /CURRENT_STEP)-1))&&(OCR1	>	0x00))
						{
							OCR1--;
						}
					}while (temp !=(int)(CAPACITY /CURRENT_STEP));



#line 108 "nicd.c"







					if ((time.hour	== fast_finish_hour)&&(time.min	== trickle_finish_min))
					{

#line 120 "nicd.c"
						Stop_PWM();
(EEDR |= (0x10));
(EEAR |= (0x04));




					}
					temp = Battery(5);
					if ( temp	< 0x0175)
					{

#line 134 "nicd.c"
						Stop_PWM();
(EEDR |= (0x02));
(EEAR |= (0x04));




					}
					temp = Battery(3);
					if (temp >(int)((CELLS * 1600)/VOLTAGE_STEP))
					{

#line 148 "nicd.c"
						Stop_PWM();
(EEDR |= (0x20));
(EEAR |= (0x04));




					}
					if (time.min !=	last_min)
					{
						last_min = time.min;


						temp = Battery(3);
						if ((last_min_volt - temp) >(int)(ceil((CELLS * 0x14)/VOLTAGE_STEP)))
						{

#line 168 "nicd.c"
							Stop_PWM();
(EEDR |= (0x40));
(EEAR &= (~(0x01)));
(EEAR |= (0x02));




						}

						last_min_volt = temp;


#line 182 "nicd.c"
						temp = Battery(5);
						if ((last_min_temp - temp) >= ntc_c[((temp-400)/25)])
						{

#line 189 "nicd.c"
							Stop_PWM();
(EEDR |= (0x80));
(EEAR &= (~(0x01)));
(EEAR |= (0x02));




						}

						last_min_temp = temp;
					}
				}
			}
    		else if(!((EEAR & (0x04))))
	    	{

#line 208 "nicd.c"
(EEDR |= (0x01));
(EEAR |= (0x04));




			}

		}
   		else if(!((EEAR & (0x04))))
		{

#line 222 "nicd.c"
(EEDR |= (0x20));
(EEAR |= (0x04));




		}
	}
	else if(!((EEAR & (0x04))))
	{
		if	(temp	< 0x02C7)
		{




(EEDR |= (0x01));
		}
		else
		{

(EEAR |= (0x02));



		}

(EEAR |= (0x04));



    }
}


void TRICKLE_charge(void)
{
	int	temp = 0;

	time.sec = 0x00;
  	time.min = 0x00;
  	time.hour = 0x00;
  	time.t_count = 0x3878;

	OCR1 = 0x00;
    TCCR1B = 0x01;





	while	(((EEAR & (0x02))) &&	(!((EEAR & (0x04)))))
	{
		temp = Battery(5);

		if ((temp	< 0x02C7) ||	(temp	> 0x0175))
		{
			temp = Battery(3);

			if (temp <(int)((CELLS * 1600)/VOLTAGE_STEP))
			{
				do
				{

					temp = Battery(1);
					if ((temp	<(int)((CAPACITY * 0.025)/CURRENT_STEP)) &&	(OCR1	<	0xFF))
					{
						OCR1++;
					}
					else if	((temp >(int)((CAPACITY * 0.025)/CURRENT_STEP))	&& (OCR1 > 0x00))
					{
						OCR1--;
					}
				}	while (temp	!=(int)((CAPACITY * 0.025)/CURRENT_STEP));









			}
			else if(!((EEAR & (0x04))))
			{

#line 311 "nicd.c"
				Stop_PWM();
(EEDR |= (0x20));
(EEAR |= (0x04));




			}
		}
		else if(!((EEAR & (0x04))))
		{

#line 325 "nicd.c"
			Stop_PWM();
			if (temp < 0x02C7)
			{
(EEDR |= (0x01));



			}
			else
			{
(EEDR |= (0x02));



			}
(EEAR |= (0x04));



		}
	}
	Stop_PWM();
}

⌨️ 快捷键说明

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