1. Микроконтроллеры. Лабораторный стенд mCV-Lab. Составил Е.Д. Ба-
ран. – Новосибирск: изд-во НГТУ, 2001.
2. Микроконтроллеры MCS-196. Общая характеристика.
Руководство по работе в среде проектирования ProjectBuilder. Составили Е.Д.
Баран, С.В. Квеглис, В.В. Кожекин. – Новосибирск: Изд-во НГТУ, 1996.
3. Козаченко В.Ф. Микроконтроллеры: руководство по
применению 16 разрядных микроконтроллеров Intel MCS-196/296 во встроенных системах
управления. – М.: Изд-во ЭКОМ, 1997.
Карта распределения адресного пространства микроконтроллеров
8XC196KC и 8XC196KD семейства MCS-196
KC
KD
FFFFH
6000H
Внешняя память или устройства ввода/вывода
FFFFH
A000H
5FFFH
2080H
Внутренняя память программ ROM / EPROM
или внешняя память
9FFFH
2080H
207FH
2000H
Регистры специального назначения (SFR) периферийных
устройств
207FH
2000H
1FFFH
Порт 4
1FFFH
1FFEH
Порт 3
1FFEH
1FFDH
0200H
Внешняя память (ОЗУ или ПЗУ)
1FFDH
0400H
01FFH
001AH
Внутреннее регистровое ОЗУ
03FFH
001AH
0019H
0018H
Указатель стека
0019H
0018H
0017H
0000H
Регистры специального назначения (SFR)
центрального процессора
0017H
0000H
Более детальное распределение адресного пространства,
отведенного под регистры специального назначения центрального процессора в рассматриваемых
типах микроконтроллеров, приведено в табл. П1.2.
Таблица П1.2
Распределение адресного пространства в области регистров специального
назначения
ЦП (8XC196KC/KD) для горизонтальных окон: HWindow0, HWindow1
и HWindow15
Адрес
HWindow0 (Read)
HWindow0 (Write)
HWindow1 (Read/Write)
HWindow15 (Read)
Hwindow15 (Write)
17H
IOS2
PWM0_CONTROL
PWM2_CONTROL
PWM0_CONTROL
IOS2
16H
IOS1
IOC1
PWM1_CONTROL
IOC1
IOS1
15H
IOS0
IOC0
Reserved
IOC0
IOS0
14H
WSR
WSR
WSR
WSR
WSR
13H
INT_MASK1
INT_MASK1
INT_MASK1
INT_MASK1
INT_MASK1
12H
INT_PEND1
INT_PEND1
INT_PEND1
INT_PEND1
INT_PEND1
11H
SP_STAT
SP_CON
Reserved
SP_CON
SP_STAT
10H
IOPORT2
IOPORT2
Reserved
Reserved
Reserved
0FH
IOPORT1
IOPORT1
Reserved
Reserved
Reserved
0EH
IOPORT0
BAUD_RATE
Reserved
Reserved
Reserved
0DH
TIMER2 (Hi)
TIMER2 (Hi)
Reserved
T2CAPTURE (Hi)
T2CAPTURE (Hi)
0CH
TIMER2 (Lo)
TIMER2 (Lo)
IOC3
T2CAPTURE (Lo)
T2CAPTURE (Lo)
0BH
TIMER1 (Hi)
IOC2
Reserved
IOC2
TIMER1 (Hi)
0AH
TIMER1 (Lo)
WATCHDOG
Reserved
WATCHDOG
TIMER1 (Lo)
09H
INT_PEND
IND_PEND
IND_PEND
INT_PEND
INT_PEND
08H
INT_MASK
INT_MASK
INT_MASK
INT_MASK
INT_MASK
07H
SBUF (RX)
SBUF (TX)
PTSSRV (Hi)
SBUF (TX)
SBUF (RX)
06H
HSI_STATUS
HSO_COMMAND
PTSSRV (Lo)
HSO_COMMAND
HSI_STATUS
05H
HSI_TIME (Hi)
HSO_TIME (Hi)
PTSSEL (Hi)
HSO_TIME (Hi)
HSI_TIME (Hi)
04H
HSI_TIME (Lo)
HSO_TIME (Lo)
PTSSEL (Lo)
HSO_TIME (Lo)
HSI_TIME (Lo)
03H
AD_RESULT (Hi)
HSI_MODE
AD_TIME
HSI_MODE
AD_RESULT (Hi)
02H
AD_RESULT (Lo)
AD_COMMAND
Reserved
AD_COMMAND
AD_RESULT (Lo)
01H
ZERO_REG (Hi)
ZERO_REG (Hi)
ZERO_REG (Hi)
ZERO_REG (Hi)
ZERO_REG (Hi)
00H
ZERO_REG (Lo)
ZERO_REG (Lo)
ZERO_REG (Lo)
ZERO_REG (Lo)
ZERO_REG (Lo)
В каждый момент времени может быть активным только одно
горизонтальное окно – HWindow0, HWindow1 или HWindow15. Переключение между
тремя горизонтальными окнами (селектирование окон) производится путем записи в
регистр селектирования окон WSR номера горизонтального окна, например:
LDB WSR,
#0; LDB WSR, #1; LDB WSR, #15.
Таблица П1.3
Регистры специального назначения центрального процессора
Наименование регистра
Назначение регистра
ZERO_REG (Hi/Lo)
Нулевой регистр, содержимое которого всегда равно 0.
Используется как базовое значение при индексации и как константа при вычислениях
и сравнении
AD_RESULT (Hi/Lo)
Регистр результата аналого-цифрового преобразования.
Содержит старший (Hi) и младший (Lo) байты результата аналого-цифрового
преобразования (байты можно только считывать)
AD_COMMAND
Регистр управления аналого-цифровым преобразованием.
Используется для задания номера канала преобразования, разрядности результата
преобразования и способа запуска на преобразование
AD_TIME
A/D Conversion Time – регистр, используемый для задания
момента выборки и времени одного преобразования
HSI_MODE
Регистр режима HSI. Содержимое регистра задает режим
работы высокоскоростного модуля
HSI_TIME (Hi/Lo)
Регистр, содержащий старший (Hi) и младший (Lo) байты
значения момента времени срабатывания высокоскоростного входного модуля
(слово можно только считывать)
HSO_TIME (Hi/Lo)
Регистр, содержимое которого определяет момент времени
выполнения модулем высокоскоростного вывода команды, занесенной в регистр
команд (Command Register)
Продолжение табл. П1.3
HSO_COMMAND
Регистр команд высокоскоростного модуля вывода. Содержимое
его определяет действие, которое должно произойти в момент времени, заданный
содержимым регистров HSO_TIME
HSI_STATUS
Регистр состояния модуля высокоскоростного ввода. Его
содержимое характеризует, на каком входе (выводе) определено и зафиксировано
в регистре HSI_TIME событие, а также отображает текущее состояние выводов
SBUF (Tx)
Буферный регистр передачи последовательного порта,
содержащий информацию, которая должна быть выдана на внешнее устройство
SBUF (Rx)
Буферный регистр приема последовательного порта,
содержащий байт, принятый на последовательный порт
INT_MASK
INT_MASK1
Регистры масок прерываний – позволяют запрещать или
разрешать индивидуальные прерывания
INT_PEND
INT_PEND1
Регистры отложенных прерываний – биты этих регистров
устанавливаются аппаратно и показывают, от каких источников поступили запросы
прерываний, которые должны быть обслужены
WATCHDOG
Регистр сторожевого таймера – периодически перезаписывается,
чтобы предупредить автоматический сброс MCU после каждых 64К тактов
IOPORT0
Регистр порта 0 – используется для записи и чтения порта 0
IOPORT1
Регистр порта 1 – используется для записи и чтения порта 1
IOPORT2
Регистр порта 2 – используется для записи и чтения порта 2
BAUD_RATE
Регистр, который определяет скорость передачи информации в
бодах. Регистр загружается последовательно
TIMER1
Таймер 1 (Hi/Lo) – старший и младший байты таймера 1
(читаются только словом)
TIMER2
Таймер 2 (Hi/Lo) – старший и младший байты таймера 2
(читаются только словом)
SP_STAT
Serial Port Status – показывает состояние последовательного
порта.
SP_CON
Serial Port Control – используется для задания режима
работы последовательного порта
IOS0
Регистр состояния ввода/вывода 0 – содержит информацию о
состоянии HSO (модуля высокоскоростного вывода)
Окончание табл. П1.3
IOS1
Регистр состояния ввода/вывода 1 – содержит информацию о
состоянии таймеров и HSI (модуля высокоскоростного ввода)
IOS2
Регистр состояния ввода/вывода 2 – содержит информацию о
появлении внешних событий
IOC0
Регистр управления ввода/вывода 0 – используется для
управления альтернативными функциями выводов HSI, источниками сброса таймера
2 и источниками тактирования таймера 2
IOC1
Регистр управления ввода/вывода 1 – используется для
управления альтернативными функциями выводов порта 2, прерываниями таймеров и
прерываниями HS.
IOC2
Регистр управления ввода/вывода 2 – используется для
разрешения или запрещения режима быстрого инкремента, работы счетчика в
режиме суммирования или вычитания, а также выбора границы переполнения при
прерывании по переполнению таймера 2 (INT 12)
PWM0_CONTROL
PWM1_CONTROL
PWM2_CONTROL
Регистры управления широтно-импульсной модуляцией –
установка длительности ШИМ-импульса
PTS Select Register – регистр выбора PTS – используется
для задания либо PTS цикла, либо обслуживания стандартного прерывания для
каждого из 15 маскируемых запросов
PTSSRV (Hi/Lo)
PTS Service Register – регистр обслуживания PTS – биты
этого регистра устанавливаются аппаратно по выполнению PTS цикла. При этом
генерируется стандартное прерывание «End-of-PTS»
T2CAPTURE (Hi/Lo)
Timer 2 Capture – регистр захвата таймера 2 – используется
для фиксирования содержимого таймера 2 в момент появления нарастающего фронта
сигнала на выводе P2.7 и генерирования прерывания захвата таймера 2
Приложение П2
Система команд микроконтроллеров семейства MCS-196
Таблица П2.1
Флаги слова состояния программы PSW
Мнемоника
Описание
C
Carry flag. Флаг переноса. Устанавливается для индикации
арифметического переноса из старшего разряда АЛУ или состояния, когда
последний значащий бит выдвигается за пределы операнда. Если при выполнении
операции вычитания возникает заем, то флаг переноса очищается
N
Negative flag. Флаг отрицательного результата.
Уста-навливается при отрицательном результате операции. Выставляется
корректно даже в том случае, если происходит переполнение. Для всех операций
сдвига и нормализации (NORML) устанавливается равным старшему биту
результата, даже тогда, когда счетчик числа сдвигов содержит нуль
ST
Sticky bit flag. Флаг бита «липучки» Устанавливается для
индикации состояния, когда в процессе сдвига вправо хотя бы одна единица была
записана во флаг переноса. Этот бит не определен после операции умножения.
Флаг бита липучки может использоваться вместе с флагом переноса для повышения
разрешающей способности при округлении результатов операций
V
Overflow flag. Флаг переполнения. Устанавливается, когда
результат операции слишком велик и не может быть корректно размещен в
пределах имеющейся разрядной сетки. Для операций сдвига флаг переполнения
устанавливается, когда старший бит операнда изменяется в процессе сдвига. Для
операций деления флаг переполнения устанавливается тогда, когда целая часть результата
выходит за пределы слова при делении длинного слова на слово или за пределы
байта при делении слова на байт
VT
Overflow-trap flag. Флаг - ловушка переполнения.
Уста-навливается тогда, когда флаг переполнения установлен, но сбрасывается
исключительно командами CLRVT, JVT, JNVT. Позволяет выполнять проверку
возможного переполнения в конце последовательности связанных арифметических
операций, что более эффективно, чем тестирование флага переполнения после
каждой отдельной операции
Окончание табл. П2.1
Мнемоника
Описание
Z
Zero flag. Флаг нуля. Устанавливается при нулевом результате
операции. Команды, предназначенные для организаций вычислений с многократной
точностью (например, ADDC, SUBC) и использующие бит переноса, выработанный в
результате предыдущей операцией, не могут устанавливать флаг нуля. Однако они
могут очищать его. Это гарантирует, что флаг нуля отразит результат всего
вычисления, а не последней операции
Таблица П2.2
Влияние флагов состояния процессора на работу команд