AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
24.11.2016, 17:16
|
|
Прохожий
Регистрация: 24.11.2016
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Помогите разобраться в куске кода на ассемблере
Кто нибудь помогите разобраться, не могу понять как программа высчитывает, коротко или длительно нажата кнопка, для чего так часто обнулять регистр SREG "C" , Сторожевой таймер. Особенно не понятны действия в метке dd:. Зарание спасибо.
;Подпрограмма измерения времени нажатия
izmer:
nop
;сохранение переменных
push m
push n
push x
push tmp3
;измерения времени 3 байта 0.m.n.x.
nop
clr x
clr m
clr n
clr tmp3
clc
dm1: nop
clc
dv1: nop
wdr
nop
clc
dxx: nop
inc x
nop
clc
dd: nop
inc tmp3
brbc 0, dd
clr tmp3
brbc 0, dxx
clc
nop
clr x
nak: nop
nop
sbis PORTB, 6
rjmp vak
sbis PORTB, 6
rjmp vak
sbis PORTB, 6
rjmp vak
vak: nop
sbic PORTB, 6
rjmp nak
sbic PORTB, 6
rjmp nak
sbic PORTB, 6
rjmp nak
clc
inc n
brbc 0, dv1
clr n
clc
adiw r30, $01
inc m
brbc 0, dm1
;восстановление переменных
pop tmp3
pop m
pop n
pop x
;проверка измеренного значения
cpi r31, $D3
brsh hsd
rjmp rt
hsd: nop
cpi r30, $45
brlt rt
rt: nop
ret
|
|
|
|
24.11.2016, 18:07
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
ты б еще на машинном коде нашел прогу))))
я на маш кодах как раз 25 лет назад писал для 8032
__________________
кагмаподэ магмаподэ
|
|
|
|
24.11.2016, 18:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
Шикаааарно, шикарно. Капец в последнее время тут вопросы пошли... Хоть бы написали, в какой конкретно микросхеме этот кусок кода использован. Это ж не аппаратнонезависимый C++--**##
Сообщение от Иван.М
|
Особенно не понятны действия в метке dd:.
|
dd: nop
nop - no operation - нет операций. Пустая команда, ничего не делает
Дальше идет инкремент регистра и че-то еще такое непонятное, возможно, сравнение с нулевым значением, далее обнуление регистра и дальше че-то еще такое, такое же сравнение и снова обнуление, а перед этим какая-то херня еще.
Сообщение от Иван.М
|
как программа высчитывает, коротко или длительно нажата кнопка,
|
в общем случае - очень просто. Читается состояние порта, если определено нажатие кнопки, запускается программная задержка в виде счета в регистрах, и когда этот счет завершится через некоторое время, снова проверяется состояние порта, если определено, что кнопка уже отпущена, значит это было короткое нажатие.
Причем, судя по сохранению/восстановлению, это часть обработчика прерывания по изменению уровня на входе
Последний раз редактировалось NewWriter; 24.11.2016 в 18:34.
|
|
|
|
24.11.2016, 18:57
|
|
Прохожий
Регистрация: 24.11.2016
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите разобраться в куске кода на ассемблере
Это Атмега16.
Программа для шагового двигателя, из первой книги Кравченко А.В. 9 глава.
Спасибо за ответ, но все равно не понятно для чего нужны эти строки.
dm1: nop
clc
dv1: nop
wdr
nop
clc
dxx: nop
inc x
nop
clc
dd: nop
inc tmp3
brbc 0, dd
clr tmp3
brbc 0, dxx
clc
nop
clr x
nak: nop
nop
?
Последний раз редактировалось Иван.М; 24.11.2016 в 19:03.
|
|
|
|
24.11.2016, 19:23
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
Бля а ты открой ассемблер и станет ясно что за команды такие inc wdr clr clc. Это прибавить, вдр не помню, очистить переменную, очистить регистр ц.
Если впадлу изучить основы микропроцессора то лучще брось ты их и дуй отсюда лесом, потому что рассказывать про такие основы это все равно что 5 летнего учить жевать
__________________
кагмаподэ магмаподэ
|
|
|
|
24.11.2016, 19:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
Это цикл программной задржки.
Программа, судя по ее виду, была писана дрянно и ленно, за что холопа Кравченко А.В. надо было бить плетьми.
Последний раз редактировалось NewWriter; 24.11.2016 в 19:29.
|
|
|
Эти 3 пользователя(ей) сказали Спасибо NewWriter за это сообщение:
|
|
|
24.11.2016, 21:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
Сообщение от индюк
|
вдр не помню
|
сброс сторожевой собаки
|
|
|
Сказали "Спасибо" Alex9797
|
|
|
24.11.2016, 23:19
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
Сообщение от Alex9797
|
сброс сторожевой собаки
|
а. ну я так и подумал. просто в толчке сидел писал, лень было лишние слова писать
__________________
кагмаподэ магмаподэ
|
|
|
|
24.11.2016, 23:49
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
|
Re: Помогите разобраться в куске кода на ассемблере
Сообщение от индюк
|
в толчке сидел писал
|
Странно для мужика...
Сообщение от индюк
|
лень было лишние слова писать
|
Простите, чем Вы слова выписываете?
А тема веселая! До чего народ привык мозжечок не напрягать - чуть что, сразу на площадь - собирать кто чего подаст. А ведь бывает и
"...
И кто-то камень положил
В его протянутую руку
..."(с)
Самому не полезней разбираться?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
25.11.2016, 07:02
|
|
Прохожий
Регистрация: 24.11.2016
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Помогите разобраться в куске кода на ассемблере
Спасибо все кто ответил, индюк, NewWriter, Alex9797, akegor. Пробывал в AVRstudio симулятором
dd: nop
inc tmp3 ; при переполнении tmp3 в регистре SREG "c" устанавливается в
"1". По логике следующей команды "brbc 0, dd" должен быть переход на
"clr tmp3", но этого не происходит? Вот и непонятно...
brbc 0, dd
clr tmp3
brbc 0, dxx
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:47.
|
|