Обработчики прерываний К1887ВЕ3Т Keil

Модераторы: ea, Alis, pip, gurzzza, _sva_

Ответить
frenele
Сообщения: 12
Зарегистрирован: 27 янв 2015, 14:51
Предприятие: "Океанприбор"
Откуда: Кировск, ленинградская обл.
Контактная информация:

Обработчики прерываний К1887ВЕ3Т Keil

Сообщение frenele »

Создал проект в Keil на микроконтроллере работает. :D Теперь задача написать любой обработчик прерывания, но не понятно где прописаны имена обработчиков прерываний. :? Смотрел файл "START167.A66", но не обнаружил. Для STM32 для меня всё понятно как писать оболочку обработчика прерываний. А вот для К1887ВЕ3Т непонятно. Помогите разобраться! Может какой пример скинете с работой прерываниями.
tvs
Сообщения: 9
Зарегистрирован: 27 апр 2016, 09:24

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение tvs »

У Keil довольно неплохой Help, посмотрите там. Обработчикам прерываний Вы сами даете имена, для Keil важен только номер прерывания, что в Assembler, что в C.

Код: Выделить всё

void CAN_OUT_MSG(void) interrupt 0x66
{
    P3 = ~0x0066;
    printf("\n interrupt 0x66 CAN_OUT_MSG\n");
}
frenele
Сообщения: 12
Зарегистрирован: 27 янв 2015, 14:51
Предприятие: "Океанприбор"
Откуда: Кировск, ленинградская обл.
Контактная информация:

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение frenele »

То есть как я понял в строчке "void CAN_OUT_MSG(void) interrupt 0x66" и есть адрес вектора прерывания как если писать на Assembler. Спасибо посмотрю Help. Опыт в Keil у меня только любительский. Вот и осваиваю.
tvs
Сообщения: 9
Зарегистрирован: 27 апр 2016, 09:24

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение tvs »

Нет, это номер прерывания, ни в коем случае не вектор.
frenele
Сообщения: 12
Зарегистрирован: 27 янв 2015, 14:51
Предприятие: "Океанприбор"
Откуда: Кировск, ленинградская обл.
Контактная информация:

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение frenele »

Спасибо я уже разобрался. Прерывания заработали. Да это порядковый номер прерывания.

void ASC0_Receive(void) interrupt 0x2B
{
P2 ^= 0x4000;
}

void ASC0_Transmit(void) interrupt 0x2A
{
tx_uart_byte('$');
}
Ответить

Вернуться в «16-разрядные RISC микроконтроллеры»