PIC 16F684 Микроконтроллер Обработка прерываний - PullRequest
4 голосов
/ 06 января 2010

Я только что закончил свой класс микропроцессоров в колледже всего несколько недель назад, там мы программировали только на ассемблере. Мы узнали достаточно много (IMHO) о прерываниях.

Вот мой вопрос: я программирую на C с использованием HiTech Compiler для 16F684, в разделе таблицы данных обсуждаю прерывания ( Лист данных PIC 16F684 Раздел 12.4), в котором говорится, что программа перейдет к вектор прерывания 0x0004. Используя сборку в моем классе микропроцессоров, мы просто настроили бы инструкцию .org, указывающую на этот адрес, и записали необходимую сборку ниже, чтобы при возникновении прерывания она прыгала и запускалась. Я могу понять это на ассемблере, но когда я программирую на C, я не верю, что у меня есть контроль над тем, где части программы помещаются в память, что представляет проблему. Я не могу понять, как поместить команды на прерывание в C.

Пожалуйста, дайте мне знать, если мне нужно уточнить!

Ответы [ 4 ]

3 голосов
/ 06 января 2010

HiTech C расширяет язык C с помощью функции interrupt:

void interrupt my_interrupt_handler (void) {
    handle_interrupts_here();
}

Вы действительно должны получить руководство для компилятора. Я полагаю, что руководство для Pic-lite можно загрузить бесплатно, по крайней мере, так было, когда я скачал свою копию в 2001 году.

3 голосов
/ 06 января 2010

Этот FAQ от Microchip содержит некоторую информацию об использовании прерываний в HiTech C.

1 голос
/ 06 января 2010

Вам придется копаться в документации HiTech, но часто у компиляторов есть специальные ключевые слова для определения функций прерывания. Компилятор или система времени выполнения должна иметь дело с функцией, вызываемой прерыванием специально: помимо настройки вектора, компилятор (или система времени выполнения) должен сохранять все регистры. Это может не потребоваться для нормальной функции без прерываний.

Мануал будет твоим другом.

0 голосов
/ 23 января 2010

Компилятор CCS для PIC использует директивы компилятора # INT_ * или «атрибуты» для функций обработки прерываний для различных источников прерываний.

...