ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

ГЛАВА 1. Язык программирования C-51 . . . . . . . . . . . . . . . . . 5
Применение языка программирования C-51 . . . . . . . . . . . . . 6
Отладка программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1. Структура программ в языке программирования С-51. . . . . . 12
1.2. Символы языка программирования С-51 . . . . . . . . . . . . . 14
Лексические единицы, разделители
и использование пробелов . . . . . . . . . . . . . . . . . . . . 18
Идентификаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Ключевые слова. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4. Выражения в операторах языка программирования C-51 . . . . 26
Приоритеты выполнения операций . . . . . . . . . . . . . . . . . . 31
1.5. Операторы языка программирования C-51 . . . . . . . . . . . . 32
Операторы объявления . . . . . . . . . . . . . . . . . . . . . . . . . 32
Исполняемые операторы . . . . . . . . . . . . . . . . . . . . . . . . 34
Оператор присваивания . . . . . . . . . . . . . . . . . . . . . . . . . 34
Условный оператор. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Структурный оператор {} . . . . . . . . . . . . . . . . . . . . . . . . 36
Оператор цикла for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Оператор цикла с проверкой условия до тела цикла while. . . . . . 40
Оператор цикла с проверкой условия после тела цикла do while . . 42
Оператор break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Оператор continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Оператор выбора switch . . . . . . . . . . . . . . . . . . . . . . . . . 44
Оператор безусловного перехода goto . . . . . . . . . . . . . . . . . 46
Оператор выражение. . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Оператор возвращения из подпрограммы return . . . . . . . . . . . 47
Пустой оператор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.5. Объявление переменных в языке программирования C-51 . . . 49
Категории типов данных . . . . . . . . . . . . . . . . . . . . . . . . 51
Целые типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Числа с плавающей запятой. . . . . . . . . . . . . . . . . . . . . . . 53
Переменные перечислимого типа . . . . . . . . . . . . . . . . . . . 53
1.7. Объявление массивов в языке программирования C-51 . . . . . 56
1.8. Структуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.9. Поля битов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.10. Объединения (cмеси) . . . . . . . . . . . . . . . . . . . . . . . . 62
1.11. Объявление указателей в языке
программирования C-51 . . . . . . . . . . . . . . . . . . . . . . . 63
Нетипизированные указатели . . . . . . . . . . . . . . . . . . . . . 66
Память_зависимые указатели. . . . . . . . . . . . . . . . . . . . . . 68
1.12. Объявление новых типов переменных . . . . . . . . . . . . . . 69
1.13. Инициализация данных . . . . . . . . . . . . . . . . . . . . . . . 70
1.14. Использование функций в языке
программирования С-51 . . . . . . . . . . . . . . . . . . . . . . 74
Определение функции . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Параметры функций . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Предварительное объявление подпрограмм . . . . . . . . . . . . . 81
Вызов функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Рекурсивный вызов подпрограмм . . . . . . . . . . . . . . . . . . . 85
Подпрограммы обработки прерываний . . . . . . . . . . . . . . . . 86
1.15. Области действия переменных и подпрограмм . . . . . . . . . 87

ГЛАВА 2. Работа с интегрированной средой программирования. . . . 90
2.1. Написание программы . . . . . . . . . . . . . . . . . . . . . . . . 90
2.2. Работа с текстовым редактором интегрированной среды
программирования keil-С. . . . . . . . . . . . . . . . . . . . . . . 91
2.3. Создание программных проектов . . . . . . . . . . . . . . . . . . 94
Разработка программных средств . . . . . . . . . . . . . . . . . . . 94
Создание программного проекта в интегрированной среде
программирования keil-С . . . . . . . . . . . . . . . . . . . . 96
Настройка свойств программного проекта в интегрированной
среде программирования keil-С . . . . . . . . . . . . . . . . . 98
Работа с программным проектом в интегрированной среде
программирования keil-С . . . . . . . . . . . . . . . . . . . . 102
2.4. Трансляция программных модулей
и программных проектов . . . . . . . . . . . . . . . . . . . . . . 102
Трансляция программных модулей. . . . . . . . . . . . . . . . . . 102
Связывание объектных модулей и получение
загрузочного файла. . . . . . . . . . . . . . . . . . . . . . . . 111
Трансляция программных проектов . . . . . . . . . . . . . . . . . 111
Применение интегрированной среды программирования
Keil-C для трансляции программного проекта . . . . . . . . 112
2.5. Отладка программ во встроенном отладчике
программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Способы отладки программ . . . . . . . . . . . . . . . . . . . . . . 114
Использование встроенного отладчика программ . . . . . . . . . 115

ГЛАВА 3. Особенности ввода и вывода информации
в микроконтроллерных системах. . . . . . . . . . . . . . . 120
3.1. Вывод информации через параллельные порты . . . . . . . . . 120
3.2. Ввод информации через параллельный порт. . . . . . . . . . . 127
3.3. Обмен информацией через последовательный порт . . . . . . 133

ГЛАВА 4. Пример реализации микроконтроллерного устройства . . 139
4.1. Разработка структурной схемы . . . . . . . . . . . . . . . . . . . 139
4.2. Разработка принципиальной схемы . . . . . . . . . . . . . . . . 141
4.3. Разработка программы устройства. . . . . . . . . . . . . . . . . 144
Разработка генератора секундных импульсов . . . . . . . . . . . . 145
Разработка подпрограммы часов . . . . . . . . . . . . . . . . . . . 151
Разработка подпрограммы индикации. . . . . . . . . . . . . . . . 154
Разработка подпрограммы семисегментного дешифратора . . . . 159
Программирование микропроцессорных систем на языке C-51
Разработка блока коррекции часов . . . . . . . . . . . . . . . . . . 161

Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Приложения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
П.1. Система команд микроконтроллеров семейства MCS-51 . . . 169
П.2. Программа часов. . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Листинг модуля main.c . . . . . . . . . . . . . . . . . . . . . . . . . 187
Листинг модуля Global . . . . . . . . . . . . . . . . . . . . . . . . . 192
Заголовочный файл модуля Global.h . . . . . . . . . . . . . . . . . 193
Листинг модуля clock . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Заголовочный файл модуля clock.h . . . . . . . . . . . . . . . . . . 196
Листинг модуля Indic . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Заголовочный файл модуля Indic.h . . . . . . . . . . . . . . . . . . 200
Листинг модуля CorrVrem . . . . . . . . . . . . . . . . . . . . . . . 200
Заголовочный файл модуля CorrVrem.h . . . . . . . . . . . . . . . 204
Листинг проекта Clock . . . . . . . . . . . . . . . . . . . . . . . . . 204

СПИСОК ЛИТЕРАТУРЫ . . . . . . . . . . . . . . . . . . . . . . . 210