Skip to content

nf-zvv/avr_plc_m16

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AVR_PLC

Реализация языка IL (Instruction List) для микроконтроллера AVR.

IL - язык программирования из группы стандарта IEC 61131-3. Предназначен для программирования промышленных контроллеров (ПЛК).

Исполняемая программа в виде байткода хранится в EEPROM микроконтроллера. Интерпретатор циклически исполняет байткод. Перед каждым циклом считывается состояние входов, в конце каждого цикла записывается конфигурация выходов.

Описание языка IL

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 Счетчик

Hardware

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

LCD 16x2

Имя Вывод Бит
D0 PORTA 4
D1 PORTA 5
D2 PORTA 6
D3 PORTA 7
RS PORTD 2
RW PORTD 3
E PORTD 6

Firmware

Программное обеспечение для микроконтроллера ATmega16 написано на языке Assembler в среде AVR Studio v.4.19.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published