Разработка прикладной программы и описание её возможностей
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

По сложности программирования интерфейс ISA занимает среднее место между Centronics с одной стороны, и PCI и SCSI с другой. Особенностью программирования Centronics является абсолютная простота, т.к все сигналы доступны для программирования. ISA - доступность только шины данных и портов ввода-вывода, PCI - сложность программирования шины в целом.

Данная прикладная программа управляет разработанным нестандартным периферийным устройством. Это управление довольно просто, так как изначально устройство работало абсолютно автономно, и мне пришлось вводить дополнительные управляющие регистры и делать параллельные отводы от схемы, что ввело лишь небольшие усложнения в работу устройства в целом.

Программа является резидентной, т.е. находится постоянно в памяти. Загружается командой “main.com”, инициализирует устройство, и предлагает ввести байт D, где D - число, заносимое в управляющий регистр (по умолчанию оно равно 0), и выгружается “main.com u".

Находясь в памяти, программа постоянно следит за шиной данных, и если пришло сообщение о включении/выключении нагревателя, выдаёт соответствующее сообщение.

 

Листинг программы

 

comsegment segment para

org 100h

start:

main proc near

jmp first_instruction

saved_int08labeldword

old_offsdw ?

old_segdw ?

vector= (08h)

isworkingdb 0

_TCCdb 0

uninst_message db 10,13,"Uninstalling... ",'$'

message db 10,13,"Already loaded!",10,13

db "'main u' for uninstall",10,13,'$'

string db " ",'$'

input_message db “Enter number (0-7): ”,'$'

begin_message db "Wormer started",10,13,'$'

end_message db "Wormer stopped",10,13,'$'

int08_treater:

jmp gonow

db '08hook'

gonow:

push ax bx

mov bl, 0102h

in al, bl; пытаемся получить статус устройства из порта 258

and al, 10000000b

cmp al, 10000000b

je start_loop

cmp cs: isworking, 1

je end_loop

jmp leave_treater

start_loop:

mov cs: isworking, 1

push bx ax

mov bx, ds

mov ax, cs

mov ds, ax

xor ax, ax

mov ah, 09h; если нагреватель включился - выдаём сообщение об этом

lea dx, begin_message

int 21h

mov ds, ax

pop ax bx

jmp leave_treater

end_loop:

mov cs: isworking, 0

push bx ax

mov bx, ds

mov ax, cs

mov ds, ax

xor ax, ax

mov ah, 09h; если нагреватель выключен - включаем

lea dx, end_message

int 21h

mov ds, ax

pop ax bx

leave_treater: ; выход из обработчика

pop bx ax

jmp cs: saved_int08

release:

mov ah, 09h

lea dx, uninst_message

int 21h

mov ax,3508h

int 21h

mov ax,es: old_seg

mov ds,ax

mov ax,es: old_offs

mov dx,ax

mov ax,2508h

int 21h

mov ah,49h

int 21h

mov ax,4c00h

int 21h

first_instruction:

cmp byte ptr [es: 80h],1

jbe resume

mov bx, 82h

and byte ptr es: [bx],0dfh

cmp byte ptr es: [bx],'U'

je release

resume:

mov ax,3508h

int 21h

; 30 39 68 6F 6F 6B

cmp word ptr es: [bx+2], 3830h

jne setupTSR

cmp word ptr es: [bx+4], 6f68h

jne setupTSR

cmp word ptr es: [bx+6], 6b6fh

jne setupTSR

jmp loaded

setupTSR:

mov al, 0100h; инициализирую устройство управления чувствительностью

mov bl, 0

out al, bl

push bx ax

mov bx, ds

mov ax, cs

mov ds, ax

xor ax, ax

mov ah, 09h

lea dx, input_message; сообщение 0001 вводе управляющего байта

int 21h

mov ah, 06h; вводим управляющий байт

int 21h

sub al, 48

mov cs: _TCC, al

mov ds, ax

pop ax bx

mov al, 0101h

mov bl, cs: _TCC; посылаем порт 257 управляющий байт

out al, bl

mov ax,3508h

int 21h

mov old_offs,bx

mov old_seg,es; перехватываем прерывание, ставим свой обработчик

cli

push ds

push cs

pop ds

lea dx, int08_treater

mov ax, 2508h

int 21h

pop ds

sti

resident_end:

mov dx,offset resident_end; конец, оставляем часть программы в памяти

int 27h

loaded:; если программа уже загружена - выдаём сообщение и на выход

push bx ax

mov bx, ds

mov ax, cs

mov ds, ax

xor ax, ax

mov ah, 09h

lea dx, message

int 21h

mov ds, ax

pop ax bx

RET

main endp

comsegment ends

end start



Заключение

 

В процессе курсового проектирования было разработано нестандартное периферийное устройство "Термостабилизатор с изолированным датчиком", интерфейсом сопряжения для которого является интерфейс ISA. Поддерживающая синхронный режим обмена информации (обмен в темпе исполнителя). Написана прикладная программа, управляющая устройством, работающая на компьютере семейства IBM PC под управлением операционной системы MS-DOS, либо в режиме эмуляции MS-DOS. Программа позволяет управлять работой устройства, путём изменения параметров в командной строке, и следить за сообщениями от устройства.



Литература

 

1. http://radiotech. by.ru/Shematic_PCB/PIC-controlers/termo_reg (pic). htm

2. Цифровые интегральные микросхемы: Справ. / М.И. Богданович. - Мн.: Беларусь, 1991. - 493 с.: ил.

3. Интегральные микросхемы ТТЛ, ТТЛШ: Справ. / В.П. Левшин. - Мн.: Беларусь, 1993. - 374 с.: ил.

4. В.Л. Шило Популярные цифровые микросхемы: Справочник. - 2-е изд., - М: Радио и связь, 1989г.

5. ISA specification v1.0

6. Безюлев С. “Термостабилизатор с изолированным датчиком ”. - Радио, 2003, №2, с.42

7. Резисторы, конденсаторы, транзисторы, дроссели, коммутирующие устройства РЭА. Справ. / Н.Н. Акимов, Е.П. Ващуков, В.А. Прохоренко, Ю.П. Ходоренко - Мн.: Беларусь, 1994

8. М. Гук. Аппаратные интерфейсы ПК. Энциклопедия. - СПБ.: Питер, 2002. - 528с.: ил.

Дата: 2019-05-28, просмотров: 179.