Показать сообщение отдельно
Старый 09.03.2016, 12:58   #5 (permalink)
sergey303
Новичок
 
Регистрация: 09.03.2016
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вот код
$regfile = "2313def.dat"
$crystal = 4000000


Dim S As Byte 'эта переменная следит за номером шага двигателя

S = 1

On Int0 Knopka1 'даем имена обработчикам внешних прерываний
On Int1 Knopka2

Config Portb = Output 'конфигурируем порт на выход
Config Portd.5 = Output 'конфигурируем ногу для подключения светодиода
Led Alias Portd.5 'присваиваем имя LED выводу 5 порта D

'прерывания будут генерироваться пока на ноге низкий уровень, то есть пока кнопка будет нажата
Config Int0 = Low Level
Config Int1 = Low Level

'разрешаем прерывания
Enable Interrupts
Enable Int0
Enable Int1

'основной цикл программы, просто ждем прерывания
Do

Loop



Knopka1: 'обработчик прерывания первой кнопки

Led = 1 'зажигаем светодиод

Incr S 'увеличим номер шага

If S = 9 Then 'максимально возможный номер шага = 8
S = 1
End If

Select Case S 'выбираем какие обмотки включать в зависимости от номера шага

Case 1 : Portb = &B00000001
Case 2 : Portb = &B00000011
Case 3 : Portb = &B00000010
Case 4 : Portb = &B00000110
Case 5 : Portb = &B00000100
Case 6 : Portb = &B00001100
Case 7 : Portb = &B00001000
Case 8 : Portb = &B00001001

End Select

Waitus 1000 'задержка между шагами

Led = 0 'гасим светодиод

Return



Knopka2: 'обработчик прерывания второй кнопки

Led = 1 'зажигаем светодиод

Decr S 'тут все тоже самое, только в обратном направлении

If S = 0 Then 'минимально возможный номер шага = 1
S = 8
End If

Select Case S

Case 1 : Portb = &B00000001
Case 2 : Portb = &B00000011
Case 3 : Portb = &B00000010
Case 4 : Portb = &B00000110
Case 5 : Portb = &B00000100
Case 6 : Portb = &B00001100
Case 7 : Portb = &B00001000
Case 8 : Portb = &B00001001

End Select

Waitus 1000

Led = 0 'гасим светодиод

Return

End
sergey303 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070