В статье "Энкодер и Bascom-AVR. Счетчик импульсов" для обнаружения вращения энкодера применяется этот код:
Код
Encod: ' тут узнаем в каком направлении вращают ручку энкодера
Waitms 2' ждем пока утихнет дребезг контактов
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда
Incr W ' инкременируем переменную (увеличиваем на 1)
Else ' в обратном случае
Decr W ' декрементируем переменную (уменьшаем на 1)
End If
Gifr = 64 ' сбрасываем регистр хранения прерывания INT0
Я использую вот этот и хочу спросить кто что думает ?
Код
'=========================================================
' АнтиДребезг!!!
Enc_0 = 0
Do
Incr Enc_0 : Reset Watchdog
If Pind.2 = 0 And Pind.0 = 1 Then : Incr Enc_1 : Exit Do : End If
If Pind.2 = 0 And Pind.0 = 0 Then : Incr Enc_2 : Exit Do : End If
Loop Until Enc_0 > 20000
Enc_0 = 0
Do
Incr Enc_0 : Reset Watchdog
If Pind.2 = 1 And Pind.0 = 0 Then : Incr Enc_1 : Exit Do : End If
If Pind.2 = 1 And Pind.0 = 1 Then : Incr Enc_2 : Exit Do : End If
Loop Until Enc_0 > 20000
'=========================================================
If Enc_1 > Enc_2 Then ' вращение в право
Elseif Enc_1 < Enc_2 Then ' вращение в лево Код
End If
Gifr = 64
Return
'=====================================================