Разработка микропроцессорной системы
Курсовая
работа
"Разработка
микропроцессорной системы"
Введение
Целью данного курсового проекта является
углубление знаний по аппаратным принципам построения устройств
микропроцессорной техники и приобретение практических навыков по разработке
микропроцессорных систем и их программного обеспечения.
Проектирование микропроцессорной системы заключается в обеспечении
управления необходимыми шинами микропроцессорного устройства с учетом требуемой
нагрузочной способности. Нагрузочная способность обеспечивается буферными
регистрами и шинными формирователями, при этом необходимо различать
статистическую и динамическую нагрузки.
микропроцессорный
система микросхема
Задание на курсовой проект
Исходные данные: спроектировать микропроцессорное устройство, содержащее:
МП ATmega64.
Дополнительные требования: клавиатура, индикация - индикатора JE-AN16202.
1. Структура микроконтроллера ATMega
.1. Назначение выводов
На рис.1.1 изображен корпус и приведено назначениевыводов
микроконтроллера. В скобках указана альтернативная функция вывода.
Микроконтроллер ATmega64 включает следующие функциональные блоки:
8-разрядное арифметическо-логическое устройство ( АЛУ );
внутреннюю флэш-память программ объемом 64 Кбайт с возможностью
внутрисистемного программирования через последовательный интерфейс;
32 регистра общего назначения;
внутреннюю EEPROM память данных объемом 4 Кбайт;
внутреннее ОЗУ данных объемом 4 Кбайт;
6 параллельных 8-разрядных портов;
4 программируемых таймера-счетчика;
10-разрядный 8-канальный АЦП и аналоговый компаратор;
последовательные интерфейсы UART0, UART0, TWI и SPI;
блоки прерывания и управления (включая сторожевой таймер).
Рис.1. Вид корпуса и обозначение выводов микроконтроллера ATmega64.
A (PA7..PA). 8-разрядный двунаправленный порт. К выводам порта могут быть
подключены встроенные нагрузочные резисторы (отдельно к каждому разряду).
Выходные буферы обеспечивают ток 20 мА и способность прямо управлять
светодиодным индикатором. При использовании выводов порта в качестве входов и
установке внешнего сигнала в низкое состояние, ток будет вытекать только при
подключенных встроенных нагрузочных резисторах. Порт А при наличии внешней
памяти данных используется для организации мультиплексируемой шины
адреса/данных.B (PB7..PB0). 8-разрядный двунаправленный порт со встроенными
нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При
использовании выводов порта в качестве входов и установке внешнего сигнала в
низкое состояние, ток будет вытекать только при подключенных встроенных
нагрузочных резисторах. Порт В используется также при реализации специальных
функций.C (PC7..PC0). Порт С является 8-разрядным выходным портом.
Выходные буферы обеспечивают ток 20 мА. Порт C при наличии внешней памяти
данных используется для организации шины адреса.D (PD7..PD0). 8-разрядный
двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы
обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и
установке внешнего сигнала в низкое состояние, ток будет вытекать только при
подключенных встроенных нагрузочных резисторах.Е (PЕ7..PЕ0).
8-разрядный двунаправленный порт со встроенными нагрузочными резисторами.
Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в
качестве входов и установке внешнего сигнала в низкое состояние, вытекающий
через них ток обеспечивается только при подключенных встроенных нагрузочных
резисторах. Порт E используется также при реализации специальных функций.F
(PF7..PF0). 8-разрядный входной порт. Входы порта используются также как
аналоговые входы аналого-цифрового преобразователя.
#RESET. Вход сброса. Для выполнения сброса необходимо удерживать низкий
уровень на входе более 50 нс., XTAL2. Вход и выход инвертирующего усилителя
генератора тактовой частоты., TOSC2. Вход и выход инвертирующего усилителя
генератора таймера/счетчика.
#WR, #RD. Стробы записи и чтения внешней памяти данных.. Строб разрешения
фиксации адреса внешней памяти. Строб ALE используется для фиксации младшего
байта адреса с выводов AD0-AD7 в защелке адреса в течение первого цикла
обращения. В течение второго цикла обращения выводы AD0-AD7 используются для
передачи данных.. Напряжение питания аналого-цифрового преобразователя. Вывод
подсоединяется к VCC через низкочастотный фильтр.. Вход опорного напряжения для
аналого-цифрового преобразователя. На этот вывод подается напряжение в
диапазоне между AGND и AVCC. AGND. Это вывод должен быть подсоединен к
отдельной аналоговой земле, если она есть на плате. В ином случае вывод
подсоединяется к общей земле.
#PEN. Вывод разрешения программирования через последовательный интерфейс.
При удержании сигнала на этом выводе на низком уровне после включения питания,
прибор переходит в режим программирования по последовательному каналу.
VСС, GND. Напряжение питания и земля.
1.2 Организация памяти и портов ввода/вывода
Микроконтроллеры AVR имеют раздельные пространства адресов памяти
программ и данных (гарвардская архитектура). Организация памяти МК ATMega64
показана на рис. 1.2.
Рис.2. Организация памяти микроконтроллера ATmega64
Высокие характеристики семейства AVR обеспечиваются следующими
особенностями архитектуры:
• В качестве памяти программ используется внутренняя флэш-память.
Она организована в виде массива 16-разрядных ячеек и может загружаться
программатором, либо через порт SPI;
• 16-разрядные память программ и шина команд вместе с
одноуровневым конвейером позволяют выполнить большинство инструкций за один
такт синхрогенератора (50 нс при частоте FOSC=20 МГц);
• память данных имеет 8-разрядную организацию. Младшие 32 адреса
пространства занимают регистры общего назначения, далее следуют 64 адреса
регистров ввода-вывода, затем внутреннее ОЗУ данных объемом до 4096 ячеек.
Возможно применение внешнего ОЗУ данных объемом до 60 Кбайт;
• внутренняя энергонезависимая память типа EEPROM объемом до 4
Кбайт представляет собой самостоятельную матрицу, обращение к которой
осуществляется через специальные регистры ввода-вывода.
Как видно из рис. 1.2 и 1.3, 32 регистра общего назначения (РОН) включены
в сквозное адресное пространство ОЗУ данных и занимают младшие адреса. Хотя
физически регистры выделены из памяти данных, такая организация обеспечивает
гибкость в работе. Регистры общего назначения прямо связаны с АЛУ. Каждый из
регистров способен работать как аккумулятор. Большинство команд выполняются за
один такт, при этом из регистров файла могут быть выбраны два операнда,
выполнена операция и результат возвращен в регистровый файл. Старшие шесть
регистров могут использоваться как три 16-разрядных регистра, и выполнять роль,
например, указателей при косвенной адресации.
Рис.3. Регистры общего назначения микроконтроллера ATmega64
Следующие 64 адреса за регистрами общего назначения занимают регистры
ввода-вывода (регистры управления/состояния и данныхПри использовании команд IN
и OUT используются адреса ввода-вывода с $00 по $3F. Но к регистрам
ввода-вывода можно обращаться и как к ячейкам внутреннего ОЗУ. При этом к
непосредственному адресу ввода-вывода прибавляется $20. Адрес регистра как
ячейки ОЗУ приводится далее в круглых скобках. Регистры ввода-вывода с $00
($20) по $1F ($3F) имеют программно доступные биты. Обращение к ним
осуществляется командами SBI и CBI, а проверка состояния - командами SBIS и
SBIC. В таблице B1 приведен список регистров ввода-вывода.
Таблица 1. Некоторые регистры ввода-вывода микроконтроллера ATmega64
Название
|
Функция
|
PORTG
|
Регистр данных порта G
|
DDRG
|
Регистр направления данных
порта G
|
PING
|
Выводы порта G
|
PORTF
|
Регистр данных порта F
|
DDRF
|
Регистр направления данных
порта F
|
SREG
|
Регистр состояния
|
SPH
|
Указатель стека, старший
байт
|
SPL
|
Указатель стека, младший
байт
|
TIMSK
|
Регистр маски прерываний от
таймеров/счетчиков
|
TIFR
|
Регистр флагов прерываний
от таймеров/счетчиков
|
MCUCR
|
Регистр управления
микроконтроллером
|
MCUCSR
|
Регистр управления и
состояния микроконтроллера
|
TCCR0
|
Регистр управления
таймером/счетчиком Т0
|
TCNT0
|
Счетный регистр
таймера/счетчика Т0
|
OCR0
|
Регистр совпадения
таймера/счетчика Т0
|
ASSR
|
Регистр состояния
асинхронного режима
|
TCCR1A
|
Регистр управления А
таймера/счетчика Т1
|
PORTA
|
Регистр данных порта А
|
DDRA
|
Регистр направления данных
порта А
|
PINA
|
Выводы порта А
|
PORTB
|
Регистр данных порта В
|
DDRB
|
Регистр направления данных
порта В
|
PINB
|
Выводы порта В
|
PORTC
|
Регистр данных порта С
|
DDRC
|
Регистр направления данных
порта С
|
PINC
|
Выводы порта С
|
PORTD
|
Регистр данных порта D
|
DDRD
|
Регистр направления данных
порта D
|
PIND
|
Выводы порта D
|
SPDR
|
Регистр данных SPI
|
SPSR
|
Регистр состояния SPI
|
SPCR
|
Регистр управления SPI
|
ACSR
|
Регистр управления и
состояния аналогового компаратора
|
ADMUX
|
Регистр управления
мультиплексором АЦП
|
ADCSRA
|
Регистр управления и
состояния АЦП
|
ADCH
|
Регистр данных АЦП, старший
байт
|
ADCL
|
Регистр данных АЦП, младший
байт
|
PORTE
|
Регистр данных порта Е
|
DDRE
|
Регистр направления данных
порта Е
|
PINE
|
Выводы порта Е
|
PINF
|
Выводы порта F
|
Рис.4 - Блок-схема микроконтроллера Atmega64
2. Микросхемы памяти
Микросхема ОЗУ приведена на рис. 13.
Рис. 13 УГО микросхемы КР565РУ1А
Назначение выводов
1 - напряжение питания (-Uп3);
, 3, 4, 8, 9, 10, 13, 14, 15, 19, 20, 21 - входы адресные А0...А11;
- вход сигнала выбора микросхемы;
- вход информационный;
- выход информационный;
- напряжение питания (Uп2);
- вход сигнала выбор режима;
- свободный;
- вход сигнала разрешения;
- напряжение питания (Uп1);
- общий.
ИС имеет три источника питания, первым подключают и последним отключают
источник питания Uп3 = -5В, так как он подается на подложку (кристалл), в
противном случае может произойти тепловой пробой под воздействием двух других
источников питания Uп1 и Uп2. Режим регенерации осуществляют по циклу
считывания или считывания-модификации-записи при выполнении условия CS = 1,
обеспечивающего блокировку информационных входов и выходов микросхемы и
возможность работать ей «на себя». Выход микросхемы в это время находится в
Z-состоянии. После включения питания нормальный режим функционирования
устанавливается через восемь циклов.
Микросхема ПЗУ приведена на рис. 14.
Рис. 14 УГО микросхемы КР1601РР1
A0 ¸ A9 - входы адреса
D0 ¸ D3 - входы / выходы данных- выбор
кристалла- вход сигнала считывания- вход сигнала программирования- вход сигнала
стиранияPR -вход напряжения программирования
Режимы работы микросхемы представлены в таблице 1.
Таблица 1
CS
|
ER
|
PR
|
RD
|
A0¸A9
|
UPR
|
D1/0
|
Режим
|
0
|
X
|
X
|
X
|
X
|
X
|
Roff
|
Хранение
|
1
|
0
|
1
|
0
|
X
|
-33¸-31 B
|
X
|
Общее стирание
|
1
|
0
|
0
|
0
|
A
|
-//-
|
X
|
Избирательное стирание
|
1
|
1
|
0
|
0
|
A
|
-//-
|
D1
|
Запись данных
|
1
|
1
|
1
|
1
|
A
|
-33¸5
B
|
D0
|
Считывание
|
2.1 Карта распределения адресного пространства памяти
B000h
|
ПЗУ
|
A000h
|
|
9FFFh
|
ОЗУ
|
9ВFFh
|
|
Рис. 15. Карта распределения адресного пространства
Согласно приведенной карте адресного пространства 1 Кб ОЗУ расположен c адреса 9BFFh, а 4 Кб ПЗУ с адреса A000h.
2.2 Селектор ОЗУ
Таблица. Микросхема ОЗУ, объёмом 1Кбайт, будет занимать ячейки памяти с 9BFFдо 9FFF, что соответствует адресу 1001 1ххх хххх хххх.
A15A14A13А12А11А10А9А8А7А6А5А4А3А2А1А0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
0
|
1
|
в остальных случаях
|
1
|
2.3 Селектор ПЗУ
ПЗУ объёмом 4Кбайт занимает ячейки памяти с A000 до B000,
что соответствует адресу 101x xххх хххх хххх.
Таблица
A15A14A13А12А11А10А9А8А7А6А5А4А3А2А1А0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
X
|
X
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
Х
|
0
|
Адресное пространство ОЗУ и ПЗУ удобно сделать на дешифраторе 3 в 8
К555ИД7.
Рис. 16. Адресный селектор памяти
Где на входы подаются сигналы PC5, PC6, PC7. Так как по ним можно точно определить какая именно
микросхема будет задействована: вывод 11 - микросхема ОЗУ ; вывод 10 -
микросхема ПЗУ.
3. Индикация
JE-AN 16202
Характеристики ● Режим отображения: STN / TN, прямой / обратный тип
отображения ● Формат экрана: 16 символов * 2 строки ● Метод
передачи: 1/16 Duty, 1/4 Bias ● Направление обзора: 6 O `clock/12 O'clock
● Заднее освещение: LED / EL блок
Таблица. Механические характеристики
Параметр
|
Спецификация
|
Ед. изм.
|
Размер модуля (Ш х В х Г)
|
80.0 x 36.0 x 15.0(10) Max.
|
мм
|
Видимая область (Ш х H/)
|
64.5 x 13.8
|
мм
|
Размер шрифта (Ш х В)
|
5.0 x 7.0
|
точка
|
Размер символа (Ш х В)
|
мм
|
Размер шага (Ш х В)
|
3.65 x 5.05
|
мм
|
Размер точки (Ш х В)
|
0.55 x 0.5
|
мм
|
Вес
|
Около 100 г
|
г
|
Таблица. Назначение контактов
Номер контакта
|
Символ
|
Уровень
|
Функция
|
1
|
VSS (GND)
|
0 V
|
Земля
|
2
|
VDD (VCC)
|
+ 5V
|
Напряжение питания логики
|
3
|
V0
|
-
|
Напряжения питания ЖК
|
4
|
RS
|
H / L
|
H: Ввод данных L: Ввод
инструкций
|
5
|
R / W
|
H / L
|
H: Чтения данных L: Запись
данных
|
6
|
E
|
H, H à L
|
Сигнал разрешения
|
7
|
DB0
|
H / L
|
Шина данных
|
8
|
DB1
|
H / L
|
|
9
|
DB2
|
H / L
|
|
10
|
DB3
|
H / L
|
|
11
|
DB4
|
H / L
|
|
12
|
DB5
|
H / L
|
|
13
|
DB6
|
H / L
|
|
14
|
DB7
|
H / L
|
|
15
|
NC
|
-
|
|
16
|
NC
|
-
|
|
Блок схема
Рис
Схема подключения питания
Рис. VDD - VO :
Напряжение питания LCD
Таблица. Наборы инструкций
Инструкция
|
Код
|
Описание
|
Время запуска (макс.)
|
|
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
|
|
Очистка дисплея
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
|
1.52 мс
|
Сброс
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
*
|
Возвращает дисплей при
переключении
|
1.52 мс
|
Режим записи
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
I/D
|
SH
|
|
37 мкс
|
Управление дисплеем Вкл /
Выкл
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
D
|
C
|
B
|
|
37 мкс
|
Отображение курсора или дисплея
|
0
|
0
|
0
|
0
|
0
|
1
|
S/C
|
R/L
|
*
|
*
|
|
37 мкс
|
Начало работы
|
0
|
0
|
0
|
0
|
1
|
DL
|
N
|
F
|
*
|
*
|
|
37 мкс
|
Установить CG Ram адрес
|
0
|
0
|
0
|
1
|
ACG
|
|
37 мкс
|
Установить DD RAM адрес
|
0
|
0
|
1
|
ADD
|
|
37 мкс
|
Чтение флага «занят» и
адреса
|
0
|
1
|
BF
|
|
|
0 мкс
|
Запись данных в CG или DD
RAM
|
1
|
0
|
AC
|
|
43 мкс
|
Чтение данных из CG или DD
RAM
|
1
|
1
|
чтение
|
|
43 мкс
|
Таблица
Замечания
|
|
I/D
|
1
|
увеличение
|
0
|
уменьшение
|
SH
|
1
|
включить полный сдвиг
|
0
|
выключить полный сдвиг
|
S/C
|
1
|
Сдвиг дисплея
|
0
|
Установка курсора
|
R/L
|
1
|
сдвиг вправо
|
0
|
сдвиг влево
|
DL
|
1
|
Биты
|
0
|
Биты
|
N
|
1
|
Линии
|
0
|
Линии
|
F
|
1
|
5 х 11 Точек
|
0
|
5 х 8 точек
|
BF
|
1
|
Действующий внутренне
|
0
|
Может принимать инструкции
|
RAM Отображение данных оперативной памяти CG RAM: Генератор символов RAM:
CG RAM Адрес ADD: CG RAM Адрес: Соответствует адресу курсора AC: Используется
счетчик адреса для DD и CG RAM адреса ●: никакого эффекта.
Таблица. Символы шрифта
Рис
4. Расчет потребляемой устройством мощности
Таблица
Микросхема
|
Ток потребления, мА
|
Потребляемая мощность, мВт
|
Количество
|
ATmega64
|
|
|
1
|
К555ИД7
|
9,7
|
51
|
1
|
КР1601РР1
|
|
370
|
1
|
КР565РУ1А
|
|
450
|
1
|
JE-AN16202
|
1.4
|
500
|
1
|
КР580ИР82
|
160
|
800
|
2
|
КР580ВА86
|
90
|
450
|
1
|
К155ЛЕ1
|
27
|
64,8
|
2
|
К500ЛЕ106Е
|
21
|
34,23
|
1
|
Для определения мощности, потребляемой устройством, необходимо
просуммировать мощности, потребляемые каждым элементом в отдельности:
.
Максимальная
мощность (клавиши нажаты), рассеиваемая на резисторах R1-R3,
сопротивлением кОм:
мВт.
Значит
мощность, потребляемая устройством:
мВт.
В
качестве источника питающего напряжения можно
применить любые маломощные трансформаторы на напряжения 220 / 3.3 V с
использованием микросхемы-стабилизатора напряжения Б5-43, обеспечивающую
максимальный ток на выходе до 1,99 А и позволяющей подключить нагрузку
потребляющую до 150 Вт, что покрывает необходимые потребности.
Таблица.
Спецификация
Поз. обозначение
|
Наименование
|
|
DD1
|
ATmega64
|
1
|
DD5
|
К555ИД7
|
1
|
DD6
|
КР1601РР1
|
1
|
DD7
|
КР565РУ1А
|
1
|
DD8
|
JE-AN16202
|
1
|
DD2,DD3
|
КР580ИР82
|
2
|
DD4
|
КР580ВА86
|
1
|
Элементы 2ИЛИ-НЕ
|
К155ЛЕ1
|
2
|
Элементы ИЛИ-НЕ
|
К500ЛЕ106Е
|
1
|
|
|
|
R1-R3
|
С2-23-0,25-1 кОм ± 5 %
А-В-В
|
3
|
5. Текст
подпрограмм
Текст подпрограмм
В независимости от функционального назначения устройства алгоритм его
работы содержит последовательность типовых операций: инициализация системы,
чтение/запись памяти, чтение клавиатуры и портов ввода, вывод информации на
индикаторы и порты вывода и др.
Рассмотрим примеры инициализации и работы с устройствами ввода-вывода
разработанного устройства.
;ATmega64
.include "m64def.inc"
.def out_fig_code = r21 ;код выводимого символа для индикатора
.def out_seg = r22 ;номер текущего сегмента
.def d1 = r4
.def d2 = r5
.def d3 = r6d1 = r7
.def d2 = r8
.def d3 = r9d1 = r10
.def d2 = r11
.def d3 = r12d1 = r13
.def d2 = r14
.def d3 = r15d1 = r16
.def d2 = r17d1 = r18
.def d2 = r19
.equ out_seg16 = 7
.dseg
.org 0x100
.cseg
.org 0reset
;-------------
; начало программы
reset:out_fig_codeout_seg
ldi r20, out_seg16
; программирование портов F и С на вывод
ldi r20, 7ddrc, r20r20, $ffddrf, r20:out_seg, 1 ; на сегмент 1out_fig_code, LLHLHHHL ;
вывод . out_pp ;
вызов подпрограммы вывода
ldi out_seg, 2 ; на сегмент 2out_fig_code, LLHLHHHL ; вывод .
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, 3 ; на сегмент 3out_fig_code, LLHLHHHL ; вывод .
rcall out_pp ; вызов подпрограммы вывода
rcall delay05out_seg, 4 ; на сегмент 4out_fig_code, LLHLHHHL ; вывод .
ldi out_seg, 5 ; на сегмент 5out_fig_code, LLHLHHHL ; вывод .
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, 6 ; на сегмент 6out_fig_code, LLHLHLHL ; вывод *
rcall out_pp ; вызов подпрограммы вывода
rcall delay05out_seg, 7 ; на сегмент7out_fig_code, LHLLHLLL ; вывод H
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, 8 ; на сегмент 8out_fig_code, LHLLLHLH ; вывод E
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, 9 ; на сегмент 9out_fig_code, LHLLHHLL ; вывод L
rcall out_pp ; вызов подпрограммы вывода
rcall delay05out_seg, A ; на сегмент 10out_fig_code, LHLLHHLL ; вывод L
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, B ; на сегмент 11out_fig_code, LHLLHHHH ; вывод O
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, C ; на сегмент 12out_fig_code, LLHLHLHL ; вывод *
rcall out_pp ; вызов подпрограммы вывода
rcall delay05out_seg, D ; на сегмент 13out_fig_code, LLHLHHHL ; вывод .
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, E ; на сегмент 14out_fig_code, LLHLHHHL ; вывод .
rcall out_pp ; вызов подпрограммы вывода
ldi out_seg, F ; на сегмент 15out_fig_code, LLHLHHHL ; вывод .
rcall out_pp ; вызов подпрограммы вывода
rcall delay05out_seg, 10 ; на сегмент 16out_fig_code, LLHLHHHL
; вывод .
rcall out_pp ; вызов подпрограммы вывода
;-------------
; подпрограмма вывода на индикатор
out_pp:
out PORTC, r20PORTF, out_fig_code
out PORTC, out_seg
Рис.