Автор работы: k********@yandex.ru, 27 Ноября 2011 в 16:37, курсовая работа
Таймер в режиме 5 может использоваться для формирования одиночных аппаратно формируемых стробов. Запуск счетчика производится положительным фронтом сигнала GATE. Загрузка счетчика новым значением числа N в процессе счета не влияет на длительность текущего цикла но следующий цикл счета будет соответствовать новому значению N.
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 |
Информация о работе Программирование микроконтроллера МКС-51