Код: Выделить всё
ldi TMP_Y,1<<TOV0 ; здесь в регистр записыветься
out TIFR0,TMP_Y ; а здесь не как не перемещается и через sts тож не в какуюзы: Даташит блин не читаем нифига.....
Код: Выделить всё
ldi TMP_Y,1<<TOV0 ; здесь в регистр записыветься
out TIFR0,TMP_Y ; а здесь не как не перемещается и через sts тож не в какуюКод: Выделить всё
1) metka: sbis porta,2 ;не рабочий вариант
rjmp metka
....
2) metka: in temp,pina ;рабочий вариант
sbrs temp,2
rjmp metka
....
Код: Выделить всё
ldi temp,0
sts EICRA,temp
Загрузить в пару регистров 16 разрядоное число легко, напримерvistador писал(а):уж не знаю ,можно ли тут задавать глупые вопросы начинающим.... Как организовать перенос из одного в другой ?так чтоб обращаться с парой как с 16 разрядным регистром...
нельзя ли привести коротенький пример?
Код: Выделить всё
ldi r16, low(int16bit);
ldi r17, high(int16bit); где int16bit - 16-ти битная константа Код: Выделить всё
sbiw r16, 1Код: Выделить всё
rol r16
rol r17а как записать например число AF2D ? если можно пример приведитеsmac писал(а):.Код: Выделить всё
ldi r16, low(int16bit); ldi r17, high(int16bit); где int16bit - 16-ти битная константа
В этом случае в нулевом бите R16 будет мусор (точнее, содержимое переноса, зависящее от предыдущих команд). Лучше так:smac писал(а):ROR,ROL используются также как и с 8 ми битными числами, только приходится делать две команды напримет сдвиг влево через переносв итоге сдвинет 16 разрядное число через перенос влево на 1 разряд.Код: Выделить всё
rol r16 rol r17
Код: Выделить всё
lsl r16
rol r17vistador писал(а): а как записать например число AF2D ? если можно пример приведите
Код: Выделить всё
ldi r16, low(0xAF2D)
ldi r17, high(0xAF2D)Для копирование пары регистров есть команда MOVW.vistador писал(а):Как организовать перенос из одного в другой ?так чтоб обращаться с парой как с 16 разрядным регистром...
Код: Выделить всё
movw r30, r24 ;копирование пары r24:r25 в пару r30:r31YurkaM писал(а): ...Лучше так:Код: Выделить всё
lsl r16 rol r17
Код: Выделить всё
rol r16
rol r17сдвиг в одну сторону, просто lsl - логический сдвиг влево (в нулевой бит регистра задвигается 0, седьмой бит регистра выдвигается в перенос), а rol - сдвиг через перенос (флаг переноса задвигается в 0 бит, 7 бит выдвигается во флаг переноса).vistador писал(а):спасибо..
а как же тогда - получается что сдвиг в разные стороны? ведь я число потом собираюсь выводить последовательно на порт ...или я чтото не так понял?
Согласенsmac писал(а):Вы привели сдвиг влево, который эквивалентен умножению на 2, а с помощью двух rol можно вдвинуть бит переноса в 16 битное слово, так что команда тоже полезная, я например так в одном из последовательных приемников делал.
+ Много.YurkaM писал(а): Ну и похоже, vistadorу надо хотя бы заглянуть в список команд AVR...
а на это АВР студия ругается .....как же записать то все такии?YurkaM писал(а):vistador писал(а): а как записать например число AF2D ? если можно пример приведитеКод: Выделить всё
ldi r16, low(0xAF2D) ldi r17, high(0xAF2D)
Код: Выделить всё
ldi r16, low($AF2D)
ldi r17, high($AF2D)тем более что даже в инет выходить не надо - отличнейший хелп по всем командам встроен в AVR Studio!smac писал(а):такое ощущение, что многим легче спросить и потом день ждать когда ответят, чем за 5 минут найти и разобраться в команде используя, например AVR Instruction Set - http://www.atmel.com/atmel/acrobat/doc0856.pdf.