мой основной проект - http://kystari.ru/
(Сразу же примечание! Большая часть теории в предполагаемом курсе - перевод оригинальной документации)
Как было сказано ранее, все микроконтроллеры всех линеек STM8 имеют единое ядро. Ядро это имеет 6 регистров, поддерживает 18 режимов адресации и 80 инструкций. Шесть внутренних регистров это:
1. Аккумуляторный 8-битный регистр А. Регистр общего назначения для хранения результата математических и логических действий.
2,3. Индексные 16-битные регистры X и Y. Используются для адресации, для временного хранения данных при различных операциях.
4. Программный счетчик PC. 24-битный регистр, используемый для хранения адреса следующей выполняемой инструкции процессором. 2^24 дает 16Мбайт доступной адресации памяти.
5.
Указатель стека SP. 16-битный регистр, содержащий адрес следующей свободной позиции в стеке. После перезагрузки МК, в указателе стека содержится верхняя граница стека. SP автоматически инкрементируется/декрементируется при удалении элемента из стека/добавлении элемента в стек. При переходе через нижнюю границу стека, в SP загружается адрес верхней границы, соответственно новая информация, помещаемая в стек затирает предыдущую.
6.
Регистр состояния CC. 8-битный регистр, показывающий результат выполнения инструкций процессором. 6 бит в этом регистре не используется. Флаги:
V - флаг переполнения, 7 бит.
I1 - флаг прерывания, 5 бит. Вместе с флагом
I0 определяет приоритет возникшего прерывания.
H - дополнительный флаг переноса, 4 бит. Устанавливается в 1 при заеме бита из старшей половины байта в младшую.
I0 - флаг прерывания, 3 бит. (см.
I1, таблицу).
N - флаг отрицательного результата операции, 2 бит. Устанавливается в 1 при получении отрицательного результата выполнения операции (самый старший бит результата равен 1).
Z - флаг получения нулевого результата, 1 бит.
C - флаг переноса, 0 бит. Выход за границу байта.
Стоит также упомянуть про регистр глобальной конфигурации
CFG_GCR. Регистр 8-битный, содержит в себе 2 флага.
AL (1 бит)- задает режим работы контролера после выполнения обработчиков прерываний. 0 - после обработчика идет возврат в основную программу к следующей по очереди инструкции, 1 - после обработчика процессор уходит в режим энергосбережения (сна).
SWD (0 бит) - деактивация отладчика SWIM. 0 - SWIM включен, 1 - отключен. При включенном отладчике, пин используемого им порта не должен быть использован в качестве обычной линии ввода/вывода.