Справочник функций

Ваш аккаунт

Логин:
Пароль:
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
Убрать блок ВКонтакте навсегда

Последние темы форума

Показать новые сообщения »

Почтовая рассылка



Подписчиков: 19017
Последний выпуск: 23.04.2012

setvect

setvect


Функция            Устанавливает вектор прерывания.

Синтаксис          void setvect(int intr_num, void interrupt(*isr)());

Файл, содержащий   dos.h
прототип

Описание           Каждый микропроцессор  семейства   8086   включает
                   набор векторов прерываний, с номерами от 0 до 255.
                   Четырех  байтовые  значения  каждого   вектора   в
                   действительности    представляют    собой   адреса
                   программ обработки соответствующих прерываний.

                   setvect устанавливает  новую  программу  обработки
                   прерывания с номером intr_num,  передавая ее адрес
                   в параметре isr. Адрес подпрограммы можно передать
                   только  в  том  случае,  если  она  объявлена  как
                   подпрограмма обработки прерывания (interrupt).

                   Примечание. Если    вы    используете   прототипы,
                   объявленные в dos.h то вы можете  просто  посылать
                   адрес  подпрограммы обработки прерывания setvect в
                   любой модели памяти.

Возвращаемое       Нет.
значение

Переносимсоть      setvect уникальна для микропроцессоров семейства
                   8086.

Смотрите также     getvect.

Пример:

/*  Примечание:
    Это программа обработки прерываний. Вы должны компилировать
    данную программу с отключенной функцией проверки переполнения
    стека (Test Steck Overflow - off).  */

#include<stdio.h>
#include<dos.h>
#include<conio.h>

#define INTR 0X1C  /* прерывание по таймеру */

void interrupt (*oldfunc)(); /* указатель на прерывание */
int count = 0;

void interrupt handler()
{
   /* увеличить счетчик */
   count ++;
   /* вызвать старый вектор */
   oldfunc();
}

int main(void)
{
   /* сохранить старый вектор */
   oldfunc = getvect(INTR);
   /* установить новый вектор */
   setvect(INTR,handler)
   /* ничего не делать */
   while(count<20)
      printf("счетчик = %d\n",count);
   /* восстановить старый вектор */
   setvect(INTR,oldfunc);
   return 0;
}

Оставить комментарий

Оставлять комментарии могут только зарегистрированные пользователи.

Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог