Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Pic Basic pro для начинающих
rumun73 Дата: Вс, 31.10.2010, 12:38  |                                                                                                                Сообщение # 391
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 30.10.2010

Статус: Offline

Эд17 Спасибо, что откликнулись!

Таблица истинности прикрепил.
Изначально на выводах GP2, GP4, GP5 должны быть единицы (включены подтягивающие резисторы) следовательно задержка равна 12 часам.

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

Прикрепления: 1831877.jpg (19.4 Kb)


Лажу на басу только басисты слышат.
Сообщение отредактировал rumun73 - Вс, 31.10.2010, 12:43
ЯНДЕКС Дата: 31.10.2010
Евгений Дата: Вс, 31.10.2010, 12:53  |                                                                                                                Сообщение # 392
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 07.10.2010

Статус: Offline

Добрый день.

нужна помощь

помогите у меня в программе протеус работает , а в железе нет

то есть работает только кнопка меню а кнопки + - нет .

Крыша едет.

программа прилагаеться а также протеус схема

Прикрепления: _2_.rar (36.9 Kb)
MasterPic Дата: Вс, 31.10.2010, 13:19  |                                                                                                                Сообщение # 393
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 186
Репутация: 2   ±
Замечания:   ±
На сайте с 22.11.2008

Статус: Offline

Quote (rumun73)
На выводе GP1 контроллер должен генерировать импульсы секундной длительности (то есть меандр, просто моргать ,что бы визуально было видно, что схема работает). А дальше уже сложнее. На выводе GP0 изначально присутствует лог. единица. Но через определённое время (устанавливаемое джамперами 1 -3) она меняется на три секунды на лог. ноль. Потом весь процесс повторяется заново. С первой частью программы как моргать диодом мне более-менее понятно. Но остальное мне пока не по силам. Прошу у вас помощи. На какие команды смотреть? Как опрашивать состояние джамперов? Может есть какие то подобные готовые примеры?

Алгоритм такой:

Main:
High GPIO.0 '

Проверяем джампер 1:

if GPIO.4 = 0 then
time = 1
endif

Проверяем джампер 2:

if GPIO.3 = 0 then
time = 2
endif

Проверяем джампер 3:

if GPIO.2 = 0 then
time = 3
endif

Потом:

Loop1:

If time = 1 then
PAUSE 1000
endif

If time = 2 then
PAUSE 2000
endif

If time = 3 then
PAUSE 3000
endif

Low GPIO.0

Pause 3000

Goto Main

В общем, смысл такой.

Применительно к данному примеру:

If gpio.2. = 0 and gpio.3 = 0 and gpio.4 = 0 then
time = 2
endif

If gpio.2. = 0 and gpio.3 = 0 and gpio.4 = 1 then
time = 4
endif

и так далее...

Сообщение отредактировал MasterPic - Вс, 31.10.2010, 13:23
Эд17 Дата: Вс, 31.10.2010, 17:29  |                                                                                                                Сообщение # 394
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.09.2010

Статус: Offline

rumun73, вот пример проги только наверняка не оптимальный скорее для примера и дальнейшей доводки до ума,проблема в том что нужны очень длинные задержки а на их формирование как оказалось уходит уйма программной памяти sad ,сам не ожидал и получилрсь что даже этот кусок уже не лезет в 12ый пик кроме того так и не догнал как оформить паралельную работу контрольной лампочки,вообще было бы прекрасно если бы подключились "старшие" товарищи а то мы новички далеко не уедем sad

TRISIO = %00111100 'устанавливаем выводы 6,7 на выход остальные на вход
i var word 'обьявляем переменную для организации длинных задержек
symbol j1 = GPIO.5 'для удобства переименовываем выводы
symbol j2 = GPIO.4 'j1-j3,джамперы
symbol j3 = GPIO.2
symbol up = GPIO.0 'up-выход управления ключём
symbol in = GPIO.1 'ирдикатор работы
clear
main: 'метка начала программы
up = 1 'устанавоиваем 1 на выводе управления
if j1=1 and j2=1 and j3=1 then 'если все джампы разомкнуты
gosub taim1 'переходим к п/прогр. задержки 12 часов
else 'если нет
up = 1 'оставляем единицу на выводе управления
endif
if j1=1 and j2=1 and j3=0 then 'если джамп j3-0
gosub taim2 'переходим к п/прогр. задержки 10 часов
else 'если нет
up = 1 'оставляем единицу на выводе управления
endif
goto main
end
taim1: 'п/прогр. задержки 12 часов
For i = 0 to 43200 'цикл от 0 до 43200 по 1 сек т.е 12 часов
up = 0 'во время цикла на выводе управления 0
pause 1000 'та самая секунда которую считаем 43200 раз
next
up = 1 'при выходе из цикла на выводе управления 1
return
taim2:
for i = 0 to 36000
up = 0
pause 1000
next
up = 1
return

Добавлено (31.10.2010, 17.29.26)
---------------------------------------------
что то не понял куда делись прбелы?

rumun73 Дата: Вс, 31.10.2010, 18:04  |                                                                                                                Сообщение # 395
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 30.10.2010

Статус: Offline

MasterPic, Спасибо, что подключились!
Я тоже думал использовать для опроса состояния портов команду IF.. THEN но не знал, что она позволяет опрашивать сразу несколько пинов а не один.

Эд17,

Вы тут уже столько расписали ))
Меня пока хватило только на написание конфигурации, и то наверное не правильно )

@ device PIC12F629,INTRC_OSC_NOCLKOUT,wdt_off,pwrt_on,mclr_on
TRISIO = %111100
SYMBOL LED_1HZ = GPIO.0
SYMBOL REBOOT = GPIO.1
symbol JMP1 = GPIO.5
symbol JMP2 = GPIO.3
symbol JMP3 = GPIO.2
OPTION_REG.7 = 1

Main:
if JMP1 = 0 then gosub main1
GOTO Main

main1:
high LED_1HZ
PAUSE 1000
LOW LED_1HZ
PAUSE 1000
RETURN

Всё, что после метки к основной программе не имеет отношения - это просто я проверял..

Мне тоже не понятно, как совместить работу двух подпрограмм одновременно. Я экспериментировал с двумя семисегментниками - что бы один выводил цифры а другой буквы одновременно. Но неполучилось.


Лажу на басу только басисты слышат.
Эд17 Дата: Вс, 31.10.2010, 18:37  |                                                                                                                Сообщение # 396
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.09.2010

Статус: Offline

rumun73, вообще если верить даташиту регистр OPTION после сбросов весь устанавливается в 1, поэтому подтягивающие резисторы уже подключены.
А у вас со строкой @ device PIC12F629,INTRC_OSC_NOCLKOUT,wdt_off,pwrt_on,mclr_on компилировалось нормально? У меня почему то компилятор ругается.
Я тоже пытаюсь что то сделать с 12 пиком но с моим опытом памяти не на что не хватает . Если возникнут какие то идеи или вопросы пишите надо попытаться добить тему. MasterPic посоветовал но это только опрос, а дальше то как? интуитивно чую надо бы применить имеющиеся таймеры но как с ними работать так и не понял,вообще было бы хорошо создать отдельную ветку для обсуждения работы с переферией: таймерами, прерываниями и пр.
rumun73 Дата: Вс, 31.10.2010, 18:45  |                                                                                                                Сообщение # 397
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 30.10.2010

Статус: Offline

Эд17
Скомпиллировалось всё нормально.
Про регистр OPTION мне ничего неизвестно (я вообще не знаю что это такое - нашёл такую запись в каком то примере).

У меня есть программа на асемблере для подобного устройства (там только две ножки установки и внешний кварц) но я там вообще ничего не понимаю ((


Лажу на басу только басисты слышат.
Эд17 Дата: Вс, 31.10.2010, 20:23  |                                                                                                                Сообщение # 398
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.09.2010

Статус: Offline

rumun73, Да асм это не для начинающих а про внутренннюю структуру мк я бы посоветовал почитать по началу туго доходит но без этого ни как а для возникающих по ходу вопросов есть форум biggrin
Alexej79 Дата: Сб, 06.11.2010, 16:29  |                                                                                                                Сообщение # 399
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Всем привет. Подскажите мне начинающему почему при использовании кнопки с камнем 12f629 при подключении её на вывод порта GP1 ничего не получается. А при подключении кнопки к другим выводам всё работает как запланировал?
ivan_fd Дата: Сб, 06.11.2010, 18:06  |                                                                                                                Сообщение # 400
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Показывайте код инициализации камня, тады можно сказать в чем проблема.
Alexej79 Дата: Сб, 06.11.2010, 18:16  |                                                                                                                Сообщение # 401
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Quote (ivan_fd)
Показывайте код инициализации камня

Что это значит?
У меня ещё вопрос появился. Пытаюсь прилепить две кнопки при нажатии первой переменная Х увеличивается на еденицу а при нажатии на вторую наоборот уменьшается. После чего идёт проверка переменной Х если она больше 0 то загорается светодиод. Ну что то не получается где ошибаюсь?
X var Byte
X = 0
Led var GPIO.0
main:
IF X > 0 THEN
HIGH LED
ELSE
LOW Led
Endif
If GPIO.4 = 1 Then x = x + 1
If GPIO.5 = 1 Then x = x - 1
Goto main
End
Как можно в режиме отладки посмотреть чему равна переменная Х?
ЯНДЕКС Дата: 06.11.2010
ivan_fd Дата: Сб, 06.11.2010, 19:37  |                                                                                                                Сообщение # 402
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (Alexej79)
Что это значит?

Лучше весь код давайте.

Quote (Alexej79)
Ну что то не получается где ошибаюсь?

С первого взгляда все в норме. Только после опроса кнопки желательно добавить задержку ( Антидребезг )

Alexej79 Дата: Сб, 06.11.2010, 19:50  |                                                                                                                Сообщение # 403
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Пробывал я паузу ставить, всё равно не прёт. Только по одному разу получается. Два раза на одну кнопку жму свет горит потом на другую тоже два раза, тухнит. пробую опять загорается но уже не тухнит.
ivan_fd Дата: Сб, 06.11.2010, 19:52  |                                                                                                                Сообщение # 404
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Ну так давайте код посмотрим. biggrin
Alexej79 Дата: Сб, 06.11.2010, 20:23  |                                                                                                                Сообщение # 405
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Quote (ivan_fd)
Ну так давайте код посмотрим.

Ни как ни могу понять что за код?
Я всё это прогоняю в Протеусе в само железо я не заливаю. Где код взять?
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: