Страница 1 из 1
Проблема с COUNT
Добавлено: Чт окт 25, 2012 23:33:05
ILYAUL
Код: Выделить всё
ldi count,8
sei
;************************************************
;* ;;/ Send command SEARCH and two READ ;;* *
;************************************************
Wait_Bit_SEND:
sbrs Flags,fl_Bit_SEND
rjmp Wait_Bit_SEND
cbr Flags,1<<fl_Bit_SEND
dec count
breq SEND_twoREAD_BIT
outi UCSRB,1<<RXCIE|1<<TXCIE|1<<RXEN|1<<TXEN
rjmp Wait_Bit_SEND
SEND_twoREAD_BIT:
outi UCSRA,1<<TXC
subi count,-2
SEND_READ_BIT:
outi UDR,READDS18
WAIT_READ:
in temp,UCSRA
sbrs temp,RXC
rjmp WAIT_READ
in temp,UDR
dec count
breq SEARCH_VALUE_BIT
mov temp1,temp
rjmp SEND_READ_BIT
;************************************************
;* ;;/ FIND NUMBER ;;* *
;************************************************
SEARCH_VALUE_BIT:
cpse temp1,temp
rjmp Not_Conflict
cpse TEMP1,ZERO
rjmp ERROR_SENSOR
rjmp Found_Conflict
Not_Conflict:
cpse temp1,zero
sbr Shift_REG,1<<MSB_REG
lsr Shift_REG
out UDR,temp1
inc count
sbrc count,Value_8
st -X,Shift_REG
inc Bit_Number
cpi Bit_Number,64
brne SEND_twoREAD_BIT
Что бы не использовать два регистра, использую count сразу для двух циклов. Но вот после этого
мне бы его обнулить. Никак не придумаю , как. Help me , please
Re: Проблема с COUNT
Добавлено: Пт окт 26, 2012 09:07:35
Gudd-Head
CLR не катит?
Re: Проблема с COUNT
Добавлено: Пт окт 26, 2012 09:29:42
ILYAUL
Катит

, так же eor , andi с нулем , subi из count 8, но вот куда бы их впихнуть. Так не хочется разновидности br** использовать
Re: Проблема с COUNT
Добавлено: Пт окт 26, 2012 12:16:37
Kavka
Т.е. тебе места не хватает на месте "st -X,Shift_REG"? Сделай rjmp куда-нибудь, скажем перед Not_Conflict , сделай что надо там и rjmp назад.

Или дважды sbrc count,Value_8

Re: Проблема с COUNT
Добавлено: Пт окт 26, 2012 13:31:05
ILYAUL
Мне не хватает "ширины шага" команды SBRC . Надо записать в SRAM и обнулить count . Shift_REG - может втолкнуть в себя только 8-бит , а надо же 64. Ставить 8 регистров - какое-то гадостное душевное чувство не позволяет. А два rjmp для одного действия - перебор. Похоже придётся всё таки к BR** " обращаться".
Re: Проблема с COUNT
Добавлено: Пт окт 26, 2012 13:47:17
avreal
Kavka писал(а):
Или дважды sbrc count,Value_8

+1
Я не стесняюсь ставить две skip-команды с одинаковым условием подряд (не по периферии, конечно

)
Код: Выделить всё
sbrc count,Value_8
st -X,Shift_REG
sbrc count,Value_8
clr count
просто чтобы метку не ставить, глаз об неё не тормозить потом (gnu as имеет локальные метки, так что выдумывать не надо, но чтобы не рябило).
По сравнению с
Код: Выделить всё
sbrc reg, bit
rjmp 1f
command1
command2
1:
вариант
Код: Выделить всё
sbrc reg, bit
command1
sbrc reg, bit
command2
по размеру кода не отличается, по времени выполнения на один такт больше в случае невыполнения условия и одинаково в случае выполнения.
Re: Проблема с COUNT
Добавлено: Пт окт 26, 2012 14:20:05
ILYAUL
Kavka , avreal СПАСИБО!!! Пойду этим путём.
Кстати avreal из Ваших P.S пора уже сбоник издавать
