Реферат: Блок управления двигателем на МК

введенная частота вращения якоря двигателя obor data 54h

делимое 1-й байт chi_3 data 55h

делимое 2-й байт chi_2 data 56h

делимое 3-й байт chi_1 data 57h

делитель 1-й байт zn_h data 59h

делитель 2-й байт zn_l data 5ah

частное 1-й байт rez_h data 5bh

частное 2-й байт rez_l data 5ch

результат деления 16/8 rezul data 5dh

измеренная длительность импульса мл. байт dli_i_l data 5eh

измеренная длительность импульса ст. байт dli_i_h data 5fh

заданная длительность импульса мл. байт dli_l data 60h

заданная длительность импульса ст. байт dli_h data 61h

временная ячейка temp data 62h

счетчик паузы выдачи измеренного значения indik data 63h

Используемые биты флагов перечислены ниже:

повторный вход в п.п. измерения периода импульса flag bit 00h

индикация нажатия функциональной клавиши f_ind bit 01h

функциональная клавиша «реверс» f_rev bit 02h

направление вращения f_nap bit 03h

вкл./выкл. двигатель f_rab bit 04h

индикация обороты/нагрузка f_rez bit 05h

функциональная клавиша «режим» f_rezind bit 06h

Деление 24-х битного числа на 16-и битное результат 16 бит, реализовано в подпрограмме div24. Деление многобайтного числа на многобайтное реализуется по принципу вычитания делителя из делимого со сдвигом последнего влево, с возможностью восстановления делимого. Перед процедурой деления в ячейки делителя записывается число в диапазоне 0-0fffh. В начале деления происходит: сдвиг делителя на четыре разряда влево это необходимо для деления 24/16, запись в частное 10h для определения окончания деления, запись в ячейки делимого число 1000000. В начале цикла деления производится сдвиг делимого влево на один разряд, а так же сдвиг влево частного и запись в стек значений флагов переносов. Далее из старшей части делимого вычитаем делитель, в зависимости от знака переноса в частное записывается «0» или «1» и сохранение делимого. Проверка переноса при сдвиге делимого и запись в частное «1» если перенос был. Проверка окончания деления путем проверки восстановленного значения флага переноса при сдвиге частного. После окончания деления результат деления находится в ячейках результата.

После нажатия клавиши «Старт» происходит преобразования значения индикационных ячеек в двоичный код (1 байт), после чего это значение умножается на 24, что соответствует 24 прорезям диска оптопары (результат 2 байта) и делим 1000000 на это число в результате получается длительность периода импульсов от оптопары для введенного числа оборотов в секунду. После преобразования выполняется функция запуска двигателя которая дает толчок и разрешается прерывание INT1 с оптопары.

В подпрограмме обработки прерывания INT1 проверяется повторное вхождение для этого используется флаг flag. При первом вхождении запускается таймер и происходит выход из подпрограммы обработки прерывания. Во втором вхождении таймер останавливается, запрещается прерывание INT1 и значение таймера (что соответствует периоду импульса) записывается в ячейки dli_i_l и dli_i_h. После чего производится регулирование частоты вращения двигателя, для этого из ячеек dli_l dli_h (введенное значение) вычитается измеренное dli_i_l dli_i_h, если возник перенос значит частота вращения меньше необходимой и двигатель включается (отключается, если переноса нет) установкой кода на портах Р3.4 Р3.5. Комбинация выбирается в зависимости от направления вращения которая определяется битом f_nap. Индикация измеренной частоты вращения происходит через 47 (2f) раз измерения импульсов, это нужно для того чтобы убрать мелькание цифр на индикаторе. Преобразование измеренного значения в частоту вращения двигателя в обр/сек происходит следующим образом: деление 1000000 на измеренное значение, деление на 24, преобразование bin->dec->индикатор. Перед завершением подпрограммы обработки прерывания INT1 производится инициализация регистров и ячеек перед следующим запуском процедуры и разрешается прерывание INT1.

Для настройки таймера и прерывания INT1 используются следующие управляющие слова:

- TMOD=01H – режим работы таймера;

- TCON=04H

К-во Просмотров: 1305
Бесплатно скачать Реферат: Блок управления двигателем на МК