Раздел: Документация
0 ... 24 25 26 27 28 29 30 ... 39 ORG ООООН PORT1 EQU ОАОН PORT2 EQU 0А1Н LD SP, 1000H SW7CHK: IN A, (PORT1) LOOP:
DELAY: LD LOOP1: DEC LD OR JR RET TABTOP: DE, 28B0H DE A, D E NZ, LOOP1 © DEFB DEFB DEFB DEFB END 64H, 5FH, 5АН, 4BH 41H, ЗСН, 32H, 28H 23H, 1EH, 19H, 14H 12H, 10H, OEH, OCH Символический адрес TABTOP, указывающий начальный адрес таблицы временных множителей, расположен за последней командой программы (командой RET) Рис. 7.24. Текст программы к задаче № 4 Символическая константа TABTOP в блоке 3 определяет начальный адрес, по которому загружены числовые значения из второй колонки таблицы данных. В блоке 4 к содержимому пары регистров H-L, представляющему собой 16-разрядное число, прибавляется число, находящееся в регистре А. Сначала суммируется содержимое регистров А и L, и если был перенос разряда, то к содержимому регистра Н прибавляется 1. Так выполняется сложение 16-разрядного и 8-разрядного чисел. Для того чтобы реализовать задержку, соответствующую временному множителю, загруженному в регистр В (блок 5), в блоке 8 применяется команда «DJNZ». По команде «DJNZ» из содержимого регистра В вычитается 1 и, если результат отличен от 0, производится процедура задержки «DELAY». На ее выполнение процессору Z80 требуется время 0.1 с (см. Рис. 6.6). В блоке 9 по команде «XOR А», знакомой нам по предыдущим задачам, производится логическая операция «Исключающее ИЛИ». При этом в качестве обоих операндов выступает одно и то же число, содержащееся в регистре А, в результате чего регистр А обнуляется. Последние в тексте программы команды, начиная с команды «ТАВТОР: DEFB 64Н, ... », означают последовательную загрузку 1-байтовых чисел, равных временным множителям таблицы данных, в память ЦПУ, начиная с адреса, указанного меткой ТАВТОР. Команда «DEFB» - это директива ассемблера, не имеющая «двойника» среди машинных команд. Если требуется разместить в памяти 16-разрядные данные (2-байтовые числа), применяется директива «DEFW». Операторы DEFB и DEFW ( Am* Оператор DEFB (сокр. от англ. Define Bytes) размещает в памяти 1-байтовые данные. Пример - ТАВ1: DEFB 64Н, 5FH, 5АН. Последовательно размещает в памяти 1-байтовые данные 64Н, 5FH и 5АН, начиная с адреса, выраженного символической константой «ТАВЬ Оператор DEFW (сокр. от англ. Define Words) последовательно размещает в памяти 2-байтовые данные. Сначала размещается младший байт, а затем старший. Пример - ТАВ2: DEFW 2000Н, 2FEDH. Этой команде соответствует следуюшее размешение данных в памяти, начиная с адреса ТАВ2: ООН, 20Н, OEDH, 2FH Итак, мы рассмотрели простой пример программы, в которой соотношение между 4-разрядными входными данными и временем свечения светодиодов задано в виде таблицы. Этот принцип построения программы часто используется при вводе данных с разнообразных датчиков, например, когда нужно изменить число оборотов двигателя. Этот прием можно применять и тогда, когда по введенному числу мы хотим выполнить обработку данных разными программами. В этом случае мы задаем в виде таблицы соотношение между вводимым числом и начальным адресом программы, соответствующей этому числу. у gШаговый двигатель, называемый также ЗАДАЧА № 5 - импульсным двигателем, - это двигатель, у УПРАВЛЕНИЕкоторого угол поворота вала пропорциона- ШАГОВЫМлен числу электрических импульсов. При ДВИГАТЕЛЕМподаче одного управляющего импульса вал шагового двигателя поворачивается на один и тот же угол независимо от нагрузки. Благодаря этому свойству управление двигателем не требует применения схемы обратной связи. Простота и надежность объясняют большую популярность шаговых двигателей у разработчиков микрокомпьютерных контроллеров для электромеханических устройств. Вполне вероятно, что и читателю представится возможность оценить их достоинства. Предлагаем вам простейшую программу управления шаговым двигателем. - Задача № 5 ~ При замкнутых контактах выключателя вал шагового двигателя равномерно поворачивается на 180° по часовой стрелке, а затем таким же образом на 180° против часовой стрелки. Эта процедура повторяется многократно. Поворот в одну сторону производится за 2 сек. Как управлять шаговым двигателем Прежде чем перейти непосредственно к составлению программы управления шаговым двигателем, давайте уточним, чем, собственно, мы собираемся управлять. Внешний вид шагового двигателя с блоком управления показан на Рис. 7.25. Шаговый двигатель работает только в паре с блоком управления, на который необходимо подать напряжение питания двигателя (например, 15 В), питание схемы управления (5 В), управляющие импульсы и сигнал, задающий направление вращения. Амплитуда управляющих импульсов и сигнала, задающего направление вращения, хорошо согласуется с уровнями сигналов TTL. Поэтому их можно сформировать на выходах порта вывода микрокомпьютера я использовать для передачи непосредственно в блок управления шаговым двигателем. Эти 2 сигнала подаются с микрокомпьютера Напряжение питания двигателя Напряжение питания блока управления Импульсы управления Сигнал направления вращения Технические данные Напряжение питания Потребляемый ток в импульсе Напряжение питания схемы управления Угол поворота вала на 1 импульс Частота импульсов управления Длительность импульса управления Длительность фронта импульса управления Уровни сигнала управления 60 В (max) 4.5 A (max) 5В 1.8° 0...300Гц 3 мкс (min) 2 мкс (max) ТТЛ Рис. 7.25. Шаговый двигатель и блок управления Согласно техническим данным двигателя, представленного на Рис. 7.25, при подаче одного импульса управления его вал поворачивается на угол 1.8°. Следовательно, полный оборот вала (360°) осуществляется в результате воздействия 200 таких импульсов. Частота импульсов управления для двигателей данного типа не должна превышать 300 Гц. Предположим, требуется обеспечить поворот вала двигателя на 180° примерно за 2 с. Так как для поворота вала на 180° требуется подать 100 импульсов управления, их частота должна быть приблизительно равна 50 Гц. Завод-изготовитель гарантирует стабильность работы двигателя, если длительность импульса управления составляет не менее 3 мкс. Шаговый двигатель данного типа совершает один шаг поворота вала по отрицательному (спадающему) фронту импульсов управления. Схема подключения шагового двигателя и кнопки включения к портам ввода-вывода показана на Рис. 7.26. Составим программу Адрес порта ОАОН о ра О. о 1 +5 В Кнопка запуска двигателя Адрес порта 0а1н Do D, d о pa pa В. о Е Сигнал направления вращения управления Шаговый двигатель Импульсы управления Рис. 7.26. Конфигурация портов ввода-вывода таким образом, чтобы сигнал направления вращения подавался с нулевого разряда порта вывода, а импульсы управления - с первого разряда этого порта. Импульсы управления Для того чтобы за 2 с вал двигателя повернулся на 180°, нужно, чтобы за это время было подано 100 управляющих импульсов. То есть период следования импульсов должен быть равен 20 мс. На Рис. 7.27 показана временная диаграмма сигнала, который нужно подать на блок управления шаговым двигателем. Длительность импульса управления выбрана равной 1 мс, что значительно превышает минимально допустимое значение этого параметра (3 мкс). Таким образом, чтобы программно реализовать эту последовательность импульсов, нужно в первом разряде порта вывода в течение 1 мс сохранять состояние логической «1», а затем в течение 19 мс - состояние «0». Эту последовательность требуется повторить 100 раз. Описание программы Будем считать прямым такое направление вращения двигателя* когда на блок управления с выхода 1о порта вывода подается сигнал «0». Соответственно при подаче сигнала «1» будет происходить об- Такую последовательность импульсов должен сформировать микрокомпьютер Импульсы управления ВЫСОКИЙ («1») НИЗКИЙ («0») Период импульса
-- Время Если НЮ таких импульсов подать на блок управления, то двигатель повернется на 180 за 2 с Рис. 7.27. Временная диаграмма сигнала управления шаговым двигателем ратное вращение. Внимательно изучив схему алгоритма решения данной задачи, представленную на Рис. 7.28, несложно понять назначение ее блоков, которые обозначают соответствующую последовательность операций, необходимую для выполнения задачи. Теперь, чтобы понять, как работает программа, сравним текст программы со схемой алгоритма. Команды программы, соответствующие блокам 1 и 2 схемы алгоритма, мы уже разбирали ранее, поэтому не будем останавливаться на них. Блок 3: число 100 (64Н), равное количеству импульсов, которые нужно подать на блок управления, чтобы повернуть вал двигателя на 180°, загружается в регистр В. Блок 4: команда «OR 02Н» поразрядно выполняет логическую операцию «ИЛИ» с содержимым регистра А и двоичным числом 00000010 (02Н), после чего второй разряд числа, представляющего результат логического сложения (он находится в регистре А), устанавливается в «1» (операция установки разряда, см. Рис. 3.9). Блок 5: 8ьШолняется цикл процедуры задержки (1 мс). Так как время за-еРжки сравнительно невелико, эта процедура организована с по-°Щью оператора DJNZ. Для отсчета времени используется реестр В, поэтому, чтобы сохранить содержимое этого регистра 0 ... 24 25 26 27 28 29 30 ... 39
|