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

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

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

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

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

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


 
Опции темы
Непрочитано 15.08.2013, 14:52  
val_ka
Вид на жительство
 
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
val_ka на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

Сообщение от omercury Посмотреть сообщение
Это пока при выполнении/невыполнении условия надо выполнить всего одну команду. Как только добавится добавится вторая команда, станет ещё хуже.
(да и для светодиодной мыргалки этот такт очень непринципиален)...
Дело, как Вы понимаете, не в "мыргалках". Дело в принципе. Смотрите, я изменил код представленный nagimovym на прямой (по входам), он просто бухнул то, что было сгенерировано. Ну да ладно.
( Кстати, я использовал раньше (и в ДАУ на ВМ80) именно такой (или похожий) алгоритм (с goto), тоже сам "допёр", подсказчиков тогда не было .)
Порт А вход, порт В выход. Считаем циклы:
Код:
			porta=0	porta=1
	btfss porta, 3;	1	2
	bcf portb, 3;	1	-
	btfsc porta, 3;	2	1
	bsf portb, 3;	-	1
			4	4
;*****************
	btfsc porta, 3;	2	1
	goto 3fc;	-	2
	bcf portb, 3;	1	-
	goto 3fd;	2	-
3fc:	bsf portb, 3; 	-	1
3fd:    ; code
			5	4
Вы же понимаете, что более читабельным является первый код. А если дискретных датчиков много, или других условий, то Вы должны понимать нерентабельность классики с goto (в данном случае). Также освобождается довольно прилично места для контроллеров с небольшой памятью, и скорость обработки, всё же выше. (мы, надеюсь, не забываем, что это только для одного порта ввода, и опрос (как и сама обработка) идёт по циклу - где будет программа обработки после, скажем, пяти минут работы (или часа), при одинаковых схемах?).
Реклама:
__________________
И если б не было Одессы, шоб я делал?!
val_ka вне форума  
Непрочитано 15.08.2013, 14:58  
val_ka
Вид на жительство
 
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
val_ka на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

Сообщение от alvadep Посмотреть сообщение
Flopix, а далеко ходить не надо. Сравните пример ТС и мой с операторами goto. Казалось бы мелочи, но тем не менее более читабельный код у ТС. И я ведь не отказываюсь от goto, просто стараюсь использовать как можно реже, дабы не получилось так называемого спагетти-кода.

P.S. Иногда стоит перекомпоновать куски программы так чтобы избавится от лишних переходов. Мое мнение.
Я тоже придерживаюсь такого мнения. (Спасибо, кстати, за комплиман).
Как заметил Алекс (помоему), иногда в глазах рябит от излишнего goto.
__________________
И если б не было Одессы, шоб я делал?!
val_ka вне форума  
Непрочитано 15.08.2013, 15:07  
val_ka
Вид на жительство
 
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
val_ka на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

Сообщение от Alex9797 Посмотреть сообщение
Да, Вы правы. У меня частенько закрадывается подозрение, что авторы подобных книг умышленно делают в своих примерах такие "бяки". Для пользы читателей.
... я в подобных случаях пользуюсь вспомогательной переменной в ОЗУ, копией порта, с которой могу делать что угодно, менять любые биты. А когда все биты установлены как хотелось - спокойно посылаю этот байт целиком в порт. Такой способ гарантирует надежную работу порта в условиях сильных помех.

Способ, придуманный Вами,

тоже имеет право на жизнь. Да, ложные мигания при этом исключаются. Но и в этом случае работа с отдельными выводами порта не всегда применима.
Ну на универсальность, я и не претендовал.
Но всё же если нужно просто "переписать" в "вход на выход", то это довольно приличная экономия места и скорости.
__________________
И если б не было Одессы, шоб я делал?!
val_ka вне форума  
Непрочитано 15.08.2013, 15:34  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

Сообщение от val_ka Посмотреть сообщение
Дело в принципе.
А, ну если так, "поехали"!
Цитата:
Считаем циклы
Всегда есть смысл их считать? Или так, от нечего делать?
Цитата:
Вы же понимаете, что более читабельным является первый код.
Если нужна читабельность - переходить на Си!
АСМ, в любом виде, плохочитаемый! Или будете спорить? Без комментов там вообще вилы.
Можно налепить макросов, подпрограмм, но в общем ситуация не изменится.
Цитата:
А если дискретных датчиков много, или других условий, то Вы должны понимать нерентабельность классики с goto (в данном случае).
Чушь! Если датчиков много без goto тем более никак!
Цитата:
Также освобождается довольно прилично места для контроллеров с небольшой памятью, и скорость обработки, всё же выше.
Чушь! Где-то улучшаете, где-то ухудшаете. Место можно сэкономить на подпрограммах, но каждый вызов - потеря времени. Увеличиваете скорость, разворачиваете что только можно - теряете в размерах.
nahimovv вне форума  
Непрочитано 15.08.2013, 16:09  
val_ka
Вид на жительство
 
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
val_ka на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

Сообщение от nahimovv Посмотреть сообщение
Всегда есть смысл их считать?
Если нужна читабельность - переходить на Си!
АСМ, в любом виде, плохочитаемый! Или будете спорить? Без комментов там вообще вилы.
Попридержали бы Вы "коней".
Вы, надеюсь согласитесь, что "Ваш" (общественный) код, всё же, на один цикл дольше работает.
А значит, для ассемблера, хуже.
__________________
И если б не было Одессы, шоб я делал?!
val_ka вне форума  
Непрочитано 15.08.2013, 17:10  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

Сообщение от val_ka Посмотреть сообщение
надеюсь согласитесь
Конечно нет. Это частный случай высосанный из пальца, на который нельзя ориентироваться. При малейших изменениях всё будет по лругому.
Цитата:
А значит, для ассемблера, хуже.
Конечно хуже! На Си читабельнее, а проигрыш стандартного Си в один цикл извращённому АСМу как-то не впечатляет и ещё раз доказывает, что нефиг АСМом заморачиваться.
nahimovv вне форума  
Непрочитано 15.08.2013, 20:40  
Catcatcat1
Прописка
 
Регистрация: 05.05.2007
Сообщений: 116
Сказал спасибо: 10
Сказали Спасибо 58 раз(а) в 34 сообщении(ях)
Catcatcat1 на пути к лучшему
По умолчанию Re: Функция if на ассемблере для PIC.

мое мнение (на первый пост), что автор книги неграмотный и не знает предмета о том, о чем пишет. Все можно сделать и все будет работать как надо. Если программируешь на ассемблере, то проблема только в том, как ты хорошо понимаешь железо и что представляет сама команда ассемблера, дальше победить свою тупость. На Си проще, раз в 100. Но Си написал человек, и часто приходиться бороться еще с недоработками разработчика компилятора. А так если какая проблема в железе, читай ERROR DATA если ошибку в железе можно обойти то там все описано.
Catcatcat1 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Catcatcat1 за это сообщение:
Alex9797 (15.08.2013), val_ka (16.08.2013)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Апгрейд и комплектующие для ноутбуков mikesmith Барахолка электронных компонентов 28 17.05.2023 23:25
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Source Boost IDE для PIC - пора лечить ! avr123-nm-ru Микроконтроллеры, АЦП, память и т.д 10 11.09.2009 15:23
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49


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


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