С точки зрения программиста МК - это автомат для работы с информацией (числами, данными). Сам этот автомат состоит из типовых узлов, которые работают по определенным (типовым) принципам. Эти принципы в целом одинаковы для всех МК. Отличия бывают в названиях и обозначениях, суть остаётся неизменной.
Основными узлами МК являются память (memory, mem, M) и вычислительное ядро (core), которое включает в себя арифметико-логическое устройство (АЛУ, англ. ALU, может выполнять логические операции, сложение, умножение и др.)
Любая память состоит из ячеек. В каждой ячейке записано число (данные, data). Каждая ячейка имеет номер, который называется адресом (address, addr). Доступ к данным ячейки осуществляется по её адресу. Доступ может быть на чтение (read, R) из памяти или на запись (write, W) в память. В простых дешевых МК в одной ячейке памяти обычно хранится один байт информации.
В ядре МК есть несколько особых ячеек памяти, которые имеют имя (и иногда адрес, но используется обычно имя). Эти особые ячейки называются регистрами МК. В STM8S есть регистры A (8 бит), X (16 бит), Y (16 бит), PC (24 бита) и несколько других.
Ядро МК может выполнять фиксированный набор примитивных операций. Эти операции, для примера, могут быть такими:
загрузить A <- M(addr1)
число из памяти М по адресу addr1 загрузить в регистр А
сложить A <- A + 3
к числу в регистре A добавить число 3 и записать обратно в А
загрузить M(addr2) <- A
число из регистра А записать в память М по адресу addr2
Перепишем тот же список операций по-другому:
LD A, M(addr1)
ADD A, 3
LD M(addr2), A
Такая запись последовательности элементарных операций МК называется программой на языке ассемблера. У каждого МК свой язык ассемблера и свои способы обозначения команд и адресов.
Далее представим, что:
команда LD A,... имеет числовой код 1
команда ADD A,... имеет числовой код 2
команда LD ...,A имеет числовой код 3
Перепишем список операций в виде чисел:
1 addr1
2 3
3 addr2
Эту последовательность чисел можно назвать программой для МК, представленной в числовом коде. Эта последовательность чисел может быть записана во Flash память и храниться в МК постоянно (даже при выключении питания).
Ядро МК "умеет" читать программу из памяти и выполнять соответствующие элементарные операции. Для организации процесса последовательного выполнения команд используется специальный регистр PC (program counter, счетчик [команд] программы). Этот регистр содержит адрес ячейки памяти той операции (команды), которая сейчас выполняется. Когда операция выполнена, значение PC увеличивается на длину выполненной операции, выполняется чтение кода следующей операции и ее выполнение. Таким образом организован процесс последовательного выполнения элементарных операций, записанных в памяти МК.
Существует отдельная группа операций МК, которая позволяет "нарушить" последовательное выполнение программы и перейти к выполнению программы по другому адресу - это команды перехода. На языке ассемблера они обычно начинаются с буквы J (от англ. jump - прыгнуть) и имеют вариации, например JRT, JRE, JREQ и др.
Например:
Команда Действие
JRT addr3 PC <- addr3
Команды перехода могут быть безусловными и выполняться всегда, а могут быть условными и выполняться (или нет) в зависимости от результата предыдущей операции.
Объединение элементарных операций МК в последовательности с условными переходами позволяет реализовать сложные алгоритмы работы устройства. В этом состоит суть работы любого МК.