Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С

Тут можно читать онлайн Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом «ДМК-пресс», год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом «ДМК-пресс»
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    5-9706-0034-2
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С краткое содержание

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - описание и краткое содержание, автор Стивен Барретт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.

Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.

Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать книгу онлайн бесплатно, автор Стивен Барретт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

number = 24;

new_number_one = number << 3;

new_number_two = number >> 3;

значение переменной new_number_one будет равно 192 (двоичный код 00000000 11000000), а значение переменной new_number_two — 3 (двоичный код 00000000 00000011).

Рассмотрим два других логических оператора: поразрядное логическое И и поразрядное логическое ИЛИ.

Символ Операция Пример
& Логическое И *(0x0023) & 0x57
| Логическое ИЛИ *(0x0000) | 0x35

Все числа, записанные в колонке «Пример», представлены в шестнадцатеричном коде, поскольку содержат префикс 0x. Унарный оператор * показывает, что действие будет производиться над содержимым ячейки памяти с физическим адресом, значение которого в шестнадцатеричном коде указано в скобках.

Результат операции логического И над двумя двоичными числами 01011100 и 11000111 будет равен :

01011100

& 11000111

----------

01000100

Результат операции логическое ИЛИ над теми же числами:

01011100

| 11000111

----------

11011111

В каких задачах управления используются эти логические операторы? В прикладных программах (т.е. программах управления) часто приходится изменять сигналы на отдельных линиях портов ввода/вывода. Регистры данных портов расположены по строго определенным в техническом описании физическим адресам. Так для того, чтобы сконфигурировать все линии порта PORT A на ввод, необходимо в регистр направления передачи порта DDRA (физический адрес 0x0002) записать все нули. Это может быть выполнено под управлением следующей строки:

*(unsigned char volatile*)(0х0002) = 0х00;

Если порт Port A настроен на вывод, то установить линию PTA7 в единицу без изменения состояния остальных линий порта можно посредством следующей записи:

PORTA |= 0х80; //установить PTA7

Выше использована сокращенная форма записи выражения:

PORTA = PORTA | 0х80; //установить PTA7

Выражение возвращает результат операции поразрядного логического ИЛИ числа 0x80 (10000000 в двоичной системе счисления) и содержимого порта PortA. После операции старший бит Port A будет установлен в 1, остальные биты останутся без изменения.

Аналогично, старший бит порта Port A может быть установлен в 0 (сброшен) посредством записи выражения:

PORTA &= ~0х80; //сбросить бит PTA7

Это выражение аналогично другому, более понятному для начального уровня освоения языка Си:

PORTA = PORTA & 0х7F; //сбросить бит PTA7

Для установки в 0 старшего разряда порта Port A содержимое порта побитно логически умножается на константу 0x7F (01111111 в двоичном коде). В результате старший бит становится равным 0, а остальные биты остаются без изменения. Запись ~0х80 в первом выражении предписывает перед выполнением операции логического И взять инверсию константы 0x80 (10000000), которая будет равна 0x7F (01111111). Вторая запись более понятна на начальном этапе программирования на Си, в то время как первая запись позволяет использовать одну и ту же константу в выражениях по установки и сбросу бита, что в практическом программировании удобно.

Операцию поразрядного логического И также следует использовать, если необходимо проверить, установлены или сброшены биты порта с определенными номерами. Например, приведенный ниже фрагмент программы производит чтение регистра данных порта Port A, логически умножает его содержимое на константу 0x81 и сравнивает полученный результат с нулем. Если условие равенства нулю выполняется, то это означает, что биты 7 и 0 порта Port A одновременно равны нулю, и следует выполнить действия, которые описаны операторами в фигурных скобках. Если хотя бы один бит PTA7 или PTA0 не равен нулю, то условие ((PORTA & 0х81) == 0) не выполняется, и операторы в фигурных скобках будут пропущены при исполнении.

if ((PORTA & 0x81) == 0) {

:

}

В качестве примера использования оператора ИСКЛЮЧАЮЩЕГО ИЛИ приведем выражение для инвертирования значения бита 7 порта Port A:

PORTA ~= 0х80; //инвертировать бит PTA7

Операторы группы унарных операций. Поскольку операторы инкремента и декремента были рассмотрены выше, основное внимание уделим операторам указателя и косвенной адресации (см. табл. 3.2). Для иллюстрации действия этих операторов рассмотрим следующий пример. Определим три целочисленных переменных с именами num, address, и new_num:

int num, address, new_num;

Также предположим, что переменная num расположена в памяти по адресу 0x2000. Запишем следующее выражение:

address = &num;

Результатом исполнения выражения будет присвоение переменной address значения адреса переменной num, т.е. новое значение переменной address будет равно 0x2000.

Запишем новое выражение:

new_num = *address;

Результатом выполнения этого выражения будет присвоение переменной new_num значения, которое содержится в ячейке памяти, адрес которой равен текущему значению переменной address. Поскольку содержимое address равно 0x2000, т.е. адресу переменной num, то рассматриваемое выражение в нашем случае эквивалентно выражению:

new_num = num;

Несмотря на то, что в рассмотренных примерах используется корректный синтаксис, в стандарте ANSI C переменную, в которой будут храниться адреса, используемые в качестве указателей на ячейки памяти других переменных, следует определять следующим выражением:

int *address

Отличие от предыдущего способа определения состоит в том, что теперь компилятор самостоятельно определяет формат представления данных для переменной address, чтобы в этой переменной было бы возможно разместить численное значение адреса. Если бы в предыдущем случае программист ошибся и определил тип переменной address как char, то в процессе исполнения выражения address = &num возникла бы потеря информации. В последнем случае ошибка формата исключается.

Обсудим действие следующего выражения:

address = (int *) 0x1000;

Это выражение назначает ячейку памяти с адресом 0x1000 как указатель с именем address. Для того, чтобы извлечь содержимое ячеек памяти следует поместить оператор * перед именем address.

3.4. Функции

В этом параграфе мы познакомимся с Вами с понятием «функция». Мы покажем Вам, как в языке Си определить функцию, как передать в функцию численные значения параметров и как получить после выполнения функции рассчитанные ею значения переменных.

3.4.1. Что такое функция?

Функция — это независимый фрагмент исходного текста программы, предназначенный для решения некоторой задачи. Функции состоят из операторов языка Си и представляют собой обычные подпрограммы.

Представьте себе, что Вы работаете членом большой бригады инженеров, которой предстоит разработать программное обеспечение для встраиваемых систем самолета. Очевидно, что на начальной стадии проекта вся команда разработчиков должна пройти через те этапы структурного проектирования, которые были рассмотрены нами в главе 2. На завершающем этапе структурного проектирования, когда одна большая задача будет поделена на множество мелких, но функционально законченных фрагментов, каждому из членов команды будет поручено выполнение какого либо фрагмента общей программы. Эти фрагменты оформляются как функции, из которых впоследствии будет состоять большая программа.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Барретт читать все книги автора по порядку

Стивен Барретт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С отзывы


Отзывы читателей о книге Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С, автор: Стивен Барретт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x