Директива SET (ассемблер)
Добавлено: Пн сен 14, 2015 11:11:27
Помогите пожалуйста разобраться! Читаю по мануалам, вроде как можно переназначать значения директивы .SET по ходу программы, но на практике компилятор вычисляет как-то непонятно для меня, цифры как будто с потолка берет...
Алгоритм следующий:
Суть в следующем, назначаю постоянную величину тактов в микросекунду, и перед каждой задержкой вставляю разные значения .set us. Компилятор должен по смыслу обсчитать значения и подставить необходимые в программу, но на деле получается белиберда, результат как будто с потолка берется. Можно таким образом использовать директиву .set вообще?
Пробовал в AVR Studio 4.19 и 6.2
Алгоритм следующий:
Код: Выделить всё
.set tack=4 (число тактов за микросекунду)
.set us=10 (задержка в микросекундах)
RCALL Delay (подпрограмма задержки)
Delay:
.set timer=tack*us/5 (вычисляю кол-во проходов подпрограммы задержки, чтобы получилось необходимое кол-во микросекунд)
LDI temp,LOW(timer)
LDI temp1,HIGH(timer)
LDI temp2,BYTE3(timer) (загружаю получившееся в результате вычислений значение)
Delay_start:
SUBI temp,1
SBCI temp1,0
SBCI temp2,0
BRCC Delay_start
RETПробовал в AVR Studio 4.19 и 6.2