По сложности программирования интерфейс 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.