6. Пример программы для работы с устройством.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<bios.h>
void
signal_ADC(int);
int
read_adc(int);
int
TestADC(void);
int
base_address;
void
main(void)
{
char
c;
int
num_chanel;
do
{
clrscr();
printf("1
– Начало работы! \n2
– Выход \n\n
Выбирайте: ");
scanf("%c",&c);
if(c=='1')
{
clrscr();
printf(" Поиск
устройства
.....");
if(TestADC())
{ printf("
Устройство найдено.\n\n
Введите номер измеряемого канала
(1-4).");
scanf("%d",&num_channel);
signal_ADC(num_channel);
}
else
{ printf("
Устройство не найдено."); getch();
}
}
while(c!='2');
}
void
signal_ADC(int num_channel)
{
int
Data[320];
int
i,mask_channel=1;
mask_channel=mask_channel<<(num_channel-1);
outport(base_address,(mask_channel
<<10)|0x4000); //сброс
FIFO
for(i=0;i<320;i++)
Data[i]=read_adc(mask_channel);
//чтение слова из устройства
//-----------------------------------Использование
данных------------------------------------
}
int
read_adc(int mask_channel)
{
outport(base_address,(num_channel<<4)|1);
//запуск
АЦП
return
(inport(base_address+2)); //чтение
данных
}
int
TestADC(void)
{
char
p1,p2;
p1=inportb(0x248);
p1=(p1>>10)&0x3F;
p2=inportb(0x2С8);
p2=(p2>>10)&0x3F;
if(p1==26)
//десятичное
значение “011010”
{
base_address=0x248; return 1; }
else
if(p2==26)
{
base_address=0x2C8; return 1; }
else
return 0;
}
Выводы.
Результатом выполнения
курсовой работы явилось создание системы
сбора аналоговой информации.
Спроектированное устройство удовлетворяет
заданным требованиям и совместимо с
магистралью ISA.
Список использованной литературы.
Маркировка
и обозначение радиоэлементов. Системы
цветовой и буквенно-цифровой маркировки
отечественных и зарубежных радиоэлектронных
элементов. Справочник. – Мукосеев В.В.,
Сидоров И.Н. – М.: Горячая линия-Телеком,
2001.
Популярные
цифровые микросхемы: Справочник. –
2-ое издание. В.Л. Шило. Радио и связь,
1989.
Проектирование
элементов и узлов ЭВМ. Е.П. Угрюмов.
Высшая школа, 1987.
Цифровая
схемотехника. Е.П. Угрюмов. БХВ-Петербург,
2002.
21