Функции для работы с портами ввода

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

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

3.6.3.Функции для работы с портами ввода. Микропроцессоры семейства 80/86 могут обращаться к 65536 портам ввода и вывода. При этом возможна передача байта как слова ( двух байтов ) данных.

В Сu функции ввода/вывода в порты имеют вид :

inportb-ввод байта из порта ;

outportb-вывод байта из порта ;

inport-ввод слова из порта ;

outport-вывод слова из порта .

Эти функции описаны в заголовки файла dos.h. Прототипы функций:

unsigned char inportb ( unsigned port ) ;

void outportb ( unsighed port ,unsigned char value ).

Примеры  применения этих функций :

/* input.cpp. Иллюстрация функции ввода из порта  */

# include <stdio.h>

# include <dos.h>

main( )

{

unsigned char result ;

unsigned port=0 ; // Адрес порта

result =inportb ( port ) ;

printf (“ Принятый байт из порта %d равен Ox%x\n”,port ,result);

return 0;

/*outport.cpp Иллюстрация функции вывода в порт */

# include <stdio.h>

# include <dos.h>

main( )

{

unsigned port=0;     // Адрес порта

char value=’c’;

outport(port,value);

printf(“Значение %с послано в порт %Q\n “,value ,port);

return 0;

}

Функции работы с портами имеются и в заголовочном файле conio.h:

inp-ввод байта из порта;

outp-вывод байта из порта;

inpw-ввод слова (два байта) из порта;

outw-вывод слова в порт.

Рассмотрим применение функций работы с портами для программы управления звуком. В РС ХТ/AT стандартный канал управления звуком SPEAKER рассчитан на подключение высокоомного малогабаритного динамика. Функциональная схема приведена  на рис. 1  Звук формируется из сигнала типа “меандр” на выходе счётчика СТ2 таймера 8253 (для ХТ) или 8254 (для АТ). Подачей лог. 1 или 0 на вход  GATE2 можно управлять работой счётчика. Кроме того, открывать или закрывать вентиль  “И” 1-м разрядом на выходе системного порта с адресом  61Н .

Счётчик СТ2 должен работать в режиме 3-генератора прямоугольных импульсов. Определим число  N , которое необходимо загрузить в счётчик для генерации звука частоты 440 Гц (нота ЛЯ первой октавы):

N=1931800/440=4390,45 (1126H).

Управляющее слово для работы СТ2 в режиме 3, счёт двоичный , загружаются два байта (сначала младший, потом старший):

10110110В=36Н

  Допустим, что необходимо генерировать звук частоты 440 Гц импульсами с частотой 0,5 Гц (импульс 1с и пауза 1с) .Генерация звука прекращается при нажатии любой клавиши. Необходимо учесть также, что изменять ряды   D7-D2 порта 61Н нельзя (они выполняют системные функции).

       /*speaker.cpp.Программа генерации звука*/

#include<stdio.w>

#include<dos.h>        // Здесь протатип inportb( ), outport( ), delay( )

#include<conio.w>              // Здесь протатип  kbhit( )

#define CTRL_PT  0*43    // Регистр управляющего слова таймера

#define CTRL_WD  0*36  // Управляющее слово для СТ2

#define CT2  0*42              // Адрес счётчика СТ2

#define N_LOW  0*26       // Младший байт числа N

#define N_HIGH  0*11      // Старший байт числа N

#define SYS_PTR  0*61    // Адрес системного порта

main( )

{

unsigned char ch1,ch2;

outportb(CTRL_PT,CTRL_WD);

outportb(CT2,N_LOW);

outportb(CT2,N_HIGH);

ch1=inport(SYS_PTR);    // Чтение состояния системного порта

ch2=ch1;                           // Создаём копию

ch2=ch1 | 0*3;        // Устанавливаем единицу в разрядах D1 и D0           

while( !kbhit( ) )   

{

outportb(SYS_PRT,ch2);   // Включите динамик

delay(1000);                         // Задержка на 1 с

ch2=ch&0*fd;                          //  Обнуляем D1=0

outport(SYS_PRT,ch);         // Выключить динамик

delay(1000);

ch2=ch2  / 0*2;                 // Установить D1=1

}

outport(SYS_PRT,ch1);

return 0;

}

Задание. Наберите текст программы speaker.cpp и исследуйте её

Таймер

 


                                                                Адрес СТ=42Н

f=1,9318 MГц

                                                                              Адрес РУС=43Н

&

 
 


  

 


                          Системные функции

 


Системный порт 61Н

Рис.1 Функциональная схема канала управления звуком в РТ ХТ/AT

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

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