Свежие обсуждения
Микроконтроллеры

MicroCODE Studio-PICbasic PRO- неуловимая программулька

1 7 9

zakonnik:
0 var TRISB%00000001
1 var TRISB%10011111

И чего конкретно ты хотел добиться от компилятора и МК этими командами?
Заблуждение начинающих программистов - "освою синтаксис языка, научусь писать код и смогу сам писать программы на свой вкус!". Ага, как бы не так. Ни компьютер, ни компилятор, ни МК думать не умеют. Думать умеет только программист. Приходится думать и за себя и за контроллер. А думать тааак неохооота... Распоряжаться-то зело приятнее!
С людьми прокатывают такие выходки, как распоряжение начальника "ну ты там разберись и сделай всё как надо!" А с МК не прокатит. Он разбираться и догадываться не умеет. Ему каждый шаг конкретно указывать следует.

 

picmaniac: И чего конкретно ты хотел добиться от компилятора и МК этими командами?
сделать таблицу для семисегментных индикаторов Если чё не так поправьте

 

zakonnik: АК, не подскажите ещё момен
Да не занимался я программированием на пикбейсик давно, чтобы мне объяснить подробности, надо взять и подчитать описание компилятора (языка пикбейсикпро), а не лучше, если Вы сами это сделаете (можно даже с цитатами на форуме, если что не ясно), ссылку на рус. перевод я давал.

 

picmaniac: Запущаем mb. Project - New Project. Обзываем проект желаемым имечком (Name), указываем папку, в которой он будет находиться (Path). Выбираем МК и задаём требуемое слово конфигурации. ОК. Пишем свой код. Компилим и тестируем. Сохраняем проект при необходимости. Он, насколько я помню, и сам сохраняется.

Спасибо, picmaniac, теперь вполне понятно. Оказывается, тут примерно то же самое, что и в МПЛабе. Теперь вроде всё получается, как положено.

И ещё один момент можно прояснить? В Микробейсике и в Микрокоде что, разные Бейсики используются???
Дело в том, что попробовал в первом кусок програмульки, которую АК предлагал для второго в качестве пробного(для мигания светодиода), и при попытке откомпилить получил кучу ошибок, вот таких:
Identifier 'high' was not declared
Sintax error: Expected 'end' but 'loop' found
Sintax error: Expected '.' but " found

... А образец такой же проги из комплекта Микробейсика выглядит совсем по другому! Вот так:

main:
TRISB = 0 ' configure pins of portb as output
PORTB = %11111111 ' turn ON diodes on portb
delay_ms(1000) ' wait for 1 second
PORTB = %00000000 ' turn OFF diodes on portb
delay_ms(1000) ' wait for 1 second
goto main ' endless loop
end.

Немного на Ассемблер похоже...
И если Бейсики действительно разные, то существует ли описание на русском для "Бейсика из Микробейсика"?

АК: Ограничение в 30 строчек дает демо компилятор, если вы скачали компилятор 2.47 с казус.ру (по выше приведенной ссылке), то, при работе с ним ограничений в количестве строк бейсик программы нет.

Да, я скачал именно 2.47. Теперь хоть на душе полегчало, спасибо, АК, за разъяснение!
Я-то думал, почему не могу найти таблетку, а её и не существует, по причине ненадобности!

 

Бейсики действительно разные. Неудивительно, ведь делались они совершенно разными конторами из разных стран. В комплекте mikroBasic есть файл с описанием, называется mikrobasic_pic.chm
Копируем интересующие куски оттуда. Любой электронный переводчик поможет их нормально прочесть. Хотя бы www.translate.ru

zakonnik: сделать таблицу для семисегментных индикаторов
Этот замысел ясен. А подробнее? Как именно?
zakonnik: Если чё не так поправьте
А не лучше ли самому всё-таки разобраться? Сложного-то ничего нет в этом. Посмотри хотя бы пример из ветки "Ликбез № 2", на микробейсике написанный. Таблицы можно сделать в виде массива, одной строчкой, например:
const dc7 as byte[11] = (0x00, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x3F)
Массив - это обыкновенная таблица, в которой содержится в данном случае 11 чисел. Эти числа являются элементами массива. Каждое число занимает 1 байт. Номера элементов (индексы) начинаются с нуля и заканчиваются числом, равным (кол-во_элементов - 1). В данном случае последний элемент имеет индекс 10. Таблица хранится в данном случае в памяти МК.
Тогда каждому индексу будет соответствовать элемент массива (байт), в который и записана требуемая комбинация сегментов. Если выдать этот байт в порт - получим желаемый символ на индикаторе. Пример:
PORTB = dc7[4]
В порт будет выдан байт 0x66.
Индексом массива может быть не только число или константа, но и переменная.
PORTB = dc7[MYVAR]
Присваивая переменной различные значения, можно получить различные символы на индикаторе.

 

picmaniac, таксс, надо переварить что Вы здесь написали я не понимаю вот этого : const dc7 as byte[11] = (0x00, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x3F) , начало ясно, а вот всякие 0x00, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x3F, для понимания сложновато. Это получаеться цифры в кокой- то системе счисления?

 

zakonnik: Это получаеться цифры в кокой- то системе счисления? Это массвив с именем "dc7" из 11 чисел, формата "byte", представленных в шестнадцатеричной системе исчисления.

 

zakonnik: вот всякие 0x00, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x3F, для понимания сложновато
Ничего там сложноватого нет. Это обыкновенные цифры, только записанные в шестнадцатиричном виде. Гуглить по словам "представление чисел в шестнадцатиричном виде" и разбираться. Посмотреть стр.112 книги Шпака. И например, ещё вот тут: http://naf-st.ru/main/digit/?sysct

 

picmaniac, ну, допустим, научился я мигать светодиодами, подключенными к порту В в любых сочетаниях. А как, для регулирования скорости мигания, подключить(наверное, к порту А?) переменный резистор? Или 2 кнопки - +/-? В примерах я такого что-то не нашёл...

 

AVM: А как, для регулирования скорости мигания, подключить(наверное, к порту А?) переменный резистор?
Наверное так: в операторе PAUSE, в место числа (времени задержки), вписываем переменную. С помощью оператора POT считываем положение потенциометра и записываем в другую переменную. Производим необходимые математические вычисления со второй переменной и записываем в переменную для оператора PAUSE. Должно работать.

AVM: Или 2 кнопки - +/-?
В этом случае цикл со счетчиком должен запускаться по нажатию кнопки. Значение переменной по нажатию одной кнопки должно возрастать, а по нажатию другой кнопки уменьшаться. Эту же переменную используем как время задержки, для оператора PAUSE.