Читайте также:
|
|
Ассемблерные вставки - это вставки в процедуры си ассемблерного кода.
Оформление:
main()
{
__asm{
// ассемблерный код
}
}
Вставки для МК.
Управление и контроль работы микроконтроллера и его отдельных внутренних модулей осуществляется путём записи и чтения специальных ячеек-регистров в служебной области памяти ОЗУ - регистров специального назначения (Special Function Register, далее просто SFR).
Основная идея, позволяющая использовать Си для программирования микроконтроллеров, такова: регистры специального значения являются такими же переменными языка Си, как и объявленные пользователем. Этим переменным можно присваивать значения, управляя работой микроконтроллера, или считывать их, получая таким образом информацию о его текущем состоянии. Объявлять регистры микроконтроллера подобно пользовательским переменным не нужно по нескольким причинам. Во-первых, их размер заранее известен: в Си для AVR это беззнаковые 8-разрядные переменные. Во-вторых, SFR имеют строго определённые имена и адреса в памяти, являясь так называемыми регистрами ввода-вывода.
Тем не менее знакомить программу с регистрами спецназначения нужно, и делается это с помощью подключения так называемых заголовочных файлов.
В начале любой программы на Си мы можем видеть строки типа:
#include "file1.h" // Включить в код содержимое файла "file1.h".
Разработчик может создавать собственные h-файлы и помещать их, учитывая содержимое, в любое место программы. Однако, чтобы познакомить программу с SFR для данного типа микроконтроллера, необходимо подключать вполне конкретные заголовочные файлы. Их имена и количество зависит от конкретной среды разработки и типа используемого микроконтроллера, так, например, в IAR для Atmega64 достаточно прописать строки:
#include "iom64"
#include "inavr.h"
Управление работой микроконтроллера в большинстве случаев сводится к следующему простому набору действий с его регистрами:
1. Запись в регистр необходимого значения.
2. Чтение значения регистра.
3. Установка в единицу нужных разрядов регистра.
4. Сброс разрядов регистра в ноль.
5. Проверка разряда на логическую единицу или логический ноль.
6. Изменение логического состояния разряда регистра на противоположное.
Во всех указанных действиях принимает участие оператор присваивания языка Си, записываемый в виде знака равенства.
Си-код для гаджетов.
Обычно для программирования периферийного устройства программист должен писать нужные значения в различные поля управляющих регистров. В простейшем варианте это сводится к записи шестнадцатеричных данных в конкретные адреса памяти или маскирование конкретных бит. Для упрощения этой утомительной процедуры были созданы заголовочные файлы.
Заголовочные Си-файлы являются частью библиотеки и состоят из Си-функций, макросов, периферийных структур и определений переменных.
Регистры и битовые поля представлены в виде структур данных. Для инициализации и изменения регистров (структур) используются Си-функции или макросы.
Регистры периферийного устройства подключаются при помощи директив #define и #include
Дата добавления: 2015-10-13; просмотров: 125 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Особенности сборки программы в среде разработки QT-Creator. | | | Особенности использования, преимущества и недостатки кроссплатформенной среды разработки QT creator. |