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

📄 main.c

📁 AT24C01~24C16燒錄器程序,可以通過麼MENU選擇燒錄IC型號
💻 C
字号:
//******************************************************************************************************
//Function :ATMEL 24xx Program  REV:010
//Date:2007-12-5
//******************************************************************************************************
#include <REG52.H>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <math.h>
#include <setjmp.h>
#include "../SubProgram/main.h"
#include "../SubProgram/SubprogramList.h"
#include "../SubProgram/PC1602LCM.c"
#include "../SubProgram/menu.c"
#include "../SubProgram/RS232.c"
#include "../SubProgram/AT24Cxx.c"
//======================================================================================================
void main(void)
 {	
 	U32 Counts=0;
	
 	AUXR=0x03;
 	InitRS232();
	InitialLCM();  
	ClearLCM(); 
	DisplayStringData(0,StrProductInformation0,sizeof(StrProductInformation0));
	DisplayStringData(1,StrProductInformation1,sizeof(StrProductInformation1)); //show manufacturer name
	Delay(T1s*2);
	DisplayStringData(0,StrSystemInitial0,sizeof(StrSystemInitial0));
	DisplayStringData(1,StrSystemInitial1,sizeof(StrSystemInitial1)); //show system initialze..
	DRAMTest();
	if((Button_CS & 0x0b)==0) //up down back 3 button all short
		{
			Delay(T10ms);
			if((Button_CS & 0x0b)!=0) //up down back 3 button all short
				return;
			DisplayStringData(0,StrClearHistoryDataStart0,sizeof(StrClearHistoryDataStart0));
			DisplayStringData(1,StrClearHistoryDataStart1,sizeof(StrClearHistoryDataStart1));
			Delay(T1s);
			ClearHistoryDataMemory(); //clear History Data Memory
			DisplayStringData(0,StrClearHistoryDataOK0,sizeof(StrClearHistoryDataOK0));
			DisplayStringData(1,StrClearHistoryDataOK1,sizeof(StrClearHistoryDataOK1));
			while(1);
		}
	GetSettingData();         //get user seting data
	if((Button_CS & 0x03)==0) //up & down button all short
		SettingProgrammer();  //check user seting
	SystemInitial();          //initial all port led state    
	SaveSamleCode();          //read port1~port6 program code save to DRAM
	DisplayStringData(0,StrSystemReadLine0,sizeof(StrSystemReadLine0));
	DisplayStringData(1,StrSystemReadLine1,sizeof(StrSystemReadLine1));
	while(1)
		{
			if((Button_CS & 0x10)==0)             //reset_button short
				{
					Delay(T10ms);
					if((Button_CS & 0x10)==0)     //reset_button short
						{
							Counts=0;
							SetLCMLamp(SwitchON); //LCM Lamp ON
							ProgramPowerON();     //power on -->output power DC5V and DC3.3V
							SystemInitial();	  //initial Port LED State						
							ProgramPort1();       //Start Program Port 1
				    		ProgramPort2();       //Start Program Port 2
      						ProgramPort3();       //Start Program Port 3
							ProgramPort4();	      //Start Program Port 4
							ProgramPort5();	      //Start Program Port 5
							ProgramPort6();	      //Start Program Port 6
							AllProgramResult();   //show all port program result
							while((Button_CS & 0x10)==0); //WAIT Start_button open
							ProgramPowerOFF();   //power off-->no output
							Delay(T10ms);
						}
				}
			if(Counts<120000)
				Counts++;
			if(Counts==120000)
				SetLCMLamp(SwitchOFF); //LCM Lamp OFF
		}
 }
//****************************************************************************************************
// delay 1ms*cDly = DELAY TIME  max delay time=65536*0.001S=65.536S
//****************************************************************************************************
void Delay(U16 cDly)
{
	U16  CharA=0;

	while(cDly)	
		{
			CharA=106;//212-->24MHZ  106-->12MHZ
			while(CharA--);	
			cDly--;
		}
}
//****************************************************************************************************
// DRAM TEST
//****************************************************************************************************
void DRAMTest(void)
{
    U16 Start;
	U8  CharA;

	Start=0x0000;
	CharA=0x80;
	while(Start!=0x7fff)//7fff
	{
		XBYTE[Start]=CharA;
		Start++;
		CharA=CharA>>1;
		if(CharA==0)
			CharA=0x80;
	}

	Start=0x0000;
	CharA=0x80;
	while(Start!=0x7fff)
	{
		if(XBYTE[Start]!=CharA)
			{
				FlagError=1;
				break;
			}
		 Start++;
		 CharA=CharA>>1;
		 if(CharA==0)
			CharA=0x80;
	}
	WaitResult();
	if((FlagError!=0)||(EmpBuffer[0]!=0x20))
//	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_DRAM,sizeof(StrInitialError_DRAM));
			while(1);
		}
}

//****************************************************************************************************
// Show Program RESULT
//****************************************************************************************************
void AllProgramResult(void)
{
	U8 CharA;
	U8 FlagOK=0;

	for(CharA=0;CharA<24;CharA++)
		{
			EmpBufferA[CharA]=StrResultLine0[CharA];
		}
	if((FlagErrorStatus&0x7e)!=0)
		{
			EmpBufferA[18]='N';
			EmpBufferA[19]='G';
			FlagOK=1;
		}
	DisplayStringData(0,EmpBufferA,24);
	//============================================================
	for(CharA=0;CharA<24;CharA++)
		{
			EmpBufferA[CharA]=StrResultLine1[CharA];
		}
	//port1
	if(FlagPort1ProgramNG==1)
		{
			EmpBufferA[1]='N';
			EmpBufferA[2]='G';
		}
	else
		{
			if(FlagPort1State==SwitchOFF)
				{
					EmpBufferA[1]='N';
					EmpBufferA[2]='a';
				}
		}
	//----------------------------------------------------------------
	//port2
	if(FlagPort2ProgramNG==1)
		{
			EmpBufferA[5]='N';
			EmpBufferA[6]='G';
		}
	else
		{
			if(FlagPort2State==SwitchOFF)
				{
					EmpBufferA[5]='N';
					EmpBufferA[6]='a';
				}
		}
	//-----------------------------------------------------------------
	//port3
	if(FlagPort3ProgramNG==1)
		{
			EmpBufferA[9]='N';
			EmpBufferA[10]='G';
		}
	else
		{
			if(FlagPort3State==SwitchOFF)
				{
					EmpBufferA[9]='N';
					EmpBufferA[10]='a';
				}
		}
	//----------------------------------------------------------------
	//port4
	if(FlagPort4ProgramNG==1)
		{
			EmpBufferA[13]='N';
			EmpBufferA[14]='G';
		}
	else
		{
			if(FlagPort4State==SwitchOFF)
				{
					EmpBufferA[13]='N';
					EmpBufferA[14]='a';
				}
		}
	//----------------------------------------------------------------
	//port5
	if(FlagPort5ProgramNG==1)
		{
			EmpBufferA[17]='N';
			EmpBufferA[18]='G';
		}
	else
		{
			if(FlagPort5State==SwitchOFF)
				{
					EmpBufferA[17]='N';
					EmpBufferA[18]='a';
				}
		}
	//-------------------------------------------------------------
	//port6
	if(FlagPort6ProgramNG==1)
		{
			EmpBufferA[21]='N';
			EmpBufferA[22]='G';
		}
	else
		{
			if(FlagPort6State==SwitchOFF)
				{
					EmpBufferA[21]='N';
					EmpBufferA[22]='a';
				}
		}
	//-----------------------------------------------------------------
	DisplayStringData(1,EmpBufferA,24);
	if(FlagOK!=0)
		SetSKP(SKP_NG);
	else
		SetSKP(SKP_OK);
}
//****************************************************************************************************
// set port1 led
//****************************************************************************************************
void SetPortLed(U8 port,U8 state)
{
	if(port==PORT1)
		{
			if(state==LED_Busy)
				{
					LED1A=1;
					LED1B=0;
				}
			else if(state==LED_Ready)
				{
					LED1A=0;
					LED1B=1;
				}
			else if(state==LED_OFF)
				{
					LED1A=1;
					LED1B=1;
				}
		}
	//-------------------------------------------
	else if(port==PORT2)
		{
			if(state==LED_Busy)
				{
					LED2A=1;
					LED2B=0;
				}
			else if(state==LED_Ready)
				{
					LED2A=0;
					LED2B=1;
				}
			else if(state==LED_OFF)
				{
					LED2A=1;
					LED2B=1;
				}
		}
	//-------------------------------------------
	else if(port==PORT3)
		{
			if(state==LED_Busy)
				{
					LED3A=1;
					LED3B=0;
				}
			else if(state==LED_Ready)
				{
					LED3A=0;
					LED3B=1;
				}
			else if(state==LED_OFF)
				{
					LED3A=1;
					LED3B=1;
				}
		}
	//-------------------------------------------
	else if(port==PORT4)
		{
			if(state==LED_Busy)
				{
					LED4A=1;
					LED4B=0;
				}
			else if(state==LED_Ready)
				{
					LED4A=0;
					LED4B=1;
				}
			else if(state==LED_OFF)
				{
					LED4A=1;
					LED4B=1;
				}
		}
	//-------------------------------------------
	else if(port==PORT5)
		{
			if(state==LED_Busy)
				{
					LED5A=1;
					LED5B=0;
				}
			else if(state==LED_Ready)
				{
					LED5A=0;
					LED5B=1;
				}
			else if(state==LED_OFF)
				{
					LED5A=1;
					LED5B=1;
				}
		}
	//-------------------------------------------
	else if(port==PORT6)
		{
			if(state==LED_Busy)
				{
					LED6A=1;
					LED6B=0;
				}
			else if(state==LED_Ready)
				{
					LED6A=0;
					LED6B=1;
				}
			else if(state==LED_OFF)
				{
					LED6A=1;
					LED6B=1;
				}
		}
	//-------------------------------------------
	LED_CS1=LEDStatusA;
	LED_CS2=LEDStatusB;
	Delay(T10ms);
}
//****************************************************************************************************
// set port led
//****************************************************************************************************
void SystemInitial(void)
{
	FlagErrorStatus=0;  //clear/reset error flag
	if(FlagPort1State==SwitchOFF)
		SetPortLed(PORT1,LED_OFF);
	else
		SetPortLed(PORT1,LED_Ready);
	//-------------------------------------
	if(FlagPort2State==SwitchOFF)
		SetPortLed(PORT2,LED_OFF);
	else
		SetPortLed(PORT2,LED_Ready);
	//-------------------------------------
	if(FlagPort3State==SwitchOFF)
		SetPortLed(PORT3,LED_OFF);
	else
		SetPortLed(PORT3,LED_Ready);
	//-------------------------------------
	if(FlagPort4State==SwitchOFF)
		SetPortLed(PORT4,LED_OFF);
	else
		SetPortLed(PORT4,LED_Ready);
	//-------------------------------------
	if(FlagPort5State==SwitchOFF)
		SetPortLed(PORT5,LED_OFF);
	else
		SetPortLed(PORT5,LED_Ready);
	//-------------------------------------
	if(FlagPort6State==SwitchOFF)
		SetPortLed(PORT6,LED_OFF);
	else
		SetPortLed(PORT6,LED_Ready);
}
//****************************************************************************************************
// SET LCM LAMP 
//****************************************************************************************************
void SetLCMLamp(U8 type)
{
	if(type==SwitchON)
		{
			LCM_Lamp=1;
			COMMAND_CS=CommandStatus;
		}
	else
		{
			LCM_Lamp=0;
			COMMAND_CS=CommandStatus;
		}
	Delay(T10ms);
}
//****************************************************************************************************
// Set Power ON
//****************************************************************************************************
void ProgramPowerON(void)
{
	Power_CS1=0;
	Power_CS2=0;
	LED_CS2=LEDStatusB;
	Delay(T10ms*50);
}
//****************************************************************************************************
// Set Power OFF
//****************************************************************************************************
void ProgramPowerOFF(void)
{
	Power_CS1=1;
	Power_CS2=1;
	LED_CS2=LEDStatusB;
	Delay(T10ms);
}
//****************************************************************************************************
// SET SKP 
//****************************************************************************************************
void SetSKP(U8 type)
{
	U8 CharA;
	
	if(type==SKP_NG)
		{
			for(CharA=0;CharA<3;CharA++)
				{
					SKP_CS=0;
					COMMAND_CS=CommandStatus;
					Delay(T10ms*15);
					SKP_CS=1;
					COMMAND_CS=CommandStatus;
					Delay(T10ms*15);
				}
		}
	else
		{
			SKP_CS=0;
			COMMAND_CS=CommandStatus;
			Delay(T1s);
			SKP_CS=1;
			COMMAND_CS=CommandStatus;
		}
	Delay(T10ms);
}

⌨️ 快捷键说明

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