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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

Сообщение от Slava-martyn Посмотреть сообщение
Необходимо организовать мигание светодиода в цикле (ассемблер).
Жесть!!!
Что... изобрели кроссплатформенный ассемблер???
Или может... проц укажете??? Обычно такое делается командой инверсии бита... если такая существует... или через проверку флага... если включен, то выключить, иначе - включить...
st_1 вне форума  
Сказали "Спасибо" st_1
warel (28.06.2019)
Непрочитано 03.12.2011, 02:58  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
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.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Мигание светодиодом :)

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

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

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

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

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

Сообщение от niXto Посмотреть сообщение
в каждом цикле записывать единицу в ПИН-регистр ножки
Про это мало кто знает, но во многих новых AVR работает команда
SBI PINx, n 'например SBI PINB,4
Она меняет состояние на выходе этого пина на противоположное. Выполняется за один такт.
lsa вне форума  
Сказали "Спасибо" lsa
warel (28.06.2019)
Непрочитано 03.12.2011, 11:23  
kittec
Гражданин KAZUS.RU
 
Регистрация: 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, время: 08:45.


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