📄 main.c
字号:
#ifndef _MAIN_C_
#define _MAIN_C_
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "c8051f000.h"
#include "system.h"
#include "typedef.h"
#include "initial.h"
#include "rtos.h"
#include "timer3.h"
#include "key.h"
#include "adc.h"
#include "osc.h"
#include "control.h"
#include "lcd.h"
#include "math.h"
#include "chinese.h"
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)
{
WDTCN = 0xde; // disable watchdog timer
WDTCN = 0xad;
// select one of the following functions to initialze the system clock
fSYSCLK_IntOsc_Init();
// fSYSCLK_Crystal_Init ();
// fSYSCLK_C_RC_Init ();
// fSYSCLK_CMOS_Init ();
fPORT_Init(); // initialize crossbar and GPIO
fTimer3_Init();
// initialize Timer3 to overflow at
// fTurnOnLCDBackLight();
LCM_INIT();
fShowWelcome();
EA = 1; // Enable global interrupts
vGlobalFlag |= bEnableDelay2s;
vGlobalFlag &= ~bEndOfDelay2s;
while(!(vGlobalFlag & bEndOfDelay2s));
// fShowResult();
fADC0_Init ();
vfTemp1 = fADConverter(0x00);
vfTemp1 = vfTemp1*2500/4.096/ConstantCurrent1;
fTurnOffFirstValve();
if(vfTemp1 > 10000) // >10k
{
fDisplayResult(1,12345);
}
else
{
fDisplayResult(1,12345);
;// fDisplayResult();
}
vTaskEnableFlag |= bEnableTask1;
while (1)
{
/**********************************************************************/
/* task 0 = start scan keyboard */
/**********************************************************************/
if(vTaskEnableFlag & bEnableTask0)
{
vTaskEnableFlag &= ~bEnableTask0;
}
/***********************************************************************/
/* task 1 = state1 */
/* */
/* * turn off all valve */
/* * R12 = 8.2k */
/* * R34 = imlimited */
/***********************************************************************/
if(vTaskEnableFlag & bEnableTask2)
{
vTaskEnableFlag &= ~bEnableTask2;
vTaskEnableFlag |= bEnableTask3;
vTaskProcedureFlag = bProcedureTask1;
fTurnOffAllValve();
vResultCheck12 = 0;
vResultCheck34 = 0;
fClearScreen();
fChangeLine(1);
XDATA_ptr = Memu_TAP0;
fDisplayCharacter();
//R12
vfTemp1 = fADConverter(0x00);
vfTemp1 = vfTemp1*2500/4.096/ConstantCurrent1;
fChangeLine(2);
XDATA_ptr = Memu_R12;
fDisplayCharacter();
fDisplayNumber(vfTemp1);
fDisplayBlank(0x06);
if(vfTemp1>R12TAP0Value*(1+R12Tolorance*0.01) || vfTemp1 <R12TAP0Value*(1-R12Tolorance*0.01) )
vResultCheck12 |= bResultTAP0NoLimit;
if(vResultCheck12 & bResultTAP0NoLimit)
{ XDATA_ptr = Memu_Error;
DisplayCharacter();
}
else
{ XDATA_ptr = Memu_Pass;
fDisplayCharacter();
}
//R34
vfTemp1 = fADConverter(0x01);
vfTemp1 = vfTemp1*2500/4096/ConstantCurrent2;
fChangeLine(3);
XDATA_ptr = Memu_R34;
fDisplayCharacter();
fDisplayNumber(vfTemp1);
fDisplayBlank(0x06);
if(vfTemp1>R34MaxValue)
vResultCheck34 |= bResultTAP0NoLimit;
if(vResultCheck34 & bResultTAP0NoLimit)
{ XDATA_ptr = Memu_Error;
DisplayCharacter();
}
else
{ XDATA_ptr = Memu_Pass;
fDisplayCharacter();
}
}
/***********************************************************************/
/* task 2 = state1 */
/* */
/* * turn off all valve */
/* * R12 = 8.2k */
/* * R34 = imlimited */
/***********************************************************************/
if(vTaskEnableFlag & bEnableTask3)
{
vTaskEnableFlag &= ~bEnableTask3;
vTaskEnableFlag |= bEnableTask4;
vTaskProcedureFlag = bProcedureTask2;
fTurnOnSecondValve();
vGlobalFlag |= bEnableDelay2s;
vGlobalFlag &= ~bEndOfDelay2s;
while(!(vGlobalFlag & bEndOfDelay2s));
// fADConverter();
fTurnOffSecondValve();
// fDisplayResult();
}
/***********************************************************************/
/* task 2 = state1 */
/* */
/* * turn off all valve */
/* * R12 = 8.2k */
/* * R34 = imlimited */
/***********************************************************************/
if(vTaskEnableFlag & bEnableTask4)
{
vTaskEnableFlag &= ~bEnableTask4;
vTaskEnableFlag |= bEnableTask5;
vTaskProcedureFlag = bProcedureTask3;
fTurnOnThirdValve();
vGlobalFlag |= bEnableDelay2s;
vGlobalFlag &= ~bEndOfDelay2s;
while(!(vGlobalFlag & bEndOfDelay2s));
// fADConverter( );
fTurnOffThirdValve();
// fDisplayResult();
}
/***********************************************************************/
/* task 2 = state1 */
/* */
/* * turn off all valve */
/* * R12 = 8.2k */
/* * R34 = imlimited */
/***********************************************************************/
if(vTaskEnableFlag & bEnableTask5)
{
vTaskEnableFlag &= ~bEnableTask5;
vTaskEnableFlag |= bEnableTask6;
vTaskProcedureFlag = bProcedureTask4;
fTurnOnFourthValve();
vGlobalFlag |= bEnableDelay2s;
vGlobalFlag &= ~bEndOfDelay2s;
while(!(vGlobalFlag & bEndOfDelay2s));
// fADConverter( );
fTurnOffFourthValve();
// fDisplayResult();
}
/**********************************************************************/
/* task 6 = step5,stop */
/**********************************************************************/
if(vTaskEnableFlag & bEnableTask6)
{
vTaskEnableFlag &= ~bEnableTask6;
vTaskProcedureFlag = 0;
fPowerOffConstantCurrent();
fTurnOffFirstValve();
fTurnOffSecondValve();
fTurnOffThirdValve();
fTurnOffFourthValve();
}
/**********************************************************************/
/* task 7 = delay 2s */
/**********************************************************************/
if(vTaskEnableFlag & bEnableTask7)
{
vTaskEnableFlag &= ~bEnableTask7;
vGlobalFlag |= bEnableDelay2s;
vGlobalFlag &= ~bEndOfDelay2s;
}
/**********************************************************************/
/* task 1 = start a test procedure */
/**********************************************************************/
if(vTaskEnableFlag & bEnableTask1)
{
vTaskEnableFlag &= ~bEnableTask1;
vTaskEnableFlag |= bEnableTask2;
vTaskProcedureFlag = bProcedureTask0;
fPowerOnConstantCurrent();
fDelay(100);
}
}
// sample rate
//detect some key pressed
//enter:
// start a new loop of test resistor.
//cancel:
// stop the precedure.reset.
// test flow!
//enbale valve 1
//wait for about 1s
//ADC channel 1
//enbale valve 2
//wait for about 1s
//ADC channel 1
//enbale valve 3
//wait for about 1s
//ADC channel 1
//enbale valve 1
//wait for about 1s
//ADC channel 0
// report on liquid crystal display.
}
void fDelay(unsigned int us)
{
while(us--);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -