Exemple #1
0
void V9_InitEnv(void)
{
	/************ Set port E, PE0 as Clock out ***********/
	WriteMemory(REG_PCONE, 0x1556a);
    WriteMemory(REG_PDATE, 0x1ff);
	WriteMemory(REG_PUPE,  0x6);

	/************ Set port G, GP3 as EINT3 ***********/
	WriteMemory(REG_PCONG, 0x54c0);
    WriteMemory(REG_PDATG, 0xff);
	WriteMemory(REG_PUPG,  0x0);

	//BusInit(BUS_IDX_4, BUS8);	//V938 use bus4
	BusInit(BUS_IDX_3, BUS8);	//V938 use bus3
	ResetV9Chip();
	Lm4867ShutDown(0);

	SetPortCall(3, _ISR_V9IntHandle);
	ExtInt_Init(EXINT3);	//v938 use exint3

	/******************* start 938 clock *****************/
	V9_CtrlSetPll(V938_DEFAULTMCLK);
    V9_CtrlStartClk(CTRL_PLL_WORK_MODE);
}
int main (void)
{
	u8 KeyPadVal,Toggle_3=0,Toggle_2=0,Toggle_1=0,SwitchPin;
	DIO_VoidInit();
	ExtInt_Init();
	Timer_VoidInit();
	ExtInt_EnableGlobalInt();

	//ExtInt_voidOverFlowInt0(Toggle);
	ExtInt_voidSetExtInt0(Toggle);

	while(1)
	{
		DIO_u8ReadPinVal(DIO_u8Pin24,&SwitchPin);
		if(u8_DebounceSenceHigh(SwitchPin,Pressed) == Pressed)
		{
			DIO_u8WritePinVal(ExternaInterruptZeroPin,TurnOn);
		}
		else DIO_u8WritePinVal(ExternaInterruptZeroPin,TurnOff);

		TotalTimeInMile=Timer_u16Count1mile();
		KeyPadVal=KeyPad_StructRead();
		if(KeyPadVal!=KeyPad_u8NoPressed)
		{
			KeyPadVal_2=KeyPadVal;
			//PORTB=KeyPadVal_2	;
		}
		else;
		if(TotalTimeInMile>=250)
		{

			if(Led_1==FiredInterrupt)
				{
					if(ToggleLed1==FirstPressed)
					{
						DIO_u8WritePinVal(FirstLed,Toggle_1^=1);
					}
					else DIO_u8WritePinVal(FirstLed,TurnOff);
				}
				else;

				if(Led_2==FiredInterrupt)
				{
					if(ToggleLed2==FirstPressed)
					{
						DIO_u8WritePinVal(SecondLed,Toggle_2^=1);
					}
					else DIO_u8WritePinVal(SecondLed,TurnOff);
				}
				else ;

				if(Led_3==FiredInterrupt)
				{
					if(ToggleLed3==FirstPressed)
					{
						DIO_u8WritePinVal(ThirdLed,Toggle_3^=1);
					}
					else DIO_u8WritePinVal(ThirdLed,TurnOff);
				}
				else;

			Timer_u16ResetCounter();
			Timer_u16ResetTotalTime();
		}
		else;
	}
	return 0;
}