Example #1
0
void KeyCheck(void){

	if	(
		BitIsSet(PrevKey, KEY_STEP_FLAG)					//Нужно повторное считывание порта STEP
		&&
		BitIsClear(KEY_PORTIN_STEP, KEY_STEP_PORT)
		)
		SetBit(Key, KEY_STEP_FLAG);
	if	(
		BitIsSet(PrevKey, KEY_OK_FLAG)						//Нужно повторное считывание порта OK
		&&
		BitIsClear(KEY_PORTIN_OK, KEY_OK_PORT)
		)
		SetBit(Key, KEY_OK_FLAG);
	PrevKey = 0;
	if (Key){												//Да, есть нажатие какой-то клавиши
		if (AlarmBeepIsSound()){							//Если сигнал будильника включен то выключить его
			SoundOff();
			SetClockStatus(csClock, csNone);				//Вернутся в нормальный режим
			Key = 0;
			BeginScakKeyRepeat();
			return;											//и выйти т.к. это нажатие выключения будильника
		}
	TimeoutReturnToClock(TIMEOUT_RET_CLOCK_MODE_MIN);		//Установить интервал таймаута для возврата в основной режим 
	SoundOn(SND_KEY_BEEP);									//Пискнуть кнопкой
	}
	if BitIsSet(Key, KEY_STEP_FLAG){						//Шаг
		MenuStep();
	}
	else if BitIsSet(Key, KEY_OK_FLAG){						//ОК
		MenuOK();
	}
	Key = 0;												//Все клавиши отработаны
	BeginScakKeyRepeat();
}
Example #2
0
void KeyScan(void){
	if BitIsClear(KEY_PORTIN_STEP, KEY_STEP_PORT)
		SetBit(PrevKey, KEY_STEP_FLAG);
	if BitIsClear(KEY_PORTIN_OK, KEY_OK_PORT)
		SetBit(PrevKey, KEY_OK_FLAG);
	if (PrevKey)											//Какая-то клавиша нажата, запускаем функцию проверки через защитынй интервал
		SetTimerTask(KeyCheck, PROTECT_PRD_KEY);
	else													//Ничего не нажато, продолжаем сканировать
		SetTimerTask(KeyScan, SCAN_PERIOD_KEY);
}
Example #3
0
void TaskAlarm (void) {
	
	if (PM_PinIsClear(ALARM_STATUS) && PM_PinIsClear(ALARM_PAGER))//fprintf(stdout, "Alarm in GuardMode");
	{
		
	} else if (PM_PinIsClear(ALARM_STATUS) && PM_PinIsSet(ALARM_PAGER))
	{
		//fprintf(stdout, "Alarm is CALLING");
		if (BitIsClear(status, ST_ALARM))
		{
			SetTask(TaskCall);	
		}
	} else 
	{
		/*if (PM_PinIsSet(ALARM_STATUS))
		{
			fprintf(stdout, "STATUS is High\t");

		} else
		{
			fprintf(stdout, "STATUS is low\t");
		}
		if (PM_PinIsSet(ALARM_PAGER))
		{
			fprintf(stdout, "PAGER is High\n");

		} else
		{
			fprintf(stdout, "PAGER  is low\n");
		}*/	
	}
	SetTimerTask(TaskAlarm, 1000);
}