Программирование контроллера таймера

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ "КОМСОМОЛЬСКИЙ-НА-АМУРЕ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ"

ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

КАФЕДРА МОП ЭВМ

ЛАБОРАТОРНАЯ РАБОТА № 6

по курсу "ОС реального режима"

тема: "Программирование контроллера таймера"

Студента группы 0ВМ-1:                              Чередниченко В.В.

Проверил:                                              Тихомиров В.А.

Вариант № 10

Комсомольск-на-Амуре

2002

Задание:

Сделать программу, которая через динамик компьютера проигрывает гамму второй октавы от ноты "ДО" до ноты "СИ".

Выполнение задания:

Алгоритм:

Ноты будем выводить путём программирования контроллера таймера:

1.  заносим в порт 43h слово состояния 10110110b:

первый бит означает, что мы будем посылать в регистр защёлку двоично-десятичные числа;

следующие три означают режим работы микросхемы таймера (в нашем случае третий);

следующие два означают, что мы сначала будем посылать в регист задвижку сначала младший байт, а затем старший;

последние два бита определяют номер программируемого канала (в нашем случае – третий)

2.  устанавливаем первые два бита в порту 61h в единицы, для подачи тока на динамик;

3.  посылаем в порт 42h значение, равное 1193180/"требуемая частота";

4.  устанавливаем задержку;

5.  обнуляем первые два бита в порту 61h, чтобы обесточить (выключить) динамик компьютера;

6.  повторяем шаги 2-5 для всех нужных нот.

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

masm

model small

stack 100h

;определения нот

NOTA_DO     equ   4559

NOTA_DO_DI  equ   4304

NOTA_RE     equ   4063

NOTA_RE_DI  equ   3835

NOTA_MI     equ   3620

NOTA_FA     equ   3417

NOTA_FA_DI  equ   3225

NOTA_SOL    equ   3044

NOTA_SOL_DI equ   2873

NOTA_LA     equ   2712

NOTA_LA_DI  equ   2559

NOTA_SI     equ   2416

herc macro  number            ;макрос вывода звука с частотой number

mov   ax,number

out   42h,al

xchg  al,ah

out   42h,al

endm

delay macro time              ;макрос задержки на 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

on    macro                   ;макрос включения динамика

in    al,61h

or    al,00000011b

out   61h,al

endm

off   macro                   ;макрос выключения динамика

in    al,61h

and   al,11111100b

out   61h,al

endm

nota  macro num_nota          ;макрос вывода ноты num_nota

on

herc  num_nota

delay 1500

off

delay 1000

endm

.code

main:

mov   al,10110110b      ;заносим слово состояния в командный регистр (порт 43h)

out   43h,al

;выводим ноты    

nota  NOTA_DO

nota  NOTA_DO_DI

nota  NOTA_RE

nota  NOTA_RE_DI

nota  NOTA_MI

nota  NOTA_FA

nota  NOTA_FA_DI

nota  NOTA_SOL

nota  NOTA_SOL_DI

nota  NOTA_LA

nota  NOTA_LA_DI

nota  NOTA_SI

mov   ax,4c00h          ;завершение программы

int   21h

end   main

Компилирование:

tasm ocpp_6.asm

Turbo Assembler  Version 3.1  Copyright (c) 1988, 1992 Borland International

Assembling file:   ocpp_6.asm

Error messages:    None

Warning messages:  None

Passes:            1

Remaining memory:  382k

tlink ocpp_6.obj

Turbo Link  Version 5.1 Copyright (c) 1992 Borland International

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
33 Kb
Скачали:
0