|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[34] лера "Агат". Учитывая это при написании программ, рекомендуется использовать следующие соглашения об областях памяти компьютера:
Такое условное разбиение адресного пространства используется при программировании на компьютерах "ПРАВЕЦ-82". "APPLE IT, "APPLE II+" и т.п. Применение соглашения позволит избежать конфликтных ситуаций при переносе программ с одного типа компьютера на другой. Отметим, что интерпретатор языка БЕЙСИК начинает располагать данные с адреса, определенного оператором LOMEM (по умолчанию 808) или директивой ДОС "FP". Команды (строки программы) интерпретатор располагает в памяти начиная с адреса й 801 • Последний байт программы определяется адресом, содержащимся в Д AF и ft ВО. Кроме того, при программировании на языке БЕЙСИК могут быть полезны следующие советы: используйте по возможности одноцифровые числа; используйте однобуквенные имена в переменных; избегайте использовать целочисленные (помеченные символом %) и строковые (помеченные символом ft ) переменные; команду PRINT заменяйте на символ ?; опускайте имя счетчика цикла на одиночном операторе NEXT; объединяйте два последовательных оператора NEXT в один (например, вместо NEXT I:NEXT J напишите NEXT I,J); опускайте незначащие нули в дробных числах (.5 вместо 0.5); когда это можно, оператор GOTO, как начинающий программу, заменяйте на RUN. Рассмотрим примеры применения некоторых операторов интерпретатора языка БЕЙСИК. Используя оператор DATA в программе, можно запомнить константы, которые в ходе выполнения программы могут быть присвоены любым переменным. Проиллюстрируем это на примере: 10 FOR N=1 ТО 10 : READ А : PRINT А : NEXT 20 FOR К=1 ТО 8 : READ В й : PRINT В ft : NEXT 30 DATA 1,2.3.4,5.6,7.8,9.0, "А", "В", "С", "D", "Е", "F", "G", "Н" В строке 10 организовано десятикратное повторение операторов READ А и PRINT А. Такое многократное повторение одной и той же группы операторов называется циклом. Цикл строится командой FOR и параметрами этой команды: N - счетчик цикла, 1 - начальное значение счетчика цикла, 10 - конечное значение счетчика цикла, NEXT - конец цикла. Все операторы (READ А и PRINT А), стоящие между FOR N=1 ТО 10 и NEXT, будут повторены 10 раз, так как N будет менять свое значение от 1 до 10 тоже 10 раз. В строке 30 записан оператор DATA, содержащий последовательность констант, разделенных запятыми. При первом выполнении оператора READ А первая константа (1) из DATA будет прочитана в переменную А; при втором выполнении команды READ А вторая константа (число 2) из DATA будет снова прочитано в А (при этом старое содержимое в А стирается, но в операторе DATA константа не теряется) и т.д. После очередного чтения из DATA в переменную А значение А отображается оператором PRINT А на экране ВКУ. Применение других команд интерпретатора языка БЕЙСИК будет рассмотрено ниже в соответствующих разделах. 6.2. ПРОГРАММИРОВАНИЕ ВСТРОЕННОГО ИНТЕРФЕЙСА Встроенный интерфейс ПЭВМ "Агат" является программно доступным. Управление звуковым каналом. Управление динамиком основывается на возможности извлечь короткий звуковой сигнал при обращении к одной из ячеек СОЗО - C03F. Для создания музыкальной мелодии нужно организовать многократное обращение к этим ячейкам. На рис. 6.1 приведена программа на языке ассемблера, воспроизводящая звуковой сигнал, длительность и тональность которого опреде-
Рис. 6.1. Программа воспроизведения мелодии 30D: 310: 312: 313: 315: Рис. 6.2. Программа воспроизведения ноты 317: LDY #*00 (вагрувка 0 в регистр Y LDX *300 (вагрувка ив 300 ячейки в X LDA *С030 (посылка импульса на динамик DEY{Y»Y-1 BNE «312 (переход по ненулевому ревультату DEC «301 (содержимое ячейки 301 уменшили на 1 BEQ *317 (переход по нулевому ревультату DEX(Х=Х-1 BNE *30А (переход по ненулевому ревультату BEQ 4304 (переход по нулевому ревультату RTS (вовврат на точку входа t 255 240 228 214 204 192 184 171 160 /52 Рис. 6.3. Числовые рактеристики нот
/Д? 114 4f- 108 102 96 92 85 80 76 72 68 64 60 57 54 51 48 45
23 = 43+43+43 21 + 21+21 ЛЯЮТСЯ числом Д C9, содержащимся в ячейке Д 301. Команда LDA ДСОЗО непосредственно извлекает один импульс, длительностью 5 мкс. Для создания звукового сигнала, различимого человеческим ухом, в программе используются два цикла, построенные на двух командах BNE. Задав многократное повторение этой программы, можно получить музыкальный гудок. Если же при этом многократном обращении еще и изменять содержимое ячейки Д 301, получится случайная. музыкальная мелодия. Используя язык БЕЙСИК, можно написать программу, организующую такое многократное обращение: 10 FOR 1=1 ТО 255 : РОКЕ 769,1 : CALL 768 : NEXT Программа, состоящая из одной строки, выводит на динамик сигнал, напоминающий сирену. Конечно, перед запуском этой программы в память начиная с адреса Д 300, необходимо записать приведенную на рис. 6.1 программу. Это можно сделать, используя программу "Системный монитор" или операторы языка БЕЙСИК. Переведем шестнадцатеричные коды программы на языке ассемблера в десятичные эквиваленты (АО-160, С9-201 и т.д.): 160,201.152,170,202,208.253,173.48.192.136,208,245,96. Эту последовательность на языке БЕЙСИК можно запомнить оператором DATA. Используя совместно с оператором DATA команды READ (чтение из DATA) и команды РОКЕ (занесение байта по адресу), можно организовать запись программы, приведенной на рис. 6.1, непосредственно в память начиная с адреса 768 СД302): 1DATA 160,201,152,170,202,208,253.173.48.192.136.208,245,96 2FOR 1=770 ТО 781: READ А : POKE I.A : NEXT На рис. 6.2 приведена программа на языке ассемблера, извлекающая звук заданной длительности и тональности. Используя эту программу, можно заставлять компьютер исполнять любую мелодию. На рис. 6.3, а изображены нотные |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||