Читайте также:
|
|
ПРОГРАМНЕ ОПИТУВАННЯ ДАТЧИКІВ ТЕХНОЛОГІЧНОЇ ІНФОРМАЦІЇ. ПРОГРАМНЕ ВИВЕДЕННЯ ІНФОРМАЦІЇ НА ЗОВНІШНІЙ ПРИСТРІЙ
Мета роботи. | Освоїти програмування додатків мовою асемблера для МП К1810ВМ86 для керування зовнішніми пристроями за допомогою портів введення/виведення |
6.1 Теоретичні відомості
В разі використання мікропроцесорної системи для керування технологічним механізмом опитування датчиків технологічної інформації та перетворення аналогового сиґналу в цифровий, запис інформації в ОЗП виконується під керуванням МП.
Так, номер опитуваного датчика технологічних величин формується в одному з реґістрів загального призначення (РЗП), наприклад, в реґістрі ВН. У 8-розрядному реґістрі в 5-ти старших розрядах записуються одиниці, а в трьох молодших розрядах - номер датчика.
Вся робота мікропроцесорної системи з пристроями на найнижчому рівні виконується з використанням портів введення-виведення. Розглянемо на прикладі, як на рівні апаратури забезпечити керування за допомогою МПС зовнішнім пристроєм, наприклад, формування звука сирени.
Загальна схема формування такого сиґналу показана на рис. 6.1.
Рис. 6.1 - Схема формування звука для вбудованого динаміка ПЕОМ
Приклад програми, що реалізовує звук сирени наведений в лістингу 6.1. Для зручності роботи в програмі була використана макрокоманда delay, що виконує затримку роботи програми на заданий час.
Приклад 6_1.
;Програма, що імітує звук сирени.
;3міна висоти звуку від 450 Гц до 2100 Гц.
;Використовується макрос delay (затримка),
masm
model small
stack 100h
delay macro time
;макрос затримки, його текст обмежуеться директивами macro i endm.
;на вході - значения затримки (у мкс)
local ext, iter
push сx
mov cx,time
ext:
push сx
mov сx, 5000
iter:
loop iter
pop сx
loop ext
pop сx
endm
.data;сеґмент даних
tonelow dw 2651;нижня частота звучания = 450 Гц
cnt db 0;лічильник для виходу з програми
temp dw?;верхня частота звучания
.code;сеґмент коду
main:;точка входа в програму
mov ax,@data;зв'язати реґістр ds з сеґментом
mov ds,ax;даних через peґicтр ax
хоr ах,ах;очищуємо ах
go:
mov al,0B6h;заносимо слово стану 10110110b (0B6h)
out 43h,al;в командний реґістр (порт 43h)
in al,61h;зчитати значення порта 61h в al
or al,3;ініціалізація динаміка i подача струму
out 61h,al;на порт 61h
mov cx,2083;кількість кроків ступінчастої зміни тону
musicup:
;у ах значения нижньої частоти частоти звуку
mov ax,tonelow
out 42h,al;порт 42h молодше слово ах:al
xchg al,ah;обмін між al i ah
out 42h,al;y порт 42h старше слово ax:ah
add tonelow, l;підвищуємо тон
mov dx,tonelow;y dx поточне значения висоти звуку
mov temp,dx;temp - верхне значения висоти звуку
loop musicup;повторити цикл шдвищення
mov cx,2083;відновити лічильник циклу
musicdown:
mov ax,temp;y ax верхне значения висоти
out 42h,al;у порт 42h молодше слово ax:al
mov al,ah;обмін між al i ah
out 42h,al;y порт 42h старше слово ax:ah
sub temp,l;знижуємо висоту звуку
delay 1;затримка на 1 мкс
loop musicdown;повторити цикл зниження
nosound:
in al,61h;набудемо значения порту 61h в AL
and al,0FCh;вимкнути динамік
out 61h,al;у порт 61h
mov dx,2651;для подальших циклів
mov tonelow,dx
inc cnt;збільшуемо значення лічильника проходів,
;тобто кількість звучань сирени
сmp cnt,5;у 5 разів?
jne gо;якщо ні, перейти на мітку gо
ехіt:
mov ах,4с00b;стандартний вихід
іnt 21h
end main;кінець програми
Дата добавления: 2015-11-14; просмотров: 55 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ЛАБОРАТОРНА РОБОТА № 4 | | | Порядок виконання роботи |