8051 внешнее прерывание

Как включить внешнее прерывание 8051?

2 ответов


каждый из прерываний 8051s имеет свой собственный бит в прерывании enable (IE) регистр специальной функции (SFR) и включен путем устанавливать соответствуя бит. Примеры кода ниже приведены в сборке 8051, а также В C, чтобы дать общее представление о том, что происходит.

для включения внешнего прерывания 0 (EX0) нужно установить бит 0 IE.

SETB EX0 или ORL IE,#01 или MOV IE,#01

для включения внешнего прерывания 1 (EX1) вам нужно установить бит 3 IE.

SETB EX1 или ORL IE,#08 или MOV IE,#08

прерывания затем должны быть глобально включены, установив бит 7 из IE, который является глобальным interupt включить / отключить бит (EA). При необходимости можно установить высокий приоритет внешних прерываний с помощью приоритета прерывания (IP) SFR.

SETB EA или ORL IE,#80

пример в C:

#define IE (*(volatile unsigned char *)0xA8)
#define BIT(x) (1 &lt&lt (x))
...
IE &= ~BIT(7); /* clear bit 7 of IE (EA) to disable interrupts */
...
IE |= BIT(0);  /* set bit 0 of IE (EX0) to enable external interrupt 0 */
...
IE |= BIT(1);  /* set bit 3 of IE (EX1) to enable external interrupt 1 */
...
IE ^= BIT(7)   /* toggle bit 7 of IE (EA) to re-enable interrupts */

или

IE = 0x89;  /* enable both external interrupts and globally enable interrupts */

различные поставщики компиляторов 8051 C часто определяют свои собственные методы настройки функций прерывания. Возможно, Вам потребуется ознакомиться с документацией для вашего конкретного компилятора.

для определения функции прерывания с помощью компилятора Keil C51 ( pdf ссылка на примечание к приложению), указывается номер прерывания и банк регистров, где номер прерывания соответствует определенному вектору прерывания адрес.

void my_external_interrupt_0_routine(void) interrupt 0 using 2
{
/* do something */
}

для определения функции прерывания с помощью компилятора 8051 IAR C/C++ (icc8051) ( pdf ссылка на справочное руководство), то __interrupt ключевое слово и


очень хороший учебник, это мне очень помогло. http://www.8052.com/tutint.phtml