Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
79
Добавлен:
21.02.2014
Размер:
60.42 Кб
Скачать

5 РАЗРАБОТКА УПРАВЛЯЮЩЕЙ ПРОГРАММЫ

Разработанная блок-схема алгоритма управляющей программы работы кабельного пробника представлена в приложении А.

После запу­ска программы и инициализации регист­ров обнуляется регистр де­сятков. Его значение переписывается в порт А для коммутации мультиплексоров. Далее разрешаются прерывания, и по двоично­му числу десятков находится его деся­тичное значение, которое прибавляется к константе первого выхода. Кон­станта (К) выхода определяется его номером: у первого она равна 1, у второго — 2, у десятого — 10. При нулевом значении десятков на каждом выходе появляется число импульсов, равное номеру выхода.

Далее программа проверяет регистр К на наличие нуля. Если его нет, из ре­ги­стра вычитается единица, что сопровож­дается переключением выхода в еди­ничное состояние. Затем выдерживает­ся пауза продолжительностью 24 мкс, и вы­ход переводится в нулевое состоя­ние, которое длится 30 мкс (т. е. период колеба­ний равен 54 мкс). После этого программа проверяет регистр на ноль. Если ре­гистр пустой, она переходит в режим ожидания прерывания, а если его значение не равно нулю, весь цикл формирования импульса на выходе по­вторяется. Таким образом, на выходе формируется число импульсов, которое было записано в ре­гистр К.

После инициализации регистров включаются предделитель с коэффици­ен­том деления 32 и таймер с коэффици­ентом деления, равным 137(256- 119). При частоте кварцевого резонатора 4 МГц прерывание по переполнению таймера должно происходить пример­но через 4,38 мс (32 137 = 4384 мкс), но возврат из прерывания выполняется командой без разрешения прерывания. К этому времени прибавляется время циклов до разрешения прерывания и, собственно, время на само выполнение прерывания (общая средняя продолжи­тельность этого времени равна 16 цик­лам). Кроме этого, предделитель обну­ляется при каждой установке таймера, поэтому пауза между прерываниями составляет 4,4 мс. Как не трудно под­считать, 80 периодов колебаний будут длиться 4,32 мс (54 мкс х 80 = 4320 мкс), т. е. это время укладывается в проме­жуток между прерываниями.

После переполнения таймера вы­полняется обычная процедура сохране­ния значений регистров при прерыва­нии и прибавляется (возможно и вычи­тание) единица в счетчик прерываний. Значения этого счетчика не использу­ются про­граммой, а сам счетчик необ­ходим для выполнения прерывания. Но его удобно использовать при отлад­ке программы. После восстановления значений регистров разрешается пре­рывание для формирования импульсов со следующего выхода.

После того как сформированы им­пульсы на десятом выходе, регистр де­сят­ков увеличивается на единицу и весь цикл повторяется с команды записи дво­ич­ного кода десятков в порт А. В новом цикле число сформированных импуль­сов на каждом выходе увеличивается на десять. Когда значение десятков станет равно восьми, цикл формирования им­пульсов начнется с обнуления регистра десятков. Таким образом, максимальное значение десятков равно семи, а макси­мальное число импульсов будет на деся­том выходе (10 + 70 = 80). Все 80 циклов прерыва­ний длятся 0,352 с (4,4 мс х 80). Это время определяет гарантированную длитель­ность паузы между выдачей им­пульсов на каждом выходе. Для одиноч­ного им­пульса на первом выходе дли­тельность паузы будет увеличена почти на время, равное времени между преры­ваниями, а для 80 импульсов на десятом выходе пауза между импульсами будет равна 0,352 с. Это необходимо отметить, чтобы лучше понять работу приемной части пробника.

Соседние файлы в папке PIC16F84--