ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
806165 Топик полностью
IBAH (03.01.2018 10:58 - 11:31, просмотров: 290) ответил AlexBi_ на Такая запись if(10 == a) считается полезной тем, что если забудешь один = будет ошибка if(10 = a)
Понятно... жертвуем эффективностью в угоду безопасности... По второму вопросу я имел в виду: есть ли Пика команда "сравнить с 0", или 0 такая же константа как и все остальные?  А контролер прерываний мне выносит моск! В прерывании таймера модифицируется лонг переменная, в фоновой задаче, при использовании переменной, что правильнее запрещать? Прерывания таймера? Манипуляции с разрешением прерывания таймера не сбрасывают флаг прерывания? В обработчике прерываний кодегенератор нагенерил проверку флагов разрешения прерываний, зачем? в этих ваших интернетах делают тоже самое /*################################################ * ОБРАБОТЧИК ПРЕРЫВАНИЙ с ВЫСОКИМ ПРИОРИТЕТОМ */ void interrupt high_isr (void) { if (PIR1bits.TMR1IF && PIE1bits.TMR1IE) // Проверка на нужный нам флаг. { PIR1bits.TMR1IF = 0; // Сбросили флаг прерывания по TMR1 /* Скорость таймера: * PORTBbits.RB0 = 0 (кнопка нажата) -> медленно. * PORTBbits.RB0 = 1 (кнопка отжата) -> быстро. * TMR1 сбрасывается на 0x0000 при переполнении, * поэтому необходимо TMR1 устанавливать заново при каждом переполнении счетчика * * Скорость таймера: * 16 000 000 / 4 / 8 / (65535 - 0) = 7,6 Hz (медленно) * 16 000 000 / 4 / 8 / (65535 - 61440) = 122 Hz (быстро) */ if (PORTBbits.RB0) TMR1 = 0xF000; LATD = PORTD + 1; } //if (PIR1bits.TMR1IF && PIE1bits.TMR1IE) } // high_isr END вот if (PIR1bits.TMR1IF && PIE1bits.TMR1IE)