Микроконтроллер pic 16F684 прерываем обработку
Я только что закончил свой курс микропроцессоров в колледже всего несколько недель назад, там мы программировали только в сборке. Мы узнали довольно много (ИМХО) о прерываниях.
Вот мой вопрос: я программирую на C, используя компилятор HiTech для 16F684, в разделе таблицы данных, обсуждающем прерывания (PIC 16F684 Datasheet Раздел 12.4), говорится, что программа перейдет к вектору прерываний 0x0004. Используя сборку в моем классе микропроцессоров, мы бы просто настройте оператор. org, указывающий на этот адрес, и запишите необходимую сборку ниже, чтобы при возникновении прерывания она прыгала туда и выполнялась. Я могу понять это в сборке, но когда я программирую на C, я не думаю, что у меня есть контроль над тем, где части программы помещаются в память, что представляет проблему. Я не могу понять, как разместить команды на прерывании в C.
Пожалуйста, дайте мне знать, если мне нужно будет уточнить!
4 ответов:
Этот FAQ от Microchip содержит некоторую информацию об использовании прерываний в HiTech C.
HiTech C расширяет язык C с типом функции
interrupt:void interrupt my_interrupt_handler (void) { handle_interrupts_here(); }Вы действительно должны получить руководство для компилятора. Я считаю, что руководство для Pic-lite является бесплатным для загрузки, по крайней мере, это было, когда я загрузил свою копию некоторое время в 2001 году.
Вам придется покопаться в документации HiTech,но часто компиляторы имеют специальные ключевые слова для определения функций прерывания. Компилятор, или система времени выполнения, должен иметь дело с функцией, вызываемой прерыванием специально: в дополнение к настройке вектора, компилятор (или система времени выполнения) должен сохранить все регистры. Возможно, ему не придется делать это для нормальной, не прерывающейся функции.
Руководство будет вашим другом.
КомпиляторCCS для PICs использует директивы компилятора #INT_* или "атрибуты" функций обработки прерываний для различных источников прерываний.
Comments