
- •1. Преобразование систем счисления чисел в двоичную систему счисления.
- •2. Преобразование результата в различные системы счисления.
- •3. Выделение старшего и младшего байта результата и представление их в различных системах счисления.
- •Задание №2. Выполнение логических операций. Наложение масок.
- •Результат вычислений представить в следующих системах счисления: двоичная, восьмеричная, шестнадцатеричная и десятичная.
- •1. Произведем преобразование систем счисления чисел в двоичную систему счисления.
- •2. Преобразование результата в различные системы счисления.
- •3. Формирование устанавливающей маски.
- •4. Формирование сбрасывающей маски.
- •5. Формирование инвертирущей маски.
- •Задание №3. Программирование микроконтроллеров. Работа с массивами.
- •Inc r0 ; увеличиваем указатель ячейки памяти на 1
- •Inc r0 ; увеличиваем указатель ячейки памяти
- •Inc r1 ; увеличиваем указатель ячейки памяти
- •Inc b ; учитываем перенос в старшем байте суммы
- •Inc r0 ; увеличиваем указатель ячейки памяти
Inc r0 ; увеличиваем указатель ячейки памяти на 1
; проверка счетчика элементов массива
DJNZ R2, M0 ; уменьшаем счетчик количества элементов
; проверяем – все ли элементы заполнены
;
M1: SJMP M1 ; окончание программы – бесконечный цикл
2. Программа, перемещающая 8 элементов, из первого массива, начиная с адреса 50H, во второй массив, начиная с адреса 60H.
Блок-схема алгоритма.
Текст программы.
; начальная настройка
MOV R0, #50H ; в R0 – указатель на текущую ячейку первого массива
; первая ячейка имеет адрес 050H
MOV R1, #60H ; в R1 – указатель на текущую ячейку второго массива
; первая ячейка имеет адрес 060H
MOV R2, #8H ; в R2- счетчик количества элементов = 8
M0:
; перенос содержимого текущей ячейки первого массива в текущую ячейку второго массива
MOV A, @R0 ; переносим содержимое текущей ячейки
; первого массива в аккумулятор
MOV @R1, A ; переносим содержимое аккумулятора
; в текущую ячейку второго массива
; переход к следующей ячейке массива
Inc r0 ; увеличиваем указатель ячейки памяти
; первого массива на 1
Inc r1 ; увеличиваем указатель ячейки памяти
; второго массива на 1
; проверка счетчика элементов массива
DJNZ R2, M0 ; уменьшаем счетчик количества элементов
; проверяем – все ли элементы заполнены
M1: SJMP M1 ; окончание программы – бесконечный цикл
3. Программа, находящая сумму 8 элементов массива с удвоенной точностью. Сумма накапливается в регистрах A (младший байт) и B (старший байт).
Блок-схема алгоритма.
Текст программы.
; начальная настройка
MOV A, #000H ; сброс младшего байт суммы
MOV B, #000H ; сброс старшего байта суммы
MOV R0, #50H ; в R0 – указатель на текущую ячейку первого массива
; первая ячейка имеет адрес 050H
MOV R2, #8H ; в R2 – счетчик количества элементов = 8
M0:
; сложение текущего элемента массива с суммой
ADD A, @R0 ; складываем содержимое текущей ячейки
; с младшим байтом суммы
JNC M1 ; проверка – есть ли перенос после сложения
; если нет – переход к метке M1
Inc b ; учитываем перенос в старшем байте суммы
M1:
; переход к следующей ячейке массива
Inc r0 ; увеличиваем указатель ячейки памяти
; первого массива на 1
; проверка счетчика элементов массива
DJNZ R2, M0 ; уменьшаем счетчик количества элементов
; проверяем – все ли элементы заполнены
M2: SJMP M2 ; окончание программы – бесконечный цикл
Задание №4. Работа с портами ввода-вывода.
Разработать программы, выполняющие следующие действия (для каждого действия, разрабатывается отдельная программа):
К линиям порта подключено 4 входных сигнала PI1, PI2, PI3, PI4. Требуется реализовать вычисление логической функции в зависимости от состояния входных сигналов. Результат вычисления выводить на линию порта PO1. Номера конкретных линий для PI1, PI2, PI3, PI4 и PO и логическая функция выбираются из таблицы 4.1.
К линиям порта подключено два входных сигнала PI1, PI2 и один выходной PO1. Требуется реализовать диаграмму работы. Конкретные номера битов и номер варианта диаграммы приведены в таблице 4.1. Варианты диаграмм выбираются из таблицы 4.2.
Таблица 4.1. Варианты для задания №4
Номер варианта |
Сигнал PI1 |
Сигнал PI2 |
Сигнал PI3 |
Сигнал PI4 |
Выходной сигнал PO1 |
Логическая функция |
Номер диаг-раммы |
1 |
P0.0 |
P0.1 |
P0.2 |
P0.3 |
P3.0 |
|
1 |
2 |
P0.1 |
P0.2 |
P0.3 |
P0.4 |
P3.1 |
|
2 |
3 |
P0.2 |
P0.3 |
P0.4 |
P0.5 |
P3.2 |
|
3 |
4 |
P0.3 |
P0.4 |
P0.5 |
P0.6 |
P3.3 |
|
4 |
5 |
P0.4 |
P0.5 |
P0.6 |
P0.7 |
P3.4 |
|
5 |
6 |
P1.0 |
P1.1 |
P1.2 |
P1.3 |
P2.0 |
|
1 |
7 |
P1.1 |
P1.2 |
P1.3 |
P1.4 |
P2.1 |
|
2 |
8 |
P1.2 |
P1.3 |
P1.4 |
P1.5 |
P2.2 |
|
3 |
9 |
P1.3 |
P1.4 |
P1.5 |
P1.6 |
P2.3 |
|
4 |
10 |
P1.4 |
P1.5 |
P1.6 |
P1.7 |
P2.4 |
|
5 |
11 |
P2.0 |
P2.1 |
P2.2 |
P2.3 |
P1.0 |
|
1 |
12 |
P2.1 |
P2.2 |
P2.3 |
P2.4 |
P1.1 |
|
2 |
13 |
P2.2 |
P2.3 |
P2.4 |
P2.5 |
P1.2 |
|
3 |
14 |
P2.3 |
P2.4 |
P2.5 |
P2.6 |
P1.3 |
|
4 |
15 |
P2.4 |
P2.5 |
P2.6 |
P2.7 |
P1.4 |
|
5 |
16 |
P3.0 |
P3.1 |
P3.2 |
P3.3 |
P0.0 |
|
1 |
17 |
P3.1 |
P3.2 |
P3.3 |
P3.4 |
P0.1 |
|
2 |
18 |
P3.2 |
P3.3 |
P3.4 |
P3.5 |
P0.2 |
|
3 |
19 |
P3.3 |
P3.4 |
P3.5 |
P3.6 |
P0.3 |
|
4 |
20 |
P3.4 |
P3.5 |
P3.6 |
P3.7 |
P0.4 |
|
5 |
Таблица 4.2. Варианты диаграмм
Варианты для N1 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
Пример выполнения задания №4
1. Программа, осуществляет вычисление
логической функции
в зависимости от состояния входных
сигналов A, B,
C, D. Номера
битов PI1 – P2.3,
PI2 – P2.4, PI3
– P2.5, PI4 –
P2.6, PO1 –
P0.0.
Текст программы
; начальная настройка
SETB P2.3 ; разрешение ввода с линии порта P2.3
SETB P2.4 ; разрешение ввода с линии порта P2.4
SETB P2.5 ; разрешение ввода с линии порта P2.5
SETB P2.6 ; разрешение ввода с линии порта P2.6
; Основной цикл программы
M0: MOV C, P2.3 ; загружаем состояние сигнала PI1
ORL C,
P2.4 ;
сложение с сигналом PI2,
выполнено
CPL C ;
инверсия результата, в результате
MOV F0, C ; результат временно сохраняем в F0
MOV C, P2.5 ; загружаем состояние сигнала PI3
ORL C,
P2.4 ;
сложение с сигналом PI4,
выполнено
CPL C ;
инверсия результата, в результате
ANL C, F0 ; осуществляем операцию умножения
;
MOV P0.0, C ; выводим результат на линию порта
SJMP M2 ; организуем бесконечный цикл
2. Программа, осуществляет реализацию функции заданную диаграммой. Номера битов PI1 – P2.3, PI2 – P2.4, PI3 – P2.5, PI4 – P2.6, PO1 – P0.0.
Реализуемая диаграмма
Текст программы
; Начальная настройка
SETB P2.3 ; разрешение ввода с линии порта P2.3
SETB P2.4 ; разрешение ввода с линии порта P2.4
CLR P0.0 ; начальное состояние выходного сигнала =0
; Основной цикл программы
M0: JNB P2.3, M0 ; ожидаем уровня сигнала PI1 =1
SETB P0.0 ; устанавливаем выходной сигнал PO1 =1
M1: JNB P2.4, M1 ; ожидаем уровня сигнала PI2 =1
CLR P0.0 ; устанавливаем выходной сигнал PO1 =0
M2: JB P2.4, M2 ; ожидаем уровня сигнала PI2 =0
M3: JB P2.3, M3 ; ожидаем уровня сигнала PI2 =0
SJMP M0 ; организуем бесконечный цикл
Приложения
Обозначение систем счисления
Наименование |
Обозначение |
Полное обозначение |
Сокращенное обозначение |
Двоичная |
(2) |
BIN |
B |
Восьмеричная |
(8) |
OCT |
O |
Десятичная |
(10) |
DEC |
D или (.) |
Шестнадцатеричная |
(16) |
HEX |
H |
Обозначение логических операций
Наименование |
Полное обозначение |
Сокращенное обозначение |
Конъюнкция |
AND |
&& |
Дизъюнкция |
OR |
|| |
Отрицание |
NOT |
! |
Исключение (исключающее ИЛИ) |
XOR |
^ |
Представление чисел в двоичной, восьмеричной и шестнадцатеричной системах счисления
DEC |
BIN |
OCT |
0 |
000 |
0 |
1 |
001 |
1 |
2 |
010 |
2 |
3 |
011 |
3 |
4 |
100 |
4 |
5 |
101 |
5 |
6 |
110 |
6 |
7 |
111 |
7 |
DEC |
BIN |
HEX |
0 |
0000 |
0 |
1 |
0001 |
1 |
2 |
0010 |
2 |
3 |
0011 |
3 |
4 |
0100 |
4 |
5 |
0101 |
5 |
6 |
0110 |
6 |
7 |
0111 |
7 |
8 |
1000 |
8 |
9 |
1001 |
9 |
10 |
1010 |
A |
11 |
1011 |
B |
12 |
1100 |
C |
13 |
1101 |
D |
14 |
1110 |
E |
15 |
1111 |
F |
Значение показателей степени 2
Номер бита |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
Степень 2 |
215 |
214 |
213 |
212 |
211 |
210 |
29 |
28 |
Значение |
32768 |
16384 |
8192 |
4096 |
2048 |
1024 |
512 |
256 |
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Степень 2 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
Значение |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Зависимость результата логической операции от значения операндов
Логический оператор |
A = 0 B = 0 |
A = 1 B = 0 |
A = 0 B = 1 |
A = 1 B = 1 |
A AND B |
0 |
0 |
0 |
1 |
A OR B |
0 |
1 |
1 |
1 |
NOT A |
1 |
0 |
1 |
0 |
XOR |
0 |
1 |
1 |
0 |