Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
1

ATMega163 (ASM). Заполнение регистров нечетными числами

31.03.2014, 10:04. Просмотров 535. Ответов 9
Метки нет (Все метки)

Необходимо написать программу которая в цикле переключается между регистрами и заполняет 9 ячеек не четными числами начиная от 5 с шагом 1.
Начало программы:

Assembler
1
2
3
4
5
6
7
8
.device ATmega163
 
    //Здесь инициализация
cycle: 
    //Здесь каким то образом переключатся между регистрами
    //и заполнять если число нечетное данный регистр
    //шаг счетчика 1
brne cycle
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 10:04
Ответы с готовыми решениями:

Массив с отрицательными числами (Atmega 128, ASM)
Снова обращаюсь за помощью, не могу понять как реализовать данное задание Дан...

Сложить содержание регистров R1 и R4 текущего банка регистров и отразить результат на статическом индикаторе
Сложить содержание регистров R1 и R4 текущего банка регистров и отразить...

Заполнение стека четными/нечетными случайными числами в зависимости от четности первого элемента
Заполнить,с использованием возможностей датчика случайных чисел стек целыми...

Организовать заполнение двумерного массива целыми четными и нечетными числами случайным образом в интервале от 1 до 6
Запрашивать размерность двумерного массива. Затем организовать заполнение...

Программное заполнение регистров из файла excel
Здравствуйте! Я заполняю регистры данными из файла excel в 8.2 обычное...

9
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
31.03.2014, 13:56 2
К регистрам можно обращаться как к памяти. Значит можно организовать цикл. Допустим нам нужно в цикле записать регистры начиная с r0 до r8. Смотрим в мануале адрес r0 он равен нулю, r1 1 итд. В регистре r10 будем проводить анализ нужно записывать или нет. Тогда код записи значения будет выглядеть так:
Assembler
1
2
3
4
5
6
7
8
  clr   r27      ; Очистить старший байт X
  ldi   r26, $0  ; Установить $00 в младший байт X
цикл:
  ;чтение из памяти
  ;анализ
  если записываем вот команда 
  st    X+,r10   ; Сохранить по адресу в X значение r10
  brne цикл
0
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
31.03.2014, 14:28  [ТС] 3
Вот я нашел уже решение но не совсем полное
Допилите пжл.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.include "m163def.inc"
.device ATmega163
.def cur = r24
.def step = r25
.def bool = r26
.cseg
rjmp start
start:
clr XH
ldi XL,0
ldi cur,4
ldi step,1
ldi bool,0
 
begin:
 
st X+,cur
add cur,step
inc bool
cpi bool,9
//Заполнение, но без проверки на выход
//после заполнения 9 ячеек
brne begin
 
rjmp start
0
pyzhman
791 / 485 / 66
Регистрация: 15.05.2012
Сообщений: 2,749
31.03.2014, 15:37 4
Цитата Сообщение от cxemuch205 Посмотреть сообщение
числами начиная от 5 с шагом 1
Запятые расставьте, пожалуйста. А то получается "казнить нельзя помиловать". Шаг 1 к чему относить?
0
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 928
31.03.2014, 22:23 5
cxemuch205, ATmega163 была снята с производства лет 10 назад, да и выпускалась недолго. Вы уверены что не делаете пустую работу?
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
01.04.2014, 08:54 6
Это учебное задание, так что не принципиально марка МК.
ТС, допилить Ваш код(вернее не ваш), по сути сделать за вас задание, а сие не интересно по крайней мере мне.
0
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
01.04.2014, 15:09  [ТС] 7
paskal, это не разработка устройства непосредственно, это индивидуальное задание, ответ на которое я до конца не нашел.

Добавлено через 2 минуты
Витальич, код который вы видите что я описал, это я до него дошел, посредством изучения примеров и некоторых книг по программированию МК, но до конца не могу доделать.
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
01.04.2014, 15:34 8
Так в чем вопрос?
//------------------------------
В начало надо добавить:
Assembler
1
2
3
4
 ldi r16,low(RAMEND)
 out SPL,r16
 ldi r16,hight(RAMEND)
 out SPH,r16
0
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
02.04.2014, 21:57  [ТС] 9
Вопрос в том, что необходимо сделать выход по условию заполнения 9 ячеек
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
02.04.2014, 22:09 10
Добавить счетчик в еще один регистр, при каждой записи прибавлять по единице и сравнивать не надо ли заканчивать цикл.
0
02.04.2014, 22:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 22:09

Матрица столбцы с нечетными числами
Дана целочисленная матрица размера M × N. Найти номер первого из ее столбцов,...

Заполнить массив нечетными числами 1,3,5,7...
Составить программму заполнения массива числами:1,3,5,7,9,11,13,15,17,19

Цикл с четными и нечетными числами
как мне сделать цикл, желательно for, который бы перебирал цифры от 0 до 10, и...


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

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

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