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

 
 
 
Reply to this topicStart new topic
> Среднее значение 4х 8-битных регистров ?
GeorgyBey
сообщение Dec 18 2015, 11:55
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Приношу извинения если вопрос наивный, но для меня это хооби ...
8ми разрядный AVR, есть значения в 4х регистрах. Где их сложить, чтоб поделить на 4 и получить среднее значение.
В ассемблере.


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 18 2015, 12:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(GeorgyBey @ Dec 18 2015, 14:55) *
Где их сложить, чтоб поделить на 4 и получить среднее значение.

Сложить с помощью команд ADD и ADC и поместить результат в любые два регистра (конечно, не в те регистры, содержимое которых вы складываете). А потом поделить результат на 4, сдвинув его на два разряда вправо. Или я вопроса не понял ?

Вот пример из Атмеловской документации:

Код
; Example: Add R1:R0 to R3:R2
add r2,r0; Add low byte
adc r3,r1; Add with carry high byte
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Dec 18 2015, 13:45
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Спасибо! Т.е. никаких понятий "слово", как связанных двух регистрах, просто имеем "в уме" что сумма хранится в двух не связанных, независимых регистрах? Ну или СМЕЖНЫХ регистрах? А если слагаемое является однобайтным, то к нему искусственно цепляем нулевой старший байт.. так?

Сообщение отредактировал IgorKossak - Dec 18 2015, 19:59
Причина редактирования: бездумное цитирование


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 18 2015, 14:07
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Цитата(GeorgyBey @ Dec 18 2015, 16:45) *
...что сумма хранится в двух не связанных, независимых регистрах? Ну или СМЕЖНЫХ регистрах?

А если слагаемое является однобайтным, то к нему искусственно цепляем нулевой старший байт.. так?

Да
Да
При делении на 2 использовать команды ROR и LSR. С первой командой старшие байты, со второй - младшие. И так 2 раза (для деления на 4).
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Dec 18 2015, 16:01
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Спасибо еще раз! Я, правда, сделал "вручную" через "Т" - взял 0бит старшего (BST rX,0) сдвинул младший (LSR) и вставил в него 7й бит (BLD). Потом повторил с 1,битом старшего. Надеюсь это было "законно" sm.gif

Сообщение отредактировал IgorKossak - Dec 18 2015, 20:00
Причина редактирования: бездумное цитирование


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
zombi
сообщение Dec 18 2015, 16:17
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(GeorgyBey @ Dec 18 2015, 20:01) *
Спасибо еще раз! Я, правда, сделал "вручную" через "Т" - взял 0бит старшего (BST rX,0) сдвинул младший (LSR) и вставил в него 7й бит (BLD). Потом повторил с 1,битом старшего. Надеюсь это было "законно" sm.gif

Абсолютно законно.
Только на одну команду больше.
BST,LSR,BLD vs LSR,ROR
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 18 2015, 16:33
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(GeorgyBey @ Dec 18 2015, 19:01) *
Спасибо еще раз! Я, правда, сделал "вручную" через "Т" - взял 0бит старшего (BST rX,0) сдвинул младший (LSR) и вставил в него 7й бит (BLD). Потом повторил с 1,битом старшего. Надеюсь это было "законно" sm.gif

Си не думаете выучить ?
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Dec 18 2015, 19:42
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Я когда-то и Паскаль учил-применял, потом ТурбоПаскалем баловался... Так что с основами алгоритмического и объектно-ориентированного программирования знаком. Под С нет задач. Пока все эти "регистры" и скачущая по ним информация в голове укладывается, я ее "вижу", вполне хватает асемблера...
PS
А вот по ходу дела - как народ решает проблему БОЛЬШИХ временных промежутков? Так, чтоб проснуться раз в полчаса-час, проконтролировать ситуацию и опять в сон.. Только второе устройство для побудок? Не циклы же гонять...


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
Alex11
сообщение Dec 19 2015, 10:58
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Так таймер Вам в помощь. И далее по прерываниям от него еще один-два байта счетчика дополнительного. Просыпаетесь по таймеру, инкрементируете счетчик, сравниваете с требуемым пределом и либо дальше спать, либо работать.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th June 2025 - 11:56
Рейтинг@Mail.ru


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