📄 main.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 + -