Автор: Пользователь скрыл имя, 11 Сентября 2011 в 13:31, курсовая работа
Многие прикладные устройства требуют управления работы микродвигателя. Маленькие габариты и более высокая надежность создает потребность в более интегрированных решениях схемы управления. В прошлом, контроллер управления режимами работы микродвигателя включал микроконтроллер и много дискретных компонентов. Теперь, развитая технология уменьшает количество элементов только до двух чипов: микроконтроллер управления и интегрированный драйвер.
ld t1,pwm ; загрузка таймера с ШИМ
ld tmr,#8fh ; загрузка и допуск t0, t1
ld irq,#80h ; повышение на irq2, при падении на irq0
delay_loop: ei ; допуск прерываниям
jr delay_loop ; ждет прерывания
;-----------------------------
------------------------------ -----------------
; OVER-CURRENT ПРЕРЫВАЕТ ПРОГРАММУ
;-----------------------------
------------------------------ -----------------
over_current: or p3,#brakes_on ; установка ТОРМОЗА, высокий уровень
ld STATE,#stopped ;
ld p2,^C #stop_led ;
ld imr,#irq4 ;
iret ;
;-----------------------------
------------------------------ -----------------
; Т0 ПРЕРЫВАНИЕ ПРОГРАММЫ ПРЕРЫВАНИЯ
; Эта подпрограмма выполняет
следующие функции:
; 1) Установка выборки для ШИМ в 2000 Hz
; 2) Тест для замыкания клавиши и переключателя направления
;-----------------------------
------------------------------ -----------------0000005d
sample: cp STATE,#stopped ; проверка остановки
jr ne,test_start_up;
tm p2,#dir_sw ; проверка переключателя направления
jr z,ccw ; если низкbq, то Reverse
or p3,#10h ; если высокbq, то Forward
ld temp_led,^C #forward_led
jr continue ;
ccw: and p3,^C #10h ; выбор низкого бита направления
ld temp_led,^C #reverse_led
test_start_up: cp STATE,#start_up ;
jr ne,continue ;
decw delay ;
jr nz,continue ;
ld imr,#irq4+irq2+irq0;
ld STATE,#running ;
continue: or p3,#40h ; ШИМ=мах
ld tmr,#8fh ; загрузка и допуск таймера
key_scan: tcm p2,#switches ; любые нажатие переключателя
jr z,exit ; нет, выход
ld temp_1,p2 ; данные переключателя
ld count,#3 ; счетчик загрузки
key_loop: inc key_cnt ;
scf ; установка флажка переноса
rrc temp_1 ; вращение вправо
jr c,no_keys ; любой перенос
cp key_temp,key_cnt ; та же самая клавиша
jr ne,load_keys ; не тота клавиша
inc bounce ; счетчик приращений
cp bounce,#80h ; = 127
jr ult,load_keys ; если меньше, нет действий
cp key_cnt,#increase ; клавиша увеличения
jr ne,try_decrease ; нет, клавишу уменьшения
cp pwm,#max ; ШИМ=min
jr eq,exit ; да, не увеличить
inc pwm ; увеличьте ШИМ (увеличение скорости)
ld t1,pwm ;
jr exit ; подпрограмма выхода
try_decrease: cp key_cnt,#decrease ; клавиша уменьшения
jr ne,try_brake ; нет, клавиша тормоза
cp pwm,#min ; проверка ШИМ=min
jr ule,exit ; если да, не делайть декремент
dec pwm ; декремент ШИМ (уменьшение скорости)
ld t1,pwm ; загрузка нового значения ШИМ
jr exit ; нет, выход
try_brake: cp key_cnt,#brake ; кнопка тормоза
jr ne,exit ; выход, если нет
cp make,#0ffh ; кнопка нажата
jr eq,exit_1 ; да - никаких действий
xor p3,#20h ; переключение бита тормоза
ld make,#0ffh ; установка флажка
tm p3,#20h ; тормоз
jr nz,test_dir ; проверка направления
ld p2,temp_led ; загрузка направления Forward
ld STATE,#start_up ; вращение
jr exit_1 ; выход
test_dir: ld STATE,#stopped ;
ld imr,#irq4 ;
ld temp_led,p2 ; данные на светодиод
ld p2,^C #stop_led ; включить красный
jr exit_1 ;
load_keys: ld key_temp,key_cnt ; данные клавиши
clr key_cnt ; очистка регистр клавиши
iret ; возвратит прерывания
no_keys: djnz count,key_loop ; проверка всех клавиш
exit: clr make ;
exit_1: clr bounce ; очистка регистраторов клавиш
clr key_cnt ;
clr key_temp ;
clr count ;
no_irq: iret ; возврат из прерывания
.end
Библиографический список
- Микросхемы для зарубежной бытовой аппаратуы. Справочное пособие, Колесников В.А.СПб:Лань, 1998-236с.
- Интегральные микросхемы. Перспективные разработки. М: ДОДЭКА, 1999-96с.
Информация о работе Разработка контроллера управления режимами работы микродвигателя