Бродин В.Б., Калинин А.Б. Схемы на микроконтроллерах и БИС программируемой логики, 2002
.pdfГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
19 |
ного логического преобразования, например при работе с другим микро процессором.
Часть типовых операций управления, необходимых для связи с реаль ными объектами, реализованы в традиционной системе аппаратно в виде специализированных интерфейсных БИС. Эти операции не являются три виальными, поскольку реализуются сложными самостоятельно функцио нирующими цифровыми автоматами, преобразующими данные. Такие ав томаты, как последовательный порт, тактируются некоторым синхросигна лом и проходят в процессе работы ряд состояний. Они самостоятельно воспринимают внешние события (сигналы) и обрабатывают их, привязка к сетке процессора производится по прерываниям. То же касается и форми рования выходных сигналов управления. При отсутствии интерфейсной БИС с нужной операцией прежде приходилось создавать требуемый авто мат из схем малой степени интеграции.
Очевидно, что в общем случае микропроцессорная система управляет объектами, используя комбинированную аппаратно-программную реализа цию функций управления.
Микроконтроллер отличается от микропроцессора тем, что аппаратные операции, наиболее часто используемые в микропроцессорных системах управления, выполняются внутренними модулями, интегрированными на кристалл вместе с процессорным ядром. Это, кроме памяти программ и данных, тай меры/счетчики, последовательные порты, модули АЦП и ЦАП, модули управления электродвигателями и т.п.
Модуль процессора в микроконтроллере способен выполнять с разде лением времени несколько функций управления. При этом функции управления реализуются как процессы на временной сетке с некоторым элементарным интервалом времени А Т/, и можно говорить о квазипарал-
лельных процессах.
Организацию и взаимодействие квазипараллельных процессов управ ления рассмотрим на примере работы ведущего микроконтроллера системы управления рентгенотелевизионного аппарата. Связи платы ведущего мик роконтроллера с панелью управления и другими объектами видны из рис. 1.3.
При включении аппарата процедура инициализации ведущего микро контроллера устанавливает режим автоматического просвечивания, на про граммируемое устройство питания рентгеновского излучателя (РИ) пода ются логические сигналы управления и аналоговые сигналы уставок анод ного напряжения КС и анодного тока МС. Формируются также сигналы для блока диафрагм, усилителя рентгеновского изображения (УРИ) и сис темы обработки изображений (СОИ). Аппарат переходит в состояние го товности текущего режима, тип и параметры режима могут изменяться с панели управления, но высокое анодное напряжение на РИ подается толь
20 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
ко при нажатии педали или ручного включателя. Включение высокого на пряжения сопровождается формированием логических сигналов в соответ ствии с определенной циклограммой.
Рис. 1.3. Микропроцессорная СУ рентгенотелевизионного аппарата и связи с объектами управления
При включенном РИ ведущий микроконтроллер обслуживает процесс автоматического регулирования мощности дозы. При этом он получает цифровой сигнал обратной связи, частота которого зависит от величины рассогласования аналогового сигнала ОС относительно опорного значения, и формирует новое значение кода уставки, из которого далее образуется аналоговый сигнал КС. Каждый импульс цифрового сигнала ОС вызывает прерывание, процедура которого инкрементирует или декрементирует внутренний счетчик микроконтроллера, являющийся источником кЬда ус тавки. Между прерываниями анализируется посылка от панели управле ния на предмет изменения раскрыва диафрагм. Отпускание педали или включателя приводит к снятию высокого напряжения с РИ, аппарат вновь переходит в состояние готовности текущего режима. Система обеспечения безопасности функционирования формирует общий сигнал неготовности и код ошибки. Сигнал неготовности приводит к снятию высокого напряже ния с РИ и выдаче кода ошибки на панель оператора.
ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
21 |
Из вышеизложенного можно заключить, что в сложных системах управления ведущий микроконтроллер должен обеспечить реализацию следующих процессов:
•формирование временной сетки с заданным элементарным интервалом;
•обслуживание подсистемы безопасности;
•формирование циклограмм сигналов управления объектами;
•регулирование параметров непрерывных процессов в аппарате на осно ве анализа сигналов обратных связей.
•взаимодействие с оператором через панель управления и отдельные включатели/педали, переключение режимов работы.
Организация параллельных процессов управления на микроконтрол лерах требует предварительного (статического) планирования их выполне ния: расчета времени, механизмов взаимодействия и необходимых ресур сов. Рассмотрим временную диаграмму реализации перечисленных выше процессов в СУ рентгенотелевизионного аппарата, представленную на рис. 1.4.
Каждый процесс в СУ на микроконтроллерах реализуется как после довательность операторов на сетке системного времени. Операторы выпол няются с использованием процедур. Процедуры могут прерывать друг друга, но операторы определенных процессов должны быть выполнены к определенному времени.
Рассмотрим каждый из перечисленных выше процессов. При этом мы не будем подробнее, чем это сделано в комментариях, анализировать текст программы. Нашей целью является анализ структуры программы и опре деление времени выполнения операторов каждого из процессов. Текст фрагментов программы служит для демонстрации того, что в развитой системе программная реализация функций управления требует значитель ного времени и ресурсов из-за необходимости реализовать взаимодействие квазипараллельных процессов.
Формирование временной сетки. Для взаимодействия процессов вна чале необходимо определить величину элементарного интервала времени и сформировать временную сетку. Сетка формируется с использованием вы деленного аппаратного модуля микроконтроллера - таймера/счетчика, ра ботающего в режиме счета внутренних импульсов синхронизации. Таймер при переполнении формирует запрос прерывания, процедура обслужива ния которого вызывает его перезагрузку.
Прерывание таймера системного времени должно иметь наивысший приоритет. Поскольку процесс формирования циклограмм сигналов управления использует интервалы системного времени и это является ос новой программного управления, временная сетка должна быть непрерыв ной и равномерной ATN = Tn+i " TN =const = АТсистемы . Важной задачей является определение длительности элементарного интервала системного
22 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
времени. Слишком длительный интервал вызывает недозагрузку ведущего микроконтроллера, ухудшение параметра «реального времени». Слишком короткий интервал может привести к нарушению циклограмм сигналов управления и аварийной ситуации.
Рис. 1.4. Диаграмма квазипараллельных процессов в системе управления
Если в качестве ведущего используется микроконтроллер семейства MCS-51, то таймер (например ТО) считает машинные циклы (Тц= 1 2 /F 0CU). Перезагрузка таймера системного времени производится процедурой в две команды по два цикла, еще два цикла тратится на вход в процедуру. Следовательно, перезагрузка выполняется за б машинных циклов. Чтобы не накапливалась ошибка, это время должно быть учтено коррекцией начального значения, например следующим образом:
IntTO:
mov THO, #High (TORLD+6) ; перезагрузка ст. байта ТО mev TLO, #Low (TORLD+6) ; перезагрузка мл. байта TO
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
23 |
Таким образом, процесс формирования временной сетки включает один оператор перезагрузки таймера, который выполняется после завер шения текущего интервала сетки. Нас интересует длительность выполне ния этого оператора, представляющая собой сумму машинных циклов его команд Е Qi ■Как указано выше, команды занимают 6 машинных циклов микроконтроллера. При тактовой частоте Focu = 12 МГц оператор форми рования временной сетки нашего примера выполняется за AtCB= 6,0 мксек.
Обслуживание подсистемы безопасности. Микроконтроллер может обслуживать подсистему безопасности, самостоятельно анализируя значе ния сигналов с некоторых датчиков, а также обрабатывая запрос прерыва ния от внешней схемы контроля функционирования. Самостоятельно ана лизируемые сигналы с датчиков отражают состояние медленно меняющих ся параметров аппарата - например, температуры. Результатом анализа может быть подача сигналов предупреждения - например мигание индика тора на панели управления. Запрос прерывания является результатом ра боты схемы контроля функционирования, которая следит за быстро изме няющимися параметрами - например, основной частотой синхронизации. При пропадании этого сигнала запрос прерывания приводит к снятию вы сокого напряжения, отображению сообщения об ошибке функционирова ния.
Если анализируемые сигналы с датчиков имеют логическую форму, то процедура, реализующая оператор рассматриваемого процесса, может иметь следующий вид:
TCntr: |
mov |
OBRP5, P5 |
* |
ввод значения из порта в регистр-образ порта |
|
|
mov С, IDTP |
* |
значение линии копируем |
||
|
mov |
IdTank, С |
* |
в бит светодиода IdTank |
|
|
jb |
TP2, КТРЗ |
* |
если ТР2 пассивный ( активный «0»), выходим |
|
|
mov |
A, BLINK |
* |
иначе мигаем |
|
|
jz |
KTP1 |
* |
если счетчик мигания обнулился, перезагружаем |
|
КТР1: |
djnz |
BLINK, KTP2 |
|
если нет |
|
mov |
BLINK, #TankRLD |
* |
перезагружаем счетчик мигания |
||
КТР2: |
cpI |
Tblink |
* |
и инвертируем флаг мигания |
|
mov |
C.Tblink |
* |
флаг мигания копируем во флаг индикации |
||
|
|||||
КТРЗ: |
mov |
IdTank, С |
* |
перегрева |
|
setb TankSh |
* установка бита отображения температуры РИ |
||||
|
|||||
|
ret |
|
|
|
Эта процедура читает данные с порта Р5 (микроконтроллер 80С552) и копирует данные в регистр-образ порта OBRP5, второй и третий биты которого хранят информацию о значениях сигналов с датчиков температу ры. Если сигналы образуются на выходах компараторов напряжения, то температурный диапазон разбивается на три участка. Текущая температура показывается оператору светодиодом на панели.
24 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
Т<Т1 |
Т1<Т<Т2 |
Т>Т2 |
IDTP=1, ТР2=1 |
IDTP=0, ТР2=1 |
IDTP=0, ТР2=0 |
Светодиод не горит |
Светодиод горит |
Светодиод мигает |
Мигание светодиода реализуется посредством программного счетчика BLINK, константа перезагрузки которого TankRLD определяет частоту вспышек. Результом работы этого фрагмента программы и процесса явля ется установленный флаг TankSh и значение бита ldTank (активное значе ние «О» управляет зажиганием светодиода).
Команды последовательного порта на зажигание и гашение светодио да формируются далее процедурами TankOn и TankOFF. Эти процедуры уже относятся к процессу взаимодействия с оператором через последовательный порт.
Рассматриваемый процесс использует следующие ресурсы внутренне го ОЗУ микроконтроллера:
|
|
BUNK |
|
|
Счетчик мигания IdTank |
|
|
FLAG |
Tblink IdTANK |
TankSh |
Байт дополнительных флагов |
IDTP |
|
OBRP5 |
KTP2 |
Образ Р5 |
Таким образом, процесс обслуживания подсистемы безопасности включает один оператор, реализуется одной процедурой, выполняемой на каждом интервале системной сетки.
Последовательность выполняемых команд в процедуре зависит от входных условий (значений IDTP и ТР2). Наиболее длинная (в машин ных циклах) последовательность команд max ( £ Qj) реализуется при пе реходе на метку КТР2 и занимает 19 циклов микроконтроллера. При Focu= 12 МГц время обслуживания подсистемы безопасности нашего при мера составляет At6n=19,0 мксек.
Формирование временных диаграмм логических сигналов управле ния. Для формирования временных диаграмм внутренних и внешних сиг налов при программном управлении используются программные счетчики, временная сетка системы и последовательный опрос флагов, которые ха рактеризуют активность сигналов. При этом в течение каждого элементар ного интервала системной сетки процедура формирования циклограммы производит опрос каждого флага, при его активности инкрементирует или декрементирует регистр счетчика сигнала, при наличии переполнения сбрасывает флаг и изменяет значение сигнала. Таким образом, циклограм ма сигналов управления формируется с точностью не хуже элементарного интервала системной сетки. Для реализации указанного механизма под
ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
25 |
буферы счета и флаги для каждого сигнала в памяти данных микрокон троллера должны быть выделены ресурсы. Модель части ресурсов для СУ рентгенотелевизионного аппарата может выглядеть так:
Счетчик |
Флаг |
Регистр счетчика |
Регистр счетчика |
|
просвечивания |
просвечивания |
просвечивания (ст.) |
просвечивания (мл.) |
|
|
FLUOON |
FLUOT1 |
FLUOTO |
|
Счетчик |
Флаг короткой |
Регистр счетчика |
|
|
короткой |
задержки |
короткой задержки |
|
|
задержки 1 |
SHRTON |
SHRT |
|
|
Счетчик |
Флаг короткой |
Регистр счетчика |
|
|
короткой |
задержки |
короткой задержки |
|
|
задержки 2 |
DLAYON |
DLAY |
|
|
Счетчик |
Флаг сигнала |
Регистр счетчика |
COPY |
|
COPYON |
сигнала COPYT |
Бит порта Р1 |
||
сигнала COPY |
||||
|
|
|
||
Счетчик |
Флаг сигнала |
Регистр счетчика |
FIX |
|
FIXON |
сигнала FIXT |
Бит порта Р1 |
||
сигнала RX |
||||
|
|
|
||
Счетчик |
Флаг длинной |
Регистр счетчика дл. |
Регистр счетчика дл. |
|
длинной |
задержки |
задержки (ст.) |
задержки (мл.) |
|
аадержки |
LONGON |
LONGT1 |
LONGOTO |
|
Счетчик |
Флаг сигнала |
Регистр счетчика сигнала |
||
задержки |
||||
KBLockON |
KBLock |
|
||
клавиатуры |
|
|||
|
|
|
Рис. 1.5. Модель ресурсов для обслуживания циклограммы сигналов
В модели имеются счетчики, обслуживающие циклограмму внешних сигналов (FLUO - включение высокого напряжения, COPY, FIX - сигна лы управления СОИ) и счетчики, обслуживающие внутренние протоколы СУ (KBLock - обслуживания клавиатуры панели управления, SHRT, DLAY, LONG - формирования интервалов времени). Флаги событий ус танавливаются в соответствии с командами от панели управления. Отме тим, что флаги и счетчики реализуются программно и могут быть привя заны к любой ячейке памяти данных микроконтроллера. Определенные выше ресурсы обслуживаются программой в следующей последовательно сти:
•сохранение в стеке аккумулятора и регистра флагов;
•перезагрузка сторожевого таймера;
•проверка флага просвечивания FLUO, наращивание счетчика FLUOT1, FLUOTO, проверка значения счетчика и включение звуково го сигнала при значениях времени 5 мин. и 10 мин.;
•проверка флага короткой задержки SHRTON, наращивание счетчика SHRT, проверка значения счетчика и сброс флага при переполнении;
26 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
•проверка флага короткой задержки DLAYON, наращивание счетчика DLAY, проверка значения счетчика и сброс флага при переполнении;
•проверка флага FIXON, наращивание счетчика FIXT, проверка значе ния счетчика, сброс флага и снятие сигнала FIX при переполнении, гашение индикатора;
•проверка флага COPYON, наращивание счетчика COPYT, проверка значения счетчика, сброс флага и снятие сигнала COPY при перепол нении, гашение индикатора;
•проверка флага длинной задержки LONGON, наращивание счетчика LONGT1, LONGTO, проверка значения счетчика и сброс флага при пе реполнении;
•проверка флага KBLockON, наращивание счетчика KBLock, проверка
значения счетчика и сброс флага при переполнении; Текст процедуры формирования сигналов управления может быть сле дующим:
Циклограмма’
IsRdy: push ACC push PSW
|
orl |
PCON, #10h |
|
mov |
T3, WATCH T |
|
jnb |
FLUOON, OUTET |
|
inc |
FLUOTO |
|
mov |
A, FLUOTO |
|
jnz |
FT1 |
|
inc |
FLUOT1 |
|
mov |
A.LastFL |
|
xrt |
A, FLUOT1 |
|
jz |
FT4 |
|
setb |
TOSOW |
FT4: |
mov LastFL, FLUOT1 |
|
FT1: |
mov A, FLUOT 1 |
|
|
cjne |
A,#T5MIN,FT2 |
|
setb |
BELL |
FT2: |
cjne |
A,#T10MIN,FT3 |
FT3: |
jc |
OUTFT |
|
setb |
BELL |
|
setb |
FLTMNR |
|
setb |
NTRDERR |
OUTFT: |
ajmp |
OUTLG |
|
|
|
|
jnb |
SHRTON, OUTSH |
|
mov |
A,SHRT |
|
jz |
STPSH ; |
|
djnz |
SHRT, OUTSH |
STPSH: |
clr |
SHRTON |
OUTSH: |
jnb |
DLAYON, OUTDL |
|
||
|
mov |
A, DLAY |
;перезагрузка сторожевого таймера
;если установлен флаг просвечивания
;увеличим мл.байт счетчика на 1
;если ноль, прибавим перенос к ст. байту
;сравним текущее время с отображаемым
если не совпадает, установим флаг вывода на дисплей
переустановим отображаемое время проверим текущее время просв-ния если оно равно 5 мин.
включим звуковой сигнал если оно равно 10 мин.
;включим звуковой сигнал
;установим флаги ошибки просвечивания
;установим флаг общей ошибки
;если уст. флаг короткой задержки 1
;проверим его счетчик
;если не ноль, инкрементируем его
;если ноль, сбросим флаг
если уст. флаг короткой задержки 2 проверим его счетчик
ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
27 |
|||||
|
jz |
STPDL |
; |
|
|
|
STPDL:. |
djnz |
DLAY, OUTDL |
; если не ноль, инкрементируем его |
|
||
clr |
DLAYON |
|
; если ноль, сбросим флаг |
|
||
OUTDL: |
jnb |
|
|
|
; если уст. флаг FIX |
|
|
FIXON, OUTFX |
|
||||
|
mov |
A.FIXT |
|
|
; проверим его счетчик |
|
|
jz |
STPFX |
|
; |
|
|
|
djnz |
FIXT, OUTFX |
; если не ноль, инкрементируем его |
|
||
STPFX: |
clr |
FIXON |
|
|
; если ноль, сбросим флаг |
|
|
setb |
FIX |
|
|
; уст.пассивное значение линии |
|
|
setb |
IdFIX |
|
|
; и пассивное значение индикатора |
|
OUTFX: |
setb |
LEDOUT |
|
|
; уст.флаг обновления светодиодов |
|
jnb |
COPYON, OUTCP |
; если уст. флаг COPY |
|
|||
|
|
|||||
|
mov |
A.COPYT |
|
; проверим его счетчик |
|
|
|
jz |
STPCP |
; |
|
|
|
STPCP: |
djnz |
COPYT, OUTCP |
; если не ноль, инкрементируем его |
|
||
clr |
COPYON |
|
; если ноль, сбросим флаг |
|
||
|
setb |
COPY |
|
|
; уст. пассивное значение линии |
|
|
setb |
IdCOPY |
|
|
; и пассивное значение индикатора |
|
OUTCP: |
setb |
LEDOUT |
|
|
; уст.флаг обновления светодиодов |
|
jnb |
LONGON,OUTLG |
; если уст. флаг длинной задержки |
|
|||
|
|
|||||
|
clr |
С |
|
|
; |
|
|
mov |
A.LONGO |
|
; декремент мл. байта счетчика |
|
|
|
subb |
A,#1 |
|
|
|
|
|
mov |
LONGO.A |
; |
|
|
|
|
mov |
A, LONG 1 |
|
; декремент ст. байта счетчика |
|
|
|
subb |
A,#0 |
; |
|
|
|
|
mov |
LONG 1,A |
; |
|
|
|
|
jnz |
OUTLG |
|
|
; проверим ст. байт на 0 |
|
|
mov |
A.LONGO |
|
|
|
|
|
jnz |
OUTLG |
|
|
; проверим мл. байт на |
|
OUTLG: |
clr |
LONGON |
|
; счетчик обнулен, сбросим флаг |
|
|
|
KBIockON,OUTKB |
; если уст. флаг задержки клавиату |
|
|||
|
jnb |
|
||||
|
jb |
KBRQ,STPKB |
; и нажата клавиша ; |
|
||
|
mov |
A.Kblock |
|
; проверим счетчик |
|
|
|
jz |
STPKB |
|
|
|
|
|
djnz |
Kblock,OUTKB |
; если не ноль, инкрементируем его |
|
||
|
mov |
A.Kblock |
|
; проверим счетчик |
|
|
|
jz |
STPKB |
|
; |
|
|
STPKB: |
djnz |
Kblock, OUTKB |
; если не ноль, инкрементируем его |
|
||
clr |
KblockON |
|
; очистка флага |
|
||
|
jb |
KBRQ,NORMKB ; |
|
|
||
|
setb |
KblockFast |
|
|
|
|
|
;если не нажата клавиша, уст. "быстрый режим |
|
||||
NORMKB |
sjmp |
OUTKB |
|
|
; и уйдем |
|
clr |
KblockFast |
; если нажата клавиша, |
|
|||
|
|
|
|
|
; сбросим "быстрый режим” |
|
|
pop |
PSW |
|
|
|
|
|
pop |
ACC |
|
|
|
|
|
ret |
|
|
|
|
|
28 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
Процедура формирования циклограммы сигналов управления может следовать непосредственно за процедурой обслуживания подсистемы безо пасности. Последовательность выполняемых команд в этом фрагменте про граммы зависит от входных условий (значений флагов FLUOON, SHRTON, DLAYON, COPYON, FIXON, LONGON, и KBLockON). Наи более длинная последовательность команд max ( Z Qi) включает 114 ма шинных циклов микроконтроллера и при тактовой частоте F0C4 =12 МГц занимает ДЬцИКЛ= 114,0 мксек.
Регулирование параметров непрерывных процессов. Регулирование целесообразно выполнять с использованием процедуры прерывания, за просом может служить сигнал от компаратора при рассогласовании, вели чина которого превышает интервал нечувствительности. Кроме величины рассогласования необходимо знать его знак.
В рассматриваемом примере, рентгенотелевизионном аппарате, сигнал рассогласования преобразуется в последовательность импульсов, частота которых пропорциональна напряжению рассогласования. Каждый импульс вызывает прерывание, а значение логического сигнала UP_Auto говорит о необходимости увеличивать или уменьшать значение уставок анодного на пряжения КС и тока МС. Их аналоговые значения формируются в два этапа: вначале процедура прерывания анализирует сигнал UP_Auto, а также определяет, не достигнуты ли границы регулирования (LOWLIM,UPLIM). Если границы не достигнуты, формируются новые значения кодов уставок. Далее вызывается процедура LDDAC, которая записывает эти коды по 8-разрядной шине в регистры двухканального ЦАП. Затем формируются сигналы управления LDAC и ЕА, по которым на выходе ЦАП появляются аналоговые значения КС и МС.
Into: |
|
Регулирование по прерыванию Into* |
||
push |
|
* |
|
|
|
ACC |
|
||
|
push |
00 |
* |
|
|
* |
|
||
|
push |
PSW |
|
|
|
|
|
||
|
mov |
R0, #KVCNTH |
* |
|
|
|
|
||
|
jb |
UP_AUTO,IUP |
* проверяем линию Up_Auto |
|
|
ьшение |
|
|
|
|
cjne |
©R0,#High (LOWLIM+8), |
IDN2 |
;если High=Low предел |
|
dec |
R0 |
|
|
IDN2: |
cjne |
©RO,#LOW (LOWLIM+8) , IDN2 |
;Low<Low предел, то |
|
jnc |
IDN1 |
|
|
|
Noldec: |
mov |
|
|
|
|
KVCNTL, #Low (LOWLIM) |
|
|
|
|
mov |
KVCNTL, #High (LOWLIM) |
|
|
IDN1: |
sjmp |
IPASS |
|
; регулировать не будем |
clr |
С |
|
;иначе уменьшаем KVCNT |
|
|
|
|
||
|
mov |
A, KVCNTL |
|
|
|
subb |
A, #8 |
|
|
|
mov |
KVCNTL, A |
|
|