
- •Министерство образования украины
- •«Однокристальный микроконтроллер i8051»
- •Структурная схема i8051
- •Формат слова состояния программы (psw).
- •Группа команд передачи данных
- •Группа команд логических операций
- •Группа команд передачи управления
- •Группа команд арифметических операций
- •Группа команд операций с битами
- •Специальные символы
- •Условные обозначения
- •Регистр управления/статуса универсального асинхронного приемопередатчика (uart).
- •Примечание.
- •Регистр управления мощностью (pcon)
- •Таймер/счетчик событий
- •Примечание.
- •Interrupt vector addresses
- •Регистр приоритетов прерываний (ip)
- •Карта адресуемых бит в блоке регистров специальных функций
- •Система подготовки программ i8051 Справочная информация Псевдокоманды транслятора:
- •Ip, ie, tmod, tcon, th0,tl0, th1,tl1, scon, sbuf, pcon.
- •Отладчик dScope-51.
- •Эмуляция встроенной периферии.
- •Директивы Ассемблера а51
- •1)Директивы определения символов:
- •2) Директивы компоновки:
- •3) Директивы состояния и выбора сегментов:
- •Операции с адресами и данными.
- •Описание меток.
- •Назначение линий портов ввода-вывода контроллера отладочной платы
- •Назначение битов порта p5:
- •Распределение памяти монитора
- •Объявление абсолютных сегментов
Директивы Ассемблера а51
1)Директивы определения символов:
1. SEGMENT - позволяет декларировать перемещаемые сегменты различных типов:
CODE - в пространстве программ (кода);
XDATA - во внешней памяти данных;
DATA - во внутреннем адресном пространстве МК51;
BIT - в побитово-адресуемой памяти данных (адреса 20Н -
32H);
Формат директивы следующий:
Имя_Сегмента SEGMENT Тип_Сегмента
Пример: PROG SEGMENT CODE
2. EQU - приписывает числовое значение константе.
Формат:
Символ EQU Выражение
Пример: LIMIT EQU 1200
COUNT EQU R5
3. SET - приписывает числовое значение переменной.
Формат директивы SET аналогичен формату директивы EQU.
4. BIT - приписывает символу адрес в побитово адресуемой области памяти. Формат:
Символ BIT Бит_адрес
Пример: X_ON BIT 24H
5. DATA - приписывает символу адрес во внутреннем ОЗУ МК51.
Формат:
Символ DATA Адрес_выражение
Пример: RESULT DATA 40H
RESULT2 DATA RESULT+2
6. XDATA - приписывает символу адрес во внешней памяти данных. Формат аналогичен формату директивы DATA
7. CODE - приписывает символу адрес в пространстве кода.
Формат:
Символ CODE Адрес_выражение
Пример: RESTART CODE ООН
INTVEC_0 CODE RESTART+3
2) Директивы компоновки:
1. PUBLIC - провозглашает символ или метку видимыми для других модулей, в которых они могут быть декларированы как EXTERN.
Формат:
PUBLIC Символ[,Символ,...]
2. EXTERN - декларирует символы и метки, описанные в других модулях. Формат:
EXTERN Тип_Сегмента (Символ), ...
Пример: EXTERN CODE (PUT_CHAR), DATA (BUFFER)
3. NAME - идентифицирует текущий программный модуль.
Формат:
NAME Имя_объектного_модуля
3) Директивы состояния и выбора сегментов:
1. END - последняя директива в программе. Вся информация после нее компилятором не воспринимается.
Формат:
END
2. ORG - используется для указания ассемблеру адреса объекта в памяти. Формат:
ORG Адрес_выражение
Пример: ORG 100Н
ORG RESTART
3. RSEG - выбирает описанный перемещаемый сегмент и делает его активным. Формат:
RSEG Имя_сегмента
Пример: RSEG SAMP
4. CSEG, DSEG, XSEG, BSEG - определяют соответствующие абсолютные сегменты
Формат:
CSEG AT Абсолютный_адрес
DSEG AT Абсолютный_адрес
XSEG AT Абсолютный_адрес
BSEG AT Абсолютный_адрес
Пример: BSEG AT ЗОН
5. USING - указывает ассемблеру, какой банк регистров необходимо использовать при выполнении последующих команд.
Формат:
USING Выражение
Пример: USING 2 ; использовать второй банк регистров
Операции с адресами и данными.
При работе с ассемблером А51 необходимо учитывать, что непосредственно числовые данные определяются символом # перед числом.
Пример: MOV А,#0Е0Н ;загрузить в аккумулятор число 0хЕ0
Числа без знака # будут восприняты ассемблером как ячейки памяти с соответствующими адресами.
Пример: INC 32 ;инкрементировать содержимое байта
;по адресу 32 (20H)
ORL A,20H ;побитовое ИЛИ аккумулятора и
;содержимого байта по адресу 20Н
Описание меток.
Пример:
COPY: MOVX A,@DPTR
DJNZ R0,$
Назначение линий портов ввода-вывода контроллера отладочной платы
Порт P0– предназначен для обмена микроконтроллера с ПЗУ, ОЗУ и регистрами. Не должен изменяться пользователем.
Порт P1– Биты:
P1.0-P1.2– Вывод знакоместа индикатора(для динамической индикации и сканирования клавиатуры)
P1.3 – Тумблер 3.
P1.4– Тумблер 2.
P1.5-P1.7– Линии возврата при опросе клавиатуры.
Порт 2– предназначен для вывода старших разрядов адреса (A8-A15) при обмене с ПЗУ и ОЗУ. Не должен изменяться пользователем.
Порт 3 – Биты:
P3.0 -RxD – Вход приемника последовательного интерфейса контроллера.
P3.1 – TxD – Выход передатчика последовательного интерфейса контроллера.
P3.2– Тумблер 1.
P3.3– Кнопка без дребезгаINT1и светодиод 3 (инверсный).
P3.4– Светодиод 2.
P3.5– Светодиод 1 и динамик.
P3.6–Wr – сигнал записи во внешнюю память данных.
PЗ.7–Rd – сигнал чтения из внешней памяти данных.
Все порты – двунаправленные. Каждая линия порта может адресоваться побитно. Линия настраивается на вход, если в защелку данной линии записана 1. Линии, неиспользуемые пользователем обязательно должны быть установлены в 1.
В распоряжении пользователя также находится внешний порт отладочной платыP5, который реализован на базе регистра ИР23 и предназначен для вывода символов на знакоместо семисегментного индикатора. Он расположен в адресном пространстве вненшней памяти данных (XDATA) по адресу 8000H.