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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Мигание светодиодом :)

Непрочитано 03.12.2011, 00:38  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Мигание светодиодом :)

Проще некуда!

Необходимо организовать мигание светодиода в цикле (ассемблер).
MAIN
Если в предыдущем цикле светодиод горел, то погасить
Если в предыдущем цикле светодиод не горел, то включить
GOTO MAIN

Думал, думал но получается только так (возможно просто уже поздно):
MAIN
Включить
Выключить (сразу переключает, а должен только после повторного вызова MAIN)
GOTO MAIN

На Си брал переменную байт и прибавлял ++ когда равна 0 то погасить, 1 - включить, 3 - ... (делал что-то там). В общем не хочется городить огород. Может кто знает простое и красивое решение?
Реклама:
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 03.12.2011, 00:58  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Сообщение от Slava-martyn Посмотреть сообщение
Необходимо организовать мигание светодиода в цикле (ассемблер).
Жесть!!!
Что... изобрели кроссплатформенный ассемблер???
Или может... проц укажете??? Обычно такое делается командой инверсии бита... если такая существует... или через проверку флага... если включен, то выключить, иначе - включить...
st_1 вне форума  
Сказали "Спасибо" st_1
warel (28.06.2019)
Непрочитано 03.12.2011, 02:58  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,762
Сказал спасибо: 76
Сказали Спасибо 1,840 раз(а) в 668 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Самое простое и красивое решение - через функцию XOR, которая дает возможность проинвертировать произвольные биты. Например, если светодиод находится на 0-й линии порта, работающего на вход и на выход, то в общем случае это будет что-то вроде (в стиле проца КР580):

Цитата:
MAIN

IN PORT
XRI 1
OUT PORT
CALL DELAY_1CEK
GOTO MAIN

Либо "ксорим" значение переменной "LED", хранящей состояние линий порта "PORT", если он работает только на выход, и его значение прочитать непосредственно нельзя:

Цитата:
MAIN

LDA LED
XRI 1
STA LED
OUT PORT
CALL DELAY_1CEK
GOTO MAIN

Если берем конкретный проц, например PIC, то проще всего сделать так:

Цитата:
MAIN

movlw 1
xorwf PORTB, f
call DELAY_1CEK
goto MAIN
Подразумевается, что светодиод подключен к линии RB0, настроенной на выход.

Последний раз редактировалось RECTO; 03.12.2011 в 03:32.
RECTO вне форума  
Эти 2 пользователя(ей) сказали Спасибо RECTO за это сообщение:
Slava-martyn (03.12.2011), warel (28.06.2019)
Непрочитано 03.12.2011, 04:05  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Для мигания светодиодом команда "xorwf PORTB" еще, куда не шла, но для серьезных проектов лучше так не делать. Эта команда выполняется по типу чтение-модификация-запись. Чтение происходит непосредственно с линий порта, а запись в выходные защелки. Такая модификация чревата тем, что с линий порта легко наловить помех, и это может привести, в данном случае, к нарушению последовательности чередования состояний светодиода.
Лучше как во втором варианте
Цитата:
"ксорим" значение переменной "LED", хранящей состояние линий порта "PORT"
alvadep вне форума  
Сказали "Спасибо" alvadep
warel (28.06.2019)
Непрочитано 03.12.2011, 04:48  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,762
Сказал спасибо: 76
Сказали Спасибо 1,840 раз(а) в 668 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Сообщение от alvadep Посмотреть сообщение
Для мигания светодиодом команда "xorwf PORTB" еще, куда не шла, но для серьезных проектов лучше так не делать. Эта команда выполняется по типу чтение-модификация-запись. Чтение происходит непосредственно с линий порта, а запись в выходные защелки. Такая модификация чревата тем, что с линий порта легко наловить помех, и это может привести, в данном случае, к нарушению последовательности чередования состояний светодиода.
Если конфигурация порта по ходу дела меняться не будет, то можно. Входным линиям ведь абсолютно без разницы, что там записано в выходные защелки. А с выходов (в данном случае) всегда будет читаться то, что Вы туда ранее записали. Я ведь не зря для примера использовал порт В, а не порт А, например.
RECTO вне форума  
Сказали "Спасибо" RECTO
warel (28.06.2019)
Непрочитано 03.12.2011, 07:29  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Если АВР - то достаточно в каждом цикле записывать единицу в ПИН-регистр ножки
niXto вне форума  
Сказали "Спасибо" niXto
warel (28.06.2019)
Непрочитано 03.12.2011, 10:52  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

И что характерно, ни одного камента от ТС: Slava-martyn.
Похоже, он нас проверил, умеем ли мы делать ЭТО.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Сказали "Спасибо" ut1wpr
warel (28.06.2019)
Непрочитано 03.12.2011, 10:59  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Сообщение от RECTO Посмотреть сообщение
Если конфигурация порта по ходу дела меняться не будет, то можно. Входным линиям ведь абсолютно без разницы, что там записано в выходные защелки. А с выходов (в данном случае) всегда будет читаться то, что Вы туда ранее записали. Я ведь не зря для примера использовал порт В, а не порт А, например.
А чем порт В отличается от порта А?
Тут дело не в смене конфигурации. Пример. В выходной регистр RB0 записан 0. При чтении RB0 (как бы не был настроен порт, читаем с пина, а не с регистра), мы ожидает там 0, но прошла помеха и мы считали 1. Теперь инвертируем и получаем тоже состояние, что и было. И такие случаи не редки.
alvadep вне форума  
Сказали "Спасибо" alvadep
warel (28.06.2019)
Непрочитано 03.12.2011, 11:04  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Сообщение от niXto Посмотреть сообщение
в каждом цикле записывать единицу в ПИН-регистр ножки
Про это мало кто знает, но во многих новых AVR работает команда
SBI PINx, n 'например SBI PINB,4
Она меняет состояние на выходе этого пина на противоположное. Выполняется за один такт.
lsa вне форума  
Сказали "Спасибо" lsa
warel (28.06.2019)
Непрочитано 03.12.2011, 11:23  
kittec
Гражданин KAZUS.RUN
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Сообщение от lsa Посмотреть сообщение
Про это мало кто знает, но во многих новых AVR работает команда
SBI PINx, n 'например SBI PINB,4
Она меняет состояние на выходе этого пина на противоположное. Выполняется за один такт.
Вы, наверное, ещё не проснулись, но об этом niXto и написал. И эта команда была и есть во всех АВР, и "старых" и "новых".
kittec вне форума  
Сказали "Спасибо" kittec
warel (28.06.2019)
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавное мигание светодиода Yuyukos Источники питания и свет 2 05.10.2010 23:08
Как изготовить наклейку, подсвечиваемую светодиодом? Savrik Делимся опытом 8 30.03.2010 10:20
мигание цифры на LCD begun Микроконтроллеры, АЦП, память и т.д 8 15.03.2010 23:28
плавное мигание светодиодов Stanislav2002 Источники питания и свет 2 31.08.2005 11:04


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.