AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
08.11.2013, 11:32
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Какие команды вставить?
Задача - шутка. DEVICE ATMEGA8
Нужно покрутиться в цикле aaa, затем что-нибудь сделать, например, записать 01,02,03 в регистры r20,21,22 и навсегда уйти в цикл bbb.
Нельзя использовать команды условных переходов,*jmp, *call.
Ниже обязательные условия - остальное Ваше.
.DEVICE ATMEGA8
.CSEG
.ORG 0
rjmp init ;Reset
rjmp вектора прерываний
rjmp
...
rjmp вектора прпрерываний
......
init:
xxx ;нужно вставить 4 команды
xxx
xxx
xxx
aaa:
nop
rjmp aaa
....
dddd:
nop
rjmp dddd
bbb:
nop
rjmp bbb
....
Последний раз редактировалось zelvans; 09.11.2013 в 04:34.
|
|
|
|
08.11.2013, 13:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
|
Re: Какие команды вставить?
Сообщение от zelvans
|
Задача - шутка. DEVICE ATMEGA8 Нужно
|
50 долларов/команда
|
|
|
|
08.11.2013, 15:20
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Какие команды вставить?
так?
Код:
|
.include "m8def.inc"
.DEVICE ATMEGA8
.CSEG
.ORG 0
rjmp init ;Reset
nop
nop
init:
ldi r16, 1 ;нужно вставить 4 команды
out TCCR0, r16
out TIMSK, r16
sei
aaa:
nop
rjmp aaa
nop
nop
cli
bbb:
nop
rjmp bbb |
|
|
|
|
08.11.2013, 16:36
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Re: Какие команды вставить?
Начало правильное. А как в цикл bbb зайти? Условие немного неправильно поставил одна rjmp в векторах прерываний допускается
Последний раз редактировалось zelvans; 08.11.2013 в 16:41.
|
|
|
|
08.11.2013, 17:02
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Какие команды вставить?
Проверил в симуляторе Студии - все заходит по условиям 1 сообщения:
|
|
|
|
08.11.2013, 17:37
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Re: Какие команды вставить?
Может я не вижу весь текст вижу только следующее
.include "m8def.inc"
.DEVICE ATMEGA8
.CSEG
.ORG 0
rjmp init ;Reset
nop
nop
init:
ldi r16, 1 ;нужно вставить 4 команды
out TCCR0, r16
out TIMSK, r16
sei
aaa:
nop
rjmp aaa
nop
nop
cli
bbb:
nop
rjmp bbb
после того как произошло прерывание что происходит?(не описан вектор прерывания) и давайте цикл bbb прикроем другим циклом. Предполагается, что цикл bbb закрыт текстом программы.
......
еее:
nop
rjmp eee
bbb:
nop
rjmp bbb
......
Похоже не до конца продумал этюд
|
|
|
|
08.11.2013, 17:40
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Какие команды вставить?
все что надо на экране, в протеусе может виднее будет:
|
|
|
|
08.11.2013, 17:54
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Re: Какие команды вставить?
А если циклы задвинем на адреса 200 и 300 соответственно? и сделать что-нибудь заполнить несколько регистров например и цикл bbb прикрыт другим циклом.
|
|
|
|
08.11.2013, 17:59
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Какие команды вставить?
ну так не честно - условия первого поста считаю выполнены
а так, конечно надо заполнить вектора прерываний и т.д.
|
|
|
|
08.11.2013, 18:13
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Re: Какие команды вставить?
Я подкорректировал стартовое сообщение, сам не ожидал,что может быть частный случай. Для общего случая все-таки есть решение, т.е. один rjmp в векторах допускается. init находится по адресу 200. Еще раз прошу прощения за то что до не продумал все до конца.
Последний раз редактировалось zelvans; 08.11.2013 в 18:18.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:23.
|
|