2010-01-06 6 views
4

Я только что закончил свой класс микропроцессоров в колледже всего несколько недель назад, там мы запрограммировали только в сборке. Мы узнали о справедливой сумме (ИМХО) о прерываниях.PIC 16F684 Микроконтроллер Interupt Handling

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

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

ответ

3

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

+0

Похоже, ссылка, которую вы дали, дает хороший пример. Спасибо – onaclov2000

+0

Я использовал ссылку, которую вы предоставили, и прошел тест (просто включив светодиод, когда было прервано прерывание). Спасибо! – onaclov2000

1

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

Пособие будет вашим другом.

+0

Спасибо, что напомнили мне о руководстве, по какой-то причине я не думал, что так просто, как это было бы в руководстве ... LOL – onaclov2000

3

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

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

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

+0

Мне нужно попробовать. Это утверждение подключается и воспроизводится в том отношении, что если у меня есть функция, называемая handle_interrupts_here, я могу с ними справиться, или «прерывание» заменяется на тип прерывания как такового? – onaclov2000

+0

PIC16 имеет только 1 'тип' прерывания. Вам решать проверить регистры (HiTech определяет их как глобальные переменные, проверять файлы заголовков), чтобы узнать, что произошло. – slebetman

0

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

Смежные вопросы