Реферат: Федеральное агентство по образованию бийский технологический институт (филиал)


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ


Бийский технологический институт (филиал)

государственного образовательного учреждения

высшего профессионального образования

«Алтайский государственный технический университет

им. И.И. Ползунова»


Е.В. Сыпин, Е.С. Повернов, А.Н. Павлов


МИКРОКОНТРОЛЛЕР АТ89С51 СЕМЕЙСТВА АТ89

ФИРМЫ ATMEL. ОПИСАНИЕ И ПРОГРАММИРОВАНИЕ


2-е издание, переработанное и дополненное


Допущено научно-методическим советом БТИ АлтГТУ для внутривузовского использования в качестве учебного пособия
по курсам «Техника двоичной переработки информации», «Микропроцессорная техника и ЭВМ», «Основы проектирования приборов и систем», «Проектирование и моделирование радиоэлектронных устройств», «Цифровые измерительные устройства», «Аппаратные интерфейсы информационных систем», «Компьютерные технологии в приборостроении» для студентов специальностей 200106 «Информационно-измерительная техника
и технологии» и 230201 «Информационные системы и технологии»


Бийск

Издательство Алтайского государственного технического
университета им. И.И. Ползунова

2010

УДК 681.326 (031)

С95


Рецензенты: к.т.н., доцент, директор по производству ООО ЦУТ

С.Н. Цыганок;

к.т.н., доцент кафедры ИУС БТИ АлтГТУ

Г.С. Ломакин


Работа подготовлена на кафедре МСИА


^ Сыпин, Е.В.

Микроконтроллер AT89C51 семейства AT89 фирмы ATMEL. Описание и программирование: учебное пособие / Е.В. Сыпин, Е.С. Повернов, А.Н. Павлов; Алт. гос. техн. ун-т, БТИ. – 2-е изд., перераб. и доп. – Бийск: Изд-во Алт. гос. техн. ун-та, 2010. – 123 с.


В учебном пособии подробно рассмотрен микроконтроллер АТ89С51 семейства АТ89 фирмы ATMEL. Приведена информация по популярному пакету программирования фирмы 2500 A.D. Основной упор сделан на описание типичных применений микроконтроллера с подробным описанием принципов подключения различных периферийных устройств к нему и примерами управляющих программ.

Приведенный материал будет полезен студентам специальностей 200106 «Информационно-измерительная техника и технологии» и 230201 «Информационные системы и технологии» при выполнении ими лабораторных работ, расчетных заданий, курсовых проектов и для углубленного изучения принципов построения и программирования микроконтроллерных устройств.


УДК 681.326 (031)


Рассмотрено и одобрено на заседании научно-методического совета Бийского технологического института.

Протокол № 2 от 26 ноября 2009 г.



© Сыпин Е.В., Повернов Е.С., Павлов А.Н., 2010




© БТИ АлтГТУ, 2010

СОДЕРЖАНИЕ


1Структура микроконтроллера 18

1.1Процессор микроконтроллера 20

1.2Адресное пространство микроконтроллера 22

1.2.1Подключение EROM и ERAM к микроконтроллеру 24

1.3Периферийные устройства микроконтроллера 27

1.3.1Параллельные порты ввода-вывода 27

1.3.2Таймер-счетчик Т/С0 28

1.3.3Таймер-счетчик Т/С1 30

1.3.4Последовательный порт 31

1.3.5Контроллер прерываний 35

2Система команд микроконтроллера 39

3Общие сведения о языке Ассемблер для микроконтроллеров стандарта MCS-51
и о программном пакете фирмы 2500 A.D. 54

3.1Синтаксис языка Ассемблер 54

3.1.1Определители основания системы счисления 54

3.1.2Примеры констант и применения директивы RADIX 55

3.1.3Комментарии 55

3.1.4Программный счётчик 55

3.1.5Метки 55

3.1.6Директивы 55

3.1.7Макроопределения 57

3.2Сообщения о некоторых ошибках ассемблирования 57

3.3Рекомендуемая процедура инициализации микроконтроллера 58

4Типичные применения микроконтроллеров 62

4.1 Ввод информации с датчиков 62

4.1.1Опрос двоичного датчика 62

4.1.1.1Ожидание события 62

4.1.1.2Ожидание импульсного сигнала 64

4.1.2Устранение дребезга контактов 68

4.1.3Подсчет числа импульсов 72

4.1.3.1Подсчет числа импульсов за интервал времени между двумя событиями 72

4.1.3.2Подсчет числа импульсов за заданный промежуток времени 75

4.1.4Опрос группы двоичных датчиков 82

4.1.5Ввод информации с матричной клавиатуры 85

4.2Вывод управляющих сигналов из микроконтроллера 89

4.2.1Формирование статических сигналов 89

4.2.2Формирование импульсных сигналов 92

4.2.2.1Генерация меандра 92

4.2.2.2Формирование сигнала с заданной скважностью 93

4.2.3Вывод и отображение информации 94

4.2.3.1Динамический вывод информации на дисплей
из семисегментных индикаторов 97

4.3Реализация функций реального времени 100

4.3.1Программное формирование временной задержки 101

4.3.2Формирование временной задержки с использованием таймеров 103

4.3.3Измерение временных интервалов 105

4.4Преобразование кодов 106

4.4.1Преобразование унитарного кода в двоичный позиционный 107

4.4.2Преобразование двоичного позиционного кода в унитарный 108

4.4.3Преобразование кодов из одной системы счисления в другую 109

4.4.4Преобразование данных из параллельного кода
в последовательный и обратно 112

4.4.5Цифро-аналоговое преобразование 116

4.4.6Аналого-цифровое преобразование 118

4.4.6.1Метод последовательного приближения 119

4.4.6.2Метод двойного интегрирования 121

4.5Операции с памятью 123

4.5.1Тестирование ОЗУ 126

4.5.2Программа тестирования ПЗУ 128

4.6Обмен данными по шине I2С 129

4.6.1Общие положения и введение в логику работы шины I2С 129

4.6.2Пример обмена данными по шине I2C 132

4.7Приём данных по протоколу Centronics 139



^ Список сокращений
ALU – арифметико-логическое устройство

CPU – процессор

ERAM – внешнее оперативное запоминающее устройство

^ EROM – внешнее постоянное запоминающее устройство

I2С – шина соединения микросхем

IRAM – внутреннее оперативное запоминающее устройство

IROM – внутреннее постоянное запоминающее устройство

^ OSC – генератор тактового сигнала

SP – последовательный порт

SRAM – статическое оперативное запоминающее устройство

UART – универсальный асинхронный приемопередатчик

АЦП – аналого-цифровой преобразователь

ЗУ – запоминающее устройство

^ ИМ – исполнительный механизм

МК – микроконтроллер

МСИ – матричный светодиодный индикатор

МЦ – машинный цикл

ОЗУ – оперативное запоминающее устройство

ПЗУ – постоянное запоминающее устройство

^ ССИ – семисегментный индикатор

УС – управляющее слово

ЦАП – цифро-аналоговый преобразователь












Введение

Однокристальные микроЭВМ (микроконтроллеры) AT89С51 семейства AT89 фирмы ATMEL, программно- и аппаратно-совместимые с микроконтроллерами семейства MCS-51 фирмы Intel (отечественный аналог 1816ВВ51 и 1830АА51), предназначены для использования в качестве встраиваемых управляющих микроЭВМ в приборах и системах различного назначения.

Основным преимуществом микроконтроллеров AT89C51 является использование в них в качестве внутреннего постоянного запоминающего устройства для хранения команд программы и констант (IROM) репрограммируемого постоянного запоминающего устройства с электрическим стиранием записи. При этом существенно упрощается процедура репрограммирования памяти, открывается возможность выполнять запись кодов в постоянную память после установки микроконтроллера в аппаратуру и снижать стоимость микроконтроллера по сравнению с микроконтроллерами со стиранием памяти путем облучения ультрафиолетовым излучением.

Ряд глав и параграфов настоящего издания переработан и дополнен по сравнению с одноименным учебным пособием, вышедшим в 2006 г. Добавлены контрольные вопросы для оценки усвоения материала.
^ 1Структура микроконтроллера

Микроконтроллер типа АТ89С51 (далее МК) выпускается в корпусе типа cerDIP40. Условное графическое изображение МК приведено на рисунке 1.1, назначение выводов – в таблице 1.1





Рисунок 1.1 – Условное графическое обозначение микроконтроллера


Выходы портов в статическом режиме при низком уровне сигнала могут пропускать ток нагрузки величиной до 10 мА, при этом суммарный ток нагрузки для порта Р0 должен быть не более чем 26 мА, а для остальных портов не более чем 15 мА. Суммарный ток нагрузки для всех выходов микроконтроллера должен быть не более чем 71 мА.

В динамическом режиме к выходу порта Р0 могут быть подключены 8 входов TTL, а к выходу портов Р1, Р2, Р3 – по четыре входа TTL.

В состав МК (рисунок 1.2) входят:

– процессор (CPU);

– внутреннее постоянное запоминающее устройство (IROM);

– внутреннее оперативное запоминающее устройство (IRAM);

– группа периферийных устройств.

К микроконтроллеру могут быть подключены внешнее постоянное запоминающее устройство (EROM) и внешнее оперативное запоминающее устройство (ERAM).


Таблица 1.1 – Назначение выводов микроконтроллера

Номер вывода

Обозначение

Описание

40

VCC

Напряжение питания +5 В

20

GND

Общий провод

18,19

XTAL1, XTAL2

Вход и выход для подключения кварцевого
резонатора

9

RST

Вход для приема сигнала сброса

39–32

P0.0–P0.7

Параллельный порт ввода-вывода P0

1–8

P1.0–Р1.7

Параллельный порт ввода-вывода P1

21–28

P2.0–P2.7

Параллельный порт ввода-вывода P2

10

P3.0(RXD)

Вход синхронно-ассинхронного
приёмопередатчика

Параллельный порт ввода-вывода РЗ

11

P3.1(TXD)

Выход синхронно-ассинхронного
приёмопередатчика

12

P3.2()

Вход запроса прерываний от внешнего
источника 0

13

P3.3()

Вход запроса прерываний от внешнего
источника 1

14

P3.4(T0)

Вход таймер-счётчика 0

15

P3.5(T1)

Вход таймер-счётчика 1

16

P3.6()

Вход стробирования записи данных
во внешнюю память

17

Р3.7()

Вход стробирования чтения данных
из внешней памяти

30

ALE

Выход для выдачи сигнала управления записью
во внешний регистр адреса

29

PSEN

Выход для выдачи сигнала управления чтением
из внешней постоянной памяти (EROM)

31

ЕА

Вход для управления выбором обращения
к IROM и EROM



Рисунок 1.2 – Упрощенная структурная схема микроконтроллера
^ 1.1Процессор микроконтроллера
Процессор выполняет команды программы и организует их выполнение в заданной последовательности. Система команд микроконтроллеров семейства АТ89С51 содержит 111 команд.

Процессор содержит генератор тактового сигнала (OSC), шестнадцатиразрядный счётчик команд (PC), шестнадцатиразрядный регистр-указатель данных (DPTR), состоящий из двух восьмиразрядных регистров – старшего (DPH) и младшего (DPL), восьмиразрядный регистр – указатель стека (SP), восьмиразрядный регистр управления (PCON) и арифметико-логическое устройство (ALU).

Генератор тактового сигнала формирует последовательность тактовых импульсов. Период следования тактовых импульсов, равный длительности такта работы микроконтроллера, определяется резонансной частотой подключённого к микроконтроллеру кварцевого резонатора (рисунок 1.3). При использовании внешнего синхрогенератора сигнал подается на вход XTAL1, а выход XTAL2 остается неподключенным.





С1, С2 = 30 пФ10 пФ; R1=8,2 кОм; С3=10 мкФ


Рисунок 1.3 – Типовая схема включения микроконтроллера


Микроконтроллеры семейства АТ89С51 изготовлены по КМОП (CMOS) технологии и имеют полностью статическую структуру. Они могут работать при значениях тактовой частоты от 0 Гц. Максимальное значение тактовой частоты у микроконтроллера составляет 24 МГц.

В состав ALU входят восьмиразрядные регистры: регистр-аккумулятор ACC, вспомогательный регистр B и регистр слова-состояния программы PSW.


^ Контрольные вопросы

На какие выводы микроконтроллера подается питание?

Каким уровнем организуется сброс микроконтроллера?

Что означает «статическая структура»?

Какие устройства входят в состав микроконтроллера?

Какие регистры содержит процессор микроконтроллера? За что они отвечают?
^ 1.2Адресное пространство микроконтроллера
Адресуемым элементом памяти МК является восьмиразрядная ячейка.

Внутреннее постоянное запоминающее устройство (IROM) представляет собой программируемое запоминающее устройство с электрическим стиранием записи, выполненное по CMOS Flash-технологии (Flash Memory). Число восьмиразрядных ячеек в IROM микроконтроллера составляет 4 К.

IROM и внешнее постоянное запоминающее устройство (EROM) предназначены для хранения команд программы и констант. Адреса, используемые при обращении к IROM и EROM, образуют единое адресное пространство 64 К.

Внутреннее оперативное запоминающее устройство (IRAM) является статическим оперативным запоминающим устройством (SRAM). Адреса, используемые при обращении к IRAM, образуют адресное пространство внутренней оперативной памяти объёмом 256 байт (таблица 1.2).

Младшая половина адресов (от 00h до 7Fh) используется только для обращения к ячейкам IRAM. Старшая половина адресов используется для обращения к регистрам, расположенным в CPU и в периферийных устройствах. Обращение к ячейкам IRAM, которым соответствуют адреса от 00H до 7Fh, можно выполнять как по командам с прямой, так и по командам с косвенной адресацией.

В IRAM микроконтроллера образован стек типа LIFO. Адрес при записи байта в стек образуется путём увеличения на единицу адреса, хранящегося в регистре-указателе стека (SP). Адрес при чтении байта из стека берётся из регистра-указателя стека, после чего адрес в этом регистре уменьшается на единицу. При сбросе микроконтроллера в регистр-указатель стека заносится код 07Н. Путём записи в регистр SP иного начального адреса стек может быть смещён в другую область IRAM.

32 ячейки памяти в IRAM, которым соответствуют адреса от 00Н до 1FH, могут использоваться как регистры. К этим ячейкам можно обращаться как по командам с прямой или косвенной адресацией, так и по командам с регистровой адресацией. Группа из 32 регистров разделена на 4 банка (RB0–RB3). Регистры в пределах банка имеют номера от 0 до 7 (R0–R7).


Таблица 1.2 – Структура IRAM микроконтроллера

Адреса

Назначение

Тип адресации

FF

Регистры специальных функций (SFR)

Прямая*,

косвенная**,

поразрядная***



80

7F




Прямая,

косвенная,

поразрядная






2F

Область поразрядного обращения

7F

7E

7D

7C

7B

7A

79

78

2E

77

76

75

74

73

72

71

70



















21

0F

0E

0D

0C

0B

0A

09

08

20

07

06

05

04

03

02

01

00

1F

Банки регистров

RB3

R7





18

R0

17

RB2

R7





10

R0

0F

RB1

R7





08****

R0

07

RB0

R7





00

R0

*

При обращении к ячейкам как к регистрам специальных функций

**

При обращении к ячейкам как к памяти

***

Допускают только адреса, кратные восьми (80h, 88h,…, F8h)

****

Дно стека при сбросе микроконтроллера

Выбор регистрового банка, в котором при обращении находится регистр с указанным номером, выполняется путём предварительной установки в определённое состояние двух разрядов в регистре PSW. Схема распределения разрядов в регистре PSW приведена на рисунке 1.4.


7

6

5

4

3

2

1

0

CY

AC

F0

RS1

RS0

OV



P

Рисунок 1.4 – Схема распределения разрядов в регистре PSW


Для выбора регистрового банка используются разряды регистра PSW.4=RS1 и PSW.3=RS0. Регистровые банки RB0–RB3 выбираются при комбинациях значений RS1, RS0=00, 01, 10 и 11 соответственно. Регистры R0 и R1 в каждом регистровом банке могут быть использованы для размещения адресов при выполнении команд с косвенной адресацией.

16 ячеек памяти в IRAM, которым соответствуют адреса от 20Н до 2FH, допускают поразрядное обращение. Биты в ячейках памяти IRAM с побитовой адресацией имеют адреса от 00H до 7FH.
^ 1.2.1Подключение EROM и ERAM к микроконтроллеру
На рисунке 1.5 приведена типовая схема подключения EROM и ERAM к микроконтроллеру, на рисунках 1.6, 1.7, 1.8 – временные диаграммы сигналов при чтении байта из EROM, ERAM и записи байта в ERAM соответственно.



Рисунок 1.5 – Типовая схема подключения EROM и ERAM




Рисунок 1.6 – Чтение байта из EROM





Рисунок 1.7 – Чтение байта из ERAM





Рисунок 1.8 – Запись байта в ERAM


В таблице 1.3 приведены значения параметров, указанных на временных диаграммах.


Таблица 1.3 – Значения параметров, указанных на временных
диаграммах


Fosc, Мгц

Чтение из EROM

Чтение из ERAM

Запись в ERAM

Trd max, нс

Trd max, нс

Twr min, нс

12

312

585

400

16–24

5Tosc–55

9Tosc–165

6Tosc–100


Параллельные порты ввода-вывода P0 и P2 при подключении к микроконтроллеру внешней памяти (EROM и ERAM) используются для выдачи шестнадцатиразрядного кода адреса, а порт Р0, кроме того, для выдачи и приема байтов данных. Младший байт кода адреса
(A0–A7) выдается через порт Р0 и запоминается во внешнем регистре. Запись кода во внешний регистр выполняется при высоком уровне сигнала на выходе ALE. Старший байт кода адреса (А8–А15) выдается через порт Р2 и удерживается на выводах порта Р2 в течение всего времени обращения к внешней памяти.

Чтение байта из EROM происходит при низком уровне сигнала на выходе PSEN, чтение байта из ERAM – при низком уровне сигнала RD на выходе порта Р3.7, а запись байта в ERAM – при низком уровне сигнала WR на выходе порта Р3.6.

Контрольные вопросы

Какова емкость внутреннего ОЗУ микроконтроллера? Какая часть адресов используется только для обращения к ячейкам IRAM?
К чему может привести некорректное использование старшей половины адресов?

Что означает понятие «банк регистров»? Каким образом осуществляется выбор активного банка регистров?

Номера регистров какого банка совпадают с адресами ячеек ОЗУ?

К каким ячейкам памяти из старшей половины адресов допускается поразрядное обращение?

Каков принцип работы стека LIFO?

Какой адрес соответствует дну стека при сбросе микроконтроллера?

Изменится ли значение ячейки по адресу 07H при помещении значения в стек сразу же после сброса микроконтроллера?

Что необходимо сделать для безопасного использования всех банков регистров при использовании стека?

К чему приведут загрузка в указатель стека числа 7FH и дальнейшее использование стека?

Для чего необходим регистр RG на рисунке 1.5? Возможно ли программно записать данные в этот регистр, не нарушив обращение к внешней памяти? Почему?

Чем отличается подключение внешних памяти программ и памяти данных?

Возможно ли одновременное подключение ОЗУ и ПЗУ, емкость каждой из которых 64 кБ?

Какая часть адреса удерживается в течение всего цикла обращения к памяти?
^ 1.3Периферийные устройства микроконтроллера
В группу периферийных устройств микроконтроллеров типа Х51 входят следующие периферийные устройства:

параллельный порт ввода-вывода P0;

параллельный порт ввода-вывода P1;

параллельный порт ввода-вывода P2;

параллельный порт ввода-вывода P3;

таймер-счётчик T/C0;

таймер-счётчик T/C1;

последовательный порт (SP);

контроллер прерываний (IC).
^ 1.3.1Параллельные порты ввода-вывода
Параллельные порты ввода-вывода предназначены для приема, выдачи байтов данных. Отдельные разряды портов могут быть использованы независимо друг от друга для приема и выдачи битов.

Порты P0 и P2 могут использоваться для подключения внешней памяти (см. п. 1.2.1).

Параллельный порт ввода-вывода Р3, кроме функций по приему и выдаче байтов и битов, выполняет альтернативные функции.

Выводы порта Р3.0 и Р3.1 при работе последовательного порта являются входом приемника (RXD) и выходом передатчика (TXD) соответственно.

Выводы порта Р3.2 и Р3.3 используются для приема сигналов запросов прерывания от внешних источников (INT0 и INT1 соответственно).

Выводы порта Р3.4 и Р3.5 используются для приема внешних сигналов Т0 и Т1, поступающих в таймеры-счетчики Т/СО и Т/С1 соответственно при работе в режиме счета внешних событий.

Выводы Р3.6 и Р3.7 при подключении к микроконтроллеру внешней памяти данных (ERAM) используются для выдачи сигналов записи (WR) и чтения (RD) соответственно (см. п. 1.2.1).
^ 1.3.2Таймер-счетчик Т/С0
Таймер-счетчик Т/С0 ведет счет импульсов, поступающих от внутреннего источника с частотой Fosc/12 (счет времени) или со входа Т0 (Р3.4) (счет внешних событий). Событием является отрицательный перепад сигнала. Счет может вестись по модулю 28, 213 или 216. При переполнении счетчика (счет ведется на увеличение) формируется запрос прерывания, поступающий в контроллер прерываний. Счет продолжается без остановки.

В состав таймера-счетчика Т/С0 входят два восьмиразрядных регистра TL0 и ТН0. Работой таймера-счетчика Т/С0 управляют разряды регистров специальных функций TCON (TCON.7–4) и ТМОD (TMOD.3–0). Схемы распределения разрядов в регистрах TCON и ТМОD представлены на рисунке 1.9.


7

6

5

4

3

2

1

0

TF1

TR1

TF0

TR0













а)

7

6

5

4

3

2

1

0

GATE

С/Т

M1

М0

GATE

С/Т

M1

М0

Т/С1

Т/С0

б)

а) регистр TCON.7 – 4; б) регистр TMOD

Рисунок 1.9 – Схемы распределения разрядов
в регистрах TCON и TMOD


Таймер-счетчик Т/С0 может работать в четырех режимах. Выбор режима определяется комбинацией состояний разрядов TMOD.1, TMOD.0=M1, M0.

При M1,М0=0,0 (режим 0) таймер-счетчик ведет счет по модулю 213 (т.е. максимальное число для счета 213). При этом используются оба регистра ТН0 и TL0 (ТН0 старший в паре регистров).

При M1, М0=0,1 (режим 1) счет ведется по модулю 216. При M1,М0=1,0 (режим 2) счет ведется по модулю 28, который хранится в регистре TL0. ТН0 используется в качестве регистра памяти. Код, хранящийся в этом регистре, загружается в регистр TL0 при каждом его переполнении (автоперезагрузка регистра TL0).

В режимах 0, 1, 2 на счетный вход счетчика поступает внутренний сигнал с частотой Fosc/12 (при TMOD.2=С/Т=0) или внешний сигнал, поступающий на вход Р3.4 (при TMOD.2=С/Т=1).

При TMOD.3=GATE=0 счет ведется при единичном состоянии разряда TCON.4=TR0. При TR0=0 счет остановлен.

При TMOD.3=GATE=1 счет ведется при единичном состоянии разряда TCON.4=TR0 и единичном значении сигнала INT0 на входе Р3.2. При нулевом состоянии разряда TR0 или нулевом значении сигнала INT0 счет остановлен.

При переполнении счетчика устанавливается в единичное состояние разряд TCON.5=TF0 и в контроллер прерываний поступает запрос прерывания от таймера-счетчика Т/С0.

Сброс разряда TCON.5=TF0 в нулевое состояние выполняется автоматически при переходе к выполнению соответствующей прерывающей программы.

В режиме 3 (M1,М0=1,1) регистры TL0 и ТН0 работают независимо и каждый ведет счет по модулю 28.

На вход счетчика с регистром TL0 в зависимости от значения разряда TMOD.2=С/Т поступает или внутренний сигнал с частотой Fosc/12 (при С/Т=0), или внешний сигнал с входа Р3.4 (при С/Т=1). На вход счетчика с регистром ТН0 поступает внутренний сигнал с частотой Fosc/12.

Счетчик с регистром TL0 ведет счет при TCON.4=TR0=1 (при TMOD.3=GATE=0) или при ТР0=1 и INT0=1 (при GATE=1), а счетчик с регистром ТН0 – при TCON.6=TR1=1.

При переполнении регистра TL0 устанавливается в единичное состояние разряд TCON.5=TF0 и в контроллер прерываний поступает запрос прерывания TF0. При переполнении регистра ТН0 в единичное состояние устанавливается разряд TCON.7=TF1. Разряды TF0 и TF1 сбрасываются в нулевое состояние при переходе к выполнению соответствующих прерывающих программ.

Запрос прерывания TF1 в таймере-счетчике Т/С0 в режиме 3 не формируется.
^ 1.3.3Таймер-счетчик Т/С1
Таймер-счетчик Т/С1 ведет счет импульсов, поступающих от внутреннего источника с частотой Fosc/12 (счет времени) или со входа Т1 (Р3.5) (счет внешних событий). Событием является отрицательный перепад сигнала. Счет может вестись по модулю 28, 213 или 216. При переполнении счетчика формируется запрос прерывания, поступающий в контроллер прерываний. Счет продолжается.

В состав таймера-счетчика Т/С1 входят два восьмиразрядных регистра TL1 и ТН1. Работой таймера-счетчика T/C1 управляют разряды регистра специальных функций TCON (TCON.7,6) и разряды регистра специальных функций TMOD (TMOD.74) (см. рисунок 1.9).

Таймер-счетчик Т/С1 может работать в трех режимах. Выбор режима определяется комбинацией состояний разрядов TMOD.5, TMOD.4=М1,М0.

При M1,М0=0,0 (режим 0) таймер-счетчик ведет счет по модулю 213. Данный режим полностью аналогичен режиму 0 для таймера-счет-чика Т/С0.

При М1,М0=0,1 (режим 1) таймер-счетчик ведет счет по модулю 216. Данный режим полностью аналогичен режиму 0 для таймера-счетчика Т/С0.

При М1,М0=1,0 (режим 2) счет ведет регистр TL1 по модулю 28. ТН1 используется в качестве регистра. Код, хранящийся в этом регистре, загружается в регистр TL1 при каждом его переполнении (автоперезагрузка регистра TL1).

При М1,М0=1,1 таймер-счетчик Т/С1 остановлен.

На счетный вход счетчика поступает внутренний сигнал с частотой Fosc/12 (при TMOD.6=С/Т=0) или внешний сигнал, поступающий на вход Р3.5 (при TMOD.6=С/Т=1).

При TMOD.7=GATE=0 счет ведется при единичном состоянии разряда TCON.6=TR1. При TR1=0 счет остановлен.

При TMOD.7=GATE=1 счет ведется при единичном состоянии разряда TCON.6=TR1 и единичном значении сигнала INT1 на входе Р3.3. При TR1=0 или INT1=0 счет остановлен.

При переполнении счетчика устанавливается в единичное состояние разряд TCON.7=TF1 и в контроллер прерываний поступает запрос от таймера-счетчика Т/С1. Сброс разряда TCON.7=TF1 в нулевое состояние выполняется автоматически при переходе к выполнению соответствующей прерывающей программы.

Таймер-счетчик Т/С1 используется в качестве генератора синхросигнала при работе последовательного порта (SP). Частота прерываний в таймере-счетчике Т/С1 определяет скорость передачи и приема битов в последовательном порте. При работе в качестве генератора синхросигнала таймер-счетчик Т/С1 должен находиться в режиме 2 (счет по модулю 2 с автоперезагрузкой). Скорость передачи определяется числом, которое записано в регистр ТН1.

При работе таймера-счетчика Т/С0 в режиме 3 разряды регистров TCON.6=TR1 и TCON.7=TF1 используются в таймере-счетчике Т/С0. Таймер-счетчик Т/С1 в этом случае может использоваться в качестве генератора синхросигнала для последовательного порта.
^ 1.3.4Последовательный порт
Последовательный порт (SP) предназначен для приема и выдачи байтов данных в последовательном коде. Последовательный порт содержит приемник, передатчик, управляющий регистр SCON и буферный регистр SBUF, состоящий, по сути, из двух регистров – буферного регистра передатчика и буферного регистра приемника, которые имеют одно и то же имя. Это обеспечивает возможность одновременной работы приемника и передатчика. Схема распределения разрядов в регистре SCON приведена на рисунке 1.10.


7

6

5

4

3

2

1

0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI


Рисунок 1.10 – Схема распределения разрядов в регистре SCON


Последовательный порт может работать в четырех режимах. Выбор режима работы определяется комбинацией состояний разрядов SCON.7=SM0 и SCON.6=SM1.

При SM0,SM1=0,0 (режим 0) последовательный порт работает в режиме сдвигающего регистра с частотой сдвига Fosc/12. Вывод порта Р3.1=TXD используется в качестве выхода для выдачи серии из восьми импульсов, управляющих сдвигом во внешнем сдвигающем регистре. Вывод порта Р3.0=RXD используется для последовательной выдачи или последовательного приема байта, начиная с младшего бита (D0). Временные диаграммы сигналов на выводах P3.1=TXD и Р3.0=RXD при выдаче и приеме байта в этом режиме изображены на рисунке 1.11.





Рисунок 1.11 – Временные диаграммы сигналов на выводах TXD
и RXD в режиме 0


Выдача происходит после выполнения команды программы, по которой осуществляется запись байта данных в регистр SBUF. При завершении выдачи байта устанавливается в единичное состояние разряд регистра SCON.1=TI и в контроллер прерываний поступает запрос прерывания от передатчика последовательного порта. Сброс разряда TI выполняется только программным способом, по команде в программе.

Прием начинается при единичном состоянии разряда регистра SCON.4=REN и сбросе в нулевое состояние разряда регистра SCON.0=RI (или при нулевом состоянии разряда SCON.0=RI и установке в единичное состояние разряда SCON.4=REN).

При завершении приема разряд регистра SCON.0=RI устанавливается в единичное состояние и в контроллер прерываний поступает запрос прерывания от приемника последовательного порта. Сброс разряда RI выполняется программным способом, по команде в программе.

При других комбинациях состояний разрядов SM0 и SM1 последовательный порт работает в качестве универсального асинхронного приемопередатчика (UART).

UART предназначен для передачи и приема байтов по последовательному каналу связи (например, по интерфейсу RS-232С).

При передаче байта формируется посылка (кадр), содержащая десять или одиннадцать битов. Кадр содержит стартовый бит (Start=0), восемь битов данных (D0, D1,..., D7) и стоповый бит (Stop=1). Между старшим битом данных (D7) и стоповым битом может помещаться контрольный бит (СВ). Структура кадров, содержащих десять и одиннадцать битов, показана на рисунке 1.12.




а)



б)


а) режим 1; б) режимы 2, 3


Рисунок 1.12 – Структура кадров


Передача кадра начинается после выполнения команды программы, по которой происходит запись байта в регистр SBUF. При завершении передачи кадра устанавливается в единичное состояние разряд SCON.1=TI и в контроллер прерывания поступает запрос прерывания от передатчика. Разряд TI сбрасывается в нулевое состояние по команде в программе.

Прием кадра возможен при единичном состоянии разряда регистра SCON.4=REN. Прием начинается при поступлении стартового бита (отрицательный перепад сигнала) на вход Р3.0=RXD. Принятый байт записывается в буферный регистр приемника и сохраняется в нем до завершения приема следующего кадра. Следует помнить, что принятый байт необходимо считать до прихода следующего байта, в противном случае он будет потерян. UART может работать в трех режимах.

В режиме 1 (SM0,SM1=0,1) кадр содержит десять битов. Скорость передачи и приема (BR, бит/с) зависит от частоты переполнений таймера-счетчика Т/С1 и определяется по формуле

,

(1)

где SMOD – состояние разряда регистра PCON.7=SMOD;

Fosc– тактовая частота работы микроконтроллера, Гц;

N – число, код которого записан в счетчик ТН1 таймера-счетчика Т/С1, работающего в режиме 2 (с автоперезагрузкой).

При приеме стоповый бит заносится в разряд регистра SCON.2=RB8.

В режиме 2 (SM0,SM1=1,0) и в режиме 3 (SM0,SM1=1,1) кадр содержит одиннадцать битов. Значение контрольного бита перед передачей кадра записывается в разряд регистра SCON.3=ТВ8.

Значение контрольного бита в принятом кадре переписывается в разряд регистра SCON.2=RB8.

Скорость передачи и приема (BR) в режиме 2 зависит только от значения бита SMOD и тактовой частоты работы микроконтроллера и определяется по формуле

.

(2)

Скорость передачи и приема в режиме 3 зависит от частоты переполнений таймера-счетчика Т/С1 и определяется по формуле (1).

Для получения стандартных значений скорости передачи по интерфейсу RS-232 в режимах 1 и 3 следует использовать кварцевый резонатор с резонансной частотой, кратной 12. Типичными значениями являются 18432 кГц и 11059 кГц.

При завершении приема кадра в режимах 1, 2, 3 установка в единичное состояние разряда регистра SCON.0=RI и поступление запроса прерывания от приемника в контроллер прерываний зависит от состояния разряда регистра SCON.5=SM2.

При SM2=0 разряд регистра SCON.0=RI устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний при завершении приема любого кадра.

При SM2=1 в режиме 1 разряд регистра SCON.0=RI устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний, если в принятом кадре бит на десятой позиции имеет единичное значение (есть стоповый бит).

В режимах 2 и 3 разряд SCON.0=RI устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний, если в принятом кадре контрольный бит имеет единичное значение.

^ 1.3.5Контроллер прерываний

Контроллер прерываний (IC) принимает и обрабатывает запросы прерывания от внешних и внутренних источников запросов. В состав контроллера прерываний входят регистры специальных функций IE и IР и младшая половина разрядов регистра TCON (TCON.3–0). Схемы распределения разрядов в регистрах IE, IP и TCON представлены на рисунке 1.13.


7

6

5

4

3

2

1

0

EA





ES

ET1

EX1

ET0

EX0

а)

7

6

5

4

3

2

1

0







PS

PT1

PX1

PT0

PX0

б)

7

6

5

4

3

2

1

0













IE1

IT1

IE0

IT0

в)


а) регистр IE; б) регистр IP; в) регистр TCON


Рисунок 1.13 – Схемы распределения разрядов в регистрах IE, IP
и TCON


Сигналы запросов прерывания от внешних источников INT0 и INT1 поступают на входы порта Р3.2 и Р3.3 соответственно. Запрос прерывания представлен или низким уровнем сигнала INT0 (INT1), или переходом сигнала INT0 (INT1) от высокого уровня к низкому уровню. Запрос прерывания представлен уровнем сигнала при TCON.0=IT0=0 (TCON.2=IТ1=0). При IT0=1 (IT1=1) запрос представлен отрицательным перепадом сигнала.

При поступлении запроса прерывания на входы INT0 или INT1 устанавливается в единичное состояние разряд TCON.1=IE0 или TCON.3=IЕ1 соответственно. Если запрос прерывания представлен переходом сигнала, разряд IE0 (IE1) сбрасывается в нулевое состояние автоматически при переходе микроконтроллера к выполнению соответствующей прерывающей программы. Если запрос прерывания представлен уровнем сигнала, состоянием разряда IЕ0 (IЕ1) управляет внешний сигнал INT0 (INT1).

Запросы прерывания от внутренних источников запросов: от таймера-счетчика Т/С0, таймера-счетчика Т/С1, передатчика и приемника последовательного порта – представлены единичным значением сигналов, поступающих из разрядов регистров TCON.5=TF0, TCON.7=TF1, SCON.1=TI и SCON.0=RI соответственно. Сигналы запросов прерывания от передатчика (TI) и приемника (RI) последовательного порта объединены по схеме логического ИЛИ на входе контроллера прерываний.

С использованием разрядов регистра IE разрешается или запрещается прием запросов прерывания в контроллер прерываний. Каждому запросу соответствует свой разряд регистра. Биты ET0, ET1 соответствуют запросам прерываний от таймеров, биты EX0, EX1 – запросам прерывания от внешних источников, бит ES – от последовательного порта. При IЕ.Х=0 (Х=0, 1,..., 4) прием соответствующего запроса запрещается, при IЕ.Х=1 – разрешается. С использованием разряда IE.7=ЕА запрещается прием любого запроса прерывания (при ЕА=0).

В контроллере прерываний реализованы два уровня приоритета – высший и низший. Любой запрос прерывания может быть отнесен к любому из уровней. Отнесение запроса прерывания к уровню приоритета выполняется с использованием разрядов регистра IР (соответствие битов совпадает с регистром IE, см. выше). Каждому запросу прерывания соответствует свой разряд регистра. При IР.Х=0 (X=0, 1,..., 4) запрос относится к низшему уровню, при IР.X=1 – к высшему уровню.

Для запросов прерывания, отнесенных к одному уровню,
еще рефераты
Еще работы по разное