подсчет количества импульсов
|
|
ADMIN |
Дата: Вс, 11.01.2015, 19:02 | Сообщение # 16 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Так а Goto Loop для чего? Для перемещения на начало. Насчет PORTB = 0 - уже хорошо!
|
|
|
|
timerlan |
Дата: Вс, 11.01.2015, 19:10 | Сообщение # 17 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
94
Замечания:
±
На сайте с 18.03.2012
Статус:
Offline
|
ещё такой вопрос...чисто организационный... ни как не могу задать правильную последовательность действий при выполнении условия... в общем, условие такое: при появлении лог1 на некотором выводе, подаем лог1 на какой-либо вывод, держим, пока не произойдет событие(например нажатие кнопки), снимаем лог1 с этого вывода, вот так вот..не могу сообразить как это вкруг замкнуть, помогите плиз..Добавлено (11.01.2015, 19:10) --------------------------------------------- ADMIN, при выполнении условия х=9 ставлю GOTO LOOP, и при 9-м нажатии как горели все обозначенные порты, так и висят на них единицы, те программа на начало не возвращается, как её туда, на начало, вернуть??..
|
|
|
|
MiXaS |
Дата: Вс, 11.01.2015, 20:52 | Сообщение # 18 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Я смотрю тех задание уже поменялось. Цитата timerlan ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) при появлении лог1 на некотором выводе, подаем лог1 на какой-либо вывод, держим, пока не произойдет событие(например нажатие кнопки), снимаем лог1 с этого вывода, вот так вот..не могу сообразить как это вкруг замкнуть, помогите плиз..
Если я понял правильно, то через while, например.
loop:
While porta.0 = 1 ' Ваше событие
portb.0 = 1 ' Выходное воздействие
Wend
portb.0 = 0 ' Выходное воздействие goto loop
|
|
|
|
ADMIN |
Дата: Пн, 12.01.2015, 04:27 | Сообщение # 19 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Цитата timerlan ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) ADMIN, при выполнении условия х=9 ставлю GOTO LOOP, и при 9-м нажатии как горели все обозначенные порты, так и висят на них единицы, те программа на начало не возвращается, как её туда, на начало, вернуть??.. По идее, достаточно при x=9 сбросить его в 0. А по Goto Loop программа обязана уйти на метку Loop, в которой начнется проверка условий заново.
|
|
|
|
timerlan |
Дата: Пн, 12.01.2015, 10:15 | Сообщение # 20 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
94
Замечания:
±
На сайте с 18.03.2012
Статус:
Offline
|
ADMIN, пробовал так тоже-не возвращается... Добавлено (12.01.2015, 10:15) --------------------------------------------- MiXaS, а ТЗ осталось все тем же-при однократном нажатии на кнопку подать лог1 на один вывод и при поступении n-го импульса на другой вывод, снять поданную до этого лог единицу...
|
|
|
|
MiXaS |
Дата: Пн, 12.01.2015, 10:59 | Сообщение # 21 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата timerlan ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) всем доброго времени суток! столкнулся с такой траблой-нужно посчитать количество импульсов на герконе за 3-4 секунды и когда нужное наберется-подать лог. 1 на акой либо вывод микроконтроллера. Цитата timerlan ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) на входе in собственно, геркон(при замыкании дает полож. импульс), на out нужно повесить единицу при 4 импульсах за 3 секунды(это как минимум, вообще время не лимитировано),
Может я читать не умею?! Но в начале темы была другая задача. По крайне мере вот этого Цитата timerlan ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) при однократном нажатии на кнопку подать лог1 на один вывод не было
|
|
|
|
timerlan |
Дата: Пн, 12.01.2015, 11:13 | Сообщение # 22 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
94
Замечания:
±
На сайте с 18.03.2012
Статус:
Offline
|
MiXaS, да это не сильно принципиально....вот с подсчетом бы этим разобраться...
|
|
|
|
MiXaS |
Дата: Пн, 12.01.2015, 11:17 | Сообщение # 23 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Так я Вам дал рабочий код. Вам просто нужно собрать в соответствии со схемой Ваш конструктор и все будет работать. У Вас протеус есть?
|
|
|
|
MiXaS |
Дата: Пн, 12.01.2015, 11:37 | Сообщение # 24 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Блин! Я не поленился, собрал схему в железе, залил прошивку с качанную с сайта и все работает! В чем проблема? Вы схему видели? Добавлено (12.01.2015, 11:37) --------------------------------------------- В жизни я бы еще поставил бы параллельно геркону конденсатор 0,1 мкф
|
|
|
|
timerlan |
Дата: Пн, 12.01.2015, 12:07 | Сообщение # 25 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
94
Замечания:
±
На сайте с 18.03.2012
Статус:
Offline
|
уважаемый MiXaS, я очень ценю Ваше внимание новичку, но не работает тот хекс,который вы дали... но,я добился и у меня заработал такой код:Добавлено (12.01.2015, 12:04) --------------------------------------------- TRISB = %00000000 ADCON1 = 6 TRISA = %111111
BUTT VAR PORTA.0 SV0 VAR PORTB.0 X VAR BYTE
CLEAR PAUSE 100 PORTB = $00 X = 0
LOOP:
IF BUTT=1 THEN PAUSE 300 X=X+1 ENDIF
IF X=6 THEN GOSUB ACT ENDIF IF X=7 THEN PAUSE 100 low sv0 X=0 GOSUB LOOP ENDIF GOTO LOOP
ACT: high SV0 GOTO LOOP Добавлено (12.01.2015, 12:04) --------------------------------------------- насчет геркона совет учту! Добавлено (12.01.2015, 12:07) --------------------------------------------- MiXaS, откомпилировал ваш файл .bas тоже самое...
|
|
|
|
ADMIN |
Дата: Пн, 12.01.2015, 12:11 | Сообщение # 26 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Здесь, по крайней мере, должно быть так:
TRISB = %00000000 ADCON1 = 6 TRISA = %111111
BUTT VAR PORTA.0 SV0 VAR PORTB.0 X VAR BYTE CLEAR PAUSE 100 PORTB =0 X = 0
LOOP: IF BUTT=1 THEN PAUSE 300 X=X+1 ENDIF
IF X=6 THEN GOSUB ACT ENDIF
IF X=7 THEN low sv0 PAUSE 100 X=0 ENDIF
GOTO LOOP
ACT: high SV0 RETURN
|
|
|
|
timerlan |
Дата: Пн, 12.01.2015, 12:22 | Сообщение # 27 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
94
Замечания:
±
На сайте с 18.03.2012
Статус:
Offline
|
так вот значит как return применятся должен!...спасибо! Добавлено (12.01.2015, 12:22) --------------------------------------------- осталась последняя часть задачи-сделать так, чтобы этот код работал от нажатия нопки на любом другом порту...
|
|
|
|
MiXaS |
Дата: Пн, 12.01.2015, 12:31 | Сообщение # 28 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата timerlan ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) но не работает тот хекс,который вы дали...
А что значит не работает? Откройте гиф файл схемы, посмотрите так Вы собрали?
Максим, если вам не сложно проверьте тоже схему, потому что у меня и в протеусе работает и в железе работаетДобавлено (12.01.2015, 12:31) ---------------------------------------------
Цитата MiXaS ( ![Ссылка на цитируемый текст](http://s8.ucoz.net/img/fr/ic/12/lastpost.gif) ) осталась последняя часть задачи-сделать так, чтобы этот код работал от нажатия нопки на любом другом порту...
Это тоже можно сделать через прерывание. Максим статью писал по этому поводу. http://www.picbasic.ru/publ/preryvanie_po_ljubomu_portu_mk/2-1-0-74
|
|
|
|
timerlan |
Дата: Пн, 12.01.2015, 13:59 | Сообщение # 29 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
94
Замечания:
±
На сайте с 18.03.2012
Статус:
Offline
|
да именно так и подключено
|
|
|
|
MiXaS |
Дата: Пн, 12.01.2015, 14:01 | Сообщение # 30 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
тогда не знаю. Я уже на 2 контроллерах проверил и модель работает.
|
|
|
|