Example #1
0
extern u8 Check_u8SwitchState(u8 Copy_u8SwitchIdx)
{
	u8 Local_u8SwitchState=u8RELEASED;
	u8 Local_u8ReturnVal=u8ERROR;
	u8 Local_u8Counter=0;

	DIO_u8ReadPinVal(Copy_u8SwitchIdx,&Local_u8SwitchState);
	if (Local_u8SwitchState==u8PRESSED)
	{
		if (Local_u8Counter<50)
		{
			Local_u8Counter++;
		}
		else if (Local_u8Counter==50)
		{
//			DELAY_voidDELAY(10);
			DIO_u8ReadPinVal(Copy_u8SwitchIdx,&Local_u8SwitchState);
			Local_u8Counter=0;
		}
	switch (Local_u8SwitchState)
	{
	case u8PRESSED:
		 Local_u8ReturnVal=u8PRESSED;
		 break;
	case u8RELEASED:
		Local_u8ReturnVal=u8RELEASED;
		 break;
//	default:
//		Local_u8ReturnVal=u8RELEASED;
	}
	}
	return Local_u8ReturnVal;

}
Example #2
0
u8 SwitchSingle_u8Check(u8 Copy_u8PinIndx)
{

static u8 Switch_State=SWITCH_u8RELEASED;
u8 local_PinReading=0;
u8 local_PinReading2=0;

switch (Switch_State)
{
case SWITCH_u8RELEASED:
DIO_u8ReadPinVal(Copy_u8PinIndx,&local_PinReading);
Delay(10UL);
DIO_u8ReadPinVal(Copy_u8PinIndx,&local_PinReading2);
if(local_PinReading==DIO_u8HIGH && local_PinReading==local_PinReading2)
{Switch_State=SWITCH_u8DEBOUNCING;}
else {Switch_State=SWITCH_u8RELEASED;}
break;

case SWITCH_u8DEBOUNCING:
DIO_u8ReadPinVal(Copy_u8PinIndx,&local_PinReading);
if(local_PinReading==DIO_u8HIGH){Switch_State=SWITCH_u8DEBOUNCING;}
else {Switch_State=SWITCH_u8PRESSED;}
break;

case SWITCH_u8PRESSED:
Switch_State=SWITCH_u8RELEASED;
}
return Switch_State;
 }
Example #3
0
void LCD_WaitLcd(void)
{
	u8 Local_u8ValBusyFlag;
	#if (LCD_u8LcdMode == LCD_u8Bit4)

	DIO_u8WritePinDir(LCD_u8D0,DIO_u8INPUT);//lcdd7=i/p .
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8INPUT);//lazm el 4 yb2o i/p 3shan ama b2lb enable mn high l low bib3t lcd btb3t high
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8INPUT);//lazm el 4 yb2o i/p 3shan ama b2lb enable mn high l low bib3t lcd btb3t high
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8INPUT);//lazm el 4 yb2o i/p 3shan ama b2lb enable mn high l low bib3t lcd btb3t high
	DIO_u8WritePinVal(LCD_u8ReadWrite,DIO_u8HIGH);//rw=1.
	#elif (LCD_u8LcdMode == LCD_u8Bit8)
	DIO_u8WritePinDir(LCD_u8D0,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D4,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D5,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D6,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D7,DIO_u8INPUT);
	DIO_u8WritePinVal(LCD_u8ReadWrite,DIO_u8HIGH);//rw=1.
	#endif
	DIO_u8WritePinVal(LCD_u8Reset,DIO_u8LOW);//rs=0.
	do
	{
		Local_u8ValBusyFlag=0;
		DIO_u8WritePinVal(LCD_u8Enable,DIO_u8HIGH);//Enable=1.
		Delay_ms_Max1s(1);
		#if (LCD_u8LcdMode == LCD_u8Bit4)
		DIO_u8ReadPinVal(LCD_u8D3,&Local_u8ValBusyFlag );
		#elif (LCD_u8LcdMode == LCD_u8Bit8)
		DIO_u8ReadPinVal(LCD_u8D7,&Local_u8ValBusyFlag );
		#endif
		Delay_ms_Max1s(1);
		DIO_u8WritePinVal(LCD_u8Enable,DIO_u8LOW);//e=0.
		Delay_ms_Max1s(1);

		DIO_u8WritePinVal(LCD_u8Enable,DIO_u8HIGH);//e=1
		Delay_ms_Max1s(1);
	}while(Local_u8ValBusyFlag == LCD_u8Busy);
	DIO_u8WritePinVal(LCD_u8ReadWrite,DIO_u8LOW);//rw=0.

	#if (LCD_u8LcdMode == LCD_u8Bit4)
	DIO_u8WritePinDir(LCD_u8D0,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8OUTPUT);
	Delay_ms_Max1s(1);
	#elif (LCD_u8LcdMode == LCD_u8Bit8)
	DIO_u8WritePinDir(LCD_u8D0,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D4,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D5,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D6,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D7,DIO_u8OUTPUT);
	#endif
}
u8 Keypad_u8Read(u8* Copy_u8SwitchNo)
{
	u8 local_u8funcDoneRightFlag = u8OK;
	u8 local_u8ActiveRows = 0;
	u8 local_u8Col1Val;
	u8 local_u8Col2Val;
	u8 local_u8Col3Val;
	u8 local_u8Col4Val;
    u8 local_testVal;
	u8 local_u8Counter;
	for(local_u8Counter = 0; local_u8Counter <4; local_u8Counter++)
	{
	DIO_u8WritePin(KEYPAD_ROW1,KeyPad_u8StateArr[local_u8Counter][KEYPAD_ROW_IDX1]);
	DIO_u8WritePin(KEYPAD_ROW2,KeyPad_u8StateArr[local_u8Counter][KEYPAD_ROW_IDX2]);
	DIO_u8WritePin(KEYPAD_ROW3,KeyPad_u8StateArr[local_u8Counter][KEYPAD_ROW_IDX3]);
	DIO_u8WritePin(KEYPAD_ROW4,KeyPad_u8StateArr[local_u8Counter][KEYPAD_ROW_IDX4]);

	DIO_u8ReadPinVal(KEYPAD_COL1,&local_u8Col1Val);
	DIO_u8ReadPinVal(KEYPAD_COL2,&local_u8Col2Val);
	DIO_u8ReadPinVal(KEYPAD_COL3,&local_u8Col3Val);
	DIO_u8ReadPinVal(KEYPAD_COL4,&local_u8Col4Val);
	local_testVal = (!local_u8Col1Val)*(!local_u8Col2Val)*(local_u8Col3Val ^ local_u8Col4Val) +   \
			(!local_u8Col3Val)*(!local_u8Col4Val)*(local_u8Col1Val ^ local_u8Col2Val);
	if(local_testVal == 1)
	{
	local_u8ActiveRows |= local_u8Col1Val;
	local_u8ActiveRows |= local_u8Col2Val << 1;
	local_u8ActiveRows |= local_u8Col3Val << 2;
	local_u8ActiveRows |= local_u8Col4Val << 3;
	switch(local_u8ActiveRows)
	{
	case 1:
			*Copy_u8SwitchNo = KeyPad_u8SWITCHMap[local_u8Counter][KEYPAD_COL_IDX1];
			break;
	case 2:
			*Copy_u8SwitchNo = KeyPad_u8SWITCHMap[local_u8Counter][KEYPAD_COL_IDX2];
		break;
	case 4:
			*Copy_u8SwitchNo = KeyPad_u8SWITCHMap[local_u8Counter][KEYPAD_COL_IDX3];
		break;
	case 8:
			*Copy_u8SwitchNo = KeyPad_u8SWITCHMap[local_u8Counter][KEYPAD_COL_IDX4];
	        break;
	default:
		local_u8funcDoneRightFlag = u8ERROR;
		break;
	}         //end of switch case
	} //end of if
	}    //end of for
	return local_u8funcDoneRightFlag;
}
Example #5
0
void main (void)
{
	u8 x ;
	DIO_voidInit();
while(1)
{
DIO_u8WritePinVal(24,1);
DIO_u8ReadPinVal(23,&x);
if(x==1)
	DIO_u8WritePinVal(28,1);
else if(x==0)
	DIO_u8WritePinVal(28,0);
}
}
Example #6
0
int main(void) {
		u8 temp;
		u8 val;
		for (u8 i = 0; i < 4; i++) {
			val = DIO_u8WritePortDir(i, 5);
			//DIO_u8WritePinVal(i,1);
			val = DIO_u8ReadPinVal(i, &temp);
			printf("state = %d val = %d \n", val, temp);
		}
		printf("DDRA= %d \n", DDR0);
		printf("DDRB= %d \n", DDR1);
		printf("DDRC= %d \n", DDR2);
		printf("DDRD= %d \n", DDR3);
		return 0;
}
Example #7
0
void main(void) {

	u16 Local_u8ADCReading;
	u16 Local_u8LCDresult[5];
	u8 Local_u8SW;
	u8 Local_u8ADCanalog;
	DIO_voidInit();
	TACTILE_voidInit();
	ADC_voidConfig();
	ADC_voidEnable();
	LCD_voidInit();

	while (1) {

		ADC_voidReadSingleShot(&Local_u8ADCReading);
		DIO_u8ReadPinVal(DIO_u8PIN31, &Local_u8SW);
        Local_u8ADCanalog=((Local_u8ADCReading>>6)*(u16)5)/(u16)1024;
		switch (Local_u8SW) {
		case TACTILE_u8Pressed:
			DIO_u8WritePinVal(DIO_u8PIN27, 1);
			itoa(Local_u8ADCanalog+5, Local_u8LCDresult, 10);
			LCD_voidWriteString(Local_u8LCDresult);
			delay_ms(5);
			break;
		case TACTILE_u8Released:
			DIO_u8WritePinVal(DIO_u8PIN27, 0);
			itoa(Local_u8ADCanalog, Local_u8LCDresult, 10);
			LCD_voidWriteString(Local_u8LCDresult);
			delay_ms(5);
			break;

		}

		LCD_voidClearSceen();


	}

	return;
}
Example #8
0
extern u8 TACTILE_u8GetState(u8 Copy_u8SwitchNumber, u8* Copy_u8PtrToVal) {


	static u8 TACTILE_u8SwitchesState[TACTILE_u8SWITCHESNO]={TACTILE_u8Released};
	static u16 TACTILE_u8PressedCount[TACTILE_u8SWITCHESNO]={0};
	static u16 TACTILE_u8ReleasedCount[TACTILE_u8SWITCHESNO]={0};

	u8 Local_u8ReturnFlag = OK;

	u8 Local_u8ReadSW;



	if (Copy_u8SwitchNumber > TACTILE_u8SWITCHESNO-1) {
		Local_u8ReturnFlag = ERROR;
	} else {
		DIO_u8ReadPinVal(Copy_u8SwitchNumber, &Local_u8ReadSW);
		switch (TACTILE_u8SwitchesState[Copy_u8SwitchNumber]) {

		case TACTILE_u8Released:

			switch (Local_u8ReadSW) {
			case DIO_u8HIGH:
				TACTILE_u8SwitchesState[Copy_u8SwitchNumber] = TACTILE_u8Bounce;
				* Copy_u8PtrToVal = TACTILE_u8Released;
				break;
			case DIO_u8LOW:
				TACTILE_u8SwitchesState[Copy_u8SwitchNumber] = TACTILE_u8Released;
				* Copy_u8PtrToVal = TACTILE_u8Released;
			break;
			default:

				break;

			}

			break;
		case TACTILE_u8Pressed:

			switch (Local_u8ReadSW) {
			case DIO_u8LOW:
				TACTILE_u8SwitchesState[Copy_u8SwitchNumber] = TACTILE_u8Bounce;
				* Copy_u8PtrToVal = TACTILE_u8Pressed;
				break;
			case DIO_u8HIGH:
				TACTILE_u8SwitchesState[Copy_u8SwitchNumber] = TACTILE_u8Pressed;
				* Copy_u8PtrToVal = TACTILE_u8Pressed;
				break;
			default:

				break;

			}

			break;
		case TACTILE_u8Bounce:

					switch (Local_u8ReadSW) {
					case DIO_u8LOW:
						TACTILE_u8ReleasedCount[Copy_u8SwitchNumber]++;
						TACTILE_u8PressedCount[Copy_u8SwitchNumber] = 0;

						if (TACTILE_u8ReleasedCount[Copy_u8SwitchNumber] > TACTILE_u8DEBOUNCE_RANGE) {
							TACTILE_u8SwitchesState[Copy_u8SwitchNumber] = TACTILE_u8Released;
							* Copy_u8PtrToVal=TACTILE_u8Released;
						}


			    	break;
			case DIO_u8HIGH:
				TACTILE_u8PressedCount[Copy_u8SwitchNumber]++;
				TACTILE_u8ReleasedCount[Copy_u8SwitchNumber] = 0;

				if (TACTILE_u8PressedCount[Copy_u8SwitchNumber] > TACTILE_u8DEBOUNCE_RANGE) {

					TACTILE_u8SwitchesState[Copy_u8SwitchNumber] = TACTILE_u8Pressed;
					* Copy_u8PtrToVal=TACTILE_u8Pressed;

				}


				break;
			default:

				break;

			}

			break;

		}
		Local_u8ReturnFlag = OK;
	}

	return Local_u8ReturnFlag;

}
Example #9
0
extern u8 TSW_u8CheckSW(u8 CopyIdx,u8 *Copy_u8PtrVal)
{	u8 local_returnStatus;


	u8 local_u8readPin = 0;

	switch(TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx])
	{
		case TSW_Released:
			DIO_u8ReadPinVal(TSW_SwitchPins[CopyIdx],&local_u8readPin);
			if(GetBit(TSW_MODE,CopyIdx) == ACTIVELOW){local_u8readPin = !local_u8readPin;}
				switch(local_u8readPin)
				{
				case TSW_HIGH:
								TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Bouncing;
								 *Copy_u8PtrVal= TSW_u8SwitchParams[EXTERNAL_STATES][CopyIdx];
								 local_returnStatus = okay;
								 break;

				case TSW_LOW:
								TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Released;
								TSW_u8SwitchParams[EXTERNAL_STATES][CopyIdx] = TSW_Released;
								 *Copy_u8PtrVal = TSW_u8SwitchParams[EXTERNAL_STATES][CopyIdx];
								 local_returnStatus = okay;
								 break;

				default: local_returnStatus = error;
						 break;
				}
			break;

		case TSW_Bouncing:
				DIO_u8ReadPinVal(TSW_SwitchPins[CopyIdx],&local_u8readPin);
				if(GetBit(TSW_MODE,CopyIdx) == ACTIVELOW){local_u8readPin = !local_u8readPin;}
				switch(local_u8readPin)
				{
				case TSW_HIGH: TSW_u8SwitchParams[LOW_COUNTER][CopyIdx] = 0;
								 TSW_u8SwitchParams[HIGH_COUNTER][CopyIdx]++;
								 local_returnStatus = okay;
								 if ( TSW_u8SwitchParams[HIGH_COUNTER][CopyIdx] == 100){TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Pressed;}
								 break;
				case TSW_LOW: TSW_u8SwitchParams[LOW_COUNTER][CopyIdx]++;
								TSW_u8SwitchParams[HIGH_COUNTER][CopyIdx] = 0;
								local_returnStatus = okay;
								if(TSW_u8SwitchParams[LOW_COUNTER][CopyIdx] == 100){TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Released;}
								break;
				default: local_returnStatus = error;
						 break;
				}

				if( TSW_u8SwitchParams[HIGH_COUNTER][CopyIdx] == 100){TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Released;}
			break;
		case TSW_Pressed:
			DIO_u8ReadPinVal(TSW_PIN1,&local_u8readPin);
			if(GetBit(TSW_MODE,CopyIdx) == ACTIVELOW){local_u8readPin = !local_u8readPin;}
			switch(local_u8readPin)
				{
				case TSW_HIGH:
					TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Pressed;
					TSW_u8SwitchParams[EXTERNAL_STATES][CopyIdx] = TSW_Pressed;
						*Copy_u8PtrVal= TSW_u8SwitchParams[EXTERNAL_STATES][CopyIdx];
						local_returnStatus = okay;
						break;
				case TSW_LOW:
					TSW_u8SwitchParams[INTERNAL_STATES][CopyIdx] = TSW_Bouncing;
							*Copy_u8PtrVal = TSW_u8SwitchParams[EXTERNAL_STATES][CopyIdx];
							local_returnStatus = okay;
							break;

				default:local_returnStatus = error; break;
				}
			break;

		default:local_returnStatus = error; break;
	}
	return local_returnStatus;
}
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;
}
Example #11
0
extern Keypad_u16Switches KEYPAD_Keypad_u16SwitchesRead(void)
    {

    u8 local_u8Switch_Current_State;
    u8 local_u8SwitchIdx;
    Keypad_u16Switches Keypad_u16State;

    /*Comment!: Initialize Switches as unPressed */
    Keypad_u16State.KEYPAD_u16Switches = KEYPAD_u16UNPRESSED;

    /*Comment!: Loop over all rows*/
    for (u8 Keypad_u8LoopCounter = 0; Keypad_u8LoopCounter < KEYPAD_u8NUM_ROWS; Keypad_u8LoopCounter++)
	{

	/*Comment!: make one output as pressed state and other outputs as released state */
	for (u8 Keypad_u8RowsCounter = 0; Keypad_u8RowsCounter < KEYPAD_u8NUM_ROWS; Keypad_u8RowsCounter++)
	    {

	    if (Keypad_u8RowsCounter == Keypad_u8LoopCounter)
		{

		DIO_u8WritePinVal(Keypad_u8RowS_Array[Keypad_u8RowsCounter], KEYPAD_u8PRESSEDSTATE);

		}
	    else
		{

		DIO_u8WritePinVal(Keypad_u8RowS_Array[Keypad_u8RowsCounter], !KEYPAD_u8PRESSEDSTATE);

		}
	    }

	for (u8 Keypad_u8ColumnsCounter = 0; Keypad_u8ColumnsCounter < KEYPAD_u8NUM_COLUMNS;
		Keypad_u8ColumnsCounter++)
	    {

	    /*Comment!: Get Switch Index  */
	    /*Comment!: Switch Index from 0~15*/
	    local_u8SwitchIdx = Keypad_u8ColumnsCounter + (KEYPAD_u8NUM_ROWS * Keypad_u8LoopCounter);

	    /*Comment!: Read Switch value*/
	    DIO_u8ReadPinVal(Keypad_u8COLUMNS_Array[Keypad_u8ColumnsCounter], &local_u8Switch_Current_State);

	    if (local_u8Switch_Current_State == KEYPAD_u8PRESSEDSTATE)
		{

		SET_BIT(Keypad_u16State.KEYPAD_u16Switches, local_u8SwitchIdx);

		}
	    else
		{

		CLR_BIT(Keypad_u16State.KEYPAD_u16Switches, local_u8SwitchIdx);

		}

	    }

	}

    return Keypad_u16State;
    }