Реализация языка IL (Instruction List) для микроконтроллера AVR.
IL - язык программирования из группы стандарта IEC 61131-3. Предназначен для программирования промышленных контроллеров (ПЛК).
Исполняемая программа в виде байткода хранится в EEPROM микроконтроллера. Интерпретатор циклически исполняет байткод. Перед каждым циклом считывается состояние входов, в конце каждого цикла записывается конфигурация выходов.
IL (Instruction List) представляет собой текстовый язык программирования низкого уровня, который очень похож на Assembler, но к конкретной архитектуре процессора не привязан.
Основа языка программирования IL - это аккумулятор (accumulator-based architecture). В аккумулятор загружается значения переменной, а дальнейшее выполнение алгоритма представляет собой извлечение значения из аккумулятора и совершение над ним операций.
Разрабатываемая модификация является частично аккумуляторно-ориентированным языком. Аккумулятор представляет собой логическую переменную (true или false), в которую записывается результат выполнения оператора, и на основе значения аккумулятора выполнются или не выполняются последующие операторы.
Оператор | Описание |
---|---|
LD | Загрузить значение операнда в аккумулятор |
LDN | Загрузить обратное значение операнда в аккумулятор |
ST | Присвоить значение аккумулятора операнду |
STN | Присвоить обратное значение аккумулятора операнду |
AND | Поразрядное И аккумулятора и операнда |
ANDN | Поразрядное И аккумулятора и обратного операнда |
OR | Поразрядное ИЛИ аккумулятора и операнда |
ORN | Поразрядное ИЛИ аккумулятора и обратного операнда |
XOR | Поразрядное исключающее ИЛИ аккумулятора и операнда |
XORN | Поразрядное исключающее ИЛИ аккумулятора и обратного операнда |
NOT | Поразрядная инверсия аккумулятора |
MOV | Поместить значение второго операнда в первый |
PWM | Задать коэффициент заполнения ШИМ для указанного выхода |
ADD | Сложение первого и второго операнда, результат записывается в первый операнд |
SUB | Вычитание из первого операнда второго, результат записывается в первый операнд |
SET | Установка операнда в 1, когда содержимое аккумулятора true |
RST | Установка операнда в 0, когда содержимое аккумулятора true |
Добавить в будущем:
Оператор | Описание |
---|---|
MUL | Произведение операндов, результат записывается в первый операнд |
DIV | Целочисленное деление первого операнда на второй, результат записывается в первый операнд |
MOD | Остаток от целочисленного деления первого операнда на второй, результат записывается в первый операнд |
TRIG | Инвертировать состояние операнда |
TIMER | Таймер |
COUNTER | Счетчик |
ATmega16 @ 16MHz. Pinboard II R3.
Имя | № | Порт | Бит |
---|---|---|---|
X0 | 0 | PORTA | 0 |
X1 | 1 | PORTA | 1 |
X2 | 2 | PORTA | 2 |
X3 | 3 | PORTA | 3 |
Имя | № | Порт | Бит |
---|---|---|---|
Y0 | 0 | PORTB | 0 |
Y1 | 1 | PORTB | 1 |
Y2 | 2 | PORTB | 2 |
Y3 | 3 | PORTB | 3 |
Y4 | 4 | PORTB | 4 |
Y5 | 5 | PORTB | 5 |
Y6 | 6 | PORTB | 6 |
Y7 | 7 | PORTB | 7 |
Имя | № | Вывод | Бит |
---|---|---|---|
PY0 | 0 | OC1A | PD5 |
PY1 | 1 | OC1B | PD4 |
PY2 | 2 | OC2 | PD7 |
Имя | Вывод | Бит |
---|---|---|
D0 | PORTA | 4 |
D1 | PORTA | 5 |
D2 | PORTA | 6 |
D3 | PORTA | 7 |
RS | PORTD | 2 |
RW | PORTD | 3 |
E | PORTD | 6 |
Программное обеспечение для микроконтроллера ATmega16 написано на языке Assembler в среде AVR Studio v.4.19.