- •«Вычислительная техника»
- •1806 «Техническая эксплуатация, обслуживание и ремонт электрического и электротехнического оборудования», 2101 «Автоматизация технологических процессов и
- •Выводы по проделанной работе: Контрольные вопросы:
- •Лабораторная работа № 3 Реализация логической функции 3-х переменных
- •2.3. Анализ полученных результатов. Проанализируйте схемы:
- •3. Как реализовать схему мультиплексора 2x1 с управляющим входом на элементах
- •3.3 По логической схеме запишите аналитическое выражение функции: Аналитическое выражение для функции: Таблица 3.1 - Таблица истинности функции четырех переменных
- •Выводы о проделанной работе
- •Лабораторная работа № 10 Изучение системы параллельного ввода-вывода
- •Лабораторная работа № 11 Система прерываний микроконтроллеров семейства mcs-51
- •Лабораторная работа № 12 Программирование таймеров-счетчш :ов
- •2.2.2 Последовательный (сдвигающий) rte.Puc.Mn
2.2.2 Последовательный (сдвигающий) rte.Puc.Mn
2.3 Дешифраторы и шифраторы
xi |
х2 |
хз |
уо |
у1 |
72 |
уз |
у 4 |
у5 |
у б |
у 7 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
d |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
о |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
о |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Адресные входы |
Сигнал С |
Выкод Q |
|
А1 |
АО |
||
* |
# |
0 |
0 |
0 |
0 |
1 |
DO |
□ |
1 |
1 |
D1 |
1 |
о |
1 |
D2 |
1 |
1 |
1 |
D3 |
2.5 Счетчики
2.5.1 Суммирующий счетчик и его таблица истинности
Кеч |
Q1 |
02 |
Q3 |
Q4 |
Кеч |
Q1 |
Q2 |
Q3 |
Q4 |
□ |
0 |
0 |
0 |
0 |
8 |
1 |
0 |
0 |
0 |
1 |
D |
0 |
о |
1 |
9 |
1 |
0 |
0 |
1 |
2 |
0 |
0 |
1 |
0 |
10 |
1 |
0 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
11 |
1 |
0 |
1 |
1 |
4 |
0 |
1 |
0 |
0 |
12 |
1 |
1 |
0 |
0 |
5 |
D |
1 |
о |
1 |
13 |
1 |
1 |
D |
1 |
6 |
□ |
1 |
1 |
0 |
14 |
1 |
1 |
1 |
0 |
7 |
D |
1 |
1 |
1 |
15 |
1 |
1 |
1 |
1 |
Q4' |
1 Q3 |
1 Q2 |
1 Q1 |
Q4 |
Q3 |
Q2 |
Q1 |
десятичное преде тавление числа |
0 |
0 |
0 |
0 |
0 |
0 |
О |
0 |
D |
□ |
0 |
0 |
□ |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
2 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
9 |
0 |
0 |
0 |
1 |
□ |
о |
0 |
0 |
10 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
11 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
20 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
99 |
Программирование на микроконтроллерах MCS-51
Примерный шаблон программы, которого необходимо придерживаться начинающим программистам Приложение 3.1
; ТЕКСТ КОММЕНТАРИЯ К ПРОГРАММЕ |
Текст комментария может быть написан, а может быть и нет, но во всяком случае .перед комментарием необходимо ставить символ ;. Комментарий можно записывать при помощи букв кириллицы. Весь текст программы стоящий после символа «;» и до конца строки компилятором не читается. НЕ ИСПОЛЬЗОВАНИЕ КОММЕНТАРИЕВ СЧИТАЕТСЯ ПЛОХИМ СТИЛЕМ ПРОГРАММИРОВАНИЯ Т. К. ПРИВОДИТ К ТОМУ, ЧТО ЗАЧАСТУЮ САМ АВТОР ПРОГРАММЫ НЕ МОЖЕТ РАЗОБРАТЬСЯ В СВОЕЙ ПРОГРАММЕ, НЕ ГОВОРЯ УЖЕ 0 ДРУГИХ ПОЛЬЗОВАТЕЛЯХ. |
$MOD51 |
Директива ассемблера определяет тип используемого микроконтроллера. Директива - команда ассемблеру, которая не соответствует командам процессора или микроконтроллера. Непременный атрибут программы для микроконтроллера. |
PEREMENNAJA 12 DATA 031Н Peremennaja 13 DATA 032Н @GHF$-123 DATA 033H |
Блок определения переменных. Данные записи означают, что переменная Peremennaja_12 ставится в соответствие байту с адресом 03lh в ОЗУ микроконтроллера. Адрес байта в ОЗУ задаётся шестнадцатеричным числом. |
ORG 0000H * |
Директива ассемблера. При включении питания или при нажатии кнопки «Reset» начинают выполняться инструкции расположенные по адресу OOOOh. По этому адресу рекомендуется поместить команду перехода на начало программы. |
JMP START |
Команда перехода к метке, указанной после команды (начало программы). Здесь метка - Start. |
ORG 0003H |
Адрес обращения по внешнему прерыванию. Под вектора прерываний отведены ячейки памяти с 003h по 02Ah. |
JMP LABO |
Переход к подпрограмме обработке прерывания на метку LabO. В следующих строках могут описываться другие вектора прерываний. |
ORG 01 ООН |
Адрес начала основной части программы. Этот адрес должен быть не менее чем 02Bh. |
START: |
Метка, к которой передаётся управление программой при включении или при перезапуске стенда. |
ТЕКСТ ПРОГРАММЫ |
Сам текст программы состоит из команд микропроцессора, которые будут описаны несколько позже. |
END |
Директива конца программы. |
Система команд микроконтроллеров семейства MCS - 51 Приложение 3.2
№ |
Мнемоника |
Описание |
Действие |
Арифметические операции |
|||
1. |
ADD A,Rn |
Сложение регистра с аккумулятором |
ADD (А)<—(A)+(Rn) |
2. |
ADD A,direct |
Сложение ячейки внутренней памяти данных с аккумулятором |
ADD (A)<-(A)+(direct) |
3. |
ADD A,@Ri |
Сложение косвенно адресуемой ячейки внутренней памяти данных с аккумулятором. |
ADD (A)<-(A)+((Ri)) |
4. |
ADD A,#data |
Сложение непосредственного байта данных с аккумулятором |
ADD (A)<—(A)+#data |
5. |
SUBB A,Rn |
Вычитание регистра из аккумулятора с учетом заёма. |
SUBB (A)<—(A)-(C)-(Rn) |
6. |
SUBB A,direct |
Вычитание ячейки внутренней памяти данных из аккумулятора с учетом заёма |
SUBB (A)<—(A)-(C)-(direct) |
7. |
SUBB A,@Ri |
Вычитание косвенно адресуемой ячейки внутренней памяти данных из аккумулятора с учетом заема. |
SUBB (A)<-(A)-(CH(Ri)) |
8. |
SUBB A,#data |
Вычитание непосредственного байта данных из аккумулятора с учетом заёма. |
SUBB (A)<—(A)-(C)-#data |
9. |
MUL AB |
Умножение А на В. |
MUL (A)7_o<-(A)*(B); (ВЫ |
10. |
DIV AB |
Деление А на В. |
DIV (A)i5-8<—(A)/(B); (B)7.0 |
Логические операции |
|||
11. |
ANL A,Rn |
AND регистра и аккумулятора. |
ANL (A)<—(А) л (Rn) |
12. |
ANL A,direct |
AND ячейки внутренней памяти данных и аккумуляторах |
ANL (A)<—(А) л (direct) |
13. |
ANL A,@Ri |
AND косвенно адресуемой ячейки внутренней памяти данных и аккумулятора |
ANL (А)<—(А) л ((Ri)) |
14. |
ANL A,#data |
AND непосредственного байта данных и аккумулятора |
ANL (А)<-(А) Adata |
15. |
ORL A,Rn |
OR регистра и аккумулятора |
ORL (А)<-(А) v (Rn) |
16. |
ORL A,direct |
OR ячейки внутренней памяти данных и аккумулятора |
ORL (A)<—(A) v (direct) |
17. |
ORL A,@Ri |
OR косвенно адресуемой ячейки внутренней памяти данных и аккумулятора |
ORL (A)<-(A) v ((Ri)) |
18. |
ORL A,#data |
OR непосредственного байта данных и аккумулятора |
ORL (A)<-(A) v #data |
19. |
XRL A,Rn |
XOR регистра и аккумулятора |
XRL (A) <- (A) V (Rn) |
20. |
XRL A,direct |
XOR ячейки внутренней памяти данных и аккумулятора |
XRL (A) (A) V (direct) |
21. |
XRL A,@Ri |
XOR косвенно адресуемой ячейки внутренней памяти данных и аккумулятора |
XRL (A) <— (A) V ((Ri)) |
22. |
XRL A,#data |
XOR непосредственного байта данных и аккумулятора |
XRL (A) <- (A) V #data |
23. |
CLR A |
Очистка аккумулятора |
CLR (A) 0 |
Пересылка данных |
|||
24. |
MOV A,Rn |
Пересылка из регистра в аккумулятор |
MOV (A) <- (Rn) |
25. |
MOV A,direct |
Пересылка из ячейки внутренней памяти данных в аккумулятор |
MOV (A) (direct) |
26. |
MOV A,@Ri |
Пересылка из косвенно адресуемой ячейки внутренней памяти данных в аккумулятор |
MOV (A) ((Ri)) |
27. |
MOV A,#data |
Пересылка непосредственного байта данных в аккумулятор |
MOV (A) #data |
28. |
MOV direct,#data |
Пересылка непосредственного байта данных в ячейку внутренней памяти данных |
MOV (direct) <- # data |
Операции с булевыми переменными |
|||
29. |
CLR bit |
Очистка бита |
CLR (bit) 0 |
30. |
SETB bit |
Установка бита |
SETB (bit) <- 1 |
31. |
JNC rel |
Переход если флаг переноса не установлен |
JNC (PC) (PC)+2 IF (C)=0 THEN |
32. |
JC rel |
Переход если флаг переноса установлен |
JC (PC) <- (PC)+2 IF (C)=l THEN |
Передача управления |
|||
33. |
RET |
Возврат из подпрограммы |
RET (PC 15-18) <~ ((SP)) (SP) <- (SP)-l |
|
|
|
(РСу-о)<- ((SP)) (SP) (SP)-l |
34. |
JMP A+DPTR |
Переход относительно DPTR |
JMP (PC) (A)+(DPTR) |
35. |
JZrel |
Переход если аккумулятор равен нулю |
JZ (PC) <- (PC)+2 IF (A)=0 THEN (PC) <- |
36. |
JNZ rel |
Переход если аккумулятор не равен нулю |
JNZ (PC) <- (PC)+2 IF (A)*0 THEN (PC) |
Соответствие кодов в двоичном и шестнадцатеричном представлении и цифрами, зажигаемыми на семисегментном индикаторе
Приложение 3. 3
|
Код генерируемый портом Р2 |
|||||||||
В двоичном виде |
В шестнадцатеричном виде |
|||||||||
Сегменты индикатора |
h g |
f |
е |
d |
с |
b |
а |
|
||
Цифра, которую необходимо зажечь на индикаторе |
|
|
||||||||
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
3F |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
03 |
|
2 |
0 |
1 |
1 |
0 |
1 |
1 |
|
1 |
6D |
|
3 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
67 |
|
4 |
0 |
1 |
0 |
1 |
0 |
|
1 |
1 |
53 |
|
5 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
76 |
|
6 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
7Е |
|
7 |
0 |
0 |
0 |
1 |
0 |
|
1 |
1 |
23 |
|
8 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
7F |
|
9 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
77 |