Аппаратные и программные средства встраиваемых систем



Pdf көрінісі
бет218/268
Дата07.01.2022
өлшемі3,23 Mb.
#18255
1   ...   214   215   216   217   218   219   220   221   ...   268
5.2.6  Обработчики прерываний 
Обработчик прерывания в SDCC имеет следующий вид: 
void timer_isr (void) __interrupt (1) __using (1) 

    ... 

 
Ключевое слово __interrupt определяет номер вектора прерываний, а слово 
__using - номер  используемого  регистрового  банка.  Явное  указание  номера 
регистрового  банка  позволяет  уменьшить  объем  данных,  сохраняемых  в  стеке 


 
227 
при  вызове  обработчика.  Предполагается  естественно,  что  этот  регистровый 
банк кроме обработчика никто не будет использовать. 
Если  обработчик  прерывания  изменяет  какие-либо  глобальные 
переменные, они должны быть определены с использованием ключевого слова 
volatile. 
/* Номера обработчиков прерываний для ЬК ADuC812 в стенде SDK-1.1: 
адрес = (номер * 8) + 3 */ 
 
#define IE0_VECTOR   0    /* 0x03 external interrupt 0 */ 
#define TF0_VECTOR   1    /* 0x0b timer 0 */ 
#define IE1_VECTOR   2    /* 0x13 external interrupt 1 */ 
#define TF1_VECTOR   3    /* 0x1b timer 1 */ 
#define SI0_VECTOR   4    /* 0x23 serial port 0 */ 
 


Достарыңызбен бөлісу:
1   ...   214   215   216   217   218   219   220   221   ...   268




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет