Файл: Тема Способы кодирования информации.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 88

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




    1. Кодирование текста и команд


При обмене данными между микропроцессорными системами возникает необходимость в передаче различных знаков и буквенных символов. Эти символы также кодируются с помощью двоичных кодов, причем различных кодировок существует довольно много.

Наиболее распространенным считается введенный в 1963 году в США американский стандартный код обмена информацией ASCII (American Standard Code for Information Interchange).

В коде ASCII для кодирования каждого символа отводится 7 бит. В результате он позволяет представить 2 7=128 различных символов. Таблица кодировки кода ASCII имеет вид

Мл. цифра

Старшая цифра

0

1

2

3

4

5

6

7

0

NUL

DLE

SP

0

@

P

`

p

1

SOH

DC1

!

1

A

Q

a

q

.

.

.

























F

SI

US

/

?

O

-

o

DEL


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

Код ASCII содержит две группы символов: символы пишущей машинки и управляющие символы. Символами пишущей машинки (коды h20…h7E) считаются прописные и строчные латинские буквы, цифры и специальные знаки. Управляющие символы, размещенные в основномв двух первых столбцах таблицы (коды h00…h1F, h7F), используются в различных системах связи для передачи команд.

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


Поскольку код ASCII содержит только 128 символов, его возможности недостаточны для работы с языками, отличными от английского. Для работы с такими языками используется расширенный код ASCII. В расширенном коде ASCII предусмотрено 256 символов, а каждый символ кодируется 8-битным кодом. Расширенный код полностью включает в себя стандарт ASCII (половина таблицы) и дополнительно содержит 128 символов с единицей в старшем разряде. Среди дополнительных символов часто используемые буквы ряда европейских алфавитов, буквы греческого алфавита, математические символы и символы псевдографики, предназначенные для вычерчивания простейших схем и таблиц.

Для представления букв русского алфавита предложено много модификаций кода ASCII. Все они основаны на подмене некоторых символов американской кодировки символами кириллицы. Наиболее распространена кодировка, известная как кодовая страница 866. В ней символы псевдографики имеют те же коды, что и в расширенном коде ASCII, а русские буквы замещают буквы европейских алфавитов, буквы греческого алфавита и математические символы.

Тема 2. Основные сведения о языке программирования Си


    1. Общие сведения


Язык высокого уровня Си – один из широко используемых при создании программного обеспечения для однокристальных микроконтроллеров. Для микроконтроллеров 8051 фирмой Keil была разработана модификация языка Си, известная под названием С51.

Программа на языке Си имеет фрагменты, где описываются константы и внешние сигналы, резервируются переменные, определяются используемые процедуры и главная часть программы пользователя.

Основой для реализации алгоритмов являются операторы. В Си имеются условный оператор if, операторы цикла for, while, выбора switch и др. После операторов в большинстве случаев ставится точка с запятой. Точка с запятой не ставится после директив препроцессора (начинающихся со знака #) и после фигурных закрывающих скобок.

Язык Си с его особенностями и стандартными функциями, скрытыми во включаемых файлах, реализован для множества разных процессоров. Перечень таких файлов, используемых в программе, обязательно указывается в начале при помощи директивы #include с именем файла в двойных кавычках или угловых скобках:

#include "mNameFile" // Файл находится в текущем каталоге

#include // Файл берется из каталога компилятора
Чаще всех используются заголовочные файлы, которые имеют имена с расширением .h (от Header – заголовок). В них описаны основные стандартные функции и определения языка. Кроме того, к заголовочным относятся файлы с описанием ресурсов микроконтроллера. Например, для микроконтроллера AT89C51 фирмы ATMEL используется директива

#include

с файлом at89x51.h, в котором находятся основные определения стандартных имен для указанного микроконтроллера и их порядковые номера в памяти данных.

Комментарии в тексте программы могут быть двух типов: многострочные (обрамленные служебными знаками /* и */) и однострочные (начинающиеся со

знаков //).


    1. Функции в языке Си


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

Функция – это совокупность объявлений и операторов, обычно предназначенная для решения определенной задачи. Каждая функция должна иметь имя, которое используется для ее определения, объявления и вызова. В любой программе на Си должна быть функция с именем main (главная функция). Именно с этой функции, в каком бы месте программы она не находилась, начинается выполнение программы.

С использованием функций в языке Си связаны три понятия – определение функции (описание действий, выполняемых функцией), объявление функции (задание формы обращения к функции) и вызов функции. Определение функции задает тип возвращаемого значения, имя функции, типы и число формальных параметров, а также объявления переменных и операторы, называемые телом функции и определяющие действие функции. Тело функции состоит из набора операторов и обрамляется фигурными скобками. Например,

int rus (unsigned char r)

{if (r>55) return 1; else return 0;}
В данном примере определена функция с именем rus, имеющая один параметр с именем r и типом unsigned char. Функция возвращает целое значение, равное 1, если параметр функции больше 55, или 0 в противном случае.

Если функция не использует параметров, то наличие круглых скобок обязательно, а вместо списка параметров рекомендуется указать слово void.

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

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

rus (1000);

В языке Си нет требования, чтобы определение функции обязательно предшествовало ее вызову. Определения используемых функций могут следовать за определением функции main, перед ним, или находиться в другом файле. Однако для того, чтобы компилятор мог осуществлять проверку соответствия типов передаваемых фактических параметров типам формальных параметров, до вызова функции нужно поместить объявление (прототип) функции. Объявление функции имеет такой же вид как и определение функции, с той лишь разницей, что тело функции отсутствует, и имена формальных параметров тоже могут быть опущены. Для функции, определенной выше в примере, прототип может иметь вид

int rus (unsigned char r); или rus (unsigned char);


    1. Особенность завершения программы


Необходимо обратить внимание на последний оператор в теле функции main(). Бесконечный цикл while(1); играет роль оператора завершения программы. Так как система на основе микроконтроллера не находится под управлением операционной системы, то простой выход из пользовательской программы приведет к неконтролируемой выборке команд микроконтроллером из памяти, что может вызвать нежелательные последствия и даже привести к выходу системы из строя. Поэтому рекомендуется все программы либо «завершать» бесконечным циклом, либо строить их таким образом, чтобыони работали по бесконечному алгоритму.


    1. Синтаксис Keil C51


Идентификаторы языка С51 используются для определения имени переменной, подпрограммы, символической константы или метки оператора. Длина идентификатора может достигать 255 символов, но транслятор использует только 31 символ.

Как и в классическом ANCI C, в Keil C51 константы предназначены для введения чисел в состав выражений операторов языка программирования Си. В языке С51 используют следующие типы констант:

  • целые знаковые и беззнаковые константы;

  • константы с плавающей точкой;

  • символьные константы и литеральные строки.

Целочисленные константы могут быть представлены в восьмеричной, десятичной или шестнадцатеричной форме записи. Десятичная константа сосотоит из одной или нескольких десятичных цифр. Причем первая цифра не может быть нулем, иначе число будет интерпретировано как восьмеричное. Восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр из диапазона 0-7, а шестнадцатеричная начинается с последовательности символов 0х или 0Х, после которых следуют шестнадцатеричные цифры 0-F.

Любой целочисленной константе присваивается тип, определяющий преобразования, которые должны быть выполнены, если константа используется в выражениях. При этом десятичные константы рассматриваются как знаковые числа, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если значение константы меньше 32768, то ей присваивается тип int, если больше – тип long. Восьмеричным и шестнадцатеричным константам, в зависимости от значения, может быть присвоен тип int, unsigned int, long, unsigned long.

Константа с плавающей точкой представляется в виде действительного числа с десятичной точкой и порядком числа. Примеры записи констант с плавающей точкой: 75.19, 1.1Е-3, -0.003, .015, -0.32Е2.

Компилятор Keil C51 позволяет работать с разными типами данных. Информация о типах данных и их форматах приведена в следующей таблице.

Тип данных

Кол-во бит переменной

Кол-во байт

Диапазон значений

Бит (bit)

1

-

0 или 1

Символ со знаком (signed char)

8

1

-128 - +127

Символ без знака (unsigned char)

8

1

0-255

Короткое целое со знаком (signed short)

16

2

-32768 - +32767

Короткое целое без знака (unsigned short)

16

2

0-65535

Целое со знаком (signed int)

16

2

-32768 - +32767

Целое без знака (unsigned int)

16

2

0-65535

Длинное целое со знаком (signed long)

32

4

-2147483648-+2147483647

Длинное целое без знака(unsigned long)

32

4

0-4294967295

Число с плавающей точкой (float)

32

4

±1,175494Е-28-+3,402823Е+38


Выражение в языке С51 – это комбинация знаков операций и операндов, результатом которой является определенное значение, при этом знаки операций определяют действия, которые следует выполнить над операндами. В языке С51 используются следующие арифметические операции:

  • суммирование (оператор +);

  • вычитание (оператор -);

  • умножение (оператор *);

  • деление (оператор /);

  • вычисление остатка от целочисленного деления (оператор %).

Кроме того, в С51 определено несколько унарных арифметических операций, которые могут выполняться над одним операндом:

´─´ - изменение знака операнда на противоположное;

++ - увеличение (инкремент) значения операнда на 1;

‒ ‒ - уменьшение (декремент) значения операнда на 1.

Над операндами можно осуществлять те же логические операции, что и в ANCI C:

´&&´ - логическое И;

´&´ - побитовое логическое И;

´||´ - логическое ИЛИ;

´|´ - побитовое логическое ИЛИ;

´Λ´ - исключающее ИЛИ.

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

Тема 3. Последовательный порт UART


    1. Последовательный порт микроконтроллера, основные сведения


Последовательный порт относится к устройствам ввода-вывода микроконтроллера, которые предназначены для его связи с внешними устройствами. Через последовательный порт данные передаются последовательно, бит за битом.

Последовательный порт использует одну сигнальную линию для передачи данных. Его преимущество – использование небольшого количества линий связи.

Поскольку обмен данными через последовательный порт производится не байтами, а битами, его производительность измеряют битами в секунду (бит/с, Кбит/с, Мбит/с).

Обмен данными может быть:

  • дуплексным – предполагает прием и передачу данных одновременно;

  • полудуплексным – данные передаются в одном направлении с возможностью смены направления;

  • симплексным – данные передаются только в одном направлении.

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



Рисунок 3.1– Синхронная передача информации
При асинхронной передаче байт данных посылается как пакет, включающий информацию о начале и конце передачи пакета. Первым передается не бит данных, а старт-бит, указывающий на начало передачи данных (начало пакета). Этот бит используется приемником для синхронизации процесса чтения данных, которые следуют за старт-битом. Завершается пакет стоп-битом, который используется приемником для обработки конца передачи данных. Асинхронный пакет данных показан на следующем рисунке.



Рисунок 3.2 – Асинхронный пакет данных
Наиболее популярный протокол асинхронной последовательной связи называется «RS-232», который является международным стандартом.

В процессе работы асинхронный приемник ждет прихода СТАРТ-бита, когда на линии устанавливается низкий уровень. Через половину времени передачи одного бита линия вновь опрашивается. Если на линии все еще установлен низкий уровень сигнала, то приемник ждет один период и считывает данные. Если же на линии оказывается высокий уровень сигнала, то приемник считает, что произошла ошибка, и данные не принимаются. Для асинхронного режима предусмотрен ряд стандартных скоростей обмена: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 bps (бит в секунду).


    1. Универсальный синхронно-асинхронный приемопередатчик UART


В микропроцессорных системах в качестве последовательного порта широко применяется модуль универсального синхронно-асинхронного приемопередатчика UART.

В микроконтроллере ADuC842 порт UART является дуплексным. Принимаются и передаются данные по разным линиям. Передача происходит через вывод TxD микроконтроллера (Transmitter Data – передатчик данных), прием – через линию RxD ( Receiver Data – приемник данных). Упрощенная структура модуля UART имеет вид:


Рисунок 3.3 – Структурная схема модуля UART
Через буферный регистр SBUF осуществляется доступ к регистрам приемника и передатчика порта. Когда программа пользователя производит запись кода в SBUF, то данные загружаются в регистр SBUF передатчика. Когда же посредством программы выполняется чтение, то осуществляется доступ к регистру SBUF приемника. Физически регистры SBUF приемника и передатчика разделены.

Передача инициируется записью в SBUF передатчика SBUF байта данных. Этот байт переписывается в сдвиговый регистр передатчика, из которого пересылается бит за битом. Как только байт будет переслан целиком, устанавливается флаг TI. Установка флага TI сигнализирует о том, что микроконтроллер готов к передаче очередного байта.

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

Отметим, что запись принятого байта из регистра сдвига в буферный регистр приемника происходит только при условии, что RI=0. Поэтому при перемещении очередного байта из буферного регистра приемника в пользовательской программе необходимо выполнять сброс этого флага. В противном случае принятый в сдвиговый регистр, но не записанный в регистр SBUF приемника, следующий байт будет безвозвратно утерян.

Генератор скорости обмена представляет собой делитель внутренней тактовой частоты процессора Fint с программируемым коэффициентом деления. При программировании можно настраивать требуемую скорость последовательного порта вне зависимости от частоты Fint (в определенных пределах). Для этого используется стандартный или специально выделенный таймер-счетчик в режиме автоперезагрузки.

Процессы приема и передачи в асинхронном режиме UART происходят независимо. Однако требуется, чтобы приемник и передатчик были настроены на одну скорость.

Управление последовательным портом осуществляется с помощью регистра SCON. Его структура имеет вид:

D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI



Биты SM0, SM1 определяют режим работы последовательного порта. Последовательный порт обеспечивает работу в одном синхронном режиме (режим 0) и трех асинхронных режимах работы (режимы 1, 2, 3).

Бит SM2 используется при реализации сетевого протокола в многопроцессорной системе.

Бит REN в установленном состоянии разрешает прием данных по последовательному каналу связи.

Биты RB8, TB8 соответствуют девятому принимаемому и передаваемому битам соответственно.


    1. Установка скорости передачи UART

По умолчанию последовательный порт микроконтроллера ADuC842 настроен на синхронизацию от Таймера 1. Скорость передачи UART, обозначим ее BR, определяется временем переполнения таймера.
BR=(2SMOD/32)xFT1,

где SMOD – бит D7 управляющего регистра PCON, этот бит управляет опцией удвоения скорости обмена; FT1 – частота переполнения Таймера 1.

Таймер должен быть сконфигурирован для работы в режиме с автоперезагрузкой. Для установки такого режима в старшие четыре бита регистра TMOD следует записать бинарный код b0010. В этом случае при SMOD=0 скорость передачи данных определяется по формуле:
BR= Fint /32/(256 – TH1), (3.1)

где TH1 – содержимое старшего регистра данных Таймера 1. Из (3.1) находим значение содержимого регистра TH1, обеспечивающее требуемую скорость:
TH1= 256 – Fint /32/ BR.

Результат вычисления должен быть округлен до ближайшего целого. Например, значение TH1 при тактовой частоте ядра микроконтроллера 2097 КГц (это значение для микроконтроллера ADuC842 по умолчанию) и требуемой скорости передачи 9600 бит/с равно
TH1=256-2097/32/9,6≈249.

В шестнадцатеричной системе счисления, используемой при программировании, получаем 249 = 0хF9.



    1. Режимы работы модуля UART


Последовательный порт UART может работать в одном из четырех режимов, представленных в таблице 3.1.

Таблица 3.1

SM0

SM1

Режим

Описание

Скорость передачи

0

0

0

синхронный

Fинт/2

0

1

1

8 бит,асинхронный

переменная

1

0

2

9 бит, асинхронный

Fинт/32 или Fинт/16

1

1

3

9 бит, асинхронный

переменная

В режиме 0 данные передаются и принимаются через линию RxD. Через линию TxD выдаются синхроимпульсы, стробирующие принимаемые или выводимые данные. Формат посылки – 8 бит, младшими разрядами вперед.

В режимах асинхронного обмена 1, 2, 3 данные передаются по линии TxD, а принимаются по линии RxD.

В режиме 1 посылка состоит из 10 бит: старт-бит, 8 битов данных, стоп-бит. Скорость передачи определяется частотой переполнения Таймера 1 или Таймера 2.

В режимах 2 и 3 посылка состоит из 11 бит: старт-бит, 8 битов данных, программируемый бит, стоп-бит. При приеме подпрограмма обслуживания может прочитать девятый бит из разряда RB8 регистра SCON. При передаче девятый бит записывается в разряд TB8 регистра SCON. Пользователь может использовать девятый бит по своему усмотрению.

Рассматриваемый последовательный порт способен поддерживать с использованием режимов 2 и 3 обмен данными в многопроцессорных системах. При этом передающий микроконтроллер играет роль ведущего, а принимающие микроконтроллеры – роль ведомых. Механизм такой передачи аппаратно поддерживается битом SM2 регистра SCON. Ведущий микроконтроллер посылает в начале посылки кадр, содержащий адрес одного из ведомых микроконтроллеров. Адрес отличается от данных тем, что его девятый бит данных установлен в 1, в то время как у кадра данных девятый бит равен 0. При SM2=1 кадр адреса вызывает прерывание, а кадр данных – нет. Процедуры прерываний всех ведомых анализирует принятый адрес. При идентификации своего адреса микроконтроллер сбрасывает бит SM2 и читает последующие данные. Остальные ведомые оставляют бит SM2 установленным и продолжают выполнять текущую программу.


    1. Инициализация порта UART микроконтроллера х51


При инициализации последовательного порта нужно выполнить ряд действий, затрагивающих сразу три внутренних устройства микроконтроллера: собственно последовательный порт, таймер для тактирования и систему прерываний. Указанные действия сводятся к инициализации нескольких специальных регистров микроконтроллера:

  • регистра управления последовательным портом UART;

  • регистра режима таймера TMOD и регистра данных таймера ТНх, определяющего скорость приема-передачи;

  • регистров системы прерываний (разрешения IE и приоритета IP), если в приемнике или передатчике используется механизм прерываний;

  • регистра управления мощностью PCON, в котором упакован бит SMOD удвоения скорости приема-передачи, если необходимо удвоение скорости.

Пример инициализации порта UART:
void InitUART(void){ // Функция инициализации порта UART микроконтроллера

TH1 =0xF9; // Скорость 9600 бит в секунду

TMOD =0x20; // Таймер 1 в режиме автоперезагрузки

TCON =0x40; // Запуск Таймера 1

SCON =0x50; // 8 bit UART, разрешение приема

PCON&=0x7F; // Отключение удвоения скорости, установленной в ТН1

EA=0; // Запрет прерываний

}


Тема 4. Таймерные устройства микроконтроллера ADuC842
4.1. Общие сведения
Иногда к устройствам ввода-вывода относят таймерные устройства. Они отличаются от других устройств ввода-вывода тем, что могут не иметь внешних выводов для подключения к внешним устройствам.

Таймер восьмиразрядного микроконтроллера представляет собой шестнадцатиразрядный счетчик со схемой управления. В памяти микроконтроллера счетчик отображается двумя регистрами: TH – старший байт счетчика, TL – младший байт. Регистры доступны для чтения и для записи. Направление счета – только прямое, т.е. при поступлении входных импульсов содержимое счетчика инкрементируется.



Рисунок 4.1 – Структура модуля таймерного устройства
В зависимости от настройки таймерное устройство может использовать внутренний (управляемый делитель частоты сигнала внутреннего тактового генератора микроконтроллера) или внешний источник входного сигнала (вход TOCKI). В первом случае говорят, что таймерное устройство работает в режиме таймера (отсчет времени через подсчет внутренних импульсов синхронизации). Во втором – в режиме счетчика (подсчет числа импульсов («внешних событий») на специальном внешнем входе). Поэтому таймерное устройство часто называют таймером/счетчиком.

При переполнении счетчика устанавливается в «1» триггер переполнения TF. Он генерирует запрос на прерывание, если прерывания от таймера разрешены.

Пуск и останов таймера могут осуществляться только под управлением программы. Программным способом можно также установить старший и младший байты счетчика в произвольное состояние или прочитать текущий код счетчика.

Исходная архитектура MCS-51 имеет два таймера/счетчика Таймер 0 и Таймер 1.
4.2. Регистры управления таймерными устройствами и режимы их работы
Таймер 0 и Таймер 1 обслуживаются регистром режима TMOD и регистром управления TCON. Форматы регистров приведены ниже.


GATE1

C/T1

M1.1

M1.0

GATE0

C/T0

M0.1

M0.0


Рисунок 4.2 – Формат регистра TMOD
Рассмотрим назначение битов регистра.

GATE1, GATE0 – биты выбора внешнего управления Таймером 1 и Таймером 0 соответственно.


C/T1, C/T0 – биты выбора типа событий для Таймера 1 и Таймера 0 соответственно. При C/T=1 таймерное устройство работает как счетчик, при C/T=0 – как таймер.

M1.1, M1.0 – биты определения режима работы Таймера 1.

M0.1, M0.0 – биты определения режима работы Таймера 0.

Биты М1 и М0 следующим образом определяют режимы работы таймеров/счетчиков.

Таблица 4.1 Режимы работы таймеров/счетчиков

М1

М0

Описание режимов работы

0

0

Режим 0. 13-разрядный таймер/счетчик.

THx работает как 8-разрядный таймер/счетчик, TLx – как 5-разрядный предделитель

0

1

Режим 1. 16-разрядный таймер/счетчик. THx и TLx включены последовательно.

1

0

Режим 2. 8-разрядный таймер/счетчик TLx с автоперезагрузкой значением из THx

1

1

Режим 3. TL0 как 8-рзрядный таймер/счетчик, управляемый битами управления Таймера 0. TH0 как 8-рзрядный таймер/счетчик, управляемый битами управления Таймера 1. Таймер 1 не работает.


Формат регистра TCON имеет вид.


TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0


Рисунок 4.3 – Формат регистра TCON
Биты регистра имеют следующее назначение.

TF1, TF0 – флаги переполнения Таймера 1 и Таймера 0 соответственно.

TR1, TR0 – биты запуска Таймера 1 и Таймера 0 соответственно.

Остальные биты относятся к системе прерываний микроконтроллера.

IE1, IE0 – флаги запроса прерывания по входам INT1, INT0 соответственно.

IT1, IT0 – биты селектора типа активного сигнала на входах INT1, INT0 соответственно.

Рассмотрим подробнее часто применяемые режимы работы таймерного устройства: Режим 1 и Режим 2.

Режим 1 таймерного устройства обычно используется для формирования одиночных временных интервалов времени. При этом устройство настроено на работу в режиме таймера, т.е. на вход устройства поступают импульсы с выхода делителя частоты импульсов внутреннего тактового генератора. Допустим, что тактовый генератор микроконтроллера сконфигурирован для генерации с частотой 1 МГц (в этом случае на вход таймера будут поступать импульсы с периодом TG =1 мкс. Требуется сформировать временной интервал длительностью 3500 мкс.