Форум myROBOT.ru » Роботы и робототехника » Обо всем » Программирование на СИ

Страниц (1): [1]
 

1. Artem - 23 Июля, 2012 - 22:54:32 - перейти к сообщению
Здравствуйте. Улыбка
Недавно начал заниматься программированием микроконтроллеров на СИ++ в среде WinAVR.
Знания получены лишь с этого сайта, из статей "Шаг за шагом". Мне хочется делать всё более сложные проекты но не могу найти никаких полезных статей в интернете. Может ли кто помочь?
Проблема вот в чём: я хочу знать существует ли такая функция которая бы возвращала программу в то положение куда я захочу при выполнении какого-ибо условия. Ну например выполняется обработка прерывания по нажатию кнопки: кнопка нажата делаем что-то, затем второе разветвление: если кнопка до сих пор нажата то как мне перейдти к выполнению той операции которая выполнялась после первой проверки.
Заранее спасибо. Улыбка
И ещё, не могли бо вы подсказать какие либо интернет ресурсы посвящённые данной теме(программирование микроконтроллеров на СИ). Спасибо Улыбка
2. Роботов - 24 Июля, 2012 - 08:59:08 - перейти к сообщению
Рекомендую вот этот ресурс: http://avr123.nm.ru/
Всё очень подробно разжевано, многие по нему учились.
3. Artem - 24 Июля, 2012 - 09:41:27 - перейти к сообщению
Я уже несколько раз натыкался на этот курс, но что то там структура какая-то непонятная, но я попробую, спасибо.
Но всё же не мог бы кто подсказать на счёт этой функции которую я описывал в начале.
4. anar - 24 Июля, 2012 - 11:42:03 - перейти к сообщению
Си++ достаточно сложный язык программирования(там очень тяжело реализовать шим, сконфигурировать ацп и т.д) лучше начните с бейсика и компилируйте программы в баском авр, а потом потихоньку перейдите на си++.
(Добавление)
Artem пишет:
Проблема вот в чём: я хочу знать существует ли такая функция которая бы возвращала программу в то положение куда я захочу при выполнении какого-ибо условия. Ну например выполняется обработка прерывания по нажатию кнопки: кнопка нажата делаем что-то, затем второе разветвление: если кнопка до сих пор нажата то как мне перейдти к выполнению той операции которая выполнялась после первой проверки.

Для этого есть оператор goto.
5. Гость - 24 Июля, 2012 - 14:05:32 - перейти к сообщению
нету оператора goto, нету.
после обработки прерывания программа автоматом вернется на старое место (а вот данные и состояние регистров может поменяться).
а для того, чтобы повторять выполнение каких-то действий, пока действительно условие- есть while:
while(knopf_druken==1)
{
make_all_deals();
};
6. anar - 24 Июля, 2012 - 16:46:11 - перейти к сообщению
Цитата:
нету оператора goto, нету.

А это, что тогда :http://radio-hobby.org/modules/i.../page.php?id=912 х.. что ли?
(Добавление)
Да этот оператор использовать не советуется, но запретный плод сладок Улыбка .Лично я его часто использую, и никаких проблем пока не было.
7. cjA - 25 Июля, 2012 - 21:27:24 - перейти к сообщению
Artem пишет:
существует ли такая функция которая бы возвращала программу в то положение куда я захочу
Artem пишет:
на счёт этой функции которую я описывал в начале.

нет, такой функции нет в Си. Вы достаточно ее описали чтобы написать самому (опытный сишник ее в дефайн впехнет)
Или вы хотите просто восстановить указатель команд из Си?
8. anar - 27 Июля, 2012 - 13:29:55 - перейти к сообщению
А за, что Predator удалили?
(Добавление)
Наши ряды редеют Грустный .