Курсовая работа: Микропроцессорная система управления, предназначенная для использования на лесопильном заводе
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 ;
CALL D27 ;
OR #80 ;
примешать десятичную запятую
OUT (#06), A ;
вывести в порт
LD A, H ;
RR A ;
четырежды сдвигаем вправо
RR A ;
RR A ;
RR A ;
AND #0F ;
CALL D27 ;
OUT (#07), A ;
вывести в порт
;
выводим дробную часть E
LD L, 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) ;
LD C, A ;
CALL B2D ;
HL=2-10 код секунд/минут/часов (причем Н=0)
LD A, L ;
AND #0F ;
CALL D27 ;
OR #80 ;
примешать запятую
OUT (B), A ;
вывести в порт
INC B ;
следующий индикатор
LD A, 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)
LD A, B ;
CP #08 ;
проверка конца цикла
JR NZ, MAIN1 ;
JP MAIN ;
начинаем все сначала
Общая структура ПЗУ
микропроцессорной системы
Наконец,
приведем карты ПЗУ и ОЗУ микропроцессорной системы.
ПЗУ
0000 |
DI |
0001 |
Начало тестов
TST_RAM
JR 0038
|
0020 |
Распределитель обработчиков прерываний
0020 JP IR_H0
0024 JP IR_H1
0028 JP IR_H2
002C JP IR_H3
0030 JP IR_H4
0034 JP IR_H5
|
0038 |
Продолжение теста ОЗУ (TST_RAM)
TST_ROM
TST_FEL
INI_PIC
INI_VAR
|
|
EI |
|
LD SP, #0FFF |
|
Главный цикл программы
MAIN
|
|
Подпрограммы
E_RAM
E_ROM
PLUS
MINUS
MUL
DIV
COS_A
COS
B2D
B2D_F
MUL10
D27
|
|
Обработчики
IR_H0
IR_H1
IR_H2
IR_H3
IR_H4
IR_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 |
Конец ОЗУ |
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |