ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
182561 Топик полностью
Cepгeй Бopщ (22.02.2010 17:24 - 17:27, просмотров: 165) ответил zx_ на не получается настроить прерывания по таймеру. iar+msp
Сразу в лоб: IFG1 &= !OFIFG; - это неправильно. Правильно IFG1 &= ~OFIFG; Далее - вы разрешаете прерывание TAIE, а обработчика этого прерывания у вас нет. У вас только обработчик TCCR0. Еще замечания, как начинающему: TACTL = TASSEL_1+MC_1+TAIE; //ACLK, Режим «вверх», Разрешение прерыванияНе используйте в таких выражениях "+", используте "|". В общем случае они дают одинаковый результат, но если процессе отладки вы (случайно) добавите один из битов дважды, то в случае сложения результат будет несколько неожиданный. Сравните: TACTL = TAIE + TASSEL_1 + MC_1 + TAIE и TACTL = TAIE | TASSEL_1 | MC_1 | TAIE . do i--; while (i != 0); сравните листинг с таким циклом: while (--i != 0); или еще короче: while (--i); Константы вроде вашей BEEPER удобнее записывать в виде #define BEEPER (1<<3)сразу видно, что это единица, сдвинутая влево на 3 бита, т.е. что это единица в третьем бите, нет необходимости в уме переводить из шестнадцатиричной системы в двоичную, рискуя ошибиться.