Методы / Саркисов А.Ш., Шатухин А.А., Трофимов А.А
..pdfXOR_F0: |
JNB |
F0, XORCNT ; JB для |
|
|
; ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ |
|
CPL |
; |
XORCNT: |
С |
|
… |
… |
Обмен битами. Содержимое бита переноса и некоторых других битов может быть изменено с помощью аккумулятора. Биты можно сдвинуть в аккумулятор и одновременно выдвинуть из него командой сдвига через флаг переноса, однако это будет изменять его содержимое.
Пример 8
; Обмен между флагом переноса и флагом пользователя
XCHBIT: RLC |
А |
MOV |
С, USR_FLG |
RRC |
А |
MOV |
USR_FLG, С |
RLC |
А |
Расширение битовой адресации. MCS-51 может прямо адресовать
144 бита общего назначения для всех команд, представленных на рис. 1 б. Подобные операции могут быть распространены на любой бит в любом месте на кристалле с некоторой потерей эффективности.
Логические операции «И», «ИЛИ» и «ИСКЛЮЧАЮЩЕЕ ИЛИ» выполняются над байтовыми переменными с использованием шести различных режимов адресации, один из которых позволяет источнику служить непосредственной маской, а приемником является прямоадресуемый байт. Любой бит может быть установлен, очищен или дополнен с помощью трехбайтовой двухцикловой команды, если маска накладывается на все биты, кроме одного, который должен быть очищен или установлен.
Байтовые переменные, содержимое регистров и ячеек косвенно адресуемого ОЗУ могут пересылаться в регистр с битовым доступом (обычно это аккумулятор). Наряду с пересылкой биты могут быть проверены при выполнении условного перехода. Таким образом можно моделировать режимы адресации битов при операциях с байтовыми операндами.
лить исполнительный адрес перехода. Другими словами, при смещении 00Н условный переход осуществится на следующую команду.
Участок программы или подпрограммы, который содержит относительные переходы только на близкие адреса, будет иметь машинные коды, не зависящие от их расположения в памяти. Ассемблированная подпрограмма может быть перемещена в памяти без необходимости модифицировать программу или вычисления новых адресов переходов. Для облегчения реализации такой гибкости программ существует команда SJMP (короткий переход), которая использует относительную адресацию. В языке ассемблера MCS-51 в командах короткого перехода вместо смещения указывается метка. Ассемблер MCS-51 автоматически вычисляет необходимое смещение для получения заданного адреса или метки. Кроме того, программист получит сообщение об ошибке в случае выхода смещения за допустимый диапазон значений.
3.5. Взаимодействие с другими командами
На флаг переноса также воздействуют команды, перечисленные в табл. 2. Флаг переноса может быть «прокручен» через аккумулятор командами сдвига и изменен командами арифметических и логических операций.
|
|
Таблица 2 |
|
Команды, воздействующие на флаг переноса |
|
|
|
|
|
|
|
Мнемоническое |
Описание команды |
Число |
|
обозначение |
байтов |
|
|
|
|
||
1 |
2 |
3 |
|
ADD A, Rn |
Сложение содержимого аккумулятора и регистра |
1 |
|
ADD A, direct |
Сложение содержимого аккумулятора и байта |
2 |
|
ADD A, @Ri |
Сложение содержимого аккумулятора и ячейки |
1 |
|
|
ОЗУ, адрес которой находится в регистре |
|
|
ADD A, #data |
Сложение содержимого аккумулятора и непо- |
2 |
|
|
средственных данных |
|
|
ADDC A, Rn |
Сложение с переносом содержимого аккумуля- |
1 |
|
|
тора и регистра |
|
|
ADDC A, direct |
Сложение с переносом содержимого аккумуля- |
2 |
|
|
тора и байта |
|
|
ADDC A, @Ri |
Сложение с переносом содержимого аккумуля- |
1 |
|
|
тора и ячейки ОЗУ, адрес которой находится в |
|
|
|
регистре |
|
|
30 |
11 |
29 |
|
;сиспользованиемF0вкачествевходнойпеременной |
|
;Наложениефункции«ИСКЛЮЧАЮЩЕЕИЛИ»нафлагпереноса |
|
|
Пример7 |
|
любогодругогобита. |
условногопереходаилогическогодополненияфлагапереносаили |
|
«ИСКЛЮЧАЮЩЕЕИЛИ-НЕ»легкореализоватьспомощьюкоманд |
|
командбитовогопроцессора,операции«ИСКЛЮЧАЮЩЕЕИЛИ»и |
|
Хотяоперация«ИСКЛЮЧАЮЩЕЕИЛИ»невключенавсистему |
|
|
следовательностямикоманд. |
сораможносинтезироватьмногополезныхфункцийкороткимипо- |
|
Дополнительныефункции.Используякомандыбитовогопроцес- |
|
|
ностикиит.д. |
ческуюобработкуисортировкуданных,выполнениесистемнойдиаг- |
|
остальноевремянавычислениепараметровобратнойсвязи,статисти- |
|
говыше,чемтребуетсядлясистемы.Поэтомуможноиспользовать |
|
Такимобразом,быстродействиебитовогопроцессорачастонамно- |
|
вующиевычисленияпотребуютоколомиллисекунды. |
|
Программасканированияматрицыиз64датчиковивсесоответст- |
|
большинствамикроконтроллеров.) |
мальноевремяисполнениядля |
выполняютсяза2–1мкс(мини- |
Командыбитовогопроцессора |
значениеимеетскоростьвычисленийлогическихфункций. |
|
нитсясоответствующаячастьпрограммы.Поэтойпричинерешающее |
|
опросавходов,инепроизойдетизменениенавыходе,поканевыпол- |
|
Изменениенавходенебудетобнаружено,поканенаступитмомент |
|
Программнаяреализациявовторомслучаедействуетпоследовательно. |
|
сяпосистеме,изменяясостояниенавыходахвпределахмиллисекунд. |
|
вомслучаеизменениенавходенемедленноначинаетраспространять- |
|
ныйящик»)−времяреакциинаизменениясостояниявходов.Впер- |
|
программируемымиконтроллерами(еслирассматриватьихкак«чер- |
|
Времяотклика.Отличиемеждукомбинационнымисхемамии |
|
какаяпоследовательностьзакрытиясистемыдолжнабытьвыполнена. |
|
сигнализироватьобавариидругимудаленнымпроцессорамиуказать, |
|
процессорпосчитаетпричинууважительной,унегоестьвозможность |
|
шегоанализаменьше,чемзаоднумиллисекунду.Еслицентральный |
|
|
|
|
|
|
12 |
|
|
|
|
первогобайтаследующейкоманды.) |
|||
осуществляетсявдиапазонеот128–до+127байтотносительноадреса |
||||||
байтотносительногосмещения(условныйпереход |
геl8− |
данные; |
||||
=0,1;direct–прямойадресбайта;#data−непосредственные |
Ri,гдеi |
|||||
гдеn=7;–0@Ri−адресячейкиОЗУ,записанныйврегистр |
данных, |
|||||
гистр-аккумулятор;В−регистрВ;Rn−регистрRnтекущегобанка |
||||||
А−ре- |
Втабл.2принятыследующиеобозначения: |
Примечание. |
||||
|
|
|
|
|
|
|
|
|
|
переход,еслинеравно |
|
|
|
|
|
|
ОЗУ,адрескоторойнаходитсяврегистре,и |
#data,reI8 |
|
|
|
3 |
|
Сравнениенепосредственныхданныхиячейки |
@Ri, |
CJNE |
|
|
|
|
жимогорегистраипереход,еслинеравно |
|
rel8 |
|
|
3 |
|
Сравнениенепосредственныхданныхисодер- |
CJNERn,#data, |
|
|
|
|
|
средственныхданныхипереход,еслинеравно |
|
rel8 |
|
|
3 |
|
Сравнениесодержимогоаккумулятораинепо- |
CJNEA,#data, |
|
|
|
|
|
ипереход,еслинеравно |
|
rel8 |
|
|
3 |
|
Сравнениесодержимогоаккумулятораибайта |
CJNEA,direct, |
|
|
|
|
|
флагпереноса |
|
RRCA |
|
|
1 |
|
Сдвигсодержимогоаккумуляторавправочерез |
|
|
|
|
|
|
флагпереноса |
|
RLCA |
|
|
1 |
|
Сдвигсодержимогоаккумуляторавлевочерез |
|
|
|
|
|
|
тора |
|
DAA |
|
|
1 |
|
Десятичнаякоррекциясодержимогоаккумуля- |
|
|
|
|
|
|
жимоерегистраВ |
|
DIVAB |
|
|
1 |
|
Делениесодержимогоаккумуляторанасодер- |
|
|
|
|
|
|
регистраВ |
MULAB |
|
|
|
1 |
|
Перемножениесодержимогоаккумулятораи |
|
||
|
|
|
изсодержимогоаккумулятора |
SUBBA,#data |
|
|
|
2 |
|
Вычитаниесзаемомнепосредственныхданных |
|
||
|
|
|
жимогоаккумулятора |
|
|
|
|
|
|
адрескоторойнаходитсяврегистре,изсодер- |
SUBBA,@Ri |
|
|
|
1 |
|
ВычитаниесзаемомсодержимогоячейкиОЗУ, |
|
||
|
|
|
кумулятора |
SUBBA,direct |
|
|
|
2 |
|
Вычитаниесзаемомбайтаизсодержимогоак- |
|
||
|
|
|
содержимогоаккумулятора |
SUBBA,Rn |
|
|
|
1 |
|
Вычитаниесзаемомсодержимогорегистраиз |
|
||
|
3 |
|
2 |
1 |
|
|
Продолжениетабл.2 |
|
|
|
|||
Пример 5
;L_SET устанавливает флаг F0, если С = 1
LSET: ORL C,F0
MOV F0,C
……
;L_RSET сбрасывает флаг F0, если С = 1
L_RSET CPL С ANL С, F0 MOV F0, С
……
Функция временной задержки. Устройство временной задержки не разрешает реакцию на входной сигнал до тех пор, пока не пройдет определенное время с того момента, как он появился или пропал. Эта задержка может моделироваться подпрограммой прерывания, которая вызывается одним из двух таймеров/счетчиков. Процедура, следующая за подпрограммой, зависит от деталей данной функции: возможны паузы из-за установления или не установления сигналов на входах. Если подпрограмма прерывания выполняется каждые 10 мс, программа примера 6 будет очищать промежуточную переменную, установленную в основной программе, через 2 сек.
Пример 6 |
|
JNB |
USR_FLG, NXTTST |
DJNZ |
DLAY_COUNT, NXTTST |
CLR |
USR_FLG |
MOV |
DLAY_COUNT, #200 |
NXTTST: … |
… |
Последовательный интерфейс для удаленного процессора. Ко-
гда обнаруживаются условия аварийности, определяемые некоторыми комбинациями входных сигналов (как в приведенном выше примере введения в программу функции блокировки), контроллер должен немедленно выключить аварийное устройство и/или обратиться к центральному процессору через последовательный порт. Байты, содержащие коды аварии, могут быть переданы в центральный компьютер. Например, содержимое обеих карт битов полностью может быть передано со скоростью 17 Кбайт/с в центральный процессор для дальней-
4.ПРИМЕНЕНИЕ БИТОВОГО ПРОЦЕССОРА
4.1.Реализация последовательного порта программным способом
ОМЭВМ семейства MCS-51 могут программно принимать и передавать последовательные данные с использованием системы команд битового процессора. Поскольку любой вывод порта может служить последовательным входом или выходом, то одновременно можно организовать несколько последовательных линий связи.
На рис. 4 показаны алгоритмы приема и передачи байтов данных. Программа будет обращаться к этому алгоритму 8 раз, синхронизируясь старт-битом, тактовым сигналом, программной задержкой или прерыванием от таймера. Данные принимаются путем опроса входного вывода, присвоения биту переноса состояния этого вывода, сдвига бита переноса в буфер данных и сохранения полученного значения в ОЗУ. Передача происходит путем сдвига содержимого буфера передаваемого байта через перенос и выдачу состояния флага переноса на выходной вывод.
28 |
13 |
27
защелки(пример.5) илиадресуемыйбитможетиспользоватьсявкачествепрограммной техпор,поканебудетнажатакнопкаснятияблокировки.Любойфлаг условиеблокировкидолжносохранятьсяиоставатьсяактивнымдо ватьфункциитакогоустройстваоченьпросто.Впредыдущемслучае поканеперейдетвпротивоположноесостояние.Программнореализоветствующимивходнымисигналами.Вэтомсостояниионоостается, жетбытьпереведеновсостояниевключено/выключенодвумясоот-
Функциязащелки.Устройствотипазащелки(триггер,реле)мо- |
||
|
… |
… |
;ПодавлениевыходаР1.2 |
1,.P2C |
MOV |
|
C,/F0 |
ANL |
|
… |
… |
;ПодавлениевыходаР0.2 |
0,.P2С |
MOV |
|
C,/F0 |
ANL |
|
… |
… |
;ЗапоминаниевофлагеF0 |
F0,C |
MOV |
|
C,3 |
ORL |
|
C,2 |
ORL |
|
C,l |
ORL |
;ВычислениеF=(0)+(1)+(2)+(3) |
C,0 |
MOV |
CALLINPUT_SCAN |
||
|
Пример4 |
|
бытьвычисленаоднаждыисохранена,какпоказановпримере.4 |
||
перевычислятьсяприкаждойактивизациивыхода,илионаможет |
||
Привыполнениипрограммыфункцияблокировкиможет |
выходах. |
|
каниелюбогоизнихприводиткподавлениюсигналовнанекоторых |
||
Пустьпереключатели3–0управляютблокировкойсистемы.Замы- |
||
|
точныхпеременных. |
|
гистрВобеспечиваютеще18дополнительныхфлаговдляпромежу- |
||
регистрсловасостоянияпрограммыPSWире- |
ных,ноаккумулятор, |
|
128битОЗУсбитовойадресациейзанятыкартамивходныхперемен- |
||
Промежуточныепеременные.Врассматриваемомпримеревсе |
||
Р2,.2С |
MOV |
|
С,/56 |
ANL |
|
|
|
|
|
|
|
14 |
||
|
|
|
|
|
|
б–передача |
||
|
Рис..4Алгоритмыпоследовательногопортаввода-вывода:а–прием; |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
вывода |
|
|
|
вывода |
|
|
|
||||
|
|
|
|
Установитьбит |
|
|||
|
Сброситьбит |
|
переноса |
|
|
|
||
|
|
|
|
|
|
|
||
|
|
|
|
состояния |
|
|
|
|
|
|
|
1 |
Проверка |
0 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
буфере |
|
|
|
|
|
|
|
|
Запомнитьв |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
перенос |
|
|
|
|
|
|
|
|
Сдвинутьчерез |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
буфера |
|
|
|
|
|
|
|
|
Загрузитьиз |
|
|
|
|
|
|
|
|
Вывод |
|
б |
||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
буфере |
|
|
|
|
|
|
|
|
Запомнитьв |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
перенос |
|
|
|
|
|
|
|
|
Сдвигатьчерез |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
буфера |
|
|
|
|
|
|
|
|
Загрузитьиз |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
переноса |
|
вывода |
флагпереноса |
|
|||
|
флаг |
|
состояния |
Установить |
|
|||
|
|
|
|
Проверка |
|
|
|
|
|
0 |
|
|
|
1 |
|
|
|
|
|
|
|
Ввод |
|
а |
||
Пример 2 |
|
|
|
INPUT_SCAN: |
|
;Подпрограмма чтения текуще- |
|
|
|
|
;го состояния 64 датчиков с |
|
|
|
;охранением в ячейках ОЗУ с |
|
MOV R0, #20Н |
;адресами 20Н-27Н. |
|
|
;Инициализация указателей R0 |
||
|
MOV R1,#28H |
;и R1 для карт битов. |
|
|
MOV А, #80Н |
;Установка старшего бита |
|
SCAN: |
MOV P1, A |
;аккумулятора. |
|
;Возбуждение одной линии |
|||
|
RR |
|
;сканирования. |
|
A |
;Сдвиг на следующую линию |
|
|
MOV R2, A |
;сканирования. |
|
|
;Запоминание текущей позиции |
||
|
MOV A, P0 |
;Чтение линий возврата. |
|
|
ХСН |
A, @R0 |
;Переключение на предыдущие |
|
MOV @R1, A |
;биты. |
|
|
;Сохранение предыдущего |
||
|
INC |
|
;состояния. |
|
R0 |
;Смещение указателей. |
|
|
INC |
R1 |
|
|
MOV A, R2 |
;Выбор следующей линии |
|
|
JNB |
ACC.7, SCAN |
;опроса. |
|
;Цикл для считывания всех |
||
|
RET |
|
;8 столбцов. |
|
|
|
|
Выходные переменные. В примере 3 вычисляется выходная переменная, являющаяся комбинационной логической функцией нескольких входных переменных. Программа активизирует выход 2 порта Р2, когда контакты 12, 23 и 34 замкнуты, а 45 и 56 разомкнуты.
Пример 3
; SET P2.2 = (12) (23) (34) (/45) (/56)
MOV С, 12
ANL С, 23
ANL С, 34
ANL С,/45
На рис. 5 приведены программы, реализующие показанные на рис. 4 алгоритмы приема и передачи для трех различных микропроцессоров: 8085, 8048 и 8051. Программная реализация последовательного порта на MCS-51 наиболее эффективна.
а |
|
8085 |
|
8048 |
|
8051 |
|
|
|
|
|||
|
IN Serport |
|
|
MOV С, Serpin |
||
|
ANI Mask |
|
CLR С |
|
|
|
|
JZ Lo |
|
JNT0 Lo |
|
|
|
|
CMC |
|
CPL С |
|
|
|
LO: |
LXI HL, Serbuf |
LO: |
MOV R0, #Serbuf |
MOV A, Serbuf |
||
|
MOV A, M |
|
MOV A, @R0 |
|||
|
RR |
|
RRC A |
RRC A |
||
|
MOV M, A |
|
MOV @R0, A |
MOV Serbuf, A |
||
|
8 команд |
|
7 команд |
4 |
команды |
|
|
14 |
байт |
|
9 байт |
7 |
байт |
|
56 |
состояний |
|
9 циклов |
4 |
цикла |
|
19 |
мкс |
|
22,5 мкс |
4 |
мкс |
б |
|
8085 |
|
8048 |
|
8051 |
|
|
|
|
|||
|
LXI HL, Serbuf |
|
MOV R0, #Serbuf |
MOV A, Serbuf |
||
|
MOV A, M |
|
MOV A, @R0 |
|||
|
RR |
|
RRC A |
RRC A |
||
|
MOV M, A |
|
MOV @R0, A |
MOV Serbuf, A |
||
|
IN Serport |
|
|
|
|
|
|
JC HI |
|
JC HI |
MOV Serpin, С |
||
LO: |
ANI NOT Mask |
|
ANL Serprt, |
|||
|
|
|
|
#NOT Mask |
|
|
|
JMP CNT |
|
JMP CNT |
|
|
|
HI: |
ORI Mask |
HI: |
ORL Serprt, #Mask |
|
|
|
CNT: OUT Serport |
CNT: |
|
|
|
||
|
10 |
команд |
|
8 команд |
4 |
команды |
|
20 |
байт |
|
13 байт |
7 |
байт |
|
72 |
состояния |
|
11 циклов |
5 |
циклов |
|
24 |
мкс |
|
27,5 мкс |
5 |
мкс |
Рис. 5. Подпрограммы последовательного ввода-вывода: а – подпрограмма ввода; б – подпрограмма вывода
26 |
15 |
25
.13Алгоритмсканированияматрицыдатчиков |
Рис. |
Возврат |
|
Да |
|
опрошены? |
|
столбцы |
|
|
|
указателей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
картбитов |
|
|
|
|
|
|
|
возврата |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
маски |
|
|
|
|
|
|
|
.Запоминание |
|
|
|
|
|
|
|
сканированияна |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Инициализациямаскисканирования |
|
|
|||
|
|
картысканирования. |
|
|
|
||
|
|
Инициализацияуказателейбуфера |
|
|
|||
|
|
|
сканирования |
|
|
|
|
|
|
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
применения. |
опрошены,зависитотконкретного |
датчики |
того,как |
ходитпосле |
||||
Чтопроис- |
столбецвыбираетсяустановкойодногобитавполенулей. |
||||||
рования.Длякартбитовиспользуетсяположительнаялогика.Каждый |
|||||||
Программа,приведеннаявпримере2,выполняеталгоритмскани- |
|||||||
|
сравнениякаждогобитасегопредыдущимзначением. |
||||||
программаможетустранятьдребезгконтактовпереключателейпутем |
|||||||
возникаетнеобходимость, |
Если |
–64.127) |
(адреса |
предыдущее |
|||
идругая− |
(адреса–063) |
датчиков |
текущеесостояние |
отображает |
|||
16
|
поканебудетполученрезультат,которыйвыдаетсянапорт. |
Выполнениепрограммыидетспроверкамииветвлениемдотехпор, |
|
.7) |
можетбытьвыполненпрактическилюбыммикропроцессором(рис. |
Первыедваспособарешенияосновываютсянаалгоритме,который |
|
.6Аппаратноерешениелогическойфункции |
Рис. |
Q=(U(V+W))+(X/Y)+/Z |
|
|
|
|
|
|
тельныйрезультатдолженвыдаватьсянавыходнойвыводпорта. |
||||
ранееустановленныевпрограмме.Оконча- |
иZ−программныефлаги, |
|||
порта,WиX−битысостояниядвухпериферийныхконтроллеров,aY |
||||
Предположим,чтоUиVявляютсявходнымивыводаминекоторого |
||||
|
|
|
мандMCS-.51 |
|
тремяспособами,ограничиваясьтремяподмножествамисистемыко- |
||||
ратаалгебрыбулевойлогики.Длясравнениявыполнимэтуфункцию |
||||
УравнениятакогородарешаютсяспомощьюкартКарноилиаппа- |
||||
|
(V+W))+(X/Y)+./Z |
|
Q=(U |
|
|
|
|
|
|
|
менныхотUдоZ,котораяявляетсярешениемуравнения: |
|||
Нарис.6показанареализациянаТТЛ-элементахфункции6пере- |
||||
|
.2.4Решениеуравненийкомбинаторнойлогики |
|||
Проверка 1
0
1
0
Рис. 11. Использование шинных формирователей с тремя состояниями
0 Проверка
1
Проверка
Z
1
Q = 0 |
Q = 1 |
Рис. 12. Использование мультиплексоров
На рис. 13 представлен алгоритм сканирования матрицы датчиков для исходной схемы, предложенной на рис. 9. В области ОЗУ с бито- Рис. 7. Программное решение логической функции вой адресацией расположены две заполненных битами карты: одна
24 |
17 |
23 |
|
|
|
18 |
|
|
TESTX |
JZ |
|
|
A,#00100000B |
ANL |
|
|
|
|
A,TCON |
MOV |
|
|
|
TESTU |
JNZ |
|
|
A,#00000100B |
ANL |
|
|
|
|
A,P2 |
MOV |
TESTV: |
|
|
|
data |
; |
Рис..10Использованиеоптронов |
;картасостояниявыходов |
22H |
OUTBUF |
|
|
|
|
|
; |
|
|
работусбайтами) |
; |
|
|
(используетсядляпроцессоров,ориентированныхна |
; |
||
|
имаскисоответствуютадресамибитовымпозициям. |
; |
||
|
аккумулятореивыполненияусловныхпереходов.Байты |
; |
||
|
загрузкибайта,маскированиясоответствующихбитовв |
; |
||
|
;BFUNC1вычисляетлогическуюфункцию6переменныхпутем |
|||
|
|
|
|
; |
|
;Пример1а.Использованиекомандсбайтовымиоперандами |
|||
|
длинойпрограммыификсированнымчисломвыводовпортов. |
|||
|
примоделированиибольшогочиславходовивыходовопределяется |
|||
|
входиещеоднанасохранениерезультата.Возможноеограничение |
|||
|
граммы,содержащейнеболееN+1строк:пооднойстрокенакаждый |
|||
|
любуюкомбинационнуюсхемусN–числомвходовспомощьюпро- |
|||
|
Такимобразом,ОМЭВМсемействаMCS-51могутмоделировать |
|||
|
|
|
навыходнойвывод. |
|
|
ченныйрезультатприсваиваетсяфлагупереноса,которыйкопируется |
|||
|
Призавершениипрограммыполу- |
мубезкомандусловногоперехода. |
||
ныепятьвыводовпортаР1длядругихфункцийуправления. |
мандбитовогопроцессора,благодарячемуудаетсянаписатьпрограм- |
|||
ламипортаР1,закодированнымивдвоичномкоде,освобождаяосталь- |
Болееудачноерешение(пример1в)получаетсясприменениемко- |
|||
извосьмивходовдлякаждойлиниивозвратаиопрашиваются3сигна- |
|
своеносимволическоеимя. |
||
ставленымультиплексоры«одинизвосьми»,которыевыбираютодин |
несмущатьсяупотреблением«бит»,каждойвходнойпеременнойпри- |
|||
рашиваютсянизкимуровнемсигналасканирования.Нарис.12пред- |
ноперейти.»Этопозволяетсократитьпрограмму(пример1б.)Чтобы |
|||
уровниТТЛ.Нарис.11показанытрехстабильныебуферы,которыеоп- |
можетзаменитьпоследовательность«переслать/маскировать/услов- |
|||
Длядругихсхемпредполагается,чтовходныесигналыужеимеют |
БлагодарявозможностямпроверкибитоводнакомандаMCS-51 |
|||
возвратаможноиспользоватьоптроны,какпредставленонарис..10 |
веннуюмнемоникутипаINPUT,OUTPUT,LOAD,STOREит.д. |
|||
схемывсоставеоборудованияиз-запомех,налинияхсканированияи |
процессорымогутвыполнитьаналогичныедействия,используясобст- |
|||
сигналыдолжныбытьэлектрическиизолированыоткомпьютерной |
хотяиспользуетсямнемоникаMCS-.51Другие |
битовогопроцессора, |
||
Схемынарис11–10.являютсявариацияминаэтутему.Есливходные |
Впервомвариантерешения(пример1а)неиспользуютсякоманды |
|||
|
|
|
|
|
|
|
|
|
Аппаратные прерывания INTO и INT1 настроены соответственно на |
TESTU: |
MOV |
A, P1 |
|||||
высокий приоритет со срабатыванием по срезу входного сигнала и |
|
|
ANL |
A,#00000010B |
||||
низкий приоритет со срабатыванием по низкому уровню входного |
|
|
JNZ |
SETQ |
||||
сигнала. На остальные 12 выходов портов ввода-вывода выдаются |
TESTX: |
MOV |
A, TCON |
|||||
сигналы управления (уровни TTL). |
|
|
ANL |
A,#00001000B |
||||
Существует несколько способов реализации матрицы датчиков. На |
|
|
JNZ |
TESTZ |
||||
рис. 9 приведена схема, в которой каждый из 64 датчиков представля- |
|
|
MOV |
A,20H |
||||
ет собой простой переключатель, включенный последовательно с дио- |
|
|
ANL |
A,#00000001B |
||||
дом, что разрешает несколько одновременных замыканий контактов |
|
|
JZ |
SETQ |
||||
на одной линии возврата. Линии сканирования порта Р1 обеспечивают |
TESTZ: |
MOV |
A,21H |
|||||
8 сигналов сканирования столбцов матрицы активных высоким уров- |
|
|
ANL |
A,#00000010B |
||||
нем. Линии возврата (отклика) в тех рядах, где замкнут контакт, счи- |
|
|
JZ |
SETQ |
||||
тываются как логические единицы. При незамкнутых контактах линии |
CLRQZ: |
MOV |
A, OUTBUF |
|||||
возврата подключены к общей шине через резисторы 40 кОм и считы- |
|
|
ANL |
A,#11110111B |
||||
ваются логическими нулями. Номинал резистора должен выбираться |
|
|
JMP |
OUTQ |
||||
из расчета, чтобы сигналы на всех линиях возврата превышали порог |
SETQ: |
MOV |
A, OUTBUF |
|||||
логической единицы даже в худшем случае, когда в выбранном столб- |
|
|
ORL |
A,#00001000B |
||||
це все контакты замкнуты. Поскольку порты имеют выходы с откры- |
OUTQ: |
MOV |
OUTBUF, A |
|||||
тым коллектором и высокоимпедансные МОП-входы, они хорошо со- |
|
|
MOV P3,A |
|||||
гласуются с матрицей переключателей. |
; Пример 1 б. Использование команд проверки битов |
|||||||
|
|
|
|
|
||||
|
|
|
|
|
; |
|
|
|
|
|
|
|
|
;BFUNC2 |
вычисляет логическую функцию 6 переменных путем |
||
|
|
|
|
|
; |
|
прямого опроса каждого бита. Биты обозначены в соот- |
|
|
|
|
|
|
; |
|
ветствии с символами, использованными в алгоритме |
|
|
|
|
|
|
; |
|
(используется возможность проверки битов). |
|
|
|
|
|
|
; |
bit |
|
|
|
|
|
|
|
U |
P1.1 |
|
|
|
|
|
|
|
V |
bit |
Р2.2 |
|
|
|
|
|
|
W |
bit |
TF0 |
|
|
|
|
|
|
X |
bit |
IE1 |
|
|
|
|
|
|
Y |
bit |
20H.0 |
|
|
|
|
|
|
Z |
bit |
21H.1 |
|
|
|
|
|
|
Q |
bit |
P3.3 |
|
|
|
|
|
|
; |
|
|
|
|
|
|
|
|
TEST_V: |
JB |
V, TEST_U |
|
Рис. 9. Использование кнопочных переключателей |
TEST_U: |
JNB |
W, TEST_X |
|||||
|
|
|
|
|
JB |
U, SET_Q |
||
22 |
19 |
21
автоматическиигнорируявсеостальныебайты. чтобыраспознаватьбайтысустановленным9-мбитом(битомадреса), иданных.Последовательныйпортможнонастроитьтакимобразом, 17тыс.байтвсекунду.Девятыйбитпозволяетразличатьбайтыадреса сальныйасинхронныйприемопередатчиксоскоростьюпередачи ПоследовательныйпортMCS-51настроенкак9-разрядныйунивер- картутекущегосостояниявсехдатчиков,используемуюпрограммой. шениясканированиявсехстолбцовпредставляетсобойвнутреннюю 8-байтовомблокеОЗУспобитовойадресацией,которыйпослезавер- каждогодатчикавэтомстолбце.Считанныеданныезапоминаютсяв сканируютстолбцыматрицы,ачерезпорт0считываетсясостояние матрицы8x8элементов.Сигналынавыводахпорта1последовательно Входныепеременные.Входные64датчикаорганизованыввиде
Рис..8Принципиальнаясхемаконтроллерасреднейсложности
|
20 |
часыреальноговремениивременидня. |
|
использованиебыстродействующегопоследовательногоканаласвязи; |
|
2внешнихпрерыванияпоприоритету; |
|
12выходныхсигналов; |
|
64датчикавходнойпеременной; |
|
дующимихарактеристиками: |
|
Нарис.8показанасхемаконтроллерасреднейсложностисосле- |
|
входовможноиспользованиемсканированияклавиатурыидатчиков. |
|
большимчисломвходныхивыходныхпеременных.Расширитьчисло |
|
числавыводовнедостаточнодляпримененияMCS-51всистемахс |
|
еслиобщеечислофункцийвходаиливыходанепревышает.32Этого |
|
Выводыпортовввода-выводамогутбытьпроизвольноназначены, |
|
.3.4Управлениесложнымисистемами |
|
;Выводрезультата. |
Q,С |
MOV |
||
|
;переменной. |
|
|
ORL |
;Использованиепоследнейвходной |
/Z |
С, |
||
|
;значения. |
|
|
ORL |
;Использованиеранеевычисленного |
F0 |
С, |
||
;ВыходнижнеговентиляИ. |
/Y |
С, |
ANL |
|
|
|
X |
С, |
MOV |
;Сохранениепромежуточногосостояния. |
F0,С |
MOV |
||
;ВыходверхнеговентиляИ. |
U |
С, |
ANL |
|
;ВыходвентиляИЛИ. |
C,W |
ORL |
||
|
|
V |
С, |
MOV |
|
|
|
|
; |
пользованиемвозможностейбитовогопроцессораМК |
; |
|||
вычисляетлогическуюфункцию6переменныхсис- |
;BFUNC3 |
|||
|
|
|
|
; |
;Пример1в.Использованиебитовогопроцессора |
||||
;продолжениепрограммы |
NEXTTST:……….. |
|||
|
SETBQ |
SET_Q: |
||
|
NXTTST |
JMP |
|
|
|
Q |
CLR |
CLR_Q: |
|
|
Z,SET_Q |
JNB |
TEST_Z: |
|
|
Y,SET_Q |
JNB |
|
|
|
X,TEST_Z |
JNB |
TEST_X: |
|
