int 21h
mov oldIp, Bx
mov Ax, Es
mov oldCs, Ax
lds Dx, IntVect
mov Ax, 2508h ; установим новый
int 21h
popa
ret
SetInt8 ENDP
MAIN PROC FAR
pusha
mov Ah, 3Ch ; создадимфайл
mov Cx, 0020h
lds Dx, FName
int 21h
jc @ERROR ; ошибка?
mov Ds:FHandler, Ax ; сохраним хэндлер
in Al, portSW ; читаем SW
cmp Al, 0FFh ; ошибка в устройстве?
jne @DEVICE_OK ; нет – переход
mov Ah, 40h ; запишем в выходной файл
mov Bx, Ds:FHandler ; сообщение об ошибке
mov Cx, 20
lds Dx, msgErrDevice
int 21h
mov Ah, 3Eh ; закроемфайл
int 21h
jmp @ERROR ; на выход
@DEVICE_OK:
mov Al, 00000011b
out portCW, Al ; запишем CW
call SetInt8 ; «посадим» на прерывание от таймера
@ERROR:
popa
ret
MAIN ENDP
PRG_COD ENDS
END MAIN
1. Максимальная частота работы системы:
fmax=5 МГц
2. Максимальное время задержки выходных данных:
TЗД=727×tCLK=145 мкс
3. потребляемая мощность:
не более 15 Вт
4. надежность устройства (l=10-7 час-1):
P(10000)=e-25×l×t= 0,98
Конструктивно УВ может быть выполнено на двух печатных платах. На первой будут размещаться блок цифровой обработки и блок интерфейса, на второй – блок АЦП. Подключение к ПЭВМ осуществляется посредством разъема тип EISA. Подключение блока АЦП к устройству – посредством разъема RS‑232 (или другого).
Временная диаграмма работы устройства ввода приведена на чертеже К2.006.223.ТЧ.
В ходе работы над курсовым проектом по курсу «Организация ЭВМ комплексов и систем» было разработано устройство ввода, предназначенное для автоматического ввода и цифровой обработки аналогового сигнала. Были разработаны модули, входящие в состав устройства ввода, а также программное обеспечение самого УВ и для совместной работы его в ПЭВМ. Были оценены параметры вычислительной системы, выбран оптимальный вариант схемы. В соответствии со всеми этапами проекта были оформлены соответствующие чертежи и документация.
1. Компьютерное оформление отчетных документов: методические указания / Составитель Т.И. Матикашвили; ТулГУ. Тула, 2000. – 36 с.
2. Пухальский Г.И., Новосельцева Т.Я. Проектирование дискретных устройств на интегральных микросхемах: Cправочник. – М.: Радио и связь, 1990. – 304 c
3. Микропроцессоры и микропроцессорные комплекты интегральных микросхем. Справочник в 2-х томах под ред. В.А. Шахнова.
4. Нефедов А.В. Интегральные микросхемы и их зарубежные аналоги: Справочник. Т. 8. - М.: ИП РадиоСофт, 2000
5. Цифровые и аналоговые интегральные микросхемы: Справочник / Под ред. С.В. Якубовского. – М., 1990
6. Телец В.А., Федорков Б.Г. Микросхемы ЦАП и АЦП: Функционирование, параметры, применения. – М.: Энергоатом, 1998
7. Казаринов Ю.М. и др. Микропроцессорный комплект К1810: Структура, программирование, применение. – М.: Высш. шк., 1990
SegRAM EQU 0FC00h ; сегментПЗУ
PrgSize EQU 112 ; размер программы (в словах)
portDAC EQU 0000b ; порт АЦП
portDAT EQU 0001b ; порт данных
portCW EQU 0110b ; порт упр. слова (CW)
portSW EQU 1010b ; порт слова сост. (SW)
portPRG EQU 0011b ; порт УС микросхем интерфейса
CODE
STARTUP
; тестПЗУ
mov Ax, SegRAM
mov Ds, Ax ; в Ds – сегментПЗУ
xor Ax, Ax ; очистим Ax
mov Cx, PrgSize ; в Cx – размер программы (в словах)
xor Bx, Bx
@@LOOP1:
add Ax, Ds: [Bx] ; в Ax – сумма всех слов
add Bx, 2
loop @@LOOP1
cmp Ax, Ds: [PrgSize*2] ; совпадает ли с заданным?
je @CONTINUE1 ; да – идем дальше
mov Al, 0FFh
out portSW, Al ; SW < – ошибка
@HALT:
hlt ; вешаем систему
jmp @HALT
@CONTINUE1:
; программирование интерфейса
mov Al, 10010000b ; первая МС. порт C на ввод
mov Ah, 10011001b ; вторая МС. порт C на вывод
out portPRG, Ax ; программируем
; выполнение функции
mov Bx, 1 ; по-умолчанию X(0)=1
xor Cx, Cx ; очистим Cl=SW и Ch=CW
@@LOOP2:
xchg Ax, Cx
out portSW, Al ; SW < – данные не готовы
xchg Ax, Cx
and Cl, 01100000b
shr Cl, 2
in Ax, portCW ; в Ch – слово управления
mov Ch, Ah
in Ax, portDAC ; в Ax – сАЦП
test Ax, 0400h ; было переполнение?
jz @@LABEL1 ; не было – приступим к работе
test Ch, 00000010b ; переполнение. Что делать?
jz @@LABEL2
or Cl, 01100000b ; установим в бесконечность
@@LABEL2:
mov Ax, 0FFFFh ; установим максимум
@@LABEL1:
test Cl, 01010000b ; будут ли исключительные ситуации?
jnz @@LABEL3 ; будут -> переход
mov Dx, Ax
shr Dx, 8
cmp Dx, Bx ; X(i)>=256*X (i‑1)?
jae @@LABEL8
@@LABEL9:
cmp Ax, Bx ; X(i)<X (i‑1)?
jl @@LABEL10
xor Dx, Dx ; очистим Dx
div Bx ; Dx: Ax/Bx -> A+D/B
mov Si, Ax ; сохраним значение A
mul Dx ; Dx: Ax < – A*D
shl Ax, 1 ; *2
shl Dx, 1
div Bx ; 2*A*D/B
mov Bx, Ax
mov Ax, Si ; восстановим A
mul Ax ; Dx: Ax < – A*A
add Ax, Bx ; в Ax – результат!
jmp @@LABEL7
@@LABEL8:
or Cl, 00000010b ; SW < – OF
test Ch, 00000100b ; переполнение. Что делать?
jnz @@LABEL9
mov Ax, 0FFFFh ; результат < – максимум
jmp @@LABEL7
@@LABEL10:
or Cl, 00000001b ; SW < – UF
mov Al, Ch
and Ax, 0001h ; результат < – UF
jmp @@LABEL7
@@LABEL3:
xor Ax, Ax ; результатом будет 0
mov Dl, Cl ; Dl < – SW
mov Dh, Cl ; Dh < – SW
and Dx, 0001100001100000b ; замаскируем по операндам
cmp Dl, 01000000b ; X(i)==0?
je @@LABEL4 ; да – на выход
cmp Dh, 00011000b ; X (i‑1)==бесконечность?
je @@LABEL4 ; да – на выход
test Ch, 00001000b ; результат = бесконечность
jnz @@LABEL4
mov Ax, 0FFFFh ; результат < – максимум
@@LABEL4:
cmp Dl, 01100000b ; X(i)==бесконечность?
jne @@LABEL5
or Cl, 00000010b ; SW < – OF
@@LABEL5:
cmp Dh, 00010000b ; X (i‑1)==0?
jne @@LABEL6
or Cl, 00000100b ; SW < – div0
@@LABEL6:
cmp Dh, 00011000b ; X (i‑1)==бесконечность?
jne @@LABEL7
or Cl, 00000001b ; SW < – UF
@@LABEL7:
out portDAT, Ax ; результат в порт
mov Bx, Ax ; X (i‑1)=X(i)
mov Al, Cl
or Al, 10000000b ; SW < – данныеготовы!
out portSW, Al ; SW впорт
wait ; ждем пока данные прочитают
jmp @@LOOP2 ; в начало
db 00h ; выравниевание на границу слова
dw xxxxh ; контрольная сумма ПЗУ
END
Также, при программировании ПЗУ необходимо записать команду перехода jmp 0FC00:0000hпо адресу ПЗУ 3F0h(физический адрес 0FFF0h).