Программирование микроконтроллера МКС-51
Курсовая работа, 27 Ноября 2011, автор: k********@yandex.ru
Краткое описание
Таймер в режиме 5 может использоваться для формирования одиночных аппаратно формируемых стробов. Запуск счетчика производится положительным фронтом сигнала GATE. Загрузка счетчика новым значением числа N в процессе счета не влияет на длительность текущего цикла но следующий цикл счета будет соответствовать новому значению N.
Содержимое работы - 1 файл
Курсач.doc
— 598.50 Кб (Скачать файл)3.1.
Найти сумму двух шестибайтных
слагаемых по правилам
сложения шестнадцатеричных
чисел
BE 12 B0 83 08 65
BF 80 B2 E2 0F 64
1 7D 93 63 65 17 C9
3.2. Составить программу сложения двух шестибайтных чисел
Условие:
Первое
слагаемое располагается в РПД по адресам
2АН – 2FH, второе слагаемое в РПД по адресам
3AH – 3FH, сумма в РПД по адресам 40H – 4FH. Область
РПД, где расположены слагаемые адресовать
через R0 и R1 банка 0, а область РПД, где располагается
сумма – через R1 банка 1.
Реализация:
LST:
1 $MOD845
---- 2 CSEG
0000 3 ORG 0000H
4
0000 782A 5 MOV R0, #2AH ; первое число
0002 76D5 6 MOV @R0, #0BEH
0004 08 7 INC R0
0005 7673 8 MOV @R0, #12H
0007 08 9 INC R0
0008 76B3 10 MOV @R0, #0B0H
000A 08 11 INC R0
000B 76E0 12 MOV @R0, #083H
000D 08 13 INC R0
000E 7605 14 MOV @R0, #08H
0010 08 15 INC R0
0011 7662 16 MOV @R0, #65H
17
0013 793A 18 MOV R1, #3AH ; второе число
0015 77D8 19 MOV @R1, #0BFH
0017 09 20 INC R1
0018 7722 21 MOV @R1, #80H
001A 09 22 INC R1
001B 77C2 23 MOV @R1, #0B2H
001D 09 24 INC R1
001E 77F2 25 MOV @R1, #0E2H
0020 09 26 INC R1
0021 7706 27 MOV @R1, #0FH
0023 09 28 INC R1
0024 7763 29 MOV @R1, #64H
30
0026 08 31 INC R0
0027 09 32 INC R1
33
0028 D2D3 34 SETB 0D3H ; переключаем банк с 0-ого
на 1-ый
002A 794F 35 MOV R1, #4FH ; задаём в R1 адрес
младшего байта суммы
36
002C C2D3 37 ITER: CLR 0D3H ; банк 0
002E 19 38 DEC R1 ; выбираем следующий байт
002F 18 39 DEC R0
0030 E6 40 MOV A, @R0 ; в ACC помещаем текущий
байт 1-ого числа
0031 A205 41 MOV C, 00H ; бит 00h в SFR используем
как переменную для хранения бита переноса с предыдущей итерации цикла суммирования
0033 37 42 ADDC A, @R1 ; складываем текущие байты
слагаемых с учётом переноса
0034 9205 43 MOV 00H, C ; сохраняем перенос
0036 D2D3 44 SETB 0D3H ; банк 1
0038 F7 45 MOV @R1, A ; записываем в РПД текущий
байт с результатом операции сложения
0039 19 46 DEC R1 ; выбор следующего байта
003A B940EF 47 CJNE R1, #40H, ITER ; пока не дойдём до
последнего байта (40h) – складываем очередные 2 байта слагаемых
48
49 END
VERSION 1.2h ASSEMBLY COMPLETE,
0 ERRORS FOUND
ITER . . . . . . . . . . . . .
. C ADDR 002CH
HEX:
:
:
:
:
:00000001FF
Скриншоты 6 циклов:
| 1.
|
2.
| |
| 3.
|
4.
| |
| 5.
|
6.
| |
| 7.
|
||
4.
Программирование параллельного
интерфейса КР580ВВ55
и таймера КР580ВВ53
4.1. Спроектировать логические схемы ЛС55 и ЛС53
адрес ВВ55: 88H > 100010002
адрес ВИ53: 8СH > 100011002
| Число | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
| 98h | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 9Ch | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| ЛС55: | ЛС53: |
4.2. Расшифровать управляющие слова ППИ КР580ВВ55
УС0:
22H = 001000102
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
D7 = 0: установка определённых разрядов порта PС;
D6 = 0, D5 = 1, D4 = 0: не используется, т.к. D7 = 0;
D3 = 0, D2 = 0, D1 = 1: итого 0012 = 110, т.е. выбираем PC1;
D0 = 0: сброс бита, т.е.
PC1 = 0.
Фрагмент программы
настройки ППИ:
MOV A, #22H ; запись в аккумулятор УС0
MOV R0, #43H ; запись в R0 адрес РУС ППИ
MOVX @R0, A ; запись в РУС
УС0 из аккумулятора
УС1: 2DH = 001011012
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
D7 = 0: установка определённых разрядов порта PС;
D6 = 0, D5 = 1, D4 = 0: не используется, т.к. D7 = 0;
D3 = 1, D2 = 1, D1 = 0: итого 1102 = 610, т.е. выбираем PC6;
D0 = 1: установка бита,
т.е. PC6 = 1.
Фрагмент программы
настройки ППИ:
MOV A, #2DH ; запись в аккумулятор УС0
MOV R0, #43H ; запись в R0 адрес РУС ППИ
MOVX @R0, A ; запись в РУС
УС0 из аккумулятора
УС2:
A0H(A8H) = 101000002(101010002)
| Число | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| A0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| A8 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
A2H: D7 = 1: задание режима работы каналов PA, PB, PC;
D6 = 0, D5 = 1: установка режима 1 (однонаправленный асинхронный);
D4 = 0: порт PА на вывод;
D3 = 0: старшая тетрада (PCH) порта PС на вывод;
D2 = 0: установка режима 0 (синхронный);
D1 = 0: порт PВ на вывод;
D0 = 0: младшая тетрада
(PCL) порта PС на вывод.
Фрагмент программы
настройки ППИ:
MOV A, #0A0H ; запись в аккумулятор УС0
MOV R0, #43H ; запись в R0 адрес РУС ППИ
MOVX @R0, A ; запись в РУС
УС0 из аккумулятора
AAH: D7 = 1: задание режима работы каналов PA, PB, PC;
D6 = 0, D5 = 1: установка режима 1 (однонаправленный асинхронный);
D4 = 0: порт PА на вывод;
D3 = 1: старшая тетрада (PCH) порта PС на ввод;
D2 = 0: установка режима 0 (синхронный);
D1 = 0: порт PВ на вывод;
D0 = 0: младшая тетрада
(PCL) порта PС на вывод.
Фрагмент программы
настройки ППИ:
MOV A, #0A8H ; запись в аккумулятор УС0
MOV R0, #43H ; запись в R0 адрес РУС ППИ
MOVX @R0, A ; запись в РУС
УС0 из аккумулятора
4.3.
Пример программы
настройки счётчика
| Режим работы | 5 |
| Счётчик | 2 |
| Режим счёта | 10 |
| только мл. байт | |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| РУС: | SC1 | SC0 | RL1 | RL0 | M2 | M1 | M0 | BCD |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |