LDC, L ;
EX DE, HL ;
CALL MINUS ; HL=491H-Ud
EX HL, DE ;
LD H, B ;
LD L, C ;
CALL DIV ; HL= Ud/(491H-Ud)
LD D, 0 ;
LD E, #4F ;
CALL MUL ; HL=a
CALL COS ; HL=cos a
LD D, 0 ;
LD E, #80 ;
CALL MUL ; HL=0,5cos a
LD D, 0 ;
LD E, #A0 ;
EX HL, DE ;
CALL MINUS ; HL=0,625-0,5cos a=d
LD (DIAM), HL ; занести диаметр в память
; формируем сигнал отбраковки
LD A, L ;
CP #33 ;
JR NC, IR1_H5 ; если d>20, то идем дальше
LD A, 1 ; иначе в порт отбраковки записать 1
OUT (#02), A ;
JR IR1_OUT ; и выход, не считая объем
IR1_H5 LDA, L ;
CP #80 ;
JR C, IR1_H6 ; если d<50, то идем дальше
LD A, 1 ; иначе в порт отбраковки записать 1
OUT (#02), A ;
; дальше находим Vi, VS
IR1_H6 LD L, (T1) ;
LD H, (T1+1) ;
LD E, (T2) ;
LD D, (T2+1) ;
CALL DIV ; HL=T1/T2
LD E, (DIAM) ;
LD D, (DIAM+1) ;
PUSH DE ;
CALL MUL ; HL=T1×d/T2
POP DE ;
CALL MUL ; HL=T1×d2/T2
LD D, 0 ;
LD E, #C9 ;
CALL MUL ; HL=(p/4)T1×d2/T2=Vi
EX HL, DE ;
LD L, (V_SUM) ;
LD H, (V_SUM+1) ;
CALL PLUS ; HL=VS
LD (V_SUM), HL ; занести суммарный объем в память
IR1_OUT POP HL ;
POP DE ;
POP BC ;
POP AF ;
RETI ;
Основная исполняемая часть программы
Эту часть, которая, собственно, и является управляющей программой, микропроцессор выполняет большую часть своего времени, изредка отвлекаясь от нее на обработку прерываний.
Ее функции:
прочесть VS из ячейки V_SUM, перевести его в 2-10 код (подпрограммы B2D, B2D_F), перевести каждую цифру в семисегментный код (подпрограмма D27) и вывести в порт индикаторов (03-0A), присоединив десятичную запятую в индикаторе 06Н;
прочесть время из ячейки TIME (TIME+1–секунды, TIME+2–минуты, TIME+3–часы), перевести его в 2-10 код, перевести каждую цифру в семисегментный код и вывести в порт индикаторов (13-1A), присоединив десятичную запятую в индикаторах 13Н, 15Н, 17Н.
Рис. 7 Расположение объема и времени на индикаторах
Листинг 23: основная часть
; – – – вывести на индикаторы объем и время
; вывод объема
MAIN LD E, (V_SUM) ;
LD D, (V_SUM+1) ; D.E – суммарный объем
; выводим целую часть D
LD C, D ;
CALL B2D ; HL=2-10 код D
LD A, H ;
CALL D27 ; в семисегментный код
OUT (#08), A ; вывести в порт
LD A, H ;
AND #0F ;
CALLD27 ;
OR #80 ; примешать десятичную запятую
OUT (#06), A ; вывести в порт
LDA, H ;
RR A ; четырежды сдвигаем вправо
RR A ;
RR A ;
RR A ;
AND #0F ;
CALL D27 ;
OUT (#07), A ; вывести в порт
; выводим дробную часть E
LDL, E ;
CALL B2D_F ; ABC=три цифры 2-10 кода числа 0.L
CALL D27 ;
OUT (#05), A ; вывестивпорт
LD A, B ;
CALL D27 ;
OUT (#04), A ; вывестивпорт
LD A, C ;
CALL D27 ;
OUT (#03), A ; вывести в порт
; вывод текущего времени
LD HL, (TIME+1) ; HL=адрес секунд
LD B, #13 ; самый правый индикатор
MAIN1 PUSH HL ;
LD A, (HL) ;
LDC, A ;
CALL B2D ; HL=2-10 код секунд/минут/часов (причем Н=0)
LD A, L ;
AND #0F ;
CALLD27 ;
OR #80 ; примешать запятую
OUT (B), A ; вывести в порт
INC B ; следующий индикатор
LDA, L ;
RR A ; четырежды сдвигаем А вправо
RR A ;
RR A ;
RR A ;
AND #0F ;
CALL D27 ;
OUT (B), A ; вывести в порт
INC B ; следующий индикатор
POP HL ;
INC HL ; перейти к следующей ячейке (TIME+2, TIME+3)
LDA, B ;
CP #08 ; проверка конца цикла
JRNZ, MAIN1 ;
JP MAIN ; начинаем все сначала
Общая структура ПЗУ микропроцессорной системы
0000 | DI |
0001 | Начало тестовTST_RAMJR 0038 |
0020 | Распределитель обработчиков прерываний0020 JP IR_H00024 JP IR_H10028 JP IR_H2002C JP IR_H30030 JP IR_H40034 JP IR_H5 |
0038 | Продолжение теста ОЗУ (TST_RAM)TST_ROMTST_FELINI_PICINI_VAR |
EI | |
LD SP, #0FFF | |
Главный цикл программыMAIN | |
ПодпрограммыE_RAME_ROMPLUSMINUSMULDIVCOS_ACOSB2DB2D_FMUL10D27 | |
ОбработчикиIR_H0IR_H1IR_H2IR_H3IR_H4IR_H5 | |
Область нулей 00000000 | |
0700 | Таблица перекодировки |
070F | 00000000 |
07FF | Последний байт (дополнение контрольной суммы до нуля) |
Общая структура ОЗУ микропроцессорной системы. ОЗУ
0800 | V_SUM |
0802 | DIAM |
0804 | TIME |
0808 | T1 |
080A | T2 |
080C | D_NUM |
080D | |
0FFF | ОБЛАСТЬ СТЕКА |
1000 | Массив напряжений с датчика диаметра(2К) |
1FFF | Конец ОЗУ |
Заключение
В результате проделанной работы мы получили систему, отбраковывающие бревна, не годные для распиливания и поэтому отбрасывающиеся в сторону. Если бревно нам подходит, то идет подсчет его объема и подсчет всех бревен, прошедших распил. Также считается время наработки.
ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ
Поз. обозн. | Наименование | Кол. | Примечание |
DD1 | Микросхема Z-80 | 1 | |
DD2, DD4 | Микросхема К155ИР13 | 2 | |
DD3, DD5 | Микросхема К537РУ8 | 2 | |
DD6 | Микросхема К1118ПВ1 | 1 | |
DD7 | Микросхема К546ИР5 | 1 | |
DD8 | Микросхема К155ИД3 | 1 | |
DD9 | Микросхема К541РЕ1 | 1 | |
DD10 | Микросхема К580ВН59А | 1 | |
DD11 | Микросхема К155ЛД7 | 1 | |
Rd | Резистор МЛТ-5.1К | 1 | |
R1, R3 | Резистор МЛТ-10К | 4 | |
R2, Rдоб | Резистор МЛТ-1К | 3 | |
R9, R10 | Резистор МЛТ-1-13 кОм АТУ ОЖО 467 003 | 2 | |
R11, R12 | Резистор МЛТ-1-510 кОм АТУ ОЖО 467 003 | 2 | |
R8,R13 – R16 | Резистор МЛТ-0.5-1 кОм АТУ ОЖО 467 003 | ||
C1, C8, C9 | Конденсатор МБМ – 16 В – 0,47 мкФТУ УБО 462 014 | 7 | |
C6 | Конденсатор МБМ – 16 В – 0,1 мкФТУ УБО 462 014 | 1 | |
C7 | Конденсатор МБМ – 16 В – 0,15 мкФТУ УБО 462 014 | 1 | |
1 |
2101 420 000 019 ПЭ | ||||||
Изм | Лист | № докум. | Подп. | Дата | ||
Разраб. | Молоков Т | Микропроцессорная система управления, предназначенная для использования на лесопильном заводеПеречень элементов | Лит. | Лист. | Листов | |
Данилов Д. | ||||||
Пров. | Мокрецов В. | УГТУ – УПИРТФ гр. Р–311АКафедра АУТС | ||||
Н.Контр. | Калинин Н.С | |||||
Утв. |