Все, что нельзя запрограммировать на ассемблере, приходится паять.
Этот сайт посвящен моим проектам на PIC контроллерах, доступных для публичного освещения. Все приведенные схемы реализованы в железе и работают в настоящее время в быту или производстве.
Для написания программ использован пакет MPLAB/х , свободно распространяемый фирмой MICROCHIP.
Используется программатор PICKIT2/3, ICD2/3.
Любую конструкцию можно собрать самому, даже если она платная и получить бесплатно код разблокировки.
Также можно приобрести в качестве набора для сборки или готового изделия.
Принимаются заказы на разработку аналогово-цифровой или цифровой электроники, систем управления и электроники для производства с применением контроллеров.
Вопросы и предложения писать на почту Gennadiy.V@gmail.com
Если у Вас есть интересные предложения, закакзы или вопросы и форум Вам не помог - адрес тот же.
Описание языка программирования
Требования к оборудованию.
Минимально: Контроллер семейства PIC18F67j60, одна микросхема внешней памяти 24LC512.
Максимально: Контроллер семейства PIC18F67j60, четыре микросхемы внешней памяти 24LC512, часы реального времени DS1307, микросхемы интерфейсов ST232, ST485, графический ЖКИ UC1601, обвязка для шины 1-Wire, для чтения EM-marine карт, выходные ключи… И многое другое. Неподключенные микросхемы/модули не влияют на общую работоспособность. Не будут работать только команды с ними связанные.
Распределение памяти и типы переменных
Память переменных:
Всего 1024 8-битных ячеек с адресами от 0 до 1023. На нее отображаются все переменные. Разбита на 4 страницы по 256 байт. При работе с индексными переменными, как массивом или строками запись не должна пересекать границы блоков по 256 байт.
Память программ
Микросхемы 24LC512. Вмещает в себя до 1008 строк программы, нумерованных от 0 до 1007
Возможна установка 2-х штук, в этом случае память программ увеличивается до 2032 строк.
Файловая система
Требуется установка 3 и 4 микросхем 24LC512.Общий размер диска 128 кб. Максимальное количество файлов – 64.
Максимальный размер файла 32кб. Поддерживаются все основные функции стандартной файловой системы. Также существует встроенная в прошивку файловая система для нужд WEB сервера.
Энергонезависимая память данных
Общий размер - 960 байт. Предназначена для хранения пользовательских данных, настроек и др. Поддерживаются функции побайтного доступа и блочного доступа. То есть можно сохранять/читать как одну переменную, так и массив.
Переменные:
Для всех переменных выделена область оперативной размером 1024 байта памяти, разделенная на 4 блока по 256 байт. Существует 52 обычных переменных, обозначаемых буквами от A до Z и a-z. Внутреннее представление 16-битное со знаком. Отрицательные числа записываются в дополнительном коде. Отображаются на память с адреса 128 по 231. Занимают два байта, старший байт числа в младшем адресе. При печати оператором PRINT отображаются знаковыми целыми в диапазоне от -32768 до +32767
Пример записи выражения с переменными: 10 C=А+b:#(100)=55:$(A)=C +(10/2+1)*2
Существует три индексных переменных $() , #() , @(). Индексом может быть число от 0 до 1023 или простая переменная, при этом ее значение должно быть в этом же диапазоне. Индекс соответствует адресу ячейки.
Так например индекс =129 соответствует младшему байту обычной переменной A. Пустой индекс не допускается.
Внутреннее представление 8-битное . Значение всех переменных с одним индексом –одинаковое. Основное применение – косвенная адресация, работа с текстами и массивами.
Их отличие - при выводе.
Отображение при печати оператором PRINT значения ячейки 0х4А по адресу 20
$(20) - представление как символ с кодом 0х4А – J по таблице ASCII
#(20) - представление десятичного числа - 74
@(20) - представление как HEX запись – 4A
При работе с арифметическими операторами значение представляется числом от 0 до 255. При математических операциях с разными типами в индексные переменные записывается и читается младший байт от обычных переменных. Вложенные индексы не поддерживаются.
Отдельной записи переменных типа «текст» не предусмотрено, тем не менее, поддерживается работа со строками текста. Для этого предусмотрен формат хранения строк в индексных переменных. Любая строка текста может быть записана в массив индексной переменной $(x). В первой ячейке хранится длинна текста байт от 0x00 до 0x7F, в остальных сам текст в ASCII кодах символов. Следует следить за размером текстовых массивов и их возможным наложением друг на друга.
Числа:
Все числа являются знаковыми целыми в диапазоне -32767 до +32767 либо целыми в диапазоне 0-255
Текст
Текст всегда заключается в кавычки ”text”
Операторы
Арифметические:
+ сложение
- вычитание
* умножение
/ целочисленное деление (нужно иметь в виду, что, например, 14/5=2)
% - взятие остатка от деления (14%5=4)
& побитное И
| побитное или
^ побитное исключающее или
! побитная инверсия
Сравнения (используются только оператором IF):
= равно
<> (или ><) не равно
> больше
< меньше
>= (или =>) больше или равно
<= (или =<) меньше или равно
Выражения
Выражения составляются из чисел, переменных, арифметических логических и битовых операторов. Операторы сравнения не могут быть использованы в выражениях. Функции не могут быть использованы в выражениях. Вычисления производятся слева направо. Применением скобок можно изменить порядок вычислений.
Существует 4 уровня.
- сначала вычисляются выражение с унарными операторами + и –
например: A=-B*2, при этом первым будет выполнено взятие B с противоположным знаком;
- затем вычисляются выражения с * и / и %
- затем вычисляются выражения с + и -
- затем вычисляются выражения с & | ^ !
Функции
Функции могут быть одного или нескольких аргументов, перечисленных через запятую в фигурных скобках
Пример записи A=ROR{#(100),5}:C=SQR{A*A+B*B} В качестве аргумента могут выступать числа, переменные, выражения.
Операторы и команды
У операторов/команд могут быть параметры. Они указываются через пробел от имени оператора и если их несколько, то перечисляются через запятую. Для некоторых через точку с запятой. В качестве параметров могут выступать числа, переменные, для некоторых – текст или выражения.
Листинг программы
Все строки программы нумеруются от 0 до 1023 (до 2047)
В одной строке могут быть записаны несколько выражений и/или функций и/или операторов через : двоеточие.
Принята запись функций и операторов только ПРОПИСНЫМИ буквами.
Длинна строки ввода ограничена 63 символами, включая номер. Рекомендуется использовать наибольшее заполнение для экономии памяти, если надо. Лишние символы в конце строки игнорируются.
Программа выполняется до последней строки и останавливается. Остановить или закончить выполнение раньше можно командами STOP, END . Для постоянной работы используйте бесконечный цикл.
В данной реализации есть оператор обработки ошибок, который позволяет выполнить переход на другую часть программы при возникновении ошибки в основной части без остановки выполнения программ.
Встроенный редактор
Добавление строки - набрать строку с номером
Удаление строки – набрать номер строки
Копирование строки - команда COPY . Для копирования массива строк команда COPY может быть использована и в программе. Для удаления строки командой COPY надо скопировать несуществующую строку в удаляемую строку или из консоли просто набрать ее номер без текста. Таким образом можно менять структуру программы из самой программы
Метки
Меткой перехода является номер строки. Количество ограничено размером самой программы. От 0 до 2047
Если строки не существует, то выполняется ближайшая с большим номером. Пример допустимых меток: 10, 200, 210.
Потоки ввода-вывода
Поток КОНСОЛЬ – по умолчанию консоль ввода вывода - ETHERNET. Текстовый ввод/вывод.
Поток ТЕРМИНАЛ - ЖКИ дисплей, подключенный к контроллеру и клавиатура
Поток RS232 - USART контроллера с возможностью работы через 485 /422 интерфейс. Бинарный и текстовый ввод/вывод
Поток Ethernet UDP или TCP/IP клиент/сервер
Питание
Внешний источник питания напряжением 12-15 вольт постоянного тока 350 mA
Быстродействие
Среднее время выполнения простых команд – 150 мкс @ 40MHz
Прошивка контроллера.
Контроллер программируется программой - загрузчиком один раз с помощью программатора.
В дальнейшем загрузка и обновление WEB PIC MICRO Basic производится с помощью программы BOOTLOADER через сеть Ethernet.
Обновление не затрагивает программу пользователя и файлы на FLASH диске.
По желанию заказчика в язык могут быть добавлены команды аппаратной обработки любых датчиков, интерфейсов, протоколов.
ПО распространяется под лицензией Shareware. Вы можете скачать с сайта схемы, инструкции, прошивки бесплатно.
Новые версии прошивок и документации скачивать в разделе Файлы / Files
Обсудить на форуме
Купить
Страницы
Общее описание и технические характеристики
Аппаратная платформа. Схемы, разводка.
Программное обеспечение. Bootloader - прошивка и программа загрузки.
Web PICµBASIC. Загрузка и установка
Программное обеспечение. BASIC_Terminal.
WEB PICµBASIC. Описание языка программирования
WEB PICµBASIC. Список команд, операторов, функций. Часть 1.
WEB PICµBASIC. Список команд, операторов, функций. Часть 2.
Web PICµBASIC. WebServer - настройка и программирование
Web PICµBASIC. Файловая система.
Web PICµBASIC. Модули расширения.
Дисплей HD44780. Схема подключения. Список команд, операторов, функций.
Интерфейс UART, RS232/RS485. Схема подключения. Список команд, операторов, функций.
Шина 1-Wire. Ключи и датчики. Схема подключения. Список команд, операторов, функций.
RFID EM-Marin 125 кГц. Схема подключения. Список команд, операторов, функций.
Датчик AM2302/DHT22. Схема подключения. Список команд, операторов, функций.
Дискретные входы. Схема подключения. Список команд, операторов, функций.
Интерфейс MODBUS RTU MASTER. Список команд, операторов, функций.
Клавиатура и силовые ключи. Схема подключения. Список команд, операторов, функций.
Примеры программирования.
Графический дисплей на контроллере UC1601s.