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

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

Статус: Offline

Всем привет! Затеял регулятор сетевого напряжения на ПИК и симисторе, хотел спросить как ПИКОМ можно словить переход синусоиды из плюса в минус или нулевую точку...
brown Дата: Пн, 19.04.2010, 21:35  |                                                                                                                Сообщение # 227
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Quote (Alexandr2804808332)
словить переход синусоиды из плюса в минус или нулевую точку...

http://www.picbasic.ru/forum/8-321-1 Здесь немного обсуждалась эта проблема


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
contra Дата: Ср, 21.04.2010, 17:51  |                                                                                                                Сообщение # 228
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Всем привет! Читаю вопросы задаваемые в теме и понимаю, что я со своими скудными познаниями в PicBasic есть АБСОЛЮТНЙ НОЛЬ! А ведь тема (PicBasic Pro для начинающих) и предпологает помощь таким же нулям. Почти год пытаюсь освоить PicBasic Pro, а научился только светодиодами блымать. Не хочется думать , что мне это не по силам. Просто книги написанные уважаемыми Хилинским и Халибайком, по-моему расчитаны на более подготовленных в программировании людей.
А таким как я (Нулям) нужно что-то попроще. Например, описана программа "Управление - 7сегментным индикатором. Ну повторил, ну прошил микроконтроллер, ну заработала, а ведь развитя этой темы нет! Вникнуть в суть программирования
таким образом крайне сложно.

(вопль вопиющего в пустыне)

slavauk Дата: Чт, 22.04.2010, 00:34  |                                                                                                                Сообщение # 229
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (contra)
(вопль вопиющего в пустыне)

Так тут не экстрасенсы.Задавайте вопросы.Уверен обязательно кто-то поможет и объяснит.
Python Дата: Чт, 22.04.2010, 00:46  |                                                                                                                Сообщение # 230
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 45
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

contra, ни чего подобного, как раз написаны эти книги
Quote (contra)
книги написанные уважаемыми Хилинским и Халибайком, по-моему расчитаны на более подготовленных в программировании людей.

вполне доступным языком, главное освоить базовые понятия Бейсика, потом все пойдет как по маслу, на себе испытал, выложу проекты когда закончу, работаю с бейсиком третий месяц, начинал с РВР сейчас шпарю на Протоне. Это все благодаря помощи людей которые посещают этот форум, отдельное спасибо Terrarus"у за терпимость...
Задавай вопросы, тогда будут ответы и движение вперед, я на учителя не тяну, но по мере возможности и времени подскажу с точки зрения новичка

Сообщение отредактировал Python - Чт, 22.04.2010, 00:47
contra Дата: Чт, 22.04.2010, 17:34  |                                                                                                                Сообщение # 231
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Уважаемый Python! Последнее время я и пытаюсь нащупать изюминку-базовые понятия, но к сожалению без успеха
Пока у тебя всё это свежо в памяти, может поможешь мне понять, где стержень программирования, что я упустил?
На, что надо обратить особое внимание. Вобщем помоги!
ЯНДЕКС Дата: 22.04.2010
Ripper Дата: Чт, 22.04.2010, 18:04  |                                                                                                                Сообщение # 232
Группа: Пользователи
Ранг:  Новенький
Сообщений: 12
Репутация: 0   ±
Замечания:   ±
На сайте с 26.02.2010

Статус: Offline

Стержень состоит в том что, надо начинать последовательно делать проекты по хэлибэйку, а не начинать с какихто часов с готовой прошивкой или подобного, сделав 6..7 базовых программ по книге я несомневаюсь что знаний у тебя будет достаточно чтобы уже свои программы делать пусть сначала не все получается, но разве не в этом весь кайф, когда находишь решение сам? )))
slavauk Дата: Пт, 23.04.2010, 00:11  |                                                                                                                Сообщение # 233
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (contra)
Последнее время я и пытаюсь нащупать изюминку-базовые понятия

Quote (contra)
где стержень программирования

С такими вопросами пожалуй лучше обратится к философам happy .
Смею утверждать:"Из философа никогда не получится програмиста".
Философия не терпит логики.
Программирование есть ЛОГИКА в чистом виде.
Логика в принципе и есть искомый Вами стержень программирования.

Python Дата: Сб, 24.04.2010, 04:16  |                                                                                                                Сообщение # 234
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 45
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

contra, например для меня базовыми в свое время стали такие моменты
1. Перевод мнемонических команд Бейсика на русский - очень упрощает восприятие программы и логику, например Print - печатать, если запомнить перевод ориентироваться проще, if - это "если", then - "тогда", улавливаешь суть?
2. Как посоветовал Ripper, начинать с простейших программ, я например хоть и начинал с ассемблера, но на Бейсике тоже писал программу для мигания светодиодом.
Всё основное базовое приходит только с практикой, какой бы рутинной она не казалась, она является так же и очень полезной, а это чувство победы, когда светодиод замигал или корректно заработал пульт управления атомной станцией...
3. Внимательно прочитай ветку форума "Pic Basic Pro для начинающих", там очень много полезной информации и ссылок на нужную литературу.
4. Поставь себе конкретную задачу, и спокойно задавай вопросы, постепенно думаю всей толпой решим, только не надейся что будет легко или тебе выпалят сразу готову программу, задача окружающих помочь понять и найти пути решения, а не решить задачу.
5. Спокойно относись к насмешкам.

Сообщение отредактировал Python - Сб, 24.04.2010, 04:34
contra Дата: Сб, 24.04.2010, 07:53  |                                                                                                                Сообщение # 235
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

всем спвсибо. Займусь изучением языка с самого начала, с учётом ваших советов
l2_star Дата: Сб, 24.04.2010, 17:28  |                                                                                                                Сообщение # 236
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 25
Репутация: 0   ±
Замечания:   ±
На сайте с 12.04.2010

Статус: Offline

нужна помощ .

как из этой программы оставить только вольтметр,

а все остальное убрать

программа ниже

'****************************************************************
'* Файл : V&A&Ter_metr_7seg.pbp *
'* Формат : Pic Basic Pro *
'* Цель : Демонстрация работы вольтметра и амперметра, *
'* : 4-х разрядного7-сегментного индикатора с точкой *
'* : и термометра на DS 1820 *
'* Автор : Евген Бойко *
'* Дата : 07.12.2008 *
'* Версия : 1.0 *
'* : *
'****************************************************************
' ---------------------[подключаемые файлы АЦП]--------------------------------
' ----------------Задание параметров для команды ADCIN ------------------------
Define ADC_BITS 10 ' Задать число разрядов в результате
Define ADC_CLOCK 3 ' Выбрать источник тактового сигнала (3 = RC)
Define ADC_SAMPLEUS 50 ' Задать время преобразования в микросекундах
'------------------------------------------------------------------------------
TRISA = %11111111 ' Установить PORTA
ADCON1 = %10000010
TRISB = $00 ' все выводы порта В - выход
TRISC = $0F ' выводы порта С - 0,1,2,3 = вход 4,5,6,7,=,выход

Segments Var PORTB ' вывод сегментов на PORTB
Digits Var PORTC ' вывод анодов цифр на PORTС

advv VAR WORD ' хранить результат чтения АЦП вольтметр
adva VAR WORD ' хранить результат чтения АЦП амперметр
indic VAR WORD ' число для вывода на индикатор
n Var Byte ' переменная значения зажигаемого разряда
x Var Byte ' переменная номера зажигаемого разряда
i Var Byte ' переменная равная количеству разрядов индикатора
vid Var Byte ' вид измерения U или А
Bk2 Var Byte ' переменная команды Button
BN Var Byte ' переменная П/П обработки клавиатуры
B0 Var Bit ' переменная П/П обработки клавиатуры
temperature VAR WORD ' Температура
temperature1 VAR WORD ' Температура
count_remain VAR BYTE ' Остаток счета
count_per_c VAR BYTE ' Счет C
znak VAR BYTE ' знак минус
DQ VAR PORTC.0 ' порт подключение DS 1820

'_________________ Подготовка DS 1820 к измерениям ________________________

OWOut DQ, 1, [$CC, $44] ' Старт измерения температуры 1
Pause 1000 ' пауза в 1 сек.
'____________ Начало работы программы измерения напряжения __________________
loop:
GoSub key:
Branchl BN, [volt, amper, term]
GoTo loop ' Закольцевать
volt:
ADCIN 0, advv ' Прочитать АЦП - канал 0, значение (0-1023)
advv = ((advv+1) */ 500)>>2 ' определить: (advv+1 * 500)/1024
indic = advv
vid = $C1 ' вид измерения U
GoTo loop1 ' Покажите значение на индикаторе
'____________ Начало работы программы измерения тока ________________________
amper:
ADCIN 1, adva ' Прочитать АЦП - канал 0, значение (0-1023)
adva = ((adva+1)*/500)>>2 ' определить: (adva+1 * 500)/1024
indic = adva
vid = $88 ' вид измерения А

loop1: GoSub display ' Покажите значение на индикаторе
GoTo loop ' Возврат
'********************************************************************
'________________ П/п вывода числа на индикатор ____________________
'********************************************************************
display:
For i = 0 To 3 ' счетчик разрядов
n = indic Dig i ' выделить число для индикации
GoSub display1 ' засветить чисдо на индикаторе
Pause 1 ' пауза в 1 милисек.
x = i + 4 ' произвести коррекцию вывода портов вкл. анодов
if x = 7 then Segments = vid ' на индикатор вид измерения
if x = 5 then PORTB.7 = 0 ' подготовить точку
Digits = Dcd x ' включить разряд на индикаторе

Next i ' продолжить вычислять разряд
Return
'********************************************************************
'_______________ П/п определения сегментов числа ____________________
'********************************************************************
display1:
Digits = $00 ' погасить индикаторы
Lookup n, [$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90,$BF,$FF ], Segments
' таблица 0 1 2 3 4 5 6 7 8 9 - off
Return

'********************************************************************
'************ П/П определения и вычисления температуры **********
'************** *****************************************************
term:
OWOut DQ, 1, [$CC, $44] ' Старт измерения температуры
OWOut DQ, 1, [$CC, $BE] ' Прочитать температуру
OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c]

' Вычислять температуру в градусах C
temperature = ((temperature * 10)>>4)
temperature1 = temperature
GoSub ind ' показать на индикаторе значение температуры
GoTo loop ' возврат
'********************************************************************
'______________п/п индикация температуры ____________________________
'********************************************************************
ind:
Digits = $00 ' погасить индикаторы
Segments = %10011100 ' знак градуса
Digits = Dcd 4 ' включить разряд на индикаторе
pause 5 ' пауза в 1 милисек.
GoSub minus ' определить знак температуры
n = temperature Dig 1 ' выделить число для индикации
GoSub display1 ' определить число
Digits = Dcd 5 ' включить разряд на индикаторе
Pause 5 ' пауза в 1 милисек.
n = temperature Dig 2 ' выделить число для индикации
GoSub display1 ' определить число
Digits = Dcd 6 ' включить разряд на индикаторе
Pause 5 ' пауза в 1 милисек.
n = znak ' выставить знак
GoSub display1 ' определить число
Digits = Dcd 7 ' включить разряд на индикаторе
Pause 5 ' пауза в 1 милисек.
Segments = %11111111 ' снять значение сегментов
Digits = $00 ' погасить индикаторы
Return

'********************************************************************
'----П/п Определение и вычисление отрицательной температуры --------
'********************************************************************
minus:
IF temperature < 3000 THEN minus1 'Если больше 3000 то отрицат. темпер.
temperature = 4096 - temperature 'Вычислить отрицат. температуру
znak = $0A 'Выставить минус по код таблице
goto minus2
minus1:
znak = $0B 'Иначе, выставить пробел по код таблице
IF temperature < 1000 THEN minus2
znak = $01 'Выставить сотню по код таблице
minus2:
Return
'********************************************************************
' П/П обработки клавиатуры
' Port C.3 - ввод = 1, активный 0
'****************************************************************
key:
Bk2 = 0 ' Переменная циклов команды BUTTON
Button portC.3,0,255,10,Bk2,0,k1 ' Проверка кнопки 1(Пропуск если Не Нажато)
if B0 = 1 then k2
BN = BN + 1 ' если нажата - записать в переменную +1
if BN = 4 then BN = 0
B0 = 1
k2:
return
k1:
B0 = 0
return
'==============================================================================
end

ivan_fd Дата: Вс, 25.04.2010, 22:12  |                                                                                                                Сообщение # 237
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Вот эту часть кода смотрите:
Code

loop:
GoSub key:
Branchl BN, [volt, amper, term]
GoTo loop ' Закольцевать
volt:
ADCIN 0, advv ' Прочитать АЦП - канал 0, значение (0-1023)
advv = ((advv+1) */ 500)>>2 ' определить: (advv+1 * 500)/1024
indic = advv
vid = $C1 ' вид измерения U
GoTo loop1 ' Покажите значение на индикаторе
kostya1435 Дата: Ср, 28.04.2010, 17:52  |                                                                                                                Сообщение # 238
Группа: Проверенные
Ранг:  Новенький
Сообщений: 1
Репутация: 0   ±
Замечания:   ±
На сайте с 09.04.2010

Статус: Offline

Здравствуйте, форумчане!
Помогите новичку!
Написал прогу в PBP для 12c508a, конфигурацию использовал такую "@ device pic12C508A, intrc_osc, wdt_off, mclr_on, protect_off", компилется нормально, без ошибок. Не пойму, можно ли и как включить внутренние подтягивающие резисторы и внутренний сброс при включении питания?
Хотелось бы увидеть описание всех конфигурационных команд для данного пика!
Всем спасибо!!!
Yurii_p Дата: Ср, 28.04.2010, 21:30  |                                                                                                                Сообщение # 239
Группа: Проверенные
Ранг:  Новенький
Сообщений: 1
Репутация: 0   ±
Замечания:   ±
На сайте с 28.04.2010

Статус: Offline

Добрых вам суток г-да форумчане! Появился вот такой вопрос. Возможно-ли на 16F877A сваять генератор импульс 2.0мкс изменяемый до 3.5мкс с шагом 0.5мкс частота следования 20кгц до 40кгц с шагом 5кгц? Судя по datashit сие на частоте кварца 16мгц с прескалером 4 вполне возможно, (на дмскретных 1chip 74123 и 10 минут времени), но хотелось бы попробовать на PIC, а т.к. програмёрством последний раз занимался лет20-25 назад ( PASCAL ОС RT11SJ), сейчас начал практически с нуля взял за основу PBP весьма понятна транскрипция языка и т.д, но дальше примеров продвижения минимальны. Поэтому буду благодарен любым практическим советам. Книгу Халибайка просмотрел довольно внимательно. BEST REGARDS1
gradus Дата: Вт, 04.05.2010, 12:51  |                                                                                                                Сообщение # 240
Группа: Проверенные
Ранг:  Новенький
Сообщений: 1
Репутация: 0   ±
Замечания:   ±
На сайте с 03.05.2010

Статус: Offline

Здравствуйте, форумчане! Начал я осваивать PicBasicPro, до этого программирование микроконтроллеров никогда не занимался, но когда то начинать стоит. Около трех месяцев делал программы в виде мигание светодиодов с кнопочками и без. Засовывал все это в PROTEUS, там симулировал схему убеждался в том что все работает и программировал контроллер. Все это я проделывал с могострадальным PIC16F84A. И вот теперь у меня появился вопрос. При создании программы в PBP по умолчанию частота кварца 4МГц. С помощью DEFINE OSC частоту можно изменить от 3 (3,58) до 40 МГц. А вот как частоту сделать например 32768 Гц я не знаю. При написании программы с указанием частоты кварца 4МГц пытался заменить его на кварц частотой 32786Гц. И тогда происходит не правельная работа опрератора PAUSE, а также всех остальных которые напрямую завязаны на частоту кварца. Подскажите мне что нужно написать в программе что-бы задать конкретную частоту кварца.
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: