Ejemplo n.º 1
0
void main(void)
{
  /* Write your local variable definition here */
  int a = 0;
  /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
	PE_low_level_init();
  /*** End of Processor Expert internal initialization.                    ***/

  /* Write your code here */

	setReg(ADC_CLIST1,0x12);
	setReg(ADC_SDIS,0xFF88);
	setRegBitGroup(ADC_CTRL1,SMODE,0x01);
	AD1_Enable();
	

	Cpu_EnableInt();

	while(1)
	{
		WDog1_Clear();
		a++;
		if(a)
			a = 0;

	}
}
/*
** ===================================================================
**     Event       :  Int_Anemometro_2 (module Events)
**
**     Component   :  Entrada_Anemometro_2 [ExtInt]
**     Description :
**         This event is called when an active signal edge/level has
**         occurred.
**     Parameters  : None
**     Returns     : Nothing
** ==============================-=====================================
*/
void Int_Anemometro_2(void)
{
  /* place your Entrada_Anemometro_2 interrupt procedure body here*/
	/* place your Entrada_Anemometro_1 interrupt procedure body here*/
		
		/*
		 * Envío y captura de Tiempo de Señal No.2
		 */
		
	if(Med_1 == FALSE && Med_2 == TRUE)
	{
		Entrada_Anemometro_2_Disable();
		Entrada_Anemometro_1_Disable();
		if(Tiempo_GetCounterValue(&Tiempo_2.Val_Word) == ERR_OK);
		
		/*
		if(Tiempo_2.Val_Word > Tiempo_2_c.Val_Word) Tiempo_2.Val_Word = Tiempo_2.Val_Word - Tiempo_2_c.Val_Word;
		else Tiempo_2.Val_Word = 0xFFFF;
		*/
		
		Convertir_Dato_Serial(Tiempo_2.Val_Word,Tiempo_Anemometro_2);
		(void)Senal_25u_2_Disable();
		//(void)AD1_EnableEvent();
		(void)AD1_Enable();
		(void)S1_EnableEvent();
		(void)S2_EnableEvent();
		//(void)S1_ClearTxBuf();
		//Tiempo_Anemometro_2[0] = 0x07;
		(void)S1_ClearTxBuf();
		//Tiempo_Anemometro_2[0] = 0x07;
		if(S1_SendBlock(Tiempo_Anemometro_2,5,&Enviado) == ERR_OK);
		//(void)S1_ClearTxBuf();
		tiempo_OK = TRUE;
		
		/*
		Med_1 = TRUE;
		Med_2 = FALSE;
		*/
		//Entrada_Anemometro_1_Enable();
		Med_2 = FALSE;
	}

}
/*
** ===================================================================
**     Event       :  Int_Anemometro_1 (module Events)
**
**     Component   :  Entrada_Anemometro_1 [ExtInt]
**     Description :
**         This event is called when an active signal edge/level has
**         occurred.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
void Int_Anemometro_1(void)
{
	if(Med_1 == TRUE && Med_2 == FALSE)
	{
  /* place your Entrada_Anemometro_1 interrupt procedure body here*/
	
	/*
	 * Envío y captura de Tiempo de Señal No.1
	 */
	Entrada_Anemometro_1_Disable();
	Entrada_Anemometro_2_Disable();
	if(Tiempo_GetCounterValue(&Tiempo_1.Val_Word) == ERR_OK);
	
	/*
	//Compara si el valor obtenido es correcto, si es así, se saca de la resta
	if(Tiempo_1.Val_Word > Tiempo_1_c.Val_Word) Tiempo_1.Val_Word = Tiempo_1.Val_Word - Tiempo_1_c.Val_Word;
	else Tiempo_1.Val_Word = 0xFFFF;
	*/
	Convertir_Dato_Serial(Tiempo_1.Val_Word,Tiempo_Anemometro_1);
	(void)Senal_25u_Disable();
	//(void)AD1_EnableEvent();
	(void)AD1_Enable();
	(void)S1_EnableEvent();
	(void)S2_EnableEvent();
	//(void)S1_ClearTxBuf();
	//if(Tiempo_Anemometro_1[0] == 0x07) Tiempo_Anemometro_1[0] = 0x00;
	
	(void)S1_ClearTxBuf();
	//Tiempo_Anemometro_1[0] = 0x06;
	//Tiempo_Anemometro_2[0] = 0x06;
	if(S1_SendBlock(Tiempo_Anemometro_1,5,&Enviado) == ERR_OK);
	tiempo_OK = TRUE;
	
	//Entrada_Anemometro_2_Enable();
	/*
	Med_1 = FALSE;
	Med_2 = TRUE;
	*/
	Med_1 = FALSE;
	}
	
}