roboforum.ru

Технический форум по робототехнике.

Реверсивный счетчик Attiny-2313

Реверсивный счетчик Attiny-2313

arm-17 » 22 мар 2014, 15:09

Подскажите, как Сравнить на макс. и мин. значение в двоичном счетчике в самом инкременте декременте счетчика?



Forward:
cbr flags, (1__EventForward);сбросить флаг,обработали событие
;перед adiw надо сделать проверку числа на максимальное значение (0xffff), и если равно макс. значению то пропустить инкремент (adiw)

adiw CountHigh:CountLow,1 ;инкремент 16-ти битного счетчика

Покажите пример на ASM. пожалуйста. Очень надо.

Re: Реверсивный счетчик Attiny-2313

Radist » 23 мар 2014, 21:23

А в чем проблема? Как сравнивать 16 битные пары регистров? Сперва командой CP сравнить младшие, затем командой CPC сравнить старшие, затем переход по условию BRCC, BRCS, BRNE, BREQ.

Re: Реверсивный счетчик Attiny-2313

arm-17 » 25 мар 2014, 09:41

Это все понятно.Вот моя ограничевалка.

;*******************ограничевалка*****************************************

ldi temp1,0x36 ;6

cp temp1,tASCII4

breq equal

rjmp end_int



equal:

ldi temp1,0x35 ;5

cp temp1,tASCII3

breq equal_1

rjmp end_int



equal_1:

ldi temp1,0x35 ;5

cp temp1,tASCII2

breq equal_2

rjmp end_int



equal_2:

ldi temp1,0x33 ;3

cp temp1,cnt16a

breq equal_3

rjmp end_int



equal_3:

ldi temp1,0x35 ;5

cp temp1,tASCII2

breq equal_4



end_int:

ret

;**********************************************************************


Она работает,но мне сказали что,Сравнения на макс. и мин. значение надо делать с двоичным счетчиком получается быстрее.Нужна скорость счета. Напишите пример пожалуйста,а то я что-то ни как не пойму.


cron
Rambler\'s Top100 Mail.ru counter