подсчет количества импульсов - Страница 2 - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 5«12345»
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » подсчет количества импульсов (не могу запустить count)
подсчет количества импульсов
ADMIN Дата: Вс, 11.01.2015, 19:02  |                                                                                                                Сообщение # 16
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Так а Goto Loop для чего? Для перемещения на начало. Насчет PORTB = 0 - уже хорошо!
ЯНДЕКС Дата: 11.01.2015
timerlan Дата: Вс, 11.01.2015, 19:10  |                                                                                                                Сообщение # 17
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 88
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

ещё такой вопрос...чисто организационный...
ни как не могу задать правильную последовательность действий при выполнении условия...
в общем, условие такое:
при появлении лог1 на некотором выводе, подаем лог1 на какой-либо вывод, держим, пока не произойдет событие(например нажатие кнопки), снимаем лог1 с этого вывода, вот так вот..не могу сообразить как это вкруг замкнуть, помогите плиз..

Добавлено (11.01.2015, 19:10)
---------------------------------------------
ADMIN, при выполнении условия х=9 ставлю GOTO LOOP, и при 9-м нажатии как горели все обозначенные порты, так и висят на них единицы, те программа на начало не возвращается, как её туда, на начало, вернуть??..

MiXaS Дата: Вс, 11.01.2015, 20:52  |                                                                                                                Сообщение # 18
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Я смотрю тех задание уже поменялось.
Цитата timerlan ()
при появлении лог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
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Цитата timerlan ()
ADMIN, при выполнении условия х=9 ставлю GOTO LOOP, и при 9-м нажатии как горели все обозначенные порты, так и висят на них единицы, те программа на начало не возвращается, как её туда, на начало, вернуть??..
По идее, достаточно при x=9 сбросить его в 0. А по Goto Loop программа обязана уйти на  метку Loop, в которой начнется проверка условий заново.
timerlan Дата: Пн, 12.01.2015, 10:15  |                                                                                                                Сообщение # 20
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 88
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

ADMIN, пробовал так тоже-не возвращается...

Добавлено (12.01.2015, 10:15)
---------------------------------------------
MiXaS, а ТЗ осталось все тем же-при однократном нажатии на кнопку подать лог1 на один вывод и при поступении n-го импульса на другой вывод, снять поданную до этого лог единицу...

MiXaS Дата: Пн, 12.01.2015, 10:59  |                                                                                                                Сообщение # 21
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата timerlan ()
всем доброго времени суток! столкнулся с такой траблой-нужно посчитать количество импульсов на герконе за 3-4 секунды и когда нужное наберется-подать лог. 1 на акой либо вывод микроконтроллера.

Цитата timerlan ()
на входе in собственно, геркон(при замыкании дает полож. импульс), на out нужно повесить единицу при 4 импульсах за 3 секунды(это как минимум, вообще время не лимитировано),


Может я читать не умею?! Но в начале темы была другая задача.
По крайне мере вот этого
Цитата timerlan ()
при однократном нажатии на кнопку подать лог1 на один вывод

не было
timerlan Дата: Пн, 12.01.2015, 11:13  |                                                                                                                Сообщение # 22
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 88
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

MiXaS, да это не сильно принципиально....вот с подсчетом бы этим разобраться...
MiXaS Дата: Пн, 12.01.2015, 11:17  |                                                                                                                Сообщение # 23
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Так я Вам дал рабочий код. Вам просто нужно собрать в соответствии со схемой Ваш конструктор и все будет работать. У Вас протеус есть?
MiXaS Дата: Пн, 12.01.2015, 11:37  |                                                                                                                Сообщение # 24
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Блин! Я не поленился, собрал схему в железе, залил прошивку с качанную с сайта и все работает! В чем проблема? Вы схему видели?

Добавлено (12.01.2015, 11:37)
---------------------------------------------
В жизни я бы еще поставил бы параллельно геркону конденсатор 0,1 мкф

Прикрепления: 7434659.gif(24Kb)
timerlan Дата: Пн, 12.01.2015, 12:07  |                                                                                                                Сообщение # 25
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 88
Репутация: 0   ±
Замечания:   ±
На сайте с 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
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 88
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

так вот значит как return применятся должен!...спасибо!

Добавлено (12.01.2015, 12:22)
---------------------------------------------
осталась последняя часть задачи-сделать так, чтобы этот код работал от нажатия нопки на любом другом порту...

MiXaS Дата: Пн, 12.01.2015, 12:31  |                                                                                                                Сообщение # 28
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата timerlan ()
но не работает тот хекс,который вы дали...


А что значит не работает? Откройте гиф файл схемы, посмотрите так Вы собрали?

Максим, если вам не сложно проверьте тоже схему, потому что у меня и в протеусе работает и в железе работает

Добавлено (12.01.2015, 12:31)
---------------------------------------------

Цитата MiXaS ()
осталась последняя часть задачи-сделать так, чтобы этот код работал от нажатия нопки на любом другом порту...


Это тоже можно сделать через прерывание. Максим статью писал по этому поводу. http://www.picbasic.ru/publ/preryvanie_po_ljubomu_portu_mk/2-1-0-74
timerlan Дата: Пн, 12.01.2015, 13:59  |                                                                                                                Сообщение # 29
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 88
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

да именно так и подключено
MiXaS Дата: Пн, 12.01.2015, 14:01  |                                                                                                                Сообщение # 30
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

тогда не знаю. Я уже на 2 контроллерах проверил и модель работает.
Форум Picbasic.ru » Программирование МК » PicBasicPro » подсчет количества импульсов (не могу запустить count)
Страница 2 из 5«12345»
Поиск: