Цель работы и подготовка к работе

Целью работы является изучение особенностей структуры и программирование периферийных устройств микроконтроллеров семейства MSP430 на примере модуля тактирования и портов ввода/вывода.

С инструкцией, содержащей требования охраны труда, студенты знакомятся в лаборатории.

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

1. Сигналы микроконтроллера MSP430

Все сигналы (выводы, контакты) микроконтроллера MSP430 можно разделить на несколько групп.

Группа выводов для подключения источников питания:
    Avcc – источник питания для аналоговой части, положительный полюс; AVss – источник питания для аналоговой части, отрицательный полюс; DVcc – источник питания для цифровой части, положительный полюс; DVss – источник питания для цифровой части, отрицательный полюс.

Раздельное питание цифровой и аналоговой части позволяет уменьшить помехи на аналоговые цепи со стороны цифровых.

Группа выводов для подключения кварцевых резонаторов XIN, XOUT, X2IN, X2OUT. Группа сигналов управления и синхронизации. Группа сигналов для программирования микроконтроллера. Группа сигналов ввода/вывода периферийных устройств. Группа сигналов аналогового ввода/вывода. Группа сигналов цифрового ввода/вывода общего назначения.

Выводы микроконтроллера могут совмещать в себе несколько функций.

НЕ нашли? Не то? Что вы ищете?

Назначение всех сигналов микроконтроллера приведены в [1].

2. Модуль тактирования

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


Рисунок 1. Функциональная схема модуля тактирования.

Модуль тактирования может формировать три тактовых сигнала:

ACLK – вспомогательная частота. Частота ACLK задаётся генератором LFXT1 и может быть выбрана в качестве источника тактирования для различных встроенных периферийных модулей. Частота ACLK может быть разделена на 1, 2,4, или 8. MCLK – основной источник тактирования. В качестве источника для MCLK могут служить генераторы LFXT1, XT2 (если присутствует), или DCO. Частота MCLK может быть разделена на 1, 2,4, или 8. MCLK используется ядром CPU и системными устройствами. SMCLK – дополнительная тактовая частота. В качестве источника для SMCLK программно можно выбрать XT2 (если присутствует), или DCO. Частота SMCLK может быть разделена на 1, 2,4, или 8. SMCLK может служить источником тактирования различных встроенных периферийных модулей.

Источниками тактирующих сигналов являются три генератора:

    генератор LFXT1; генератор XT2; генератор с цифровым управлением DCO (Digitally-Controlled Oscillator).

Эти генераторы формируют сигналы LFXT1CLK, XT2CLK и DCOCLK, которые затем с помощью программно-управляемых мультиплексоров распределяются на ACLK, MCLK и SMCLK.

2.1. Генератор LFXT1

Генератор LFXT1 может быть использован совместно с высокочастотным либо низкочастотным кварцевым или керамическим резонатором, который подключается к выводам XIN и XOUT.

Генератор может работать в трех режимах: высокочастотном, низкочастотном и с тактированием от внешнего сигнала.

В высокочастотном (High Frequency – HF) режиме необходимо подключить кварц с частотой основного резонанса до 8 МГц. При этом надо переключить генератор на этот режим, установив бит XTS=1 в регистре BCSTL1. Для нормальной работы генератора в высокочастотном режиме может потребоваться подключение внешних конденсаторов к выводам XIN и XOUT.

В низкочастотном режиме (Low Frequency – LF) генератор LFXT1 обеспечивает сверхнизкое энергопотребление. При этом используется «часовой» кварцевый резонатор с частотой 32768 Гц. Переключение в этот режим осуществляется сбросом бита XTS=0 в регистре BCSTL1. В режиме LF используются внутренние конденсаторы, подключенные к выводам XIN и XOUT. При необходимости могут быть добавлены внешние конденсаторы.

Кроме этого, для работы LFXT1 может использоваться внешний сигнал тактирования с частотой от 1 Гц до 8 МГц, который подаётся на вывод XIN (при этом кварцевый резонатор не подключается).

Генератор LFXT1 может быть программно отключен установкой бита OSCOFF=1 в регистре статуса SR.

2.2. Генератор ХТ2

В качестве источника тактирующего сигнала может быть выбран генератор ХТ2. Его характеристики идентичны характеристикам генератора LFXT1 в режиме HF, за исключением того, что генератор ХТ2 не имеет встроенных нагрузочных конденсаторов. Требуемые для работы высокочастотного резонатора нагрузочные конденсаторы должны быть установлены извне. Генератор ХТ2 также может использовать внешнюю тактовую частоту, подаваемую на вход XT2IN.

Генератор ХТ2 можно отключить установкой бита XT2OFF=1 в регистре BCSCTL1.

2.3. Генератор с цифровым управлением (DCO)

Генератор с цифровым управлением DCO – это генератор RC-типа, который служит источником сигнала DCOCLK. Частота сигнала DCOCLK может регулироваться программно битами DCOx, MODx регистра DCOCTL и RSELx регистра BCSCTL1. Генератор DCO стартует при включении питания микроконтроллера (после сброса) на частоте порядка 800 кГц. Именно этот генератор является источником сигнала MCLK после сброса микроконтроллера.

Частота RC-генератора DCO определяется номиналом частотозадающего резистора, подключаемого к генератору. Резистор может быть внешним, при этом необходимо установить бит DCOR=1 в регистре BCSCTL2. Если бит DCOR=0, то используется внутренний резистор. В случае подключения внутреннего резистора частота генератора задается битами тремя RSELx в регистре BCSCTL1. Окончательно частота сигнала DCOCLK определяется тремя битами DCOx делителя частоты, которые находятся в регистре DCOCTL. На рисунке 2 показана зависимость частоты сигнала DCOCLK от DCOx и RSELx.

Рисунок 2. Зависимость частоты DCOCLK от DCOx и RSELx.

Модулятор, находящийся в составе модуля DCO, смешивает две соседние частоты, что приводит к расширению спектра сигнала DCOCLK и уменьшению электромагнитной интерференции. Управление модулятором осуществляется с помощью битов MODx в регистре DCOCTL.

Коммутация сигналов DCOCLK, LFXT1CLK, XT2CLK на тактовые сигналы ACLK, MCLK, SMCLK осуществляется с помощью мультиплексоров, которые управляются битами SELMx и SELS регистра BCSCTL2. Частота сигналов LFXT1CLK, XT2CLK, DCOCLK может быть поделена на 1, 2, 4, или 8 с помощью делителей частоты (см. рисунок 1). Коэффициент деления частоты задается битами DIVAx (регистр BCSCTL1), DIVMx и DIVSx (регистр BCSCTL2).

В модуле тактирования имеется возможность определения неисправности генераторов. Неисправность определяется, если сигнал XT2CLK, либо сигнал LFXT1CLK (в режиме HF) отсутствует в течение приблизительно 50 мкс. Когда обнаруживается неисправность, происходит автоматическое переключение MCLK на работу от DCO, что позволяет продолжить работу даже при неисправном кварцевом генераторе.

Если установлены флаги OFIFG (в регистре IFG1) и OFIE (в регистре IE1), происходит запрос немаскируемого прерывания NMI (адрес FFFCh). Процедура обработки NMI-прерывания может проверить флаг OFIFG, что позволит выявить возникшую неисправность генератора. Очистка флага OFIFG должна производится пользователем программным образом.

Определение неисправности генератора LFXT1 в режиме LF не производится.

3. Порты ввода/вывода

Сигналы цифрового ввода/вывода общего назначения группируются по 8 выводов. Эти группы называются портами ввода/вывода. Микроконтроллеры семейства MSP430 могут иметь до 6 портов цифровых входов/выходов от Р1 до Р6. Каждый вывод индивидуально конфигурируется как вход или выход и каждая линия ввода/вывода может быть индивидуально считана или записана.

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

Рисунок 3. Функциональная схема порта ввода/вывода.

Программирование портов ввода-вывода осуществляется с помощью программно-доступных 8-разрядных регистров. Напомним, что эти регистры отображаются в пространстве основной памяти с адресами от 010h до 0FFh (см. методические указание к лабораторной работе № 1 «Изучение системы команд микроконтроллеров семейства MSP430»). Биты в регистрах нумеруются справа налево, начиная с нуля (младшего значащего бита). Адреса регистров портов ввода/вывода общего назначения в пространстве памяти, тип доступа и их исходное состояние приведены в таблице 4.

3.1. Регистры выбора функции PxSEL

Как уже говорилось выше, выводы микроконтроллера могут совмещать в себе несколько функций. Каждый бит PxSEL определяет, как будет использован вывод – в качестве порта ввода/вывода общего назначения или в качестве функции периферийного модуля. Если бит равен 0, то для вывода выбирается функция ввода/вывода. Если бит равен 1, то для вывода выбирается функция периферийного модуля.

Следует заметить, что установка PxSEL=1 автоматически не определяет направление передачи информации для вывода. Некоторые функции периферийных модулей требуют конфигурирования битов PxDIR для выбора направления, необходимого для правильной работы этой функции.

3.2. Регистры направления PxDIR

Каждый бит в каждом регистре PxDIR позволяет выбрать направление передачи информации по линии порта ввода/вывода, независимо от выбранной для этой линии функции. Если PxDIR. n=0, то линия n порта Px переключается на ввод; если PxDIR. n=1, то линия переключается на вывод. Например, команда

MOV. B #0xF0, P3DIR

позволяет установить линии 0 – 3 на ввод, а линии 4 – 7 порта P3 – на вывод информации.

3.3. Регистры ввода PxIN

Каждый бит в каждом регистре PxIN отражает величину входного сигнала на соответствующей линии ввода/вывода, когда она сконфигурирована на функцию ввода. Если PxIN. n=0, то входной сигнал имеет низкий уровень; если PxIN. n=1, то входной сигнал имеет высокий уровень.

Когда вывод порта работает как вход периферии, входным сигналом периферии является зафиксированное в триггере-защелке представление сигнала на выводе устройства. Когда PxSELx=1, внутренний входной сигнал соответствует сигналу на ножке. Однако, если PxSELx=0, на входе периферии сохраняется значение входного сигнала на выводе устройства, имевшееся перед сбросом бита PxSELx.

3.4. Регистры вывода PxOUT

Каждый бит в каждом регистре PxOUT содержит значение, которое будет выведено на соответствующую линию ввода/вывода, сконфигурированную как выход. Если PxOUT. n=0, то выходной сигнал имеет низкий уровень; если PxOUT. n=1, то выходной сигнал имеет высокий уровень. . Например, если нужно вывести в порт P3 число с «1» в 3 и 5 битах, то удобно использовать следующую запись на языке ассемблер

MOV. B #0x28, P3OUT,

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

MOV. B #((1<<3)|(1<<5)), P3OUT.

3.5. Регистры флагов прерывания P1IFG, P2IFG

Порты Р1 и Р2 имеют возможность вызывать прерывание. Для каждой линии ввода/вывода портов Р1 и Р2 можно индивидуально разрешить прерывания и сконфигурировать их так, чтобы прерывание происходило по фронту или спаду входного сигнала. Все линии ввода/вывода порта Р1 являются источником вектора прерывания с адресом 0FFE8h, а все линии ввода/вывода порта Р2 – источником вектора прерывания с адресом 0FFE2h. Определить источник прерывания – Р1 или Р2 – можно путем проверки регистра PxIFG.

Каждый бит PxIFG - это флаг прерывания соответствующей линии ввода/вывода, устанавливаемый, когда происходит перепад выбранного входного сигнала на линии. Все флаги прерывания PxIFG запрашивают прерывание, когда установлен бит GIE разрешения прерываний в регистре статуса SR, и установлен соответствующий бит в регистре PxIE. Каждый флаг PxIFG должен быть сброшен программно. Пользователь также может устанавливать флаги PxIFG, тем самым обеспечивая возможность генерации программно-инициированного прерывания.

Если PxIFG. n=1, то есть запрос на прерывание; если PxOUT. n=0, то запроса ни прерывание нет.

Прерывания вызывают только перепады уровней, а не статические уровни. Если любой флаг PxIFG оказывается установленным во время выполнения процедуры обработки прерывания Рх или устанавливается после команды RETI выполняемой процедуры обработки прерывания Рх, установка флага PxIFGx генерирует другое прерывание. Таким образом, гарантируется, что каждый перепад уровня будет учтен.

Запись в P1OUT, P1DIR, P2OUT или P2DIR может привести к установке соответствующих флагов P1IFG или P2IFG.

Любое событие вызова внешнего прерывания должно иметь длительность, больше или равную 1,5 MCLK, чтобы быть гарантировано принятым и вызвать установку соответствующего флага прерывания.

3.6. Регистры выбора фронта прерывания P1IES, P2IES

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

Если бит PxIES. n=0, то флаг PxIFG. n устанавливается при изменении уровня сигнала с низкого на высокий (по фронту сигнала); если бит PxIES. n=1, то флаг PxIFG. n устанавливается при изменении уровня сигнала с высокого на низкий (по спаду сигнала). Запись в P1IES или P2IES может привести к установке соответствующих флагов прерывания; в таблице 1 показана такая возможность.

Таблица 1.

PxIESx

PxINx

PxIFGx

0→1

0

Может быть установлен

0→1

1

Не изменяется

1→0

0

Не изменяется

1→0

1

Может быть установлен



3.7. Регистры разрешения прерываний P1IE, P2IE

Каждый бит в регистре PxIE разрешает прерывание от соответствующего флага прерываний регистра PxIFG. Если бит PxIE. n=0, то прерывание запрещено, если бит PxIE. n=1, то прерывание разрешено.

Таблица 2. Регистры модуля тактирования.

Регистр

Обозначение

Тип доступа

Адрес

Исходное состояние

Регистр управления DCO

DCOCTL

Чтение/запись

056h

060h

Регистр 1 управления системой основного тактирования

BCSCTL1

Чтение/запись

057h

084h

Регистр 2 управления системой основного тактирования

BCSCTL2

Чтение/запись

058h

000h

Регистр 1 разрешения прерываний SFR

IE1

Чтение/запись

000h

000h

Регистр 1 флагов прерываний SFR

IFG1

Чтение/запись

002h

000h

Регистр статуса

SR

Чтение/запись

-

000h


Таблица 3. Описание битов регистров модуля тактирования.

Регистр

Номер бита

Наименование бита

Описание

DCOCTL

7 – 5

DCOx

Выбор частоты DCO.

4 – 0

MODx

Выбор модулятора.

BCSCTL1

7

XT2OFF

Выключение генератора XT2.

0 – XT2 включен;

1 – XT2 выключен, если он не используется для MCLK или SMCLK

6

XTS

Выбор режима LFXT1.

0 – режим низкой частоты;

1 – режим высокой частоты.

5 – 4

DIVAx

Коэффициент деления для ACLK.

00 – «/1»;

01 – «/2»;

10 – «/4»;

11 – «/8».

3

XT5V

Не используется.

2 – 0

RSELx

Выбор частотозадающего резистора DCO. Низшая номинальная частота выбирается при RSELx=0.

BCSCTL2

7 – 6

SELMx

Выбор источника для MCLK.

00 – источник DCOCLK;

01 – источник DCOCLK;

10 – источник XT2CLK;

11 – источник LFXT1CLK.

Таблица 3.(Окончание)

BCSCTL2

5 – 4

DIVMx

Коэффициент деления для MCLK.

00 – «/1»;

01 – «/2»;

10 – «/4»;

11 – «/8».

3

SELS

Выбор источника для SMCLK.

0 – источник DCOCLK;

1 – источник XT2CLK.

2 – 1

DIVSx

Коэффициент деления для SMCLK.

00 – «/1»;

01 – «/2»;

10 – «/4»;

11 – «/8».

0

DCOR

Выбор частотозадающего резистора для DCO.

0 – внутренний;

1 – внешний.

IE1

1

OFIE

Разрешение прерывания при возникновении ошибки генератора.

0 – прерывание запрещено;

1 – прерывание разрешено.

IFG1

1

OFIFG

Флаг ошибки генератора.

0 – нет ошибки;

1 – есть ошибка.

SR

7

SCG1

Отключение SMCLK.

0 – SMCLK включен;

1 – SMCLK отключен.

6

SCG0

Отключение DCO.

0 – DCO включен;

1 – DCO выключен, если он не используется для MCLK или SMCLK.

5

OSCOFF

Отключение генератора LFXT1.

0 – LFXT1 включен;

1 – LFXT1 выключен, если он не используется для MCLK или SMCLK.


Таблица 4. Регистры цифровых входов-выходов.


Регистр

Краткое обозначение

Адрес

Тип доступа

Исходное состояние

Ввод

P1IN

020h

Только чтение

-

Вывод

P10UT

021h

Чтение/запись

Не изменяется

Направление

P1DIR

022h

Чтение/запись

Сброс с PUC

Таблица 4.(Окончание)

Флаг прерывания

P1IFG

023h

Чтение/запись

Сброс с PUC

Выбор фронта прерывания

P1IES

024h

Чтение/запись

Не изменяется

Разрешение прерывания

P1IE

025h

Чтение/запись

Сброс с PUC

Выбор порта

P1SEL

026h

Чтение/запись

Сброс с PUC

Ввод

P2IN

028h

Только чтение

-

Вывод

P2OUT

029h

Чтение/запись

Не изменяется

Направление

P2DIR

02Ah

Чтение/запись

Сброс с PUC

Флаг прерывания

P2IFG

02Bh

Чтение/запись

Сброс с PUC

Выбор фронта преравания

P2IES

02Ch

Чтение/запись

Не изменяется

Разрешение прерывания

P2IE

02Dh

Чтение/запись

Сброс с PUC

Выбор порта

P2SEL

02Eh

Чтение/запись

Сброс с PUC

Ввод

P3IN

018h

Только чтение

-

Вывод

P3OUT

019h

Чтение/запись

Не изменяется

Направление

P3DIR

01Ah

Чтение/запись

Сброс с PUC

Выбор порта

P3SEL

01Bh

Чтение/запись

Сброс с PUC

Ввод

P4IN

01Ch

Только чтение

-

Вывод

P4OUT

01Dh

Чтение/запись

Не изменяется

Направление

P4DIR

01Eh

Чтение/запись

Сброс с PUC

Выбор порта

P4SEL

01Fh

Чтение/запись

Сброс с PUC

Ввод

P5IN

030h

Только чтение

-

Вывод

P5OUT

031h

Чтение/запись

Не изменяется

Направление

P5DIR

032h

Чтение/запись

Сброс с PUC

Выбор порта

P5SEL

033h

Чтение/запись

Сброс с PUC

Ввод

P6IN

034h

Только чтение

-

Вывод

P6OUT

035h

Чтение/запись

Не изменяется

Направление

P6DIR

036h

Чтение/запись

Сброс с PUC

Выбор порта

P6SEL

037h

Чтение/запись

Сброс с PUC



4. Описание лабораторной установки

При выполнении лабораторной работы используется отладочная плата MSP430-169stk, электрическая принципиальная схема которой показана на рисунке 5, а внешний вид – на рисунке 4. В состав отладочной платы входит микроконтроллер MSP430F169 (U6), входные (U5) и выходные (U3, U4, U7) усилители аналоговых сигналов, стабилизаторы напряжения питания платы (VR1, VR2), жидкокристаллический индикатор, преобразователь уровня сигналов последовательного порта RS323 (U2), интерфейс JTAG для подключения программатора, модуль внешней Flash-памяти (U1), кнопки (B1, B1, B3) для ручного формирования сигналов, красный (LED1) и зеленый (LED2) светодиоды, подключенные к портам микроконтроллера. Кроме того, на плате установлены кварцевые резонаторы Q1 частотой 32768 Гц («часовой»), и Q3 частотой 6 МГц.

В данной лабораторной работе потребуется использование кнопок B1, B2, B3 которые подключены к портам Р1.5 (вывод 17), Р1.6 (вывод 18), Р1.7 (вывод 19) соответственно, а также красного светодиода LED1, подключенного к порту Р3.6 (вывод 34), и зеленого светодиода подключенного к порту Р3.7 (вывод 35).

Для подготовки отладочной платы к работе необходимо подключить программатор к интерфейсу JTAG на плате и источник питания к разъему «PWR_JACK», при этом должен загореться светодиод «PWR». После включения питания платы программатор подключается по интерфейсу USB к персональному компьютеру c установленным на нем программным обеспечением «IAR Embedded Workbench».


Рисунок 4. Лабораторный макет MSP430-169stk



6. Задания к лабораторной работе.

В соответствии с выбранным вариантом задания составить блок-схему программы и написать программу на языке ассемблера.

Разработать программу, состоящую из двух модулей.


Модуль инициализации генератора тактовых частот. Необходимо сформировать на выходах MCLK, SMCLK и ACLK частоты в соответствии с вариантом задания. При инициализации необходимо дождаться стабильной работы генератора (проверка бита OFIFG в регистре IFG1).

Вариант

1

2

3

4

5

6

7

8

ACLK

LFXT1

LFXT1/2

LFXT1/4

LFXT1/8

LFXT1

LFXT1/2

LFXT1/4

LFXT1/8

MCLK

XT2

XT2/2

XT2/4

XT2/8

DCO

DCO/2

DCO/4

DCO/8

SMCLK

DCO

DCO/2

DCO/4

DCO/8

XT2

XT2/2

XT2/4

XT2/8


Модуль, обеспечивающий работу контроллера с кнопками B1, B2 и B3, и светодиодами LED1 и LED2, в соответствии с вариантом:

1. Светодиоды отображают значения кнопок B2 и B3 (при нажатии на кнопку и её удержании горит соответствующий светодиод). Если при этом нажата кнопка B1, то оба светодиода не горят.

2. Светодиоды отображают значения кнопок B2 и B3 в инверсном виде (при нажатии на кнопку и её удержании соответствующий светодиод не горит). Если при этом нажата кнопка B1, то оба светодиода не горят.

3. Светодиоды отображают значения кнопок B2 и B3 (при нажатии на кнопку и её удержании горит соответствующий светодиод). Если при этом нажата кнопка B1, то оба светодиода горят.

4. Светодиоды отображают значения кнопок B2 и B3 в инверсном виде (при нажатии на кнопку и её удержании соответствующий светодиод не горит). Если при этом нажата кнопка B1, то оба светодиода горят.

5. При нажатии на кнопку B2 или B3 загорается соответствующий светодиод и остается в этом состоянии до нажатия на кнопку B1.

6. При нажатии на кнопку B2 или B3 гаснет соответствующий светодиод и остается в этом состоянии до нажатия на кнопку B1.

7. При нажатии на кнопку B2 или B3 загорается соответствующий светодиод и остается в этом состоянии, при этом светодиод, соответствующий другой кнопке, гаснет.

8. При нажатии на кнопку B2 или B3 гаснет соответствующий светодиод и остается в этом состоянии, при этом светодиод, соответствующий другой кнопке, загорается.

Пояснения к написанию программы.

1. В начале программы необходимо разместить две строчки – подключения API-файла и остановки сторожевого таймера.

#include  "msp430x16x. h"                        ; подключаем API библиотеку.

SetupWDT:  mov  #WDTPW+WDTHOLD, &WDTCTL  ; Остановка WDT

2.Пример инициализации генератора LFXT1.

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

После сброса источником частоты MCLK является генератор DCOCLK.

Типичная последовательность переключения MCLK на генератор LFXT1 или XT2:

1) Включаем нужный генератор.

2) Очищаем флаг OFIFG.

3) Ожидание порядка 50 мкс.

4) Проверяем OFIFG, и повторяем шаги с 1 по 4 пока, бит OFIFG не будет оставаться сброшенным.

; Модуль выбора LFXT1 (HF mode) для MCLK

BIC #OSCOFF, SR                                ; Включаем генератор.

[BIC #(1<<5), SR]

L1:        BIC. B #OFIFG, &IFG1                                ; Сброс бита OFIFG

[BIC. B #(1<<1), &2h]

MOV #0FFh, R15                                        ; Задержка

L2:        DEC R15

JNZ L2

BIT. B #OFIFG, &IFG1                                ; Проверка бита OFIFG

[BIT. B #2, &2h]

JNZ L1                                                ; В цикл, если проверка не удачная

BIS. B #SELM1+SELM0, &BCSCTL2        ; Выбор LFXT1CLK

[BIS. B #(1<<6)|(1<<7), &58h]

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

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

Рекомендуемая литература

Техническая документация на микропроцессор MSP430F169 (MSP430F169.pdf). Семейство микроконтроллеров MSP430x1xx. Руководство пользователя: Пер. с англ. – М.: Серия «Библиотека Компэла». , 2004. – 368 с. MSP430x1xx Family. User’s Guide (slau049f. pdf).

Рисунок 5. Принципиальная схема лабораторной установки