Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 6
1

Загрузить регистр R17 числом 023h

12.01.2017, 18:57. Показов 3935. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто разбирается в микроконтроллерах AVR, помогите пожалуйста с задачей.
Надо на микроконтроллере Atmega написать на ассемблере решение задачи. Ни то ни другое не изучал, прошу помочь с детальными комментариями что к чему.
Условие задачи: Загрузить регистр R17 числом 023h. Найти сумму R17 + SREG. В ячейку внутренней памяти данных, расположенную по вычисленному таким образом адресу, загрузить число десятичных единиц результата сложения.
Тут на форуме нашел что-то вроде подходящее. Мог бы кто детально разъясгить действия?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
      LDI   R17, $23
      IN    R24, SREG
      ADD   R24, R17
      CLR   R25
      ADC   R25, R25    ; Sum may be > FF
      LDI   XL, Low (SRAM_START)
      LDI   XH, High (SRAM_START)
      ADD   XL, R24
      ADC   XH, R25
;
      CLR   R17         ; Ten Counter
TENS_LOOP:
      SBIW  R25:R24, 10
      BRCS  SAVE_TENS
      INC   R17
      RJMP  TENS_LOOP
SAVE_TENS:
      ST    X, R17
Добавлено через 8 минут
Какие библиотеки необходимо подключать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2017, 18:57
Ответы с готовыми решениями:

си аналог lsl r16 rol r17, lsr r17 ror r16
Есть написанный несколько лет назад на асме проект. Переношу его на си. Как на си написать аналог...

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

Загрузить число A305h в регистр SS
Нужно написать 2 команды для загрузки числа A305h в регистр SS

сохранить и загрузить регистр флагов
прив! как можно сохранить, изменить и загрузить регистр флагов, не используя привилегированные...

4
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,016
13.01.2017, 09:59 2
Цитата Сообщение от Treif Посмотреть сообщение
Мог бы кто
Конечно.
Цитата Сообщение от Treif Посмотреть сообщение
Какие библиотеки
Зависит от IDE.
0
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
13.01.2017, 22:55 3
Цитата Сообщение от Treif Посмотреть сообщение
Какие библиотеки необходимо подключать?
Если контроллер ATMega8515, а компилятор avrasm или avrasm2 из AVRStudio
Assembler
1
.include "m8515def.inc"
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 6
17.01.2017, 00:13  [ТС] 4
Вот решение поставленной задачи. Я компилировал в AVR Studio для ATmega16, в Proteuse также прошивку подгружал в ATmega16 для проверки работоспособности. Код полностью рабочий. В качестве ответа (можно посчитать и на листке бумаги) в регистр R28 запишется число 5.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.org 0x000   ; обозначение нулевого адреса
jmp main     ; прыжок через векторы прерываний
.org 0x030   ; начало программы
main:
ldi R17,0x23 ; загрузка константы в R17
in R26,SREG  ; загрузка SREG в R26
add R26,R17  ; R26=R17+SREG
adc R27,R27  ; добавление переноса (изначально R27=0)
movw R28,R26 ; R29:R28=R27:R26
div:         ; цикл вычитаний при делении
sbiw R28,10  ; вычитание 10 из делимого
brcs div_end ; результат <0 - прекратить вычитания
rjmp div     ; продолжить вычитание
div_end:
adiw R28,10  ; окончание вычитаний - восстановить последнее значение
st X,R28     ; сохранене результата по адресу R27:R26
m:jmp m      ; зацикливание программы
0
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
18.01.2017, 10:20 5
Цитата Сообщение от Treif Посмотреть сообщение
полностью рабочий.
В коде вы прыгаете через несуществующие векторы, но при этом совершенно не заботитесь о стеке. Лучше б вы стек настроили . Потому что первый же call или rcall приведет к непредсказуемым последствиям.
Цитата Сообщение от Treif Посмотреть сообщение
Assembler
1
m:jmp m   ; зацикливание программы
лучше написать что-то типа "rjmp ." Так сэкономится имя метки в программе.
0
18.01.2017, 10:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2017, 10:20
Помогаю со студенческими работами здесь

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

Загрузить число в регистр FPU через стек
Приветствую! Изучая работу FPU, искал способы загрузки значения регистра в стек st без...

Загрузить в регистр значение типа double по указателю
#include &lt;iostream&gt; using namespace std; double f(double *p) { double res; __asm ...

Как в защищенном режиме загрузить в регистр ds адрес сегмента 40h
Как в защищенном режиме загрузить в регистр ds адрес сегмента 40h?

Заменить слова с чётным числом символов на верхний регистр, а снизу нечётным
Добрый день, помогите с задачкой , пожалуйста. Задание: Дан текст, заменить слова с чётным числом...

По анализу значения третьего разряда регистра B загрузить в регистр одно из двух чисел
Помогите, пожалуйста, решить задачу. Ни разу не писала на этом языке и мне очень сложно :cry: ...

Как загрузить данные из xml файла в регистр накопления (через план обмена)?
Здравствуйте! Делаю курсовик по 1С, реализация обмена данными. У меня есть 2 регистра накопления с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru