|
Для получения значения исследуемого напряжения компьтер выдает на делитель различные значения, от 0 до 255 (в используемой модели АЦП используется только 8 разрядов), до тех пор пока АЦП не сработает (на выходе не появится "1"). Последнее выведенное значение соответствует значению исследуемого напряжения. На самом деле алгоритм несколько сложнее, так как приведенный выше алгоритм работает с разной скоростью в зависимости от значения исследуемого напряжения. В программе применяется алгоритм деления отрезка пополам: на АЦП выводится значение, соответствующее середине текущего отрезка. Если АЦП не сработал, программа переходит к изучению нижней половины отрезка, а если сработал - верхней. Таким образом результат получается всегда за 7 циклов работы, и это не зависит от значения исследуемого напряжения. Вот отрывок программы на Ассемблере, осуществляющий описанный выше алгоритм: mov al, 80h ; initialize with 256/2=128 Где com_wait - выбираемая экспериментально задержка, связанная с тем, что АЦП срабатывает не мгновенно, а с некоторым запаздыванием. Точная причина этого запаздывания не выяснена, но оно ограничивает спектр частот сигналов, которые можно исследовать с помощью данного комплекса. Lpt1 - номер порта для управления LPT (обычно 389h). |
Copyright 1999 Андрей Смирнов |