реклама на сайте
подробности

 
 
> Как читать отдельные биты регистров общего назначения -ассемблер., Непонятно.
serj32
сообщение Mar 30 2013, 17:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345



Здравствуйте.Вот если полностью "закинуть" ну например регистр R19 в регистр данных PORTB-здесь понятно.
out PORTB,R19
A как мне переместить ну скажем 2 бит регистра R19 в PORTB на 2 бит.
Это новерно будет так:
out PD2,R19.2
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mempfis_
сообщение Mar 30 2013, 17:43
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(serj32 @ Mar 30 2013, 21:24) *
Здравствуйте.Вот если полностью "закинуть" ну например регистр R19 в регистр данных PORTB-здесь понятно.
out PORTB,R19
A как мне переместить ну скажем 2 бит регистра R19 в PORTB на 2 бит.
Это новерно будет так:
out PD2,R19.2
Спасибо.


Имеется ввиду переместить в PORTB состояние бита 2 регистра r19?


in r16, PORTB
mov r17, r19
andi r16, ~(1<<2)
andi r17, (1<<2)
or r16, r17
out PORTB, r16

Словами. Копируем состояние порта в r16. Копируем r19 в r17 чтобы не потерять r19 (можно не делать если значение r19 далее не потребуется). Зануляем нужный бит не трогая остальные. В r17 зануляем все биты кроме требуемого. Выполняем or между r16 и r17. состояние бита из r17 будет скопировано в r16. Отправляем состояние в порт.

Я уже подзабыл ассемблер AVR. Там есть возможность напрямую работать с битами регистров а также команды проверки-пропуска SBRC/SBRS.

sbrs r19, 2
rjump clear
sbi PORTB, 2
rjump next
clear:
cbi PORTB, 2
next:

Если бит 2 регистра r19 установлен то пропуск следующей интсрукции и на установка бита в PORTB с прыжком на метку next, иначе прыжок на метку clear

http://www.atmel.com/Images/doc1022.pdf
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 17:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01339 секунд с 7
ELECTRONIX ©2004-2016