Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пример подключения цифро-аналогово преобразователя.
Алгоритм
Фрагмент программы
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
| выход из подпрограммы
|
|