Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory.doc
Скачиваний:
29
Добавлен:
18.03.2015
Размер:
1.51 Mб
Скачать

9.3. Типы команд

Выполняемые МК команды делятся на группы команд пересылки (≈13 команд), арифметических и логических операций (≈29 команд), управления программой и процессором (40), битовых операций и установки признаков и управления процессором (≈ 6 команд). Максимальный формат команд – 4 байта.

Примеры команд пересылок.

MOV #$С0, $D1- пересылка непосредственного операнда #$С0 в прямо адресуемую ячейку памяти $D1;

STX $43,X; запомнить содержимое регистра Х в яч. памяти с адресом (Х)+67

Примеры команд арифметических и логических операций.

SBC $D0; (A)-(M)-(C)→A?

COMA; Логическая инверсия A, A  A

Команды условных и безусловных переходов.

DBNZ $D3, rel8; Декремент M и ветвление, если M не равно 0,

;M-1M, PC + 3 + rel8  PC, если Z=0.

BSR rel8; Ветвление к подпрограмме PC + 2  PC, PC + 2 + rel8  PC, PCl  (SP), SP - 1  SP ; PCh  (SP), SP – 1  SP.

Команды битового процессора. SET 3, $35; установить бит 3 в ячейке (35) в 1 BCLR 3, $ 35; установить в 0 бит 3 в ячейке (35)

Команды управления процессором:

Sei; запрет прерываний,

Stop; переход в режим останова

ПРИМЕР ПРОГРАММЫ. Сложить два 16-разрядных числа без проверки разряда переполнения в старшем байте. Данные хранятся в ячейках памяти ОЗУ МК с адресами $40, $41 и $42, $43. Результат сложения должен быть помещен в память по адресам $50 и $51. Числа представлены в прямом двоичном коде без знака.

;*********************************************************

RomStart EQU $9000; назначается начальный адрес прикладной программы.

RAMStart EQU $0040 ;назначается адрес первой ячейки памяти ОЗУ МК.

VectorStart EQU $FFFE ;назначает адрес для вектора начального запуска.

ORG RomStart

main: ldа $41; загрузить в аккумулятор A младший байт первого ;операнда. Использована прямая адресация.

add $43; сложить содерж. A с младшим байтом второго операнда. Разряд переноса запоминается в триггере C регистра CCR

sta $51;поместить младший байт результата по адресу $51.

lda $40 ; загрузить в A старший байт первого операнда.

adc $42 ;сложить A со старшим байтом второго операнда и значением триггера переноса от предыдущего сложения. Разряд переноса ;опять запоминается в триггере C регистра признаков. Но далее это значение не используется и не анализируется.

sta $50;поместить старший байт результата по адресу $50.

mend: jmp mend

ORG VectorStart

DW main

End

7) Построение и программирование двунаправленных параллельных портов

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

Овал 37

1

Рис. 7.3.  Типовая схема одного вывода двунаправленного порта

ввода - вывода МК.

Дешифратор адреса разрешает работу именно этого порта – разрешение на ввод или вывод. Схема содержит триггер данных и триггер управления. Триггер управления разрешает вывод данных на внешний вывод, если подан управляющий сигнал WR. В современных МК, как правило, обеспечивается индивидуальный доступ к триггерам данных и управления, что позволяет использовать каждую линию независимо в режиме ввода или вывода.

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

Для МК в качестве параметра приводят число линий ввода -вывода. Линии ввода – вывода объединены в многоразрядные (чаще

8-разрядные) параллельные порты ввода/вывода. В памяти МК каждому порту ввода/вывода соответствует свой адрес регистра данных.

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

Каждый порт обычно имеет 3 регистра. Например, если имеем дело с портом В, имеется регистр данных порта (PORTB), регистр направления порта (DDRB) и регистр PINB, с которого считываются сигналы на внешних контактах порта.

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

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

Уровни сигналов и нагрузочная способность. Согласование между собой уровней сигналов портов и внешних микросхем не представляет трудностей, так как практически все современные МС по входу и выходу согласованы с TTЛ уровнями. Если же это не так, то для согласования нестандартных уровней с TTЛ уровнями выпускаются специальные МС.

Дело не только в уровнях сигналов согласуемых МС, но и нагрузочной способности. Необходимо знать нагрузочную способность портов и в случае необходимости «умощнять» выход. В качестве примера на рисунке 7.4. показано подключение светодиодного индикатора.

Рис. 7.4. Подключение одиночного светодиодного индикатора.

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

8) Режимы пониженного потребления энергии

МК семейства 68HC08/908 могут функционировать в одном из следующих режимов:

  • рабочий режим,

  • режим ожидания,

  • режим останова,

  • режим отладки.

Рабочий режим (Run mode) является основным режимом работы МК. В этом режиме выполняется прикладная программа и все ресурсы МК находятся под ее управлением.

Режим ожидания (Wait mode) реализуется после поступления команды WAIT. При этом прекращается тактирование процессора, то есть выполнение программы приостанавливается, но все периферийные модули МК тактируются и продолжают функционировать. Потребление мощности в этом режиме снижается в несколько раз

(табл. 10.1).

Возврат из режима ожидания в рабочий режим происходит при поступлении сигнала запуска (внешнего RST#, от модуля LVI08 или сторожевого таймера COP08) или запроса прерывания (внешнего IRQ# или от периферийных модулей). Возврат по сигналу прерывания осуществляется за 1 период тактовых импульсов Tt.

Если возврат выполняется по сигналу запуска, то в программный счетчик PC загружается вектор начального запуска; если по запросу прерывания, то в PC загружается соответствующий вектор прерывания (см. таблицу 10.2).

Режим останова (Stop mode) реализуется после поступления команды STOP. В этом режиме прекращает работу вся система синхронизации процессора и большинства других модулей МК.

Остаются активными модуль внешних прерываний и модуль сканирования клавиатуры. Потребляемый ток в режиме останова снижается в сотни и тысячи раз и доходит до единиц микроампер (табл. 10.1).

Таблица 10.1. Значения токов потребления для МК MC68HC908GP32 в различных режимах функционирования.

Ток питания

Условия

функционирования

Рабочий режим

Режим ожидания

Режим останова

15 мА

4 мА

3 / 300 мкА

Vп=5,0В, Ft = 4 МГц

4,5 мА

1,7 мА

2 / 200 мкА

Vп=3,0В, Ft = 4 МГц

Выход из режима останова происходит при поступлении внешних сигналов сброса RST# и внешних запросов прерывания IRQ#, а также по запросам внутренних модулей LVI08, BREAK08, KBI08, TBM08, если соответствующий модуль входит в состав данного МК и разрешена его работа в режиме останова. При этом в PC загружается вектор запуска или соответствующего прерывания.

Для перехода в рабочий режим требуется промежуток времени длительностью 4096Tq, где Tq=1/Fq – период колебаний кварцевого кристалла, чтобы обеспечить нормальное функционирование генератора импульсов в модуле CGM08. Можно сократить время перехода в рабочий режим до 32Tq, если установить в регистре конфигурации CONFIG1 значение бита SSEC=1.

При поступлении команд WAIT и STOP в регистре признаков CCR устанавливается значение маски прерывания I = 0, чтобы разрешить последующий выход из режима ожидания или останова по запросам прерывания.

Режим отладки. Реализация этого режима является специфической особенностью МК семейства 68HC08/908. В режиме отладки МК работает под управлением команд, посылаемых персональным компьютером, которые выполняют чтение и запись содержимого любой ячейки адресуемой памяти.

Эти команды позволяют контролировать и модифицировать текущее состояние МК, производить стирание и запись содержимого внутренней Flash-памяти и ЭСППЗУ. Данный режим обеспечивает выполнение основных операций, реализуемых в процессе отладки программ, без использования дорогостоящих схемных эмуляторов.

В МК подсемейства 68HC908 режим отладки обеспечивает возможность записи содержимого (кода) во Flash-память. Таким образом, можно выполнить программирование МК, работающего непосредственно в составе системы управления (ISPIn-System Programming). При этом запись или модификация рабочей программы производится с помощью персонального компьютера без использования специальных программаторов и не требует отключения МК (демонтажа) от реализованной системы управления.

В режиме отладки МК подключается к последовательному COM-порту персонального компьютера. Функционирование МК в этом режиме обеспечивается с помощью специальной программы - монитора, которая записывается в его масочно - программируемое ПЗУ в процессе изготовления. Ввод МК в режим отладки осуществляется при подаче на его выводы определенной комбинации сигналов.

9) Конфигурация МК. Первый запуск

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

Конфигурация МК MC68HC908GP32 задается с помощью регистров CONFIG1 и CONFIG2, содержимое которых определяет ряд их характеристик. Содержимое в эти регистры записывается один раз после запуска и при дальнейшей работе может только считываться. Таким образом изменить конфигурацию МК можно только при очередном запуске, а в последующем рабочем сеансе она сохраняется неизменной.

Формат содержимого регистров конфигурации для МК MC68HC908GP32 приведен на рис 10.3. Отдельные биты содержимого этих регистров выполняют следующие функции.

7

6

5

4

3

2

1

0

COPRS

LVISTOP

LVIRSTD

LVIPWRD

LVI5OR3

SSREC

STOP

COPD

а). CONFIG1 (адрес $001F)

7

6

5

4

3

2

1

0

0

0

0

0

0

0

OSCSTOPENB

SCIBDSRC

б). CONFIG2 (адрес $001E)

Рис.10.3. Формат содержимого регистров конфигурации CONFIG1, CONFIG2

Управление работой процессора:

Бит STOP.

1 – разрешает реализацию режима останова при поступлении команды STOP;

0 - поступление этой команды вызывает перезапуск процессора, как при выборке неправильного кода команды.

Бит SSREC.

1 – время задержки при выходе МК из режима останова составляет Tз=32TCLC;

0 - TЗ =4096TCLC .

Управление работой модуля контроля питания LVI08:

Бит LVIPWRD.

1 - работа модуля LVI08 запрещена;

0 - разрешена.

Бит LVIRSTD.

1 – запрещает генерацию сброса МК при снижении напряжения питания ниже порогового уровня;

0 –разрешает сброс.

Бит LVI5OR3 – определяет выбор порогового напряжения для модели 68HC908GP32

  1. Напряжение сравнения соответствует напряжению питания Vп=5,0;

  1. - напряжению Vп=3,0 В.

Бит LVISTOP.

  1. – разрешает генерацию сброса в режиме останова;

  1. – запрещает.

Управление работой сторожевого таймера COP08:

Бит COPD.

1 – работа сторожевого таймера запрещена;

0 - разрешена.

Бит COPRS – определяет период работы сторожевого таймера:

  1. Tw = 8176Tq;

  1. Tw =262128Tq .

Управление работой периферийных и служебных модулей:

Бит OSCSTOPENV.

  1. – разрешает в режиме останова работу генератора импульсов на кварцевом резонаторе в модуле CGM08;

0-запрещает.

Бит SCIBDSRC.

1– определяет выбор источника синхросигналов для модуля асинхронного последовательного интерфейса SCI08: сигналы с тактовой частотой fBUS стробирования внутренней шины;

0 – SCI тактируется сигналом кварцевого резонатора fCLK..

Пример установки конфигурации в начале программы

Main_Init:

rsp ; установить «дно» стека на адрес $00FF

lda CONFIG1 ; запретить

ora #1; сторожевой таймер

sta CONFIG1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]