Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

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  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Помогите разобраться в куске кода на ассемблере

Шикаааарно, шикарно. Капец в последнее время тут вопросы пошли... Хоть бы написали, в какой конкретно микросхеме этот кусок кода использован. Это ж не аппаратнонезависимый C++--**##

Сообщение от Иван.М Посмотреть сообщение
Особенно не понятны действия в метке dd:.
dd: nop
nop - no operation - нет операций. Пустая команда, ничего не делает
Дальше идет инкремент регистра и че-то еще такое непонятное, возможно, сравнение с нулевым значением, далее обнуление регистра и дальше че-то еще такое, такое же сравнение и снова обнуление, а перед этим какая-то херня еще.

Сообщение от Иван.М Посмотреть сообщение
как программа высчитывает, коротко или длительно нажата кнопка,
в общем случае - очень просто. Читается состояние порта, если определено нажатие кнопки, запускается программная задержка в виде счета в регистрах, и когда этот счет завершится через некоторое время, снова проверяется состояние порта, если определено, что кнопка уже отпущена, значит это было короткое нажатие.
Причем, судя по сохранению/восстановлению, это часть обработчика прерывания по изменению уровня на входе

Последний раз редактировалось NewWriter; 24.11.2016 в 18:34.
NewWriter вне форума  
Непрочитано 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  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Помогите разобраться в куске кода на ассемблере

Это цикл программной задржки.
Программа, судя по ее виду, была писана дрянно и ленно, за что холопа Кравченко А.В. надо было бить плетьми.

Последний раз редактировалось NewWriter; 24.11.2016 в 19:29.
NewWriter вне форума  
Эти 3 пользователя(ей) сказали Спасибо NewWriter за это сообщение:
AYuM (25.11.2016), Dmitry_ (25.11.2016), ForcePoint (24.11.2016)
Непрочитано 24.11.2016, 21:53  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Помогите разобраться в куске кода на ассемблере

Сообщение от индюк Посмотреть сообщение
вдр не помню
сброс сторожевой собаки
Alex9797 вне форума  
Сказали "Спасибо" Alex9797
Dmitry_ (25.11.2016)
Непрочитано 24.11.2016, 23:19  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Помогите разобраться в куске кода на ассемблере

Сообщение от Alex9797 Посмотреть сообщение
сброс сторожевой собаки
а. ну я так и подумал. просто в толчке сидел писал, лень было лишние слова писать
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 24.11.2016, 23:49  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Помогите разобраться в куске кода на ассемблере

Сообщение от индюк Посмотреть сообщение
в толчке сидел писал
Странно для мужика...
Сообщение от индюк Посмотреть сообщение
лень было лишние слова писать
Простите, чем Вы слова выписываете?

А тема веселая! До чего народ привык мозжечок не напрягать - чуть что, сразу на площадь - собирать кто чего подаст. А ведь бывает и
"...
И кто-то камень положил
В его протянутую руку
..."(с)
Самому не полезней разбираться?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
Prapor76 (26.11.2016)
Непрочитано 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
Иван.М вне форума  
Сказали "Спасибо" Иван.М
Dmitry_ (25.11.2016)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Помогите разобраться barbuss Proteus 2 26.10.2010 23:45
Помогите разобраться ,АЦП Тину 13, что то не так... Botan Микроконтроллеры, АЦП, память и т.д 2 14.09.2010 18:31
АЦП - для чайника (помогите разобраться)! Apach111 Электроника - это просто 2 30.05.2008 10:10
Проблемка с кусочком кода, на ассемблере lisergin Микроконтроллеры, АЦП, память и т.д 1 24.02.2005 12:02
Помогите разобраться с транзисторами в Proteus`е EsterniTY Proteus 2 05.08.2004 00:18


Часовой пояс GMT +4, время: 08:47.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot