Акции

Скидка до 40% на создание Бизнес-сайта или Интернет-магазина при заключении договора на поддержку и продвижение!
Подробнее

Новости

2013-08-21

Программирование данных. Алгоритм обслуживания прерывания

Существуют различные языки программирования. Один из них delphi, подробнее о котором можно узнать на delphiexpert.ru. А какой же нужен язык для программирования алгоритма обслуживания прерывания?

Функция initFuncEpi гарантирует, что при появлении данных в буфере EP2FIFOBUF будет сформирован за­прос на прерывание. Поэтому теперь переходим к разработке подпрограм­мы обслуживания прерывания, в ко­торой будет происходить основная обработка данных.

До начала активных действий необхо­димо сохранить значения используе­мых регистров в стек. Поскольку-дан­ные для программирования будут по­ступать в виде НЕХ-записей, после очистки запроса прерывания ЕР2 (в регистре EPIRQ) и проверки размера полученного пакета переходим к по­иску целой HEX-записи.

Количество записей, находящихся в одном USB-пакете, заранее не изве­стно. К тому же возможна ситуация, когда начало и конец записи нахо­дятся в разных пакетах. Учитывая всё это, определим требования к подпро­грамме поиска НЕХ-записи:

запись ограничена символами «:» и ;

если в USB-пакете обнаружена непол­ная запись, то необходимо скопиро­вать её в локальный буфер и устано­вить признак частичной записи:

если установлен признак частич­ной записи, то необходимо скопи­ровать оставшуюся часть НЕХ-запи­си из нового USB-пакета в локаль­ный буфер и сбросить признак;

целую НЕХ-запись передавать под­программе обработки в локальном буфере;

запись в локальном буфере должна заканчиваться символом . После завершения подпрограммы поиска осуществляется анализ ре­зультата. В случае, если целая НЕХ- запись найдена, осуществляется её обработка, т.е. физическая запись данных в МК. Далее, если программи­рование прошло успешно, поиск и обработка повторяются до тех пор, пока в буфере EP2FIFOBUF имеются данные и целые записи. В случае, ес­ли целая НЕХ-запись не обнаружена, то её начало остаётся в локальном бу­фере до прихода новых данных, а проверенный USB-пакет уничтожает­ся. В завершение работы обработчи­ка прерывания происходит восстано­вление регистров и переменных из стека.

Из рассмотренного алгоритма вид­но, что подпрограмма обработки прерывания является универсальной для обоих методов программирова­ния, поэтому мы можем реализовать её сразу.

Файл ep2.asm:
isrEp2: push acc push dph push dpi push dps push b
mov a,_ptrSrc push acc mov a. ptrDest push acc mov dps,#0 anl exi f,# OEFh mov a,#10h mov dptr,#EPIRQ movx @dptr,a ; очистка запроса прерывания
mov dptr,#EP2BCH movx a,@dptr mov sizeBufHi,a inc dptr movx a,@dptr mov sizeBufLo,a orl a,sizeBufHi ; контроль размера пакета j z iE2 1
mov dptr,#EP2FIF0BUF ; указатель на начало данных iE2_2: Icall findHexRecord; поиск записи
jb flagHalfHex,iE2_l ; контроль поиска записи
lcall progHexRecord ; программирование записи
jb flagHalfHex,iE2_l ; аварийное завершение операции sjmp iE2_2 iE2_l: clr ea
lcall synchDelay mov a,#82h mov dptr,#OUTPKTEND ; уничтожение пакета
movx @dptr,a lcall synchDelay setb ea pop acc
mov _ptrDest,a
pop acc
mov _ptrSrc,a
pop b
pop dps
pop dpi
pop dph
pop acc
reti

Источник

Все новости>>

Новости

Все новости...

Полезные материалы

© 2012 VediTa Генеральный партнер компания "НТО ИНТ"

телефон +7 (4752) 48-54-15

создание сайтов в Тамбове

Данный сайт носит информационный характер и ни при каких условиях не является публичной офертой, определяемой положениями Статьи 437 ГК РФ.