Подскажите С Исходником С

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

Опыт в програмирровании МК небольшой, в чужом исходнике столкнулся с непоняткой,
проверяется сигнал приходящий от компаратора, не могу понять как осуществляется выход из цикла.
Waitms() процедура задержки,крутит NOP

Код: Выделить всё

int main(void)
{
блаблабла
while(1)//основной цикл
блаблабла
i=j=0;
while(1)         //ожидание конца с поверкой таймаута(ГДЕ ВЫХОД ИЗ ЦИКЛА?????)
{
Waitms(1);              
if(PIND&0x08!=0)
{
j=0;
if(++i>=150)
         break;
}                               
else                    
{                                       
i=0;    
if(++j>=150)
         break; 
}
}

if(j!=0)
{
Waitms(500);
continue;
}
блабала
}
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

wolf000 писал(а):ГДЕ ВЫХОД ИЗ ЦИКЛА?
Проверка условий if и выход по break:

---
В циклах оператор break завершает выполнение ближайшего внешнего оператора do, for или while. Элемент управления передаётся оператору, который следует за завершающим оператором, если таковой имеется.
---

Но, коли у Вас
wolf000 писал(а):Опыт в програмирровании МК небольшой
не пишите такой говно-код в будущем.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Реклама
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

while(1) //ожидание конца с поверкой таймаута(ГДЕ ВЫХОД ИЗ ЦИКЛА?????)
вопрос по выходу из этого цикла
Код взят из готового РАБОЧЕГО девайса http://ep.com.pl/antoniak/index.php?id=soft_clip
пытаюсь разобраться.
Писал много но не под МК.
Конструктивную критику поддерживаю в отличии от:
"в чужом исходнике столкнулся с непоняткой," "не пишите такой говно-код в будущем."
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

Разобрался
С уважением к пользователям радио кота кроме smacorp ,
http://forum.cxem.net/index.php?showtop ... try2118494
примерно так выглядит ответ уважающих себя людей
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

wolf000 писал(а):С уважением к пользователям радио кота кроме smacorp
Вообще-то, я умею читать и видел про чужой исходник изначально. Поэтому, мои слова имели смысл: "Сейчас у Вас, по Вашим же словам, мало опыта, но, когда он появится, не пишите такой говно-код". Вот так. :facepalm:

А "уважающие себя люди" хоть и написали Вам про break, но не сообщили, что организовывать бесконечный цикл и выходить из него по условиям внутри это некрасиво. Вы же, увидев, что это работает и не зная, что это неправильно, могли так же и самостоятельно писать в будущем. Поэтому, я бы ещё посмотрел, кто кого и где больше уважает.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Реклама
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

может быть я не прав, но вам бы на мой взгляд следовало бы ответить более развернуто
и не используя принижающие эпитеты, ведь я попросил помощи а не ответа какой я идиот(кстати сам код весьма интересен как организация синхронизации асинхронной передачи - изучался именно для этого ).
В свое время служил старшим механиком отделения канало-образуюших систем, затем 10 лет работы в отрасли связи от участкового монтера и кабельщика до работника производственной лаборатории связи, за это время как в армии так и на телекоме воспитал целую плеяду учеников но не пользовался такими методами, если встречал непонимание дробил задачу на более мелкие, и затем показывал как это совместить (возможно вы привыкли общаться со младшим возрастом но это тоже не повод принижать их интеллектуальные способности (извините не знаю ваших :-) ), кстати 98 процентов моих учеников, сегодня в мой день рождения, созвонились и поздравили меня и выразили признательность в том что им попался я,на жизненном пути.........
Реклама
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

и не могли бы вы пояснить в чем именно заключается "но, когда он появится, не пишите такой говно-код". Вот так."
на мой скромный взгляд код рабочий и если вы можите предложить лучше .....
http://ep.com.pl/antoniak/index.php?id=soft_clip
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

wolf000 писал(а):и не используя принижающие эпитеты, ведь я попросил помощи а не ответа какой я идиот
Блин, я ведь даже пояснил во-втором сообщении и именно, что развёрнуто, что идиот не Вы и принижающие эпитеты не к Вам, а к написавшему тот "интересный код", а Вы снова о своих обидах. :o
wolf000 писал(а):и не могли бы вы пояснить в чем именно заключается "но, когда он появится, не пишите такой говно-код""
В том, что любое дело должно делаться красиво. И именно поэтому портные к чёрной ткани обычно подбирают однотонные нитки, хотя и на белых будет держаться. Вот и код должен писАться так, чтобы его было легко и понятно читать даже начинающим. А то ведь ещё из цикла и по goto можно выйти.

В общем, я всё сказал, что хотел. Устраивать срач, когда хотел помочь, у меня нет намерений.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

да чесно гадить на обиды, в чем вы видите неправильность кода?
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

wolf000 писал(а):в чем вы видите неправильность кода?
В том, что цикл должен иметь вид:

while (какое-то условие) {
бла-бла-бла
}

а не:

while (вечная истина) {
if (пора выходить) break;
}
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

мы с вами начали препираться из за формата вашего ответа, но в данном случая я считаю данный конструктив(когда я его понял ) допускаемым и практически едино возможным в данных заданых изначально
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

wolf000 писал(а):в данном случая я считаю данный конструктив(когда я его понял ) допускаемым и практически едино возможным в данных заданых изначально
Занимаясь программированием с конца 80-ых годов, знаю, что любой алгоритм имеет далеко не один способ реализации, поэтому позволю себе с Вами не согласиться. Но убеждать в этом - увольте. Разобрались? Устраивает? Работает? Ну и прекрасно.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

занимаюсь программированием с средины 90х, извиняюсь, но просто хотел донести мысль(НЕ ВСЕ ШКОЛОТА -НО И ОНА ИМЕЕТ ШАНС), не надо сразу посылать вопрошающего, может его надо немного направить ? Сколько встречал реализацию CID аон(определения номера в формате CalerID FSC) все было на РIC и асм, нашел AVR и С сижу сутками не для дяди а для себя и тут встречаю такую обратку обидно
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

wolf000 писал(а):сижу сутками не для дяди а для себя и тут встречаю такую обратку обидно
Обида в том, что Вы на форуме привели НЕ СВОЙ КОД, который кому-то не понравился и про него (ПРО АВТОРА КОДА, НЕ ПРО ВАС) нелестно высказались?! Нет, я бы ещё понял, если бы Вы защищали свой код, а так - беда. :shock: Извините, но я пас окончательно.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Родился
Сообщения: 10
Зарегистрирован: Вс мар 03, 2013 12:48:08

Сообщение wolf000 »

я не хотел этого
но приведите свои код и сравним
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Сообщение Rtmip »

Позвольте чуть разбавлю Ваш спор и поинтересуюсь у программистов со стажем, это важный момент,
вы ведь "пробовали" и другие языки, почему так плохо применить "go to" в "С"?
Друг Кота
Аватара пользователя
Сообщения: 3505
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

Rtmip писал(а):вы ведь "пробовали" и другие языки, почему так плохо применить "go to" в "С"?
Отрицательное отношение к goto не имеет привязки к языку и связано только с тем, что безудержное и безоглядное его использование, что часто свойственно новичкам, приводит к крайне плохо и неудобочитаемому коду. Кроме этого, ничего ужасного в использовании goto нет. Просто частое применение нежелательно и, если без goto можно обойтись, считается, что лучше обойтись без него. Другое дело, что бывают случаи, когда без goto не обойтись или обойтись сложно. В том же ассемблере без аналога goto - JMP - просто никуда. Но попробуйте найти длинные ассемблерные исходники и проанализировать - сразу поймёте как неудобно прыгать из одной части листинга в другую, потом в третью, потом возвращаться в первую и т.д. :)
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

wolf000 писал(а):но приведите свои код и сравним
Пожалуйста.
Ваш код :

Код: Выделить всё

while(1)         //ожидание конца с поверкой таймаута(ГДЕ ВЫХОД ИЗ ЦИКЛА?????)
{
Waitms(1);              
if(PIND&0x08!=0)
{
j=0;
if(++i>=150)
         break;
}                               
else                    
{                                       
i=0;    
if(++j>=150)
         break; 
}
}
Замена ему :

Код: Выделить всё

do{
  Waitms(1);
  i++; j++;
  if(PIND&0x08!=0)   j=0;
  else               i=0;
}while((i<150) && (j<150));
Какой код более нагляднее ?
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

wolf000 писал(а):Разобрался
С уважением к пользователям радио кота кроме smacorp ,
http://forum.cxem.net/index.php?showtop ... try2118494
примерно так выглядит ответ уважающих себя людей
Т.е. вот этот ответ:
smacorp писал(а):Проверка условий if и выход по break:
---
В циклах оператор break завершает выполнение ближайшего внешнего оператора do, for или while. Элемент управления передаётся оператору, который следует за завершающим оператором, если таковой имеется.
---
был плохим, а этот:
А break чем не выход?
оказался хорошим ? :facepalm:
Уважаемый, Вы ничего не попутали ? Или на слово "говно-код" обиделись ? Так он, действительно, - говно-код.
Правильно smacorp сказал, нахрена делать вечный цикл и искать лазейку из него, если можно условие сразу запихнуть в while ?

Всегда раздражали подобные индивидуумы, которые задают глупые вопросы на форумах, им доходчиво всё разжёвывают, а они потом говорят - "Я сам всё сделал, а вы все козлы и пидарасы, и не можете помочь новичку...".
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

smacorp писал(а): Но попробуйте найти длинные ассемблерные исходники и проанализировать - сразу поймёте как неудобно прыгать из одной части листинга в другую, потом в третью, потом возвращаться в первую и т.д. :)
Это доказывает лишь то, что и в ассемблере возможен как "говно-быдло-код", так и нормальное структурное программирование с использованием подпрограмм, аналогов case и пр.
Не бывает плохих языков. Бывают плохие программеры . (С) Я :)
Ответить

Вернуться в «AVR»