
- •Введение
- •1 Описание структурной схемы микропроцессорной системы управления объектом
- •1.1 Микропроцессорный модуль (мпм)
- •1.2 Программируемый параллельный адаптер (ппа)
- •1.3 Программируемый интервальный таймер (пит)
- •2 Описание основных элементов системы
- •2.1 Микропроцессор i82386sx
- •2.2 Шинные формирователи адреса и данных кр1533ап6
- •2.3 Контроллер прерывания i8259a
- •2.4 Параллельно-программируемый адаптер кр580вв55
- •2.5 Программируемый интервальный таймер кр580ви53
- •2.6 Оперативное запоминающее устройство as7c 1024-12jc
- •2.7 Постоянное запоминающее устройство at27c256r
- •2.8 Системный контролер
- •2.9 Реализация дша озу и пзу, увв
- •3 Описание электрической принципиальной схемы
- •4 Описание блок схемы алгоритма работы программы
- •5 Распределение адресного пространства устройств ввода-вывода
- •6 Оценка емкости пзу и озу
- •7 Расчет потребляемого тока
- •8 Описание реализуемой программы
- •Список литературы
7 Расчет потребляемого тока
Таблица 2 – Токопотребление микросхем
Тип м/c |
Колич-во (шт) |
Iпотр+5В (мА) |
i386SX |
1 |
275 |
КР580ВИ53 |
1 |
115 |
КР580ВВ55 |
1 |
60 |
i8259A |
1 |
85 |
VXO-61 |
1 |
25 |
К561ТМ2 |
2 |
8 |
КР1533ИЕ19 |
1 |
27 |
КР533ИЕ19 |
1 |
21 |
КР556РТ181 |
1 |
180 |
К555ЛН1 |
3 |
6 |
К1533ИД14 |
1 |
4.5 |
AT27C256 |
1 |
25 |
AS7C1024-12JC |
1 |
140 |
Итого |
16 |
991.5 |
8 Описание реализуемой программы
Исходный код программы, реализующей алгоритм работы МПС представлен, ниже:
Data SEGMENT WORD 'DATA'
assume ds: data
Adr_ROM_Reset EQU 0xFFFF0h ; Адрес области ROM с которой начинается вы-полнение команд при включении питания или сброса
;Adr_ROM_Start EQU 0xF0000h ; Начальный адрес сегмента кода
Adr_RAM_Begin EQU 0h ; Начальный адрес ОЗУ
Adr_RAM_Data EQU 0400h ; Начальный адрес сегменда данных
Adr_ROM_Stack EQU 7FFFh ; Максимально возможный адрес ОЗУ, для ука-зания вершины стека
Adr_PIC_A0 EQU 0 ; Адрес контроллера прерываний (A0 = 0)
Adr_PIC_A1 EQU 2 ; Адрес контроллера прерываний (A0 = 1)
Adr_PIT_0 EQU 8 ; Адрес регистра состояния счетчика 0 ПИТ
Adr_PIT_1 EQU 10 ; Адрес регистра состояния счетчика 1 ПИТ
Adr_PIT_2 EQU 12 ; Адрес регистра состояния счетчика 2 ПИТ
Adr_PIT_CW EQU 14 ; Адрес регистра управления ПИТ
Adr_PPA_A EQU 16 ; Адрес регистра порта А ППА
Adr_PPA_B EQU 18 ; Адрес регистра порта B ППА
Adr_PPA_C EQU 20 ; Адрес регистра порта C ППА
Adr_PPA_CW EQU 22 ; Адрес регистра управления ППА
IRQ_n EQU 6Dh ; Адрес – вектор прерывания по варианту зада-ния
Adr_IRQ_n EQU IRQ_n * 4; Адрес начала области из четырех ЯП, в которой размещается адрес первой команды программы обработки прерывания.
Adr_Data_K EQU Adr_RAM_Data + 0; Ячейка в ОЗУ для хранения значения К
Adr_Data_X EQU Adr_RAM_Data + 1; Ячейка в ОЗУ для хранения значения Х
Adr_Data_Y1 EQU Adr_RAM_Data + 2; Ячейка в ОЗУ для хранения значения У1
Adr_Data_Y2 EQU Adr_RAM_Data + 3; Ячейка в ОЗУ для хранения значения У2
Adr_Data_Y3 EQU Adr_RAM_Data + 4; Ячейка в ОЗУ для хранения значения У3
Data ends
Code SEGMENT WORD 'CODE'
assume cs: code
;-----------------------------------------------------------------------------
;-- Подготовка к запуску основной программы после --
;-- включения питания или сброса --
;-- CS = F000h; IP = FFF0H; DS = SS = ES = 0 --
;-----------------------------------------------------------------------------
ORG 0f000h; Начальный адрес области ROM
;----------------------- jmp Adr_ROM_Start ; Переход на основную программу по адресу Adr_ROM_Start
lea dx, cs:Adr_ROM_Start
push dx;
ret;
Adr_ROM_Start:
mov ax, Adr_ROM_Stack
mov ss, ax
mov ax, Adr_RAM_Data
mov ds, ax ; -- Установка сегмента данных на ОЗУ
xor ax, ax ; Записать 0 в AX
cli ; Запрет аппаратных прерываний
;-------------------------------------------------------------------------
;-- Установка начальных параметров --
;-- Программирование ПИТ, ППА, КП --
;-- Определение переменных в памяти --
;-------------------------------------------------------------------------
ProgramBegin:
; Установить вектор прерывания (адрес подпрограммы обработки прерывания)
; Настройка es на начало таблицы векторов прерываний - в реальном режиме mov ax, 0h
mov es, ax
lea dx,cs:ProgramPrer; ; Определение смещения адреса подпрограммы обработки прерывания
mov ax,dx;
mov es:Adr_IRQ_n, ax ; Запись в два младших байта ТВП по адресу Adr_IRQ_n
push cs
pop ax
mov es:Adr_IRQ_n + 2, ax; Запись в два старших байта ТВП по адресу Adr_IRQ_n
; Программирование ППА
mov al, 90h ; Управляющее слово для ППА
out Adr_PPA_CW, al
; Установить содержимое сегмента данных
; Указание меток и содержимого (переменных)
call ProgramKlavIn ; опрос клавиатуры для получения К и Х
;Выдать Y3
call ProgramCalculateY3SetPIT
call ProgramCalculateY1SetY1SetInd ; начальная установка У1 и идника-ции
; Рограммирование ПИТ
call ProgramCalculateY2SetPIT
; Программирование контроллера прерываний
mov al, 12h ; Запись ICW1 в КП (работа КП)
out Adr_PIC_A0, al
mov ax, Adr_IRQ_n ; Запись ICW2 в КП (адрес первого вектора прерыва-ния, с которым работает КП)
out Adr_PIC_A1, ax
mov al, 00h ; Запись OCW1 в КП (маскирования прерываний для разрешения)
out Adr_PIC_A1, al
sti ; Разрешение аппаратных прерываний
;-------------------------------------------------------------------------
;-- Начало основной программы --
;-------------------------------------------------------------------------
ProgramStart:
call ProgramKlavIn
call ProgramCalculateY1SetY1SetInd
jmp ProgramStart
;-------------------------------------------------------------------------
;-- Подпрограмма обработки прерывания --
;-------------------------------------------------------------------------
ProgramPrer:
push ax
call ProgramCalculateY2SetPIT
pop ax
iret
;-------------------------------------------------------------------------
;-- Подпрограмма опроса клавиатуры (порта А ППА) --
;-------------------------------------------------------------------------
ProgramKlavIn:
push ax
push dx
; принять и сохранить значение Х
in ax, Adr_PPA_A
mov ds:Adr_Data_X, ax
; притянь и сохранить значение К
in ax, Adr_PPA_B
mov ds:Adr_Data_K, ax
pop dx
pop ax
ret
;-------------------------------------------------------------------------
;-- Подпрограмма рассчитывает У1 и выводит его в порт С --
;-- (Значение У1 используется для индикации и управшения объектом. --
;-- для индикации старшая тетрада У1 --
;-- для управления объектом младшая тетрада) --
;-------------------------------------------------------------------------
ProgramCalculateY1SetY1SetInd:
push ax
push dx
push bx
mov al, ds:Adr_Data_X
mov dl, ds:Adr_Data_K
not al
call min
mov bl,ds:Adr_Data_X
add bl,bl
add al,bl
mov ds:Adr_Data_Y1,al
mov bl,al
; Вывод в порт С
and bl, 01h ; выделение младшей тетрады в bx
and al, 10h ; выделение старшей тетрады в ax
or al, bl ; младшая и старшая тетрады в общий регистр ax out Adr_PPA_C, bl
pop bx
pop dx
pop ax
ret
min:
cmp al,dl
jl n2
ret
max:
cmp al,dl
jng n2
ret
n2: mov al,dl
ret
;-------------------------------------------------------------------------
;-- Расчет Y2 и программирования ПИТ --
;-- (поскольку надо У2 вычислить только раз при включении питания --
;-- или обработке прерывания) --
;-------------------------------------------------------------------------
ProgramCalculateY2SetPIT:
push ax
push dx
mov al,ds:Adr_Data_X
mov dl,ds:Adr_Data_K
call min
add al,8h
mov ds:Adr_Data_Y2,al
; программирование ПИТ по значению У2
mov ax, 0000000000011110b ; записать младший байт в счетчик 0 и установить режим 3
out Adr_PIT_CW, al
mov al, dl
out Adr_PIT_0, al
mov ax, 0000000000101110b ; записать старший байт
out Adr_PIT_CW, al
mov al, dh
out Adr_PIT_0, al
mov ax, 0000000000001110b ; защелкнуть
out Adr_PIT_CW, al
pop dx
pop ax
ret
;-------------------------------------------------------------------------
;-- Расчет Y3 --
;-------------------------------------------------------------------------
ProgramCalculateY3SetPIT:
push ax
push dx
push bx
mov al, ds:Adr_Data_X
mov dl, ds:Adr_Data_K
not al
call min
mov bl,al
mov al, ds:Adr_Data_X
xor al,dl
add al,bl
mov ds:Adr_Data_Y3,al
; Программирование ПИТ для У3
mov ax, 0000000001010000b ; записать младший байт в счетчик 0 и установить режим 3
out Adr_PIT_CW, al
mov al, dl
out Adr_PIT_0, al
mov ax, 0000000001100000b ; записать старший байт
out Adr_PIT_CW, al
mov al, dh
out Adr_PIT_0, al
mov ax, 0000000001000000b ; защелкнуть
out Adr_PIT_CW, al
pop dx
pop ax
ret
Code ENDS
;-------------------------------------------------------------------------
;-- Конец --
;-------------------------------------------------------------------------
end ProgramBegin
ЗАКЛЮЧЕНИЕ
В процессе выполнения курсового проекта, была спроектирована схема микропроцессорной системы управления некоторым объектом. В пояснительной записке представлен подробный синтез структурной и принципиальной схемы.
Составлен алгоритм работы МПС, разработана программа обеспечивающая выполнение заданного алгоритма, также была распределена область памяти под ОЗУ и ПЗУ. Проведена организация оперативной и постоянной памяти.
Был произведен расчет потребления тока от источника питания. Был оформлен чертеж микропроцессорной системы в виде электрической принципиальной схемы.
Данный проект был может быть использован для создания микроконтроллера автоматизированного управления удаленным объектом.