Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 22:23, курс лекций
К началу 70-х годов были созданы сложные системы. Возникла потребность в передаче части функций управления периферийным устройствам, расположенным рядом с объектом управления. К концу 60-х годов в технике стала проявляться тенденция к децентрализации управления. Для этого требовались недорогие, малогабаритные и надежные вычислители. С другой стороны электрическая промышленность к этому времени способна была производить интегральные микросхемы (ИМС) до 3-го уровня интеграции.
1. Введение, цели и задачи курса ……………………………………………………………… 3
2. Историческая справка …………………………………………………………………………. 4
3. Структурная организация типового микроконтроллера МК51 …………………………….. 7
4. Методология проектирования систем на основе МП и МЭВМ ……………………………. 8
Описание микроконтроллера C8051F310/311 ……………………………………………… 12
1. Краткий обзор ……………………………………………………………………………… 12
2. Предельно допустимые параметры ……………………………………………………… 24
3. Основные электрические параметры …………………………………………………… . 25
4. Описание корпусов и выводов …………………………………………………………… 26
5. 10-разрядный АЦП ………………………………………………………………………… 30
6. Источник опорного напряжения ………………………………………………………… 44
7. Компараторы …………………….………………………………………………………… 46
8.4. Режимы управления электропитанием ……………………………………………… 53
9. Источники сброса ………………………….……………………………………………… 55
10. Flash-память ……………………………………………………………………………… 60
11. Встроенная память XRAM ……………………………………………………………… 70
12. Генераторы …………………………………………………………….………………… 72
13. Порты ввода/вывода ……………………..……………………………………………… 76
14. SMBus ……………………………………..……………………………………………… 87
15. UART0 ……………………………………..……………………………………………… 103
16. Модуль расширенного SPI (SPI0) ……..……………………………………………… 111
17. Таймеры ……………………………………………………………………………………… 122
18. Программируемый массив счетчиков ……………………………………………………… 137
Список использованных источников ……………………………………………………………
передачи, а последний бит текущей передачи сдвигается в сдвиговый регистр
модуля SPI0. Этот бит не сбрасывается аппаратно, его необходимо сбросить
программно.
Биты 3-2: NSSMD1-NSSMD0: Биты режима выбора ведомого. С помощью этих бит
осуществляется выбор между следующими режимами функционирования вывода
NSS (см. раздел «16.2. Функционирование SPI0 в ведущем режиме» на стр. 239 и
раздел «16.3. Функционирование SPI0 в ведомом режиме» на стр. 241):
00: 3-х проводный ведомый или 3-х проводный ведущий режим. Сигнал NSS не разводится
с помощью матрицы на внешний вывод МК.
01: 4-х проводный ведомый режим
или режим работы с
умолчанию). Вывод NSS всегда является входом.
1х: 4-проводный режим работы с одним ведущим. Вывод NSS настроен как выход и
состояние сигнала на нем определяется значением бита NSSMD0.
Бит 1: TXBMT: Флаг опустошения буфера передатчика. Этот бит будет сбрасываться в 0 при
записи новых данных в буфер передатчика. После передачи данных из буфера
передатчика в сдвиговый регистр модуля SPI0 этот бит будет установлен в 1,
показывая, что в буфер передатчика можно записывать новые данные.
Бит 0: SPIEN: Включение модуля SPI0. Это бит включает/отключает модуль SPI0.
0: Модуль SPI0 отключен.
1: Модуль SPI0 включен.
SFR-описание 16.3. SPI0CKR: Регистр
установки тактовой частоты
SFR-адрес: 0xA2
Биты 7-0: SCR7-SCR0: Тактовая частота модуля SPI0. Эти биты определяют частоту выходного
сигнала SCK, когда модуль SPI0 работает в ведущем режиме. Частота тактового сигнала
SCK представляет собой поделенную на определенный коэффициент системную тактовую
частоту и задается следующим уравнением:
fSCK = 0.5 . SYSCLK / (SPI0CKR + 1), для 0 . SPI0CKR . 255,
где: SYSCLK – частота системного тактового сигнала;
SPI0CKR – 8-разрядное значение регистра SPI0CKR.
Пример: Если SYSCLK = 2МГц и SPI0CKR = 0х04, то:
fSCK = 0.5 . 2000000 / (4 + 1) = 200 кГц.
SFR-описание 16.4. SPI0DAT: Регистр данных модуля SPI0
Биты 7-0: SPI0DAT: Данные передатчика и приемника модуля SPI0.
Регистр SPI0DAT используется для передачи и приема данных. В ведущем режиме запись данных в регистр SPI0DAT сразу же приводит к загрузке данных в буфер передатчика и инициирует сеанс передачи. Чтение регистра SPI0DAT возвратит содержимое приемного буфера.
Рисунок 16.8. Временные диаграммы ведущего SPI (CKPHA = 0)
* Состояние сигнала SCK показано для случая CKPOL = 0. Если CKPOL = 1, то состояние сигнала SCK будет
противоположным.
Рисунок 16.9. Временные диаграммы ведущего SPI (CKPHA = 1)
* Состояние сигнала SCK показано для случая CKPOL = 0. Если CKPOL = 1, то состояние сигнала SCK будет
противоположным.
Рисунок 16.10. Временные диаграммы ведомого SPI (CKPHA = 0)
* Состояние сигнала SCK показано для случая CKPOL = 0. Если CKPOL = 1, то состояние сигнала SCK будет
противоположным.
Рисунок 16.11. Временные диаграммы ведомого SPI (CKPHA = 1)
* Состояние сигнала SCK показано для случая CKPOL = 0. Если CKPOL = 1, то состояние сигнала SCK будет
противоположным.
Таблица 16.1. Временные параметры модуля SPI0
17. Таймеры
Каждый МК содержит четыре таймера/счетчика (Т/С): два из них представляют собой 16-разрядные Т/С, совместимые с Т/С стандартной архитектуры 8051, а другие два являются 16-разрядными Т/С с режимом автоперезагрузки и предназначены для использования совместно с другими периферийными модулями МК (АЦП, SMBus) или в качестве Т/С общего назначения.
Эти Т/С можно использовать для
измерения временных
Таймеры 0 и 1 могут тактироваться от одного из пяти источников, выбор которых осуществляется с помощью битов выбора режима таймера (Т1М – Т0М) и битов выбора коэффициента деления тактовой частоты (SCA1 – SCA0). Биты выбора коэффициента деления тактовой частоты настраивают предварительный делитель тактовой частоты, сигнал с выхода которого может использоваться для тактирования Таймера 0 и/или Таймера 1 (см. SFR-описание 17.3).
В качестве сигнала тактирования Таймеров 0 и 1 можно выбрать либо сигнал с выхода предварительного делителя тактовой частоты, либо системный тактовый сигнал. Таймер 2 и Таймер 3 могут тактироваться либо системным тактовым сигналом, либо системным тактовым сигналом, деленным по частоте на 12, либо сигналом от внешнего генератора тактовых импульсов, деленным по частоте на 8.
Таймер 0 и Таймер 1 могут также функционировать как счетчики. В этом случае регистр
таймера/счетчика инкрементируется под воздействием каждого перехода внешнего сигнала на выбранном входном выводе (T0 или T1) из состояния лог. ‘1’ в состояние лог. ‘0’. Могут подсчитываться импульсы с частотой до 1/4 системной тактовой частоты. Входной сигнал не обязательно должен быть периодическим, однако он должен удерживаться на заданном уровне как минимум в течение двух полных системных тактовых циклов, чтобы гарантировать его корректную выборку.
17.1. Таймер 0 и Таймер 1
Каждый таймер реализован в виде 16-разрядного регистра, доступного как два отдельных байта: младший байт (TL0 или TL1) и старший байт (TH0 или TH1). Регистр управления Т/С (TCON) используется для включения Таймера 0 и Таймера 1, а также для индикации их состояния. Прерывания от Таймера 0 можно разрешить установкой в 1 бита ЕТ0 в регистре IE (см. раздел «10.4. Описания регистров прерываний» на стр. 112); прерывания от Таймера 1 можно разрешить установкой в 1 бита ЕТ1 в регистре IE (см. раздел 10.4). Оба таймера/счетчика работают в одном из четырех основных режимов, задаваемых битами выбора режима Т1M1- Т0M0 в регистре режима Т/С (TMOD). Каждый Т/С может быть настроен независимо от другого.
Ниже приведено описание каждого режима работы.
17.1.1. Режим 0: 13-разрядный таймер/счетчик
В режиме 0 Таймеры 0 и 1 работают как 13-разрядный таймер/счетчик. Ниже приводится описание настройки и функционирования Таймера 0. Однако, оба таймера идентичны, и Таймер 1 настраивается точно так же, как и Таймер 0.
Регистр TH0 содержит восемь старших бит 13-разрядного значения регистра Т/С. Регистр TL0 содержит в разрядах TL0.4-TL0.0 пять младших бит 13-разрядного значения регистра Т/С.
Три старших бита регистра TL0 (TL0.7-TL0.5) не определены и должны маскироваться или игнорироваться при чтении регистра TL0. При инкрементировании 13-разрядного таймера и переполнении его из состояния 0x1FFF (все единицы) в состояние 0x0000 устанавливается в 1 флаг переполнения таймера TF0 (TCON.5) и будет сгенерировано прерывание от Таймера 0, если оно разрешено.
Бит C/T0 (TMOD.2) выбирает источник сигнала тактирования Т/С0. Если бит C/T0 установлен в 1, то инкрементирование регистра таймера осуществляется под воздействием перехода внешнего сигнала на выбранном входном выводе (Т0) из состояния лог. ‘1’ в состояние лог. ‘0’. (Подробная информация о выборе и настройке внешних выводов приведена в разделе «17.1. Приоритетный декодер матрицы» на стр. 191.). Если бит C/T0 сброшен в 0, то в качестве источника тактирования Т/С0 будет использоваться сигнал, определяемый битом Т0М (CKCON.3). Если бит Т0М установлен в 1, то Таймер 0 тактируется системным тактовым сигналом.
Если бит Т0М сброшен в 0, то в качестве источника тактирования Т/С0 будет использоваться сигнал, определяемый битами настройки предварительного делителя в регистре CKCON (см. SFR-описание 17.3). Установка в 1 бита TR0 (TCON.4) включит таймер, если либо бит GATE0 (TMOD.3) равен нулю, либо на внешнем выводе /INT0 присутствует сигнал с активным логическим уровнем, который определяется битом IN0PL в регистре IT01CF (см. SFR-описание 10.7). После установки в 1 бита GATE0 управление таймером передается внешнему сигналу /INT0 (см. раздел «10.4. Описания регистров прерываний» на стр. 112), что позволяет легко осуществлять измерение ширины импульсов.
X = не имеет значения
Установка TR0 не сбрасывает таймер. Регистры
таймера следует
Рисунок 17.1. Структурная схема Таймера 0 в режиме 0
17.1.2. Режим 1: 16-разрядный Таймер/Счетчик
Режим 1 аналогичен режиму 0 с тем лишь исключением, что регистры Т/С используют все 16 бит. Таймеры/счетчики включаются и настраиваются в режиме 1 точно так же, как в режиме 0.
17.1.3. Режим 2: 8-разрядный
таймер/счетчик с
В режиме 2 Таймеры 0 и 1 настраиваются для работы в качестве 8-разрядных таймеров/счетчиков с автоматической перезагрузкой начального значения. Регистр TL0 содержит значение счетчика, а регистр TH0 содержит перезагружаемое значение. Когда счетчик в регистре TL0 переполняется (переходит из состояния 0xFF в состояние 0х00), флаг переполнения таймера TF0 (TCON.5) устанавливается в 1 и значение регистра TH0 загружается в регистр TL0. При установке флага TF0 будет сгенерировано прерывание от Таймера 0, если оно разрешено. Перезагружаемое значение в регистре TH0 не изменяется. Чтобы первый отсчет был корректным, необходимо проинициализировать регистр TL0 требуемым значением до включения таймера. Таймер 1 в режиме 2 работает точно так же, как Таймер 0. В режиме 2 оба Т/С включаются и настраиваются точно так же, как и в режиме 0.
Установка в 1 бита TR0 (TCON.4) включит таймер, если либо бит GATE0 (TMOD.3) равен нулю, либо на внешнем выводе /INT0 присутствует сигнал с активным логическим уровнем, который определяется битом IN0PL в регистре IT01CF (подробная информация о входных сигналах /INT0 и /INT1 приведена в разделе «10.5. Внешние прерывания» на стр. 117).
17.1.4. Режим 3: Два 8-разрядных таймера/счетчика (только Таймер 0)
В режиме 3 Таймер 0 функционирует как два отдельных 8-разрядных таймера/счетчика TL0 и TH0. Для управления таймером/счетчиком TL0 используются биты управления/состояния Таймера 0 (в регистрах TCON и TMOD): TR0, C/T0, GATE0 и TF0. В качестве источника тактирования ТL0 может использовать либо системный тактовый сигнал, либо внешний входной сигнал. Таймер/счетчик TH0 поддерживает только таймерные функции и может использовать для тактирования либо системный тактовый сигнал, либо сигнал с выхода предварительного делителя.
Для включения таймера/счетчика TH1 используется управляющий бит запуска Таймера 1 (TR1). Таймер/счетчик TH1 при переполнении устанавливает флаг переполнения Таймера 1 TF1 и, таким образом, управляет прерыванием от Таймера 1.
В режиме 3 Таймер 1 неактивен. Если Таймер 0 функционирует в режиме 3, Таймер 1 может работать в режимах 0, 1 или 2, но не может тактироваться внешними сигналами, устанавливать флаг TF1 и генерировать прерывание. Однако переполнение Таймера 1 можно использовать для генерации скорости передачи данных для модулей SMBus и/или UART, и/или запускать преобразования АЦП. Пока Таймер 0 функционирует в режиме 3, управление запуском Таймера 1 осуществляется путем настройки режима его работы. Чтобы запустить Таймер 1 в то время, когда Таймер 0 функционирует в режиме 3, необходимо установить для Таймера 1 режим работы 0, 1 или 2. Чтобы отключить Таймер 1, необходимо настроить его на работу в режиме 3.
Рисунок 17.3. Структурная схема Таймера 0 в режиме 3
SFR-описание 17.1. TCON: Регистр управления Таймерами 0 и 1
SFR-адрес: 0x88 (доступен в битовом режиме адресации)
Бит 7: TF1: Флаг переполнения Таймера 1.
Устанавливается аппаратно при переполнении Таймера 1. Сбрасывается аппаратно при
переходе к процедуре
программно.
0: Переполнения Таймера 1 не обнаружено.
1: Таймер 1 переполнился.
Бит 6: TR1: Управление запуском Таймера 1.
0: Таймер 1 отключен.
1: Таймер 1 включен.
Бит 5: TF0: Флаг переполнения Таймера 0.
Устанавливается аппаратно при переполнении Таймера 0. Сбрасывается аппаратно при
переходе к процедуре
программно.
0: Переполнения Таймера 0 не обнаружено.
1: Таймер 0 переполнился.
Бит 4: TR0: Управление запуском Таймера 0.
0: Таймер 0 отключен.
1: Таймер 0 включен.
Бит 3: IE1: Внешнее прерывание 1.
Этот флаг аппаратно устанавливается в 1 при обнаружении активного фронта/уровня
(определяется битом IT1) внешнего сигнала. Может быть сброшен программно, но при
переходе к процедуре
IT1=1. При IT1=0 этот флаг устанавливается
в 1, если на внешнем выводе
/INT1 присутствует сигнал с
Бит 2: IT1: Выбор типа внешнего прерывания 1.
Этот бит определяет, какое событие будет вызывать внешнее прерывание 1: фронт или
активный уровень внешнего сигнала /INT1. Активный уровень внешнего сигнала /INT1 определяется битом IN1PL в регистре IT01CF (см. SFR-описание 10.7).
0: Внешнее прерывание 1 вызывается
активным уровнем сигнала /
1: Внешнее прерывание 1 вызывается фронтом сигнала /INT1.
Бит 1: IE0: Внешнее прерывание 0. Этот флаг аппаратно устанавливается в 1 при обнаружении
активного фронта/уровня (определяется битом IT0) внешнего сигнала. Может быть
сброшен программно, но при переходе к процедуре обслуживания внешнего прерывания 0
сбрасывается аппаратно, если IT0=1. При IT0=0 этот флаг устанавливается в 1, если на
внешнем выводе /INT0 присутствует сигнал с активным логическим уровнем, который
определяется битом IN0PL в регистре IT01CF (см. SFR- описание 10.7).
Бит 0: IT0: Выбор типа внешнего прерывания 0. Этот бит определяет, какое событие будет
вызывать внешнее прерывание 0: фронт или активный уровень внешнего сигнала /INT0
Активный уровень внешнего сигнала /INT0 определяется битом IN0PL в регистре IT01CF (см. SFR-описание 10.7).
0: Внешнее прерывание 0 вызывается
активным уровнем сигнала /