Некоректная работа кнопок.... - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Некоректная работа кнопок....
Некоректная работа кнопок....
k2mozganet Дата: Пн, 28.02.2011, 01:39  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Доброго времени суток уважаемые форумчани, есть проблемка с устройством....
Вот программа:

@ device pic16F84A, xt_osc, wdt_off, protect_off, pwrt_on
DEFINE OSC 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 220

TRISB = %00000000
TRISA = %11111111
portb = 00000000
porta = 00000000
Czastota var word
pau var word

Czastota = 250
pau = 10

LCDOUT $FE,$80,"qwer"
LCDOUT $FE,$C0,"try"
pause 2000
LCDOUT $FE,1
LCDOUT $FE,$80,"lsfd "
LCDOUT $FE,$C0,"cvxvcx"
pause 2000
LCDOUT $FE, 1
LCDOUT $FE,$80, "Ms = ",DEC Czastota
LCDOUT $FE,$C0,"Pau = ",DEC Pau
pause 500

main:

pulsout portb.1, Czastota
pause pau

if porta.0 = 1 and Czastota <= 2000 then Czastota = Czastota + 10
:LCDOUT $FE,$80, "Ms = ",DEC Czastota
:LCDOUT $FE,$C0,"Pau = ",DEC Pau

if porta.1 = 1 and Czastota >= 250 then Czastota = Czastota - 10
:LCDOUT $FE,$80, "Ms = ",DEC Czastota
:LCDOUT $FE,$C0,"Pau = ",DEC Pau

if porta.3 = 1 and pau <= 250 then pau = pau - 10
:LCDOUT $FE,$80, "Ms = ",DEC Czastota
:LCDOUT $FE,$C0,"Pau = ",DEC Pau

if porta.4 = 1 and pau >= 10 then pau = pau + 10
:LCDOUT $FE,$80, "Ms = ",DEC Czastota
:LCDOUT $FE,$C0,"Pau = ",DEC Pau

goto main
end
при нажатии на кнопку, происходит изменение значения оно выводится на экран, но также продолжает изменятся даже после того как я отпускаю кнопку... где я наступил на грабли я незнаю:(
Прелагаю код и модель в протеусе....

Прикрепления: 4587999.jpg(109Kb) · lm.zip(18Kb)

Сообщение отредактировал k2mozganet - Пн, 28.02.2011, 01:40
ЯНДЕКС Дата: 28.02.2011
ADMIN Дата: Пн, 28.02.2011, 02:22  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Просто нужно сделать так:
Прикрепления: 1003090.png(27Kb)
k2mozganet Дата: Пн, 28.02.2011, 11:51  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Большое спасибо уважаемый ADMIN.... все заработало и проверенно на железе.
Только есть еще один вопросик как вывести на ЛСД значение с запятой????
ADMIN Дата: Пн, 28.02.2011, 14:55  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну... Как... Выделить целую часть, потом дробную. И записать это все как два числа, разделенных запятой.

LCDOUT $FE,$80, "Ms = ",DEC Czastota_Cel, ",", DEC Czastota_Drob

k2mozganet Дата: Ср, 02.03.2011, 01:54  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Уважаемый ADMIN.... я как бы-только учусь.... так-что вы не могли-бы поподробней объяснить как это делается:))) Как отделить целую часть от дробной.... smile
ADMIN Дата: Ср, 02.03.2011, 05:18  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Рекомендую прочитать эту книгу. На 43 странице есть пример работы с жки, в котором очень хорошо показано, как выделить дробную и целую часть. Удачи
k2mozganet Дата: Чт, 03.03.2011, 12:29  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Все таки я не понял что мне делать с запятой....:(((Суть такова.... сейчас на лсд выводятся значение в мкс... а мне нужно чтобы они были в млс..... как это сделать понятно, грубо говоря это будет выглядеть так 450мксc / 100 = 4.5 но как теперь это вывести на лсд. Если само это значение то это не проблема, а так как оно у меня меняется после каждого нажатия на кнопку??? Что делать незнаю....
Matrix252005 Дата: Чт, 03.03.2011, 12:40  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток.

k2mozganet, сделайте 2 переменные... Одна Cel, а вторая Des. Дальше в проге Вы пишете:
где Val, полученное Ваше значение...

Сel = Val / 100 ' целое значение
Des = val // 100 ' остаток от деления
LCDOUT $FE, 1, "Ms = ", DEC Cel, ",", DEC Des


THE TRUTH IS OUT THERE.

С уважением, Николай.

Сообщение отредактировал Matrix252005 - Чт, 03.03.2011, 12:42
k2mozganet Дата: Чт, 03.03.2011, 13:12  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Насколько все просто:)) Большое спасибо:))) Matrix252005, ADMIN,
Matrix252005 Дата: Чт, 03.03.2011, 13:13  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Всегда ПЛЗ.

THE TRUTH IS OUT THERE.

С уважением, Николай.
ADMIN Дата: Пт, 04.03.2011, 03:33  |                                                                                                                Сообщение # 11
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote (k2mozganet)
Все таки я не понял что мне делать с запятой....:(((Суть такова.... сейчас на лсд выводятся значение в мкс... а мне нужно чтобы они были в млс..... как это сделать понятно, грубо говоря это будет выглядеть так 450мксc / 100 = 4.5 но как теперь это вывести на лсд. Если само это значение то это не проблема, а так как оно у меня меняется после каждого нажатия на кнопку??? Что делать незнаю....

Ты читал книгу?
k2mozganet Дата: Пт, 04.03.2011, 19:59  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Читал,,,, но наверное не внимательно, увидел это только после того как мне конкретно ткнули пальцем что там такое есть:)))
Вот кстати почти проектик доделал:))) Вот сейчас видео выложу...
http://rutube.ru/tracks....bf51bc7

Только есть еще один вопросик: С миллисекундами я разобрался, а вот как это перевести в частоту (Гц)

pulsout portb.1, Czastota выводим импульсы разной длительности
pause pau а это пауза между ними....
но как это все привязать к оборотам за минуту, или герцам.... не могу сообразить:(

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

Статус: Offline

k2mozganet !!!

Сигнал частотой в 1Гц имет длительность (период) 1сек (1000мс).
В период входит (в импульсных сигналах) длительность импульса плюс длительность паузы.

Выкладывая своё видео, в описалове к нему выкладывайте адрес этого сайта (конечно если
считаете что тут вам помогли либо кому другому тут могут помочь).


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
Сообщение отредактировал retas - Сб, 05.03.2011, 11:32
k2mozganet Дата: Сб, 05.03.2011, 18:22  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Тоисть выходит так:
грубо говоря длительность паузы 2мс а сигнала 4мс
итого 2+4=6
а теперь период делим на 6 тоисть 1/6
итого 0.16666 Герц
правильно ли я вас понял??????
retas Дата: Сб, 05.03.2011, 19:46  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Не! Скажем у нас в сети 50Гц и период =20мс, т.е. 1сек делим на 20мс (0,02сек) и имеем 50Гц.
У вас значит 166,6...Гц.


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
Форум Picbasic.ru » Программирование МК » PicBasicPro » Некоректная работа кнопок....
Страница 1 из 212»
Поиск: