языке Ассемблера МК51 адрес бита указывается одним из трех способов:
1) числом или выражением, соответствующим прямому адресу бита;
Адрес ячейки ПД , HEX Адреса битов, HEX
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
2F |
7F |
7E |
7D |
7C |
7B |
7A |
79 |
78 |
2E |
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 |
2D |
6F |
6E |
6D |
6C |
6B |
6A |
69 |
68 |
2C |
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 |
2B |
5F |
5E |
5D |
5C |
5B |
5A |
59 |
58 |
2A |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
29 |
4F |
4E |
4D |
4C |
4B |
4A |
49 |
48 |
28 |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
27 |
3F |
3E |
3D |
3C |
3B |
3A |
39 |
38 |
26 |
37 |
36 |
35 |
34 |
33 |
32 |
31 |
30 |
25 |
2F |
2E |
2D |
2C |
2B |
2A |
29 |
28 |
24 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
23 |
1F |
1E |
1D |
1C |
1B |
1A |
19 |
18 |
22 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
21 |
0F |
0E |
0D |
0C |
0B |
0A |
09 |
08 |
20 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Рис. 6.1. Карта адресуемых бит в памяти данных
Адрес регистра, HEX Адрес битов, HEX Имя регистра
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
F0 |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
B |
E0 |
E7 |
E6 |
E5 |
E4 |
E3 |
E2 |
E1 |
E0 |
ACC |
D0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
PSW |
B8 |
- |
- |
- |
BC |
BB |
BA |
B9 |
B8 |
IP |
B0 |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
P3 |
A8 |
AF |
- |
- |
AC |
AB |
AA |
A9 |
A8 |
IE |
A0 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
P2 |
98 |
9F |
9E |
9D |
9C |
9B |
9A |
99 |
98 |
SCON |
90 |
97 |
96 |
95 |
94 |
93 |
92 |
91 |
90 |
P1 |
88 |
8F |
8E |
8D |
8C |
8B |
8A |
89 |
88 |
TCON |
80 |
87 |
86 |
85 |
84 |
83 |
82 |
81 |
80 |
P0 |
Рис. 6.2. Карта адресуемых бит регистров специальных функций
2) именем или адресом регистра (ячейки ПД), содержащего данный бит, и позицией бита в регистре (ячейке ПД), разделенными точкой;
3) для определенных битов регистров специальных функций указанием символического имени.
Биты также могут обозначаться произвольными именами директивой Ассемблера REG (для ассемблера фирмы “2500 A.D.”).
Например, 5-й бит регистра PSW может быть сброшен (очищен) любой из четырех команд:
USER_FLAG: REG PSW.5 ; Описание символа пользователя
………………..
………………..
CLR 0D5H ; Абсолютная адресация
CLR PSW.5 ; Использование точечного оператора
CLR F0 ; Использование собственного имени бита
CLR USER_FLAG ; Использование символа пользователя
Установить в единицу 3-бит ячейки ПД с адресом 20H можно любой из трех следующих команд:
FLAG1: REG 20H.3 ; Описание флага пользователя
……………….
SETB 03H ; Абсолютная адресация
SETB 20H.3 ; Использование точечного оператора
SETB FLAG1 ; Использование имени флага пользователя
3. Порядок выполнения работы
3.1. Управление отдельными битами ячеек ПД и регистров специальных функций
Запишите в память симулятора AVSIM51 коды команд:
SETB ACC.7
CLR ACC.7
CPL ACC.7
NOP
SETB C
CLR C
CPL C
NOP
CLR PI.0
SETB P1.0
CPL P1.0
NOP
SETB 22H.0
CLR 22H.0
CPL 22H.0
NOP
Выполните программу в пошаговом режиме, наблюдая за содержимым указанных в командах регистрах, флагах, портов и ячеек памяти. Сделайте выводы о действиях команд.
3.2. Использование команд операций с битами для переключения регистровых банков
Выбор рабочего банка регистров осуществляется 3-м и 4-м битами регистра состояния PSW (биты PSW.3 и PSW.4), которые имеют собственные символические имена RS0 и RS1 соответственно. Распределение банков регистров общего назначения в МК51 приведено в табл. 6.1.
Таблица 6.1
Распределение банков МК51
RS1 |
RS0 |
Номер банка |
0 |
0 |
Банк 0 |
0 |
1 |
Банк 1 |
1 |
0 |
Банк 2 |
1 |
1 |
Банк 3 |
Во избежание нежелательного изменения других битов регистра PSW рекомендуется производить модификацию номера банка с использованием команд операций с битами. Напоминаем, что после сброса МК51 (обычно при включении электропитания) автоматически выбирается банк 0, при этом биты RS1 = RS0 = 0.
Запишите в память симулятора AVSIM51 следующие коды:
MOV R0, #10H
SETB RS1
SETB RS0 ; Выбор банка 3 РОН
MOV R0, #33H
CLR RS0 ; Выбор банка 2 РОН
MOV R0, #22H
CLR RS1 ; Выбор банка 0
MOV R0, #0FFH
NOP
Выполните программу в пошаговом режиме, наблюдая за переключением банков РОН по изменению ячеек памяти данных, где располагаются РОН.
3.3. Вычисление логических функций с помощью команд операций с битами
Необходимо вычислить логическую (булеву) функцию трех переменных
Y = X Ù `Z Ú W Ù ( X Ú Z ).
Переменные X, Z, W поступают на линии 2, 1 и 0 порта P1. Результат Y нужно вывести на линию 7 порта P1.
Программа вычисления логической функции имеет вид:
W: REG P1.0 ; Спецификация бит порта P1
Z: REG P1.1
X: REG P1.2
Y: REG P1.7
MOV C, X ; Пересылка X в С
ANL C,/Z ; Операция X AND NOT(Z)
MOV F0, C ; Запоминания результата в бите F0
MOV C, X ; Пересылка X в C
ORL C, Z ; Операция X OR Z
ANL C, W ; Операция W AND (X OR Z)
ORL C, F0 ; Операция OR, результат во флаге C
MOV Y, C ; Вывод результата Y
END
Задание. В своей папке создайте файл с именем log.asm. Запишите в него программу вычисления логической функции. Получите файлы log.obj и log.hex. Исследуйте работу программы в пошаговом режиме, задавая значения переменных на соответствующих линиях порта P1 из табл. 6.2.
Таблица 6.2
Результаты исследования программы вычисления функции
Входные значения |
Получено |
|||
Практически |
Теоретически |
|||
X (P1.2) |
Z (P1.1) |
W (P1.0) |
Y (P1.7) |
Y |
1 |
1 |
1 |
||
1 |
1 |
0 |
||
1 |
0 |
0 |
Проверьте результаты работы программы «вручную», произведя вычисления по правилам алгебры логики.
3.4. Задания для самостоятельной работы
1. Напишите программу, которая производит следующие действия: установить флаг переноса, сбросить бит 5 порта P2, проинвертировать бит 4 порта P1, сбросить флаг с именем ERR_FL, расположенный в 1-м разряде ячейки ПД с адресом 25H, установить флаг F0.
2. Напишите программу, которая после сброса МК записывает в регистры R5, R6, R7 всех банков код FFH.
3. Разработайте программу, которая вычисляет логическую функцию
Q = X Ù ( Z Ú Y ) Ú`W.
Переменная X подается на вывод 1 порта P0, переменная Z подается на вывод 5 порта P1, переменная Y является флагом переполнения таймера/счетчика T/C1, переменная W является программным флагом с именем FLAG1, который хранится в 1-м разряде ячейки ПД с адресом 2FH. Результат вычисления функции - Q должен выдаваться на вывод 7 порта P2.
Программу запишите в файл func.asm. Исследуйте работу программы с помощью симулятора AVSIM51 при нескольких значения входных переменных. Результаты занесите в таблицу по форме табл. 6.2. Проверьте правильность работы программы «вручную».
4.Содержание отчета
Наименование и цель работы. Краткое описание команд операций с битами МК51. Таблицы с результатами исследования программ. Разработанные программы из заданий для самостоятельной работы.
1. Какие команды операций с битами могут выполнять микроконтроллеры семейства МК51?
2. Как влияют команды операций с битами на флаги МК?
3. Как можно сбросить в 0, установить 1 и инвертировать определенный разряд порта P1?
4. Как можно проинвертировать 7-й бит аккумулятора?
5. Как выбрать 2-й банк регистров?
6. Как можно установить, сбросить и проинвертировать флаг переноса?
7. Программист решил использовать 0-й бит ячейки 22H памяти данных
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.