Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по МПС вар 8 .doc
Скачиваний:
6
Добавлен:
26.04.2019
Размер:
353.79 Кб
Скачать

2.4. Схема разрабатываемого устройства

Датчик температуры DD1 предна­значен для измерения температуры. Датчик подключают к плате через стандарт­ные разъемы от звуковой аппарату­ры XI . Резистором R6 устанав­ливают необходимую контрастность ЖК-дисплея. Для использования тер­мометра установлен стабилизатор напря­жения DA1 . Схема устройства приведена в приложении.

2.5. Описание работы устройства

Назначение кнопок управления:

• кнопкой «Режим» выбирают один из режимов индикации: «температура — часы», «часы — установка»;

• кнопкой «Разряд» выбирают необ­ходимый разряд установки часов. Под выбранным разрядом мигает курсор (черточка);

• кнопкой «Установка» добавляют единицу в выбранный разряд.

Кнопкой «Установка» набирают необходимое число часов. Кнопкой «Разряд» перемещают курсор в необ­ходимый разряд и устанавливают еди­ницы часов, десятки минут и единицы минут аналогично установке десятков часов.

2.6. Программная реализация

.model small

;Macro delay

delay macro time

local ext, iter

;

;

push cx

mov cx, time

ext:

push cx

;

;

mov cx, 5000

iter:

loop iter

pop cx

loop ext

pop cx

endm

;Macro set position

;

set_position macro _row, _column

;

push ax

push bx

push dx

;

mov ah,2

mov bh,0

mov dh,_row

mov dl,_column

int 10h

;

pop dx

pop bx

pop ax

;

endm

;

;

.data

output_line db '0','0','0','0','0','0','0','0'

.code

position db 0

old_handler dw 0

main proc

mov ax,@data

mov ds,ax

xor ax,ax

cli

mov ah,01h

int 21h

call StrToInt

mov position,al

mov ax,351ch ;Скопировать адрес предыдущего обработчика

;АН = 35h, AL = номер прерывания

int 21h ;Cчитать адрес обработчика прерывания

mov word ptr old_handler,bx ;Возвратить смещение в ВХ

mov word ptr old_handler + 2,es ;и сегментный адрес в ES

mov ax, 251ch ;Установить собственный обработчик

mov dx, seg new_1ch ;Поместить сегментный адрес – в DS

mov ds,dx

mov dx, offset new_1ch ;и смещение в DX

int 21h

sti

mov cx, 10

cycle:

delay 9000

loop cycle

cli

mov dx, old_handler

mov ax,251ch

int 21h

sti

mov ax,4c00h

int 21h

main endp

new_1ch proc

;

push ax

push bx

push es

push ds

;

push cs

pop ds

;

set_position position,position

mov ah,02h Функция 02h прерывания 1Ah:

int 1Ah ; чтение времени;

jc _exit

mov al,ch ;CH= час в BCD-формате

call bcd2asc ; преобразовать в ASCII

mov byte ptr output_line[0],ah ;поместить их в

mov byte ptr output_line[1],al ; строку output_line

mov output_line[2], byte ptr ':'

mov al,cl ; CL = минута в BCD-формате

call bcd2asc

mov byte ptr output_line[3],ah

mov byte ptr output_line[4],al

mov output_line[5], byte ptr ':'

mov al,dh ;DH = секунда в BCD-формате

call bcd2asc

mov byte ptr output_line[6],ah

mov byte ptr output_line[7],al

mov output_line[8], byte ptr '$'

mov ah, 09h

mov dx, offset output_line

int 21h

;

_exit:

pop ds

pop es

pop bx

pop ax

iret

new_1ch endp

bcd2asc proc

mov ah,al

and al,0Fh ; оставить младшие 4 бита в AL

shr ah,4 ; сдвинуть старшие 4 бита в АН

or ax,3030h ; преобразовать в ASCII-символы

ret

bcd2asc endp

StrToInt proc

cmp al,'9'

jg fault

sub al,'0'

ret

fault:

int 21h

mov ax,4C00h

int 21h

StrToInt endp

end main