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

📄 main.c

📁 采用四端法测试欧姆电阻
💻 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 + -