Микроконтроллер РIС16F84 имеет 13 линий ввода/вывода, разделенных на два порта. Регистpы PORTA и PORTB соответствуют двум поpтам ввода/вывода, имеющимся у PIC16F84. Поpт A имеет 5 линий ввода/вывода, отображенных на адресном пространстве памяти данных по адресу Н‘05’. Остальные 8 линий относятся к порту В, размещенному по адресу Н’06’.
Значения, записанные в эти регистры, появляются на выводах микроконтроллера RA4-RA0 и RB7-RB0 соответственно. Линия порта может быть запрограммирована как на вход, так и на выход. Для этого предназначены регистры направления данных TRISA и TRISB соответственно, расположенные по адресам Н‘85’ и Н‘86’.
Название TRIS образовано от слова TRIState. Эти регистры находятся на page 1, поэтому они настраиваются в начале программы и впоследствии не изменяются.
Пpи чтении поpта считывается непосpедственное состояние вывода, пpи записи в поpт запись пpоисходит в буфеpный pегистp.
С параллельными портами ввода/вывода связаны следующие регистры:
PORTA
В этом регистре задействовано 5 младших битов, подключенных к выводам RA4-RA0 микроконтроллера. Вывод RA4 является входом таймера 0.
TRISA
Этот регистр предназначен для конфигурации линий порта А в качестве входов/выходов. Задание 1 в pазpядеpегистpа TRISА пpогpаммиpует соответствующий pазpядпоpта как вход, а задание 0 – как выход.
PORTB
Двунаправленный 8 битный порт ввода/вывода подключен к выводам RB7-RB0 микроконтроллера. Вывод RB0 используется также в качестве входа аппаратного прерывания.
TRISB
Этот регистр предназначен для конфигурации линий порта в качестве входов/выходов аналогично регистру. TRISA.
Пример. Сконфигурировать младшие разряды PORTВ в качестве входов, а старшие в качестве выходов.
BSF STATUS,5;Установка 5 бита в регистре STATUS
;позволяет обратиться к page 1 памяти данных
MOVLW В’00001111’;Загружаем константу В’00001111’
MOVWF TRISB;;и копируем в регистр TRISB
BCF STATUS; сбрасываем RP0 для возврата на page 0
ПРОГРАММА SMOTOR_1: ФОРМИРОВАНИЕ УПРАВЛЯЮЩИХ СИГНАЛОВ
В двигателе имеются четыре обмотки A, B, C и D которые могут возбуждаться поодиночке или попарно для формирования магнитного поля в одном из восьми направлений с шагом 450 Рис.7.4. Так обмотка B формирует поле в направлении север, C+В - северо-восток, C- восток и т.д. Соответственно ротор вращается вслед за изменением направления магнитного поля, при условии, что конструкция двигателя обеспечивает стабилизацию положения ротора при разгоне и торможении.
ПРОГРАММА формирует управляющие работой шагового двигателя статические сигналы в виде лог.1. и лог.0, которые поочередно подаются в управляющие обмотки двигателя. На Рис.1. изображен принцип работы шагового двигателя.
В двигателе имеются четыре обмотки A, B, C и D которые могут возбуждаться поодиночке или попарно для формирования магнитного поля в одном из восьми направлений с шагом 450 . Так обмотка А формирует поле в направлении север, А+В - северо-восток, В- восток и т.д.
Соответственно ротор вращается вслед за изменением направления магнитного поля, при условии, что конструкция двигателя обеспечивает стабилизацию положения ротора при разгоне и торможении. Коды управления обмотками шагового двигателя для всех восьми направлений магнитного поля приведены в табл. Рис. 2
Рис. 1. Формирование магнитного поля |
Рис. 2. Коды управления обмотками шагового двигателя
`Программа состоит из трех частей:
1. START; Инициализация микроконтроллера, которая настраивает на выход RB[3:0]
Первая команда BSF STATUS,RP0 осуществляет переход в 1-й банк: устанавливаем бит RP0 (STATUS<5>). Так как направления работы выводов порта В на выход, то сбрасываем младшие биты регистра TRISB: MOVLW B’11110000’ и MOVWF TRISB. Дальнейшие манипуляции будут производиться в нулевом банке, поэтому сбрасываем бит RP0 (STATUS<5>): BCF STATUS,RP0 и возвращаемся в нулевой банк.
2. S_COD; Загрузка кодов управления обмотками шагового двигателя в память данных микроконтроллера
3. LOOP; Вывод управляющегокода в порт В
Последовательность управляющих импульсов формируется командами копирования управляющих кодов из памяти данных командой MOVFW с последующим выводом в порт MOVWF PORTB (обмотки А, A+B, В, B+С, C, C+D, D, D+A).
+5В
R1 ZQ1 C1 C2 |
Рис. 7.4. Управление работой шагового двигателя
3. Задание 1
3.1. Загрузите программу MOTOR в редактор исходного кода.
3.2. Загрузите машинные коды в оперативную память эмулятора: кнопка [Tools/Assembler and Load], вокне редактора исходного кода Assembler Motor1.asm
3.3. К основному окну симулятора PIC Simulator IDE добавьте окна [Tools/Breakpoints Manager] и [Tools/Stepper Motor Phase Simulation], и установив пошаговый режим работы симулятора, выполните программу.
4. ЗАДАНИЕ 2
4.1. Внесите изменения в программу MOTOR (MOTOR_1): организуйте вращение двигателя с помощью косвенной адресации.
5. ЗАДАНИЕ 3
5.1. Внесите изменения в программу MOTOR_1 (MOTOR_2):
· для подключения шагового двигателя выберите порт А RA[1:4]
· организуйте вращение двигателя с шагом 900 против часовой стрелки.
6. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Оформите программу формирования управляющих сигналов в виде подпрограммы.
2. Как программно организовать вращение двигателя с разной частотой?