//::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Входы
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
void Inputs_Processor(void/*u8_t* sel_port, u8_t sel_pin*/)
{
unsigned char i;
unsigned char tmp; //*sel_port &= ~(1< i = 0;
do
{
//Если таймер антидребезга пустой
if(dig_inputs.debounce_timer[i] == 0)
{
//Если процедура антидребезга не проводилась
if((dig_inputs.debounce_timeout & (1< {
//Если значение на пине изменилось
tmp = dig_inputs.state;
if(((tmp & (1< {
if((DIG_IN_PIN & (1<<(DIG_IN_1 + i))) != 0)
{
dig_inputs.tmp_state |= (1< }
else
{
dig_inputs.tmp_state &= ~(1< } dig_inputs.debounce_timer[i] = DIG_INPUT_DEBOUNCE_TIME; //Запустим антидребезг
dig_inputs.debounce_timeout |= (1< }
}
else
{
//Если процедура антидребезга проводилась
//Если значение на пине снова изменилось
tmp = dig_inputs.tmp_state;
if(((tmp & (1< {
if((DIG_IN_PIN & (1<<(DIG_IN_1 + i))) != 0)
{
dig_inputs.tmp_state |= (1< }
else
{
dig_inputs.tmp_state &= ~(1< }
dig_inputs.debounce_timer[i] = DIG_INPUT_DEBOUNCE_TIME; //Запустим антидребезг
}
else
{
//Если в теч. времени антидребезга значение на пине не менялось
//запомним новое значение
if(((dig_inputs.state & (1< {
if((dig_inputs.tmp_state & (1< {
dig_inputs.state |= (1< }
else
{
dig_inputs.state &= ~(1< }
dig_inputs.hold &= ~(1< }
dig_inputs.debounce_timeout &= ~(1< }
}
}
else
{
//Если процедура антидребезга в процессе
//Если значение на пине снова изменилось
tmp = dig_inputs.tmp_state;
if(((tmp & (1< {
//Запомним новое значение
if((DIG_IN_PIN & (1<<(DIG_IN_1 + i))) != 0)
{
dig_inputs.tmp_state |= (1< }
else
{
dig_inputs.tmp_state &= ~(1< }
dig_inputs.debounce_timer[i] = DIG_INPUT_DEBOUNCE_TIME; //Перезарядим таймер антидребезга
}
}
i++;
}while(i //*sel_port |= (1<}