команда BUTTON
|
|
MIRS |
Дата: Пн, 26.09.2011, 14:45 | Сообщение # 1 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 10.09.2011
Статус:
Offline
|
Здравствуйте! уважаемые форумчане ,помогите с проблемкой: начал осваивать ПИКБЕЙСИКПРО по книге В.Н. ХИЛИНСКОГО . пробую проект взаимодействия с кнопкой с командой BUTTON .написал прогу скомпилировал создал модель в ПРОТЕУСЕ подключил скомпилированный файл к схеме ,тут появилась проблемка немогу разобраться в чём дело при нажатии кнопки светодиоды всё равно зажигаются в хаотическом порядке причём некоторые горят как бы в полнакала,поигрался с самой командой ничего существенного неизменяется ,кто виноват помогите ...
|
|
|
|
vv |
Дата: Пн, 26.09.2011, 15:28 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
132
Замечания:
±
На сайте с 13.11.2009
Статус:
Offline
|
прежде всего хочется уточнить, что на форуме, к сожалению, обладающих телепатическими способностями нет. Потому текст программы выложите сперва. можно и проект в протеусе. посмотрим
|
|
|
|
MIRS |
Дата: Пн, 26.09.2011, 15:42 | Сообщение # 3 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 10.09.2011
Статус:
Offline
|
Спасибо буду пробовать ! незнаю пока как подцепить проект в протеусе в форум
насколько я понимаю подобный код програмы ,не обеспечивает пограмно подавления дребезга контактов ,а идея применения команды буттон позволяет это сделать.. c уважением!
Сообщение отредактировал
MIRS - Пн, 26.09.2011, 16:45
|
|
|
|
vv |
Дата: Пн, 26.09.2011, 16:29 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
132
Замечания:
±
На сайте с 13.11.2009
Статус:
Offline
|
еще забыл добавить паузу. иначе все будет очень быстро прибавляться))) паузу можно воткнуть после метки ЛЕД. 100 миллисекунд будет вполне достаточно. а проект упаковать в зип и вложить
|
|
|
|
MIRS |
Дата: Пн, 26.09.2011, 17:08 | Сообщение # 7 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 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 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
vv, уж не советуйте так писать
if PORTA.0=0 then 'если нажата кнопка goto LED
ибо тут против дребезга ничего не предпринято!
|
|
|
|
vv |
Дата: Пн, 26.09.2011, 17:44 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
132
Замечания:
±
На сайте с 13.11.2009
Статус:
Offline
|
Quote (retas) ибо тут против дребезга ничего не предпринято!
Quote (retas) led: pause 100 PORTB=PORTB+1 GOTO Main
а это не от дребезга? 100 мс недостаточно?
|
|
|
|
MIRS |
Дата: Пн, 26.09.2011, 18:56 | Сообщение # 10 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 10.09.2011
Статус:
Offline
|
My WebPage вот сылка на проект в протеусе..
|
|
|
|
vv |
Дата: Пн, 26.09.2011, 20:57 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
132
Замечания:
±
На сайте с 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
Сообщение отредактировал
vv - Пн, 26.09.2011, 21:06
|
|
|
|
MIRS |
Дата: Пн, 26.09.2011, 21:42 | Сообщение # 12 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 10.09.2011
Статус:
Offline
|
УВАЖАЕМЫЙ VV спасибо вам большое за ваш труд .. ---скомпилировал код загнал его в проект прикреплённый вами ,и тем немение проблема неисчезла,на третьим шаге кнопкой начинается хаос в переключении светодиодов ,ещё интересно удерживая кнопку хаос всё равно продолжается ...я начинаю думать что проблема может в самом протеусе .,я использую версию 7.8 .
|
|
|
|
retas |
Дата: Пн, 26.09.2011, 22:15 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
vv, если придерживаться вашего, то тогда
if PORTA.0=0 then 'если нажата кнопка pause 100 'на дребезг if PORTA.0=0 then 'если и теперь находим кнопку нажатой, то тогда goto LED
Но и так писать несерьёзно и к паузам лучше не привыкать, чтоб неиметь когда нить проблем с прерывами.
MIRS! У вас схема кривовата - сопрот ограничительный должен быть у каждого ЛЕДа. Чтоб в этом месте быть уверенным, пока можете вообще убрать R2 (ЛЕДы прямо на землю). Удачи.
|
|
|
|
MIRS |
Дата: Пн, 26.09.2011, 22:29 | Сообщение # 14 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 10.09.2011
Статус:
Offline
|
R2 УБРАЛ всё равно бардак ... резисторы поставил на каждый светодиод то ж самое... может в свойствах кнопки полазить..
Сообщение отредактировал
MIRS - Пн, 26.09.2011, 22:35
|
|
|
|
vv |
Дата: Пн, 26.09.2011, 22:43 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
132
Замечания:
±
На сайте с 13.11.2009
Статус:
Offline
|
а этот проект как себя поведет? (во вложении) там же и прошивка
|
|
|
|