Читаем Язык Си - руководство для начинающих полностью

     Порт 97 не управляет непосредственной работой громкоговорителя. Устройство, осуществляющее эти функции, называется "Программируемый параллельный интерфейсный контроллер 8255". Этот микропроцессор имеет три "регистра" (небольших, легко до ступных элемента памяти), в каждом из которых содержится некоторое число. Числа в регистрах используются для управления работой данного устройства. Каждый регистр связан с ИС 8088 через порт, и регистру, управляющему громкоговорителем, выделен для связи порт 97. С его помощью управление данным устройством осуществляется путем изменения числа в регистре. При посылке правильного" числа громкоговоритель издает звуковой сигнал; посылка же "неправильного" числа может вызвать ряд проблем. Поэтому нам необходимо знать, какие числа требуется посылать и как их нужно посылать. В частности, нам хотелось бы знать, как использовать язык Си для подобного рода операций.


                                           РИС. 6.6. Связь контроллера 8255 с микропроцессором INTEL 8088.

     Давайте сначала посмотрим, какие нужно посылать числа. Первым необходимо знать - регистр контроллера 8255 может принять 8- разрядное число, которое помещается туда в двоичном коде, например, 01011011. Каждый из восьми разрядов памяти рассматривается как переключатель "включено-выключено" для соответствующего устройства или воздействия. Наличие 0 или 1 в соответствующей позиции определяет, включено или нет соответствующее устройство. Например, разряд 3 (разряды нумеруются от 0 до 7 справа налево) определяет, включен или нет электродвигатель нателя на мини-кассете, а разряд 7 разрешает или запрещает работу с клавиатурой терминала. При передаче числа в регистр необходимо соблюдать осторожность. Если при включении громкоговорителя мы не обратим внимания на остальные разряды, то случайно можем выключить клавиатуру! Поэтому давайте посмотрим с помощью рис. 6.7, чему соответствует каждый разряд. (Используемая информация взята из технического справочного руководства фирмы IBM, и мы вовсе не должны знать, что большинство из этих разрядов означает.)

разряд 0 + включение громкоговорителя через таймер 2

разряд 1 + наличие данных для работы громкоговорителя

разряд 2 + (чтение ключа размера оперативной памяти) или (чтение резервного ключа)

разряд 3 + выключение двигателя накопителя на мини-кассете

разряд 4 - разблокировка оперативной памяти

разряд 5 - разблокировка контроля ввода-вывода

раздяр 6 - поддержание низкой тактовой частоты задающего генератора клавиатуры

разряд 7 - (разблокировка клавиатуры) или + (сброс клавиатуры & разрешение опроса программно-опрашиваемых переключателей)

РИС. 6.7. Порт 97 назначение управляющих разрядов

     Обратите внимание на знаки + и - на рис. 6.7. Знак + указывает, что в соответствующем разряде выполнение условия обозначается через 1, а знак - указывает, что выполнение условия в разряде обозначается через 0. Поэтому 1 в 3-м разряде показывает, что двигатель накопителя на мини-кассете выключен, в то время как 0 в 4-м разряде указывает на возможность доступа к памяти.

     Каким образом можно включить громкоговоритель? Оказывается, для этого необходимо в 0-й разряд (включение громкоговорителя через таймер 2) и в 1-й разряд (наличие данных для работы громкоговорителя) заслать 1. Это означает, что для включения громкоговорителя через порт 97 необходимо послать в регистр двоичное число 11 (или десятичное число 3). Но, перед тем как приступить к этому, учтите, что данная операция имеет такие побочные эффекты, как, например, установка разряда 4 в 0, что может оказаться вовсе нежелательным. Одна из причин, по которой мы не рассказали, как использовать порты, заключается в том, чтобы предотвратить неприятные последствия вашей поспешности.

     Для надежности мы должны проверить сначала, что содержится в регистре. К счастью, это совсем не трудно (мы продемонстрируем это чуть позже). Ответ выглядит так: в регистре обычно содержатся числа "76" или "77 ". Давайте переведем их в двоичную систему. (Здесь вам, возможно, захочется заглянуть в таблицу преобразования в двоичный код, которая приводится в конце книги в приложении.) Результаты преобразования некоторых чисел приве-дены в табл. 6.1.

     Не вдаваясь в подробности по поводу значения слов "поддержание низкой тактовой частоты задающего генератора клавиатуры

Таблица 6.1.


Десятичное числоНомер разряда76543210
76 01001100
77 01001101
78 01001110
79 01001111

Использование порта

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

Программирование, программы, базы данных