Пример подключения цифро-аналогово преобразователя.
Алгоритм
Фрагмент программы
LXIH ADR MOV А. М OUT ЗОН | : в I HL заносятся адрес мл. бита кода : запись в регистр1 (DD2), младший байт в аккумулятор |
MVI A. 01H OUT 83H | : вкл. Регистра 1(DD2) |
MVI А. 00Н OUT 83H | : откл. регистра l(DD2) |
INX H MOV A,M OUT 80H | : адресе старшего байта : старший байт в аккумулятор : старший байт в порт А |
MVI A,03H OUT 83H | : вкл. Регистра 2 (DD3) |
MVI A, 02H OUT 83H | :откл. регистра 2 (DD3) |
MVI А, 05Н OUT 83H | : запись в ЦАП из : регистра 1, 2 одновременно |
MVI A. 04H OUT 83H | :откл. регистров |
Спроектировать систему управления перемещением тележки по горизонтальной направляющей длиной L, на основе микропроцессорных БИС. Тележка приводится в движение двигателем постоянного тока параллельного возбуждения, управляемым преобразователем, который обеспечивает плавный разгон и торможение с заданной интенсивностью КИ1 и КИ2 =dn/dt [об/мин за сек] и дальнейшую работу двигателя с постоянной А. Преобразователь управляется постоянным напряжением Uу по закону Uвых=Ку*Uу. Микропроцессорная система управления обеспечивает защиту двигателя от перегрузки по току Imах с выдержкой времени tз и превышения скорости Nmах мгновенно. Программа должна обеспечивать движение в любую сторону.
|
|
Длина участка разгона и торможения с КИ1 равна L1, а с КИ2 равна L2. Полный путь L разбивается на участки по параметру В. Датчик скорости выдает сигнал Un. Передаточный коэффициент линейной скорости V через угловую скорость n равен Кn==V/n [м/с/об/мин]. Предусмотреть контроль скорости на участке L1 и включение тормоза в конце пути.
Исходные данные: L=400м, L1=20 м; L2=50 м; Ку=11; UУ=±10 B; КИ1=1 об/мин за сек; КИ2=50об/мин; Кn=1 .10-3 м/с/об/мин; IMAX=50 A; tз=0.4 с; NMAX= 2500 об/мин, Un = 0,005 n.
Рабочая установка представляет собой тележку, которая совершает движение по прямолинейному участку L.
Тележка приводится в движение двигателем постоянного тока параллельного возбуждения, управляемый преобразователем, который обеспечивает плавный разгон и торможение с заданной интенсивностью КИ1 и КИ2 и дальнейшую работу двигателя с постоянной скоростью. Преобразователь управляется постоянным напряжением U у по закону Uвых=Ку*Uу.
Длина участка разгона и торможения с КИ1 равна L1 а с КИ2 - L2. Полный путь L разбивается на участки по параметрам L1 - датчики, L2 - время.
Датчики SА3 и SА4 на участке L1 должны срабатывать при прохождении тележки возле них и воздействии наних постоянным магнитом.
Датчики SА1 и SА2 используются для полной остановки тележки.
Расчет параметров движения:
1) al = Kи1 . Kna1 =1 .10-3 м/с2
2) V1-Скорость в конце L1; V1=al .tl = 1.10-3.200=0,2 м/с
3) nl – Частота вращения двигателя в конце пути (L1)
nl=KИl .tl= 1. 200 = 200 об/мин
|
|
4) Время перехода участка (t2)
По расчёту: t2 =40.9 с
5) V2= V1+ a2t2 = 0,2+0,05.40,9 = 2,245 м/c
6) n2= nl+KИ2t2= 200+50.40,9 = 2245 об/мин
n2 - не должно превышать заданное максимальное значение nmax.
7) Рассчитываем длинну участка L3:
L3=L-2L1-2L2=260 м
8) Рассчитываем время движения на третьем участке:
9) Из уравнения скорости идеального Х.Х.
10) Iя Rя Рассчитывается для номинального режима
Для большинства машин постоянного тока nH меньше n0 на 5%, поэтому
11) Примем, что скорость в конце L2 и на L3 номинальная т.е. n2=nH и рассчитаем напряжение на двигателе в конце L2 и на L3
U2= n2-СEФ + IяRя = 2245 . 0,044+5,5 = 104.28 В
12) Так как для механизма всегда справедливо соотношения
13) U1= n1-СEФ + IяRя = 200.0,044+0,11 = 8,91 В
14) Строим диаграмму, для этого необходимо полное время движения тележки
t:= 2tl + 2t2+t3=597.613c
15) Определим время дискретизации Δt и ΔU
Промежуток времени через который на ЦАП выводится новое значение напряжения управления. Изменения значения напряжения управления не должно превышать 3% от полного изменения напряжения на участке. Выбирается участок с наибольшим ускорением L2.
(UУl)/tl=0,03/Δt
t2=ΔUy2/Δt; ΔUyl=(Uy2-Uyl)* Δt/t2-tl
Δt = 0.03-t2 = 7.227
ΔUyl=UУ1 Δt/t1 =0.029 В
Δuy2=UУ2 Δt/t2 =0.284 В
Определим разрядность ЦАП Uref;= 10 Uy=n*Uref; n=Uyl/Uref
n = ΔUyl/Uref=0.0029
Теперь переведем это число в двоичный код:
n=2.927-10-3 n1 =5.854-10-3 n2=0.012 n3=0.023 n4=0.047 n5=0.094 n6=0.187 n7=0.375 n8=0.749 n9=1.499 n10= 2.997
Разрядность ЦАП получаем 10
Выбор датчика скорости
Определение разрядности АЦП
Датчик скорости выбирается из условия: nдc>nmах. В зависимости от этого принимаем датчик скорости или тахометр тока ТМГ-30П возбуждаемый постоянными магнитами. Паспортные данные ТМГ-30П. Р2= 20Вт; V= 230 В;
I = 0,087A; n= 4000об/мин;
Rn = 2650 0м
По условию выбранный датчик подходит Для определения разрядности АЦП построим характеристику
U0=144B; n0=2500 nmin=50 Uirn=5 B Найдем Umin
Umin=U0nmin/n0=2.88 B
Найдем минимальное напряжение на входе АЦП
Uirnmin = UirnUmin/U0=0.1 B
Uirnmin =0.1 Uirnmin1 =0.2 Uirnmin2 =0.4 Uirnmin3 =0.8 Uirnmin4 = 0.6 Uirnmin5 = 1.2 Uirnmin6 == 2.4 Uirnmin7 = 4.8 Uirnmin8 =9.6 Uirnmin9 = 19.2 Uimmin =0.1 Разрядность АЦП получаем 5
Таблица прерываний.
IRQO | SAI | подастся "0", на выходе ЦАП ступенчато возрастает напряжение На механический тормоз подастся "1", на выходе ЦАП напряжение исчезает DB -> "0" | |
IRQI | SA2 | На механический тормоз подастся "1", на выходе ЦАП напряжение исчезает DB -> "0" На механический тормоз подается "0", на выходе ЦАП ступенчато возрастает напряжение | |
IRQ2 | SA3 | Запускается таймер загружая коэффициент и подается сигнал на СЕ. И изменяем величину напряжения Изменяем величину напряжения производим проверку (т.е сравниваем теоретическое значение с действительным) | |
IRQ3 | SA4 | Измеряем величину изменения напряжения, производим проверку Запуск таймера (подаем сигнал на СЕ, загружаем коэффициент изменяем ДУ | |
IRQ4 | SAI | При поступлении сигнала запускаем таймер на отсчет t3. После отсчета напряжения на "0", включается механический тормоз DC7 -> "1" | |
IRQ6 | CЧ2(OUT1) | Отключается таймер, величину напряжения ди = 0, загружаем новый коэффициент, запускаем таймер | |
IRQ5 | C41(OUT2) | Увеличиваем напряжение на ΔU | |
IRQ7 | RAD | Считываем данные с АЦП |
Программа с помощью которой задается движение тележки веред и назад.
Инициализация системы.
Адрес | код | команда | Комментарий |
3E90H | MVI А,90Н | УВВ упр. слово 10010000 (90H) | |
D383H | OUT 83H | ||
3E36H | MVI А,36Н | СЧ 0 упр. слово 00110110 36Н | |
D387H | OUT 87Н | ||
3E20H | MVI A,20H | Загрузка коэффициента N0=20000 | |
200A | D384H | OUT 84H | |
200C | 3E4EН | MVI A,4EH | |
200E | D384H | OUT 84H | |
3E74H | MVI A,74H | СЧ 1 упр. слово 01110100(74Н) | |
D387H | OUT 87Н | ||
3EB2H | MVI A,B2H | СЧ 2 упр. слово 10110010(В2Н) | |
D387H | OUT 87Н | ||
3Е12Н | MVI A,12H | КППСКИ1 00010010(12Н) | |
201A | D388H | OUT 88H | |
201C | 3E09H | MVI A,09H | СКИ2 00001001(09Н) |
201E | D389H | OUT 89H |
Подпрограмма прерываний КПП.
|
|
CD0050 | CALL конт1 | IRQO | ||
C9 | RET | |||
CD0D50 | CALL конт2 | IRQ 1 | ||
090В | C9 | RET | ||
CD1A50 | CALL конт3 | |||
C9 | RET | |||
CD2E50 | CALL конт3 | IRQ 2 | ||
C9 | RET | |||
CD2450 | CALL конт4 | |||
C9 | RET | |||
CD3850 | CALL конт4 | IRQ3 | ||
C9 | RET | |||
CD5551 | CALL защ. | IRQ 4 | ||
C9 | RET | |||
CD | CALL | IRQ 5 | ||
092B | C9 | RET слог. | ||
CD | CALL время2 | IRQ 6 | ||
C9 | RET | |||
CD | CALL | IRQ7 | ||
093B | C9 | RET |
Основная программа (движение вперед).
адрес | код | метка | команда | Комментарий |
CD4D51 | CALL | обнул. ячейку содерж. информ. о датчике | ||
CD6A51 | прогр1 | CALL | откл мех. тормоз f | |
CD3051 | CALL | устанавливаем знак "+" | ||
CD050 | CALL | включаем счетчик 1 на Δt | ||
ЗООС | CD5050 | CALL | заносим ΔUу1 в регистр | |
300F | CDA050 | CALL | заносим кол-во байт числа | |
CDB050 | мук1 | CALL | вызываем подпрограмму сложения | |
CD 1551 | CALL | вывод на ЦАП | ||
CD1A50 | CALL | проверка сигнала с датчика SA3 | ||
301B | CDED50 | прогр2 | CALL | включаем счетчик 2 на t2 9 |
301E | CD5B50 | CALL | заносим дПу2 в регистр | |
CDA050 | CALL | заносим кол-во байт числа | ||
CDB050 | мук2 | CALL | вызываем подпрограмму сложения | |
CD1551 | CALL | вывод на ЦАП | ||
302D' | CDFA50 | прогрЗ | CALL | включаем счетчик 2 на t3 ^ |
CD6650 | CALL | заносим Δuу3=0 в регистр | ||
CDA050 | CALL | Заносим кол-во байт числа | ||
CDB050 | мукЗ | CALL | Вызываем подпрограмму сложения | |
CD1551 | CALL | Вывод на ЦАП | ||
303C | ||||
303F | CD7F50 | прогр4 | CALL | Заносим (-ΔUу2) в регистр |
CDA050 | CALL | Заносим кол-во байт числа | ||
CDB050 | мук4 | CALL | Сложение | |
CD1551 | CALL | Вывод на ЦАП | ||
304B | CD 2450 | CALL | Проверка сигнала с датчика SA4 | |
304E | CD7150 | прогр5 | CALL | Заносим (-ΔUyl)B регистр |
CDA050 | CALL | Заносим кол-во байт числа | ||
CDB050 | мук5 | CALL | Сложение | |
CD1551 | мук6 | CALL | вывод на ЦАП | |
305A | CD8750 | CALL | заносим (-AUim) в регистр | |
305D | CD9250 | CALL | заносим AUim в регистр | |
CDOB50 | CALL | сложение | ||
CD4051 | CALL | проверка скорости | ||
CD0В50 | CALL | проверка сигнала с датчика SA2 | ||
CD6F51 | CALL | напряжение исчезает |
Основная программа (движение назад)
|
|
адрес | код | Метка | Команда | Комментарий |
306С | CD4D51 | CALL | обнул. ячейку содерж. информ. о датчике | |
306F | CD6A51 | Прогр6 | CALL | откл мех. тормоз |
CD3551 | CALL | устанавливаем знак "-" | ||
CDE050 | CALL | включаем счетчик 1 на At | ||
CD7150 | CALL | заносим –ΔUyl в регистр | ||
307В | CDA050 | CALL | заносим кол-во байт числа | |
307В | CDB050 | мук4' | CALL | вызываем подпрограмму сложения |
CD 1551 | CALL | вывод на ЦАП | ||
CD2450 | CALL | проверка сигнала с датчика SA4 | ||
CDED50 | Прогр7 | CALL | включаем счетчик 2 на t2 | |
308A | CD7C50 | CALL | заносим –ΔUy2 в регистр | |
308D | CDA050 | CALL | заносим кол-во байт числа | |
CDB050 | мук2 | CALL | вызываем подпрограмму сложения | |
CD 1551 | CALL | вывод на ЦАП | ||
CDFA50 | Прогр8 | CALL | включаем счетчик 2 на t3 | |
309C | CD6650 | CALL | заносим ΔUу3=0 в регистр | |
309F | CDA050 | CALL | заносим кол-во байт числа | |
30A2 | CDB050 | Мук3 | CALL | вызываем подпрограмму сложения |
30A5 | CD 1551 | CALL | вывод на ЦАП | |
30A8 | ||||
30AB | CD5B50 | прогр9 | CALL | заносим ΔUу2 в регистр |
30АЕ | CDA050 | CALL | заносим кол-во байт числа | |
30В1 | CDB050 | мук 1* | CALL | сложение |
30В4 | CD 1551 | CALL | вывод на ЦАП | |
30В7 | CD1A50 | CALL | проверка сигнала с датчика SA3 | |
30ВА | CD5050 | Прогр10 | CALL | заносим дUу1 в регистр |
30BD | CDA050 | CALL | заносим кол-во байт числа | |
30С0 | CDB050 | мук5' | CALL | Сложение |
30С3 | CD 1551 | Мук6 | CALL | вывод на ЦАП |
30С6 | CD8750 | CALL | заносим (-дUirn) в регистр | |
30С9 | CD9250 | CALL | заносим дUirn в регистр | |
30СС | CDB050 | CALL | Сложение | |
30CF | CD4051 | CALL | проверка скорости | |
30D2 | CD0050 | CALL | проверка сигнала с датчика SA на срабатывание | |
30D5 | CD6F51 | CALL | напряжение исчезает | |
30D8 | HLT |
Таблица памяти МП.
<HL> | Датчики | |
+дUу1 | ||
+дUу2 | ||
040C | дUу3=0 | |
-дUу2 | ||
-дUу1 | ||
-дUirn | ||
<ВС> | Uy | |
Uirn |
Подпрограмма проверки сигнала с датчиков.
адрес | код | метка | команда | Комментарий |
конт1 | LXI Н,0400Н | загрузка адреса в HL | ||
ЗА | LDAXH | загрузка числа в <А> из <HL> | ||
E601 | ANI 01Н | лог "и" (маска 01Н) | ||
CC C030 | CZMyK5" | вызов подпрограммы | ||
CD6551 | CALL вкл.т. | вызов подпрограммы | ||
500C | C9 | RET | выход из подпрограммы | |
500D | конт2 | LXI Н,0400Н | ||
ЗА | LDAXH | |||
E601 | ANI 02H | лог "и" (маска 02H) | ||
CC 5430 | CZMyK5 | |||
CD6551 | CALL вкл.т. | вызов подпрограммы | ||
C9 | RET | выход из подпрограммы | ||
501A | контЗ | LXI Н,0400Н | ||
501D | ЗА | LDAXH | ||
501E | E604 | ANI 04H | лог "и" (маска 04H) | |
CC 1230 | CZ мyк 1 | |||
C9 | RET | выход из подпрограммы | ||
конт4 | LXI Н,0400Н | |||
3А | LDAXH | |||
E608 | ANI 08H | лог "и" (маска 08H) | ||
502A | CC1530 | CZ мyк 4 | ||
502D | C9 | RET | выход из подпрограммы | |
5052E | контЗ* | LXI Н,0400Н | ||
ЗА | LDAXH | |||
E604 | ANI 04H | лог "и" (маска 04H) | ||
CCB130 | CZ мyк 1* | |||
C9 | RET | выход из подпрограммы | ||
конт4' | LXI Н,0400Н | |||
503B | ЗА | LDAXH | ||
503C | E608 | ANI 08H | лог "и" (маска 08H) | |
503E | CC 7E30 | CZ мyк 4' | ||
C9 | RET | выход из подпрограммы |
Подпрограмма загрузки ΔUу в регистр.
адрес | код | метка | команда | Комментарий |
напр1 | LXI Н,0404Н | загрузка адреса в HL | ||
3E80 | MVI А,80Н | загрузка младшего байта ΔUу1 в<А> | ||
MOV M,A | ||||
INX H | Увеличить адрес на 1 (т.е 0405Н) | |||
3EOO | MVI А,00Н | загрузка старшего байта ΔUyl в <А> | ||
МОV М,A | ||||
505A | C9 | RET | выход из подпрограммы | |
505B | Напр2 | LXI Н,0408Н | загрузка адреса в HL | |
505E | 3EOO | MVI А,00Н | загрузка младшего байта ΔUу2 в<А> | |
MOV M,A | ||||
INX H | ||||
3E04 | MVI A,04H | загрузка ст байта ΔUy2 в <А> | ||
МОV М,A | ||||
C9 | RET | выход из подпрограммы | ||
210C04 | НапрЗ | LXI H,040CH | загрузка адреса в HL | |
3EOO | MVI А,00Н | загрузка младшего байта ΔUуЗ в<А> | ||
506B | МОV М,A | |||
506C | INX H | |||
506D | 3EOO | MVI A,00H | загрузка старшего байта ΔUуЗ в <А> | |
506F | MOV M,A | |||
C9 | RET | выход из подпрограммы | ||
Напр5 | LXI H,0414H | загрузка адреса в HL | ||
3E80 | MVI А,80Н | загрузка младшего байта (-ΔUyl) в <А> | ||
MOV M,A | ||||
INX H | ||||
3EFF | MVI A,FFH | загрузка старшего байта (-ΔUyl)в <А> | ||
507A | MOV M,A | |||
507В | C9 | RET | выход из подпрограммы | |
507C | Напр4 | LXI H,0410H | загрузка адреса в HL | |
507F | 3E00 | MVI A,00H | загрузка младшего байта (-ΔUy2) в <А> | |
МОV М,A | ||||
INX H | ||||
3EFC | MVI A,FCH | загрузка старшего байта (-ΔUy2) в <А> | ||
MOV M,A | ||||
C9 | RET | выход из подпрограммы | ||
Напр6 | LXI H,0418H | загрузка адреса в HL | ||
508A | 3E00 | MVI A,00H | загрузка младшего байта (-Uirn) в <А> | |
508C | MOV M,A | |||
508D | INX H | |||
508E | 3EF0 | MVI A,F0H | загрузка старшего байта (-Uirn) в <А> | |
MOV M,A | ||||
C9 | RET | выход из подпрограммы | ||
Ном | LXI B,0504H | загрузка адреса в ВС | ||
3E00 | MVI A,00H | загрузка младшего байта (Uirn) в <А> | ||
MOV M,A | ||||
INX B | ||||
3E80 | MVI A,80H | загрузка старшего байта (Uirn) в <А> | ||
509B | MOV M,A | |||
509C | C9 | RET | выход из подпрограммы |
Подпрограмма загрузки числа байтов.
адрес | код | метка | Команда | Комментарий |
50А0 | число | LXI В,0500Н | загрузка адреса в ВС | |
50А3 | 1Е02 | MVI Е,02Н | загрузка числа в регистр Е | |
50А5 | С9 | RET | выход из подпрограммы |
Подпрограмма сложения.
адрес | код | Метка | Команда | Комментарий |
50ВО | Слог1 | MOV D,E | запоминаем количество байт | |
50В1 | С5 | PUSH В | запоминаем адр. младш, байта 1 слагаемого | |
50В2 | AF | XRA A | ||
50В3 | 0А | м1 | LDAX B | перенос в <А> младшего байта первого слагаемого |
50В4 | 8Е | ADC M | сложение содержимого <А> с ячейкой <М> | |
50В5 | ID | DCR E | уменьшаем счетчик байт на 1 | |
50В6 | CABF50 | JZM2 | условие = 0 то переход на М2 | |
50В9 | STAX B | запоминаем байт суммы по адресу наход. <ВС> | ||
ЗОВА | INX B | увеличиваем на 1 вычисляется адрес | ||
50ВВ | - | INXBH | увеличиваем на 1 следующего байта | |
50ВС | C3B350 | JMPM1 | безусловный переход на М1 | |
50BF | м2 | MOV E,A | проверка на переполнение ст. байта, сум в <Е> | |
50СО | ОА | LDAX B | загрузка старшего байта 1 слаг. в<А> | |
50С1 | AE | XRA M | искл "или" над <А> и <М> | |
50С2 | 7В | MOV A,E | перенос в <А> суммы старшего байта | |
50СЗ | STAX B | запоминаем байт суммы по адресу наход. <ВС> | ||
50С4 | STC CY=1 | установить триггер переноса в 1(CY=1) | ||
50C5 | FACF50 | JM M3 | <0 то М3 | |
50C8 | 7E | MOV A,M | Загрузка старшего байта 2 слаг. в<А> | |
50C9 | AB | XRA E | искл"или" над <А> и <Е> | |
50CA | STC CY=1 | установить триггер переноса в 1 (CY=1) | ||
50CB | FACF50 | JM M4 | <0 то М4 | |
50CE | ЗЕ | м3 | CMC | (CY=0) |
50CF | Cl | м4 | POP В | восстановить содерж. регистра <ВС> |
50DO | MOV E,D | из D в Е (восстон. в per Б кол-во байт) | ||
50DI | C9 | RET | возврат из подпрограммы |
Подпрограмма включения счетчиков на время.
адрес | код | метка | Команда | Комментарий |
50ЕО | ЗЕ02 | время 1 | MVI А,02Н | загрузка младшего байта Δt в <А> |
50Е2 | D385 | OUT 85Н | ||
50Е4 | 3E2D | MVI A,2DH | загрузка старшего байта Δt в <А> | |
50Е6 | D385 | OUT 85Н | ||
50Е8 | ЗЕ07 | MVI A,07H | запуск счетчика 1 (DC3=> "1") | |
50ЕА | D382 | OUT 82H | ||
50ЕС | C9 | RET | выход из под программы | |
50ED | ЗЕ1А | время2 | MVI A,IAH | загрузка младшего байта t2 в <А> |
50EF | D386 | OUT 86H | ||
50FI | ЗЕ5Е | MVI A,5EH | загрузка старшего байта t2 в <А> | |
50F3 | D386 | OUT 86H | ||
50F5 | ЗЕ09 | MVI A,09H | запуск счетчика 2 (DC4=> "1") | |
50F7 | D382 | OUT 82H | ||
50F9 | C9 | RET | выход из под программы | |
50FA | 3E3D | Время3 | MVI A,3DH | загрузка младшего байта t3 в <А> |
D381 | OUT 81H | |||
ЗБ04 | MVI A,04H | отключение регистра DD7 (DC2=>0) | ||
512В | D382 | OUT 82H | ||
512D | 0В | DCX B | уменьшаем адрес ячейки на 1 | |
512E | C9 | RET | выход из подпрограммы |
Подпрограмма учитывающая знак напряжения управления.
адрес | код | метка | команда | Комментарий |
3Е0В | Знак1 | MVI А,0ВН | увеличиваем DC5 в 1 (знак +) | |
D383 | OUT 83H | |||
C9 | RET | выход из подпрограммы | ||
3ЕОА | знак2 | MVI А,0АН | увеличиваем DC5 в 0 (знак -) | |
D383 | OUT 83H | |||
C9 | RET | выход из подпрограммы |
Подпрограмма контроля скорости.
адрес | код | метка | команда | Комментарий |
3E00 | контр | MVI A,00H | вывод напряжения с АЦП | |
D381 | OUT 81H | из порта В во внешнее устройство | ||
3EF8 | MVI A,F8H | |||
D381 | OUT 81H | |||
SUB В | Вычитание <В> из <А> | |||
F4 | CP MUK5 | вызов подпрограммы | ||
514C | FC | CM MUK6 |
Подпрограмма обнуления ячейки с информацией о датчиках.
адрес | код | метка | команда | Комментарий |
514D | обнуление | LXI Н,0400Н | загрузка адреса в <HL> | |
ЗЕ00 | MVI А,ООН | перенос нолей в <А> | ||
MOV М,А | перенос <А> в <М> | |||
C9 | RET | выход из подпрограммы |
Подпрограмма отключения системы, если ток превысил Imax.
адрес | код | метка | команда | Комментарий |
защита | LXI Н,0400Н | проверка датчика тока на срабатывание | ||
ЗЕ10 | MVI А, 10Н | |||
515А | P6 | ORA M | ||
515В | МОV М,A | |||
551С | 3E08 | MVI А,08Н | ||
515Е | T383 | OUT 83H | ||
CD0751 | CALL врсмя4 | вызов подпрограммы время4 | ||
C9 | RET | выход из подпрограммы |
Подпрограмма включения и отключения тормоза.
адрес | код | метка | команда | Комментарий |
3E0F | вкл. тормоз | MVI A,0FH | установка DC7=> 1 | |
D382 | OUT 83Н | |||
C9 | RED | выход из подпрограммы | ||
516А | 3E0F | откл. тормоз | MVI А,0ЕН | установка DC7=>0 |
516С | D382 | OUT 83H | ||
516Е | C9 | RET | выход из подпрограммы |
Подпрограмма установления напряжения на «О».
адрес | код | метка | команда | Комментарий |
516F | 3E03 | ноль | MVI А,03Н | установка DC7=> 1 включение DD6 |
D382 | OUT 82H | |||
3E00 | MVI А,00Н | вывод нолей во внешнее устройство DD6 | ||
D381 | OUT 81H | с порта В | ||
ЗБ02 | MVI А,02Н | установка DC 1 =>0 включение DD6 | ||
D382 | OUT 82H | |||
517В | 3E05 | MVI А,05Н | установка DC2=> 1 включение DD7 | |
517D | D382 | OUT82H | ||
517F | 3E00 | MVI А,00Н | вывод нолей во внешнее устройство DD7 | |
D381 | OUT 81H | с порта В | ||
3E04 | MVI А,04Н | установка DC2->0 отключение DD7 | ||
D382 | OUT 82H | |||
C9 | RET | выход из подпрограммы |