Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
Bykky
0 / 0 / 0
Регистрация: 19.08.2012
Сообщений: 64
1

Последовательное сравнение

12.06.2013, 14:17. Просмотров 4572. Ответов 8
Метки нет (Все метки)

Народ, помогите с решением такой задачки. У меня есть 10 чисел в диапазоне от 1000 до 6000 (по возрастанию), которые перед операцией я заношу в два РОН.
И есть контрольное число, которое тоже храниться в 2 РОН.
Как на ассемблере!! (AVR Studyo 4) организовать ветвление. Т.е. я сравниваю мое контрольное число с моими 10 поочередно. И в зависимости от того, в какой промежуток оно попало выполнять определенную операцию. Были бы числа маленькие вроде не сложно, но как такую вещь сделать с двумя восьмиразрядными чет ума не приложу.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 14:17
Ответы с готовыми решениями:

Последовательное зажигание светодиодов
Собственно задание: при включении МК светодиоды не горят, через 2 с загораются 1-й, затем...

Последовательное цикличное зажигание светодиодов
Помогите чайнику написать прогу плиз.Последовательное цикличное зажигание светодиодов до номера...

Последовательное включение сегментов 7-с индикатора ATmega8515
Здравствуйте, Возможно ли последовательно переключать сегменты семисегментного индикатора так...

Последовательное плавное управление яркостью светодиодов
Нужно написать программку на Atmega48 в CodevisionAVR Используя PORTD 0 1 2 С начало загорается...

8
OtixPM
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
12.06.2013, 15:08 2
Цитата Сообщение от Bykky
Народ, помогите с решением такой задачки. У меня есть 10 чисел в диапазоне от 1000 до 6000 (по возрастанию), которые перед операцией я заношу в два РОН.
И есть контрольное число, которое тоже храниться в 2 РОН.
Как на ассемблере!! (AVR Studyo 4) организовать ветвление. Т.е. я сравниваю мое контрольное число с моими 10 поочередно. И в зависимости от того, в какой промежуток оно попало выполнять определенную операцию. Были бы числа маленькие вроде не сложно, но как такую вещь сделать с двумя восьмиразрядными чет ума не приложу.
Сравнение 16-тибитных чисел (предполагаю, что они у Вас БЕЗзнаковые): младшие части сравниваются командой "cp R-первоечисло-младшийбайт, R-второечисло-младшийбайт", сразу после этого старшие части сравниваются командой "cpc R-первоечисло-старшийбайт, R-второечисло-старшийбайт".
0
Bykky
0 / 0 / 0
Регистрация: 19.08.2012
Сообщений: 64
12.06.2013, 15:21 3
А почему сравнение начали с младших байтов? По идее если сначала сравнить старшие и результат будет неудовлетворительным, какой смысл сравнивать младшие?
0
somstomt
12.06.2013, 15:22 4
В аппноте есть примеры применения команд:
Код
Example:
; Compare r3:r2 wyth r1:r0
cp r2,r0 ; Compare low byte
cpc r3,r1 ; Compare high byte
brne noteq ; Branch if not equal
...
noteq: nop ; Branch destination (do nothing)
в документе 8-bit Instruction Set

UPD: OtyxPM, вы меня опередили
Bykky
0 / 0 / 0
Регистрация: 19.08.2012
Сообщений: 64
12.06.2013, 15:29 5
Понял, спасибо.
0
Bykky
0 / 0 / 0
Регистрация: 19.08.2012
Сообщений: 64
12.06.2013, 16:13 6
Cпрошу тут дабы не плодить маленькие темы.

А как сложить 2 восьмиразрядных регистра с одним. По идее можно
Код
ADD YL,R2
CLR R1
ADC YH,R1
чтобы добиться сложения флага переноса, но какая-то корявая чтоли конструкция, ведь R1 вроде как вообще не при делах. Воощем как можно красиво сделать.
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
12.06.2013, 16:21 7
некоторые компиляторы 1 раз в начале делают clr r1 и больше r1 не трогают. и тогда этими двумя командами и можно все сделать.
0
hixir
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
12.06.2013, 18:31 8
Цитата Сообщение от Ymk
некоторые компиляторы 1 раз в начале делают clr r1 и больше r1 не трогают. и тогда этими двумя командами и можно все сделать.
некоторые умники наверное не знают что транслятор с ассемблера называется ассемблер но никак не компилятор
0
hixir
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
13.06.2013, 13:03 9
Цитата Сообщение от Bykky
А почему сравнение начали с младших байтов?
Ревич «Практическое программирование Микроконтроллеров AVR на языке ассемблера»
на с.119 рассматривается пример сравнения многобайтовых чисел.
0
13.06.2013, 13:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 13:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Последовательное гашение светодиодов на окружности с интервалом
Помогите пожалуйста! Разработать программу, осуществляющую последовательное гашение светодиодов на...

Последовательное зажигание светодиодов по кнопке (ATtiny2313, Cи)
Здравствуйте.Есть такая проблема.Написал код для подпрограммы последовательного зажигания...

Последовательное зажигание светодиодов по кнопке (ATmega8515, ASM)
Добрый день. Требуется помощь для написания программы на ассемблере под AVR ATmega8515...

Последовательное включение 2х БП
Вот у меня есть старый, но рабочий БП. И хотелось бы узнать можно ли объединить последовательно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.