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

📄 0316-1.c

📁 智能充电器的设计与实现
💻 C
字号:
#include	<pic.h>

#define vt GPIO0;
#define it GPIO1;
#define pwm GPIO2;
#define led GPIO4;
#define charge GPIO5;

unsigned char i;
unsigned char flag;
unsigned long k;

void interrupt timer0_isr(void) @ 0x10
{
	TMR0 = 0x00;	// re-load timer
	pwm=1;
	for(i=255;i>1;i--);
	pwm=0;
}

main()
{
	flag=0;
	
	TRISIO = 0xCB;			// initialize IO;
	OPTION = 0x83;			// initialize timer 0; 
	TMR0 = 0x00;			// preload timer
	ADFM=1;
	VCFG=0;	
	ADCS0=1;
	ADCS1=0;
	ADCS2=1;			
	T0IE = 1;			// enable timer interrupt
	GIE = 1;			// enable global interrupts
	
	while(1)
	{
		charge=0;
		CHS0=0;
		CHS1=0;
		ANS0=1;
                GODONE=1;
                while(ADIF==0);
                led=1;
                while(ADRESL>62)//0.3V
                {
                	GODONE=0;
                	charge=1;
                	led=1;
                	TMR0 = 0x00;
                	for(k=10000;k>1;k--)	//1s
                	{
                		CHS0=0;
                		CHS1=1;
                		ANS1=1;
                		if(ADRESL<5)	//IC<49mA
                		TMR0 = 0x10;
                		else		//IC>50mA
                		TMR0 = 0x00;
                	}
                	charge=0;
                	CHS0=0;
                	CHS1=0;
                	ANS0=1;
                	GODONE=1;
                	while(ADIF==0);
		/****************************************************/
                	while((ADRESH>0)&&(ADRESL>233))//2.4V
                	{
                		charge=1;
                		led=1;
                		TMR0=0x66;
                		for(k=10000;k>1;k--)	//1s
                		{
                			CHS0=0;
                			CHS1=1;
                			ANS1=1;
                			if(ADRESL<51)	//IC<500mA
                			TMR0 = 0x88;
                			else		//IC>500mA
                			TMR0 = 0x66;
                		}
                		charge=0;
                		CHS0=0;
                		CHS1=0;
                		ANS0=1;
                		GODONE=1;
                		while(ADIF==0);
                		if(flag==0)
                		{
                			VT0=
                			flag=1;
                		}
                		if(flag==1)
                		{
                			VT1=
                			flag=2;
                		}
                		if(flag==2)
                		{
                			VT2=
                			flag=3;
                		}
                		if(flag==3)
                		{
                			VT3=
                			
                			flag=0;
                		}
                		
                	}	
                }
	}
}

⌨️ 快捷键说明

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