команда BUTTON - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » команда BUTTON (нужна помощь)
команда BUTTON
MIRS Дата: Пн, 26.09.2011, 14:45  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

Здравствуйте! уважаемые форумчане ,помогите с проблемкой:
начал осваивать ПИКБЕЙСИКПРО по книге В.Н. ХИЛИНСКОГО .
пробую проект взаимодействия с кнопкой с командой BUTTON .написал прогу скомпилировал создал модель в ПРОТЕУСЕ подключил скомпилированный файл к схеме ,тут появилась проблемка немогу разобраться в чём дело при нажатии кнопки светодиоды всё равно зажигаются в хаотическом порядке причём некоторые горят как бы в полнакала,поигрался с самой командой ничего существенного неизменяется ,кто виноват помогите ...
ЯНДЕКС Дата: 26.09.2011
vv Дата: Пн, 26.09.2011, 15:28  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

прежде всего хочется уточнить, что на форуме, к сожалению, обладающих телепатическими способностями нет. Потому текст программы выложите сперва. можно и проект в протеусе. посмотрим
MIRS Дата: Пн, 26.09.2011, 15:42  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

ВОТ ТЕКСТ ПРОГИ КАК В КНИГЕ ...
adcon1 = 6
INIT:
trisa = %00000001
porta = %00000001
TRISB = %00000000
PORTB = %00000000
B0 var byte
b0=0
main:
BUTTON PORTA.0,0,255,255,B0,1,LED
GOTO Main
led:
PORTB=PORTB+1
GOTO Main

Сообщение отредактировал MIRS - Пн, 26.09.2011, 15:47
vv Дата: Пн, 26.09.2011, 16:06  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

регистр adcon1 в МК служит для конфигурирования порта как аналоговый. в вашем случае он не нужен. поэтому в adcon1 записать нужно 0
adcon1 =0
tris - регистр, отвечающий за настройку портов ввод-вывод. trisa = %00000001 устанавливает ПОРТА.0 как вход. т.е. на этой ноге МК должна сидеть кнопка.
далее возникает вопрос, какой используется МК. ибо для того чтоб работала кнопка, нужно иметь подтягивающий резистор, либо внутренний, либо внешний. лучше повесить подтягивающий внешний порядка 10кОм к питанию. кнопку коммутировать на массу.
имхо лучше не пользоваться командой БУТТОН.
скомпилируйте следующий код:

Code

adcon1 = 0  
INIT:  
trisa = %00000001  
TRISB = %00000000  
PORTB = %00000000  

main:  
if PORTA.0=0 then  'если нажата кнопка
    goto LED
end if

GOTO Main  
led:  
PORTB=PORTB+1  
GOTO Main


и выложите проект протеуса
MIRS Дата: Пн, 26.09.2011, 16:24  |                                                                                                                Сообщение # 5
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

Спасибо буду пробовать !
незнаю пока как подцепить проект в протеусе в форум

насколько я понимаю подобный код програмы ,не обеспечивает пограмно подавления дребезга контактов ,а идея применения команды буттон позволяет это сделать..
c уважением!

Сообщение отредактировал MIRS - Пн, 26.09.2011, 16:45
vv Дата: Пн, 26.09.2011, 16:29  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

еще забыл добавить паузу. иначе все будет очень быстро прибавляться))) паузу можно воткнуть после метки ЛЕД. 100 миллисекунд будет вполне достаточно. а проект упаковать в зип и вложить
MIRS Дата: Пн, 26.09.2011, 17:08  |                                                                                                                Сообщение # 7
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

не понимаю как прикрепить файл проект протеуса обжал раром как прикрепить,,???

Добавлено (26.09.2011, 17.08.13)
---------------------------------------------
adcon1 =0
INIT:
trisa = %00000001
TRISB = %00000000
PORTB = %00000000
main:
if PORTA.0=0 then
GOTO Main
led:
pause 100
PORTB=PORTB+1
GOTO Main

скомпилировалась только так ..
c таким кодом светодиоды зажигаются и без нажатия..уже ..

Сообщение отредактировал MIRS - Пн, 26.09.2011, 17:21
retas Дата: Пн, 26.09.2011, 17:11  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

vv, уж не советуйте так писать

if PORTA.0=0 then 'если нажата кнопка
goto LED

ибо тут против дребезга ничего не предпринято!


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
vv Дата: Пн, 26.09.2011, 17:44  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

Quote (retas)
ибо тут против дребезга ничего не предпринято!


Quote (retas)
led:
pause 100
PORTB=PORTB+1
GOTO Main


а это не от дребезга? 100 мс недостаточно?
MIRS Дата: Пн, 26.09.2011, 18:56  |                                                                                                                Сообщение # 10
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

My WebPage вот сылка на проект в протеусе..
vv Дата: Пн, 26.09.2011, 20:57  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

в протеусе совсем не обязательно использовать источник питания. по умолчанию используется терминал - повер. там же где и земля.
этим же источником питания "запитан" МК. так же не обязательно размещать для отладки кварц. частота тактирования МК задается в свойствах.
ниже "причесанный" код. компилируйте, заливайте в МК.

Code

INIT:   
adcon1 =6     'для 877 установить весь порт А как цифровой
trisa = %00000001   
TRISB = %00000000   
PORTB = %00000000   

Main:   
if PORTA.0=0 then   
pause 300   
PORTB=PORTB+1   
endif
GOTO Main   
Прикрепления: BUTTON.zip(18Kb)

Сообщение отредактировал vv - Пн, 26.09.2011, 21:06
MIRS Дата: Пн, 26.09.2011, 21:42  |                                                                                                                Сообщение # 12
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

УВАЖАЕМЫЙ VV спасибо вам большое за ваш труд ..
---скомпилировал код загнал его в проект прикреплённый вами ,и тем немение проблема неисчезла,на третьим шаге кнопкой начинается хаос в переключении светодиодов ,ещё интересно удерживая кнопку хаос всё равно продолжается ...я начинаю думать что проблема может в самом протеусе .,я использую версию 7.8 .
retas Дата: Пн, 26.09.2011, 22:15  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

vv, если придерживаться вашего, то тогда

if PORTA.0=0 then 'если нажата кнопка
pause 100 'на дребезг
if PORTA.0=0 then 'если и теперь находим кнопку нажатой, то тогда
goto LED

Но и так писать несерьёзно и к паузам лучше не привыкать, чтоб неиметь когда нить проблем с прерывами.

MIRS!
У вас схема кривовата - сопрот ограничительный должен быть у каждого ЛЕДа. Чтоб в этом месте
быть уверенным, пока можете вообще убрать R2 (ЛЕДы прямо на землю).
Удачи.


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
MIRS Дата: Пн, 26.09.2011, 22:29  |                                                                                                                Сообщение # 14
Группа: Пользователи
Ранг:  Новенький
Сообщений: 11
Репутация: 0   ±
Замечания:   ±
На сайте с 10.09.2011

Статус: Offline

R2 УБРАЛ всё равно бардак ...
резисторы поставил на каждый светодиод то ж самое...
может в свойствах кнопки полазить..

Сообщение отредактировал MIRS - Пн, 26.09.2011, 22:35
vv Дата: Пн, 26.09.2011, 22:43  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

а этот проект как себя поведет? (во вложении) там же и прошивка
Прикрепления: Button.zip(18Kb)
Форум Picbasic.ru » Программирование МК » PicBasicPro » команда BUTTON (нужна помощь)
Страница 1 из 212»
Поиск: