Консультация № 194227
18.12.2018, 11:53
0.00 руб.
0 3 0
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Есть схема с энкодером.Есть примерный код динамической индикации,который просто отсчитывает от 0 до 999.Как сделать так,чтобы показания энкодера показывались на индикаторе?а также,чтобы в индикаторе высвечивался минус,когда энкодер идет в реверс.
PIC 16f877,схема в протеусе.
Нужно хотя бы общие сведения что куда забрасывать в какие порты,из каких портов или регистров и т.п.

Обсуждение

давно
Посетитель
402525
17
18.12.2018, 12:02
общий
Упс,немного не доконченную схему скинул, порты индикатора 1.2.3.4 выведены к ножкам ПОРТА С(это те что посередине)
давно
Посетитель
7438
7205
18.12.2018, 12:51
общий
18.12.2018, 12:56
Адресаты:
энкодер не дает показаний, а только направление. Как в компьютерной мыши, кстати.
Надо хранить предыдущее состояние, сравнивать с текущим и делать вывод.
Могу привести подпрограммку на AVR (с PIC-ами не хочу сейчас связываться).
Если хотите разобраться - разберетесь...
Энкодер на портах PORTB0 и PORTB1
data и temp - регистры
[code lang=asm]encoder_scan:
in data, PORTB ;читаем порт
andi data, 3 ;выделяем два бита
lds temp, encoder_state ;читаем из памяти старое состояние
sts encoder_state, data ;новое сохраняем, как старое
tst temp ;проверяем старое состояние
breq state_0
cpi temp, 1
breq state_1
cpi temp, 2
breq state_2
state_3: ; старое состояние - 3
cpi data, 1 ;новое = 1
breq encoder_inc ;на увеличение
cpi data, 2 ;новое = 2
breq encoder_dec ;на уменьшение
ret
state_2: ;далее - аналогично
cpi data, 3
breq encoder_inc
cpi data, 0
breq encoder_dec
ret
state_1:
cpi data, 0
breq encoder_inc
cpi data, 3
breq encoder_dec
ret
state_0:
cpi data, 2
breq encoder_inc
cpi data, 1
breq encoder_dec
ret
[/code]
encoder_inc и encoder_dec увеличивают и уменьшают значение байта в памяти от 0 до 0xff, в зависимости от направления.
Вот это байт потом надо показать на индикаторе
Как вариант, число считать знаковым, тогда значение величины будет от -128 до +127
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
18.12.2018, 13:03
общий
Адресаты:
Кстати, Вы в курсе, что числа могут быть знаковыми, беззнаковыми.
Как работать с одними и с другими?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа