- •Министерство образования украины
- •«Однокристальный микроконтроллер i8051»
- •Структурная схема i8051
- •Типы команд i8051
- •Методы адресации
- •Блок регистров специальных функций(sfr)
- •Группа команд логических операций
- •Группа команд передачи управления
- •Группа команд операций с битами
- •Специальные символы
- •Условные обозначения
- •Регистр управления мощностью (pcon)
- •Таймер/счетчик событий
- •Схемотехника портов ввода/вывода i8051 Порт 0
- •Альтернативные функции порта 3
- •Адреса векторов прерываний
- •Отладчик dScope-51.
- •Эмуляция встроенной периферии.
- •Директивы Ассемблера а51
- •1)Директивы определения символов:
- •2) Директивы компоновки:
- •3) Директивы состояния и выбора сегментов:
- •Операции с адресами и данными.
- •Описание меток.
- •Назначение линий портов ввода-вывода контроллера отладочной платы
- •Назначение битов порта p5:
- •Распределение памяти монитора
- •Объявление абсолютных сегментов
Национальный
технический университет Украины “Киевский
политехнический институт” Кафедра
автоматизации экспериментальных
исследований
МЕТОДИЧЕСКИЕ
УКАЗАНИЯ
к
самостоятельной работе по
курсу «Микропроцессорные системы»
Утверждено
на
заседании кафедры
автоматизации
экспериментальных
исследований
Протокол №
_______от _______
Киев
– 2002
Методические
указания к лабораторному практикуму
по курсу «Микропроцессорные системы»
/ Сост. С.А.Богомазов и др. –
К.:
НТУУ«КПИ»,2000. – 36 с.
Составители:
С.А. Богомазов доц., к.т.н. студенты
К.В
Попов А.
Ю. Семушкин Н.
В. Рябко
Регистровая
адресация
Используется для
обращения к восьми рабочим регистрам
выбранного банка рабочих регистров, к
регистрам А, В, АВ (сдвоенному регистру),
DPTR
и к флагу переноса С.
Примеры:
MOV A,R0 ;Пересылка
в аккумулятор из регистра
DEC R6 ;Декремент
регистра
Прямая адресация Используется
для обращения к ячейкам внутренней
памяти (ОЗУ) данных (0-127) и к регистрам
специального назначения.
Примеры:
MOV A,14h ;Пересылка
в аккумулятор прямоадресуемого байта
PUSH 20H ;Загрузка
в стек байта из резидентной памяти
данных
Косвенно-регистровая
адресация
Используется для
обращения к ячейкам внутреннего ОЗУ
данных и к внешней памяти данных. В
качестве регистров-указателей
используется регистры R0,
R1
выбранного банка регистров.
Примеры:
MOV A,@R0 ;Пересылка
в аккумулятор байта из резидентной
памяти данных
INC @R1 ;Инкремент
байта в резидентной памяти данных
Непосредственная
адресация Позволяет
выбрать из адресного пространства
памяти программы - константы, явно
указанные в команде.
Примеры: MOV
A,#05 ;Загрузка
в аккумулятор константы
ADD A,#10 ;Сложение
аккумулятора с константой
Косвенно-регистровая
адресация по сумме базового и индексного
регистров.
Используется для
обращения к памяти программ по сумме:
базовый регистр (DPTR
или PC)
плюс индексный регистр (содержимое
аккумулятора А).
Примеры: MOVC
A,@A+DPTR
;Пересылка в аккумулятор байта из памяти
программ
JMP
@A+DPTR
;Косвенный относительный переход
((PC)<-(A)+DPTR)
Символ
Наименование
Адрес
ACC
*
Аккумулятор
0E0H
B
*
Регистр-расширитель
аккумулятора
0F0H
PSW
*
Слово состояния
программы
0D0H
SP
Регистр-указатель
стека
81H
DPTR
Регистр-указатель
данных (DPH)
(DPL)
83H
82H
P0
*
Порт 0
80H
P1
*
Порт 1
90H
P2 *
Порт 2
0A0H
P3
*
Порт 3
0B0H
IP
*
Регистр
приоритетов
0B8H
IE
*
Регистр маски
прерываний
0A8H
TMOD
Регистр режима
таймера/счетчика
89H
TCON
*
Регистр
управления/статуса таймера
88H
TH0
Таймер 0 (старший
байт)
8CH
TL0
Таймер 0 (младший
байт)
8AH
TH1
Таймер 1 (старший
байт)
8DH
TL1
Таймер 1 (младший
байт)
8BH
SCON
*
Регистр управления
приемопередатчиком
98H
SBUF
Буфер
приемопередатчика
99H
PCON
Регистр управления
мощностью
87H
Примечание.
Регистры, имена которых отмечены
знаком (*), допускают адресацию
отдельных бит.
Символ
Позиция
Имя и назначение
C
PSW.7
Флаг переноса.
Устанавливается и сбрасывается
аппаратурными средствами или программой
при выполнении арифмитических и
логических операций
AC
PSW.6
Флаг вспомогательного
переноса. Устанавливается и сбрасывается
только аппаратурными средствами при
выполнении команд сложения и вычитания
и сигнализирует о переносе или заеме
в бите 3
F0
PSW.5
Флаг
0. Может
быть установлен, сброшен или проверен
программой как флаг, специфируемый
пользователем
RS1 RS0
PSW.4 PSW.3
Выбор банка
регистров. Устанавливается и
сбрасывается программой для выбора
рабочего банка регистров (см. примечание)
OV
PSW.2
Флаг переполнения.
Устанавливается и сбрасывается
аппаратурно при выполнении арифмитических
операций
-
PSW.1
Не используется
P
PSW.0
Флаг паритета.
Устанавливается и сбрасывается
аппаратурно в каждом цикле команды
и фиксирует нечетное/четное число
единичных бит в аккумуляторе, т. е.
выполняет контроль по четности
Примечание. Выбор рабочего банка
регистров.
RS1
RS0
Банк
Границы адресов
0
0
0
00H-07H
0
1
1
08H-0FH
1
0
2
10H-17H
1
1
3
18H-1FH
Группа команд
передачи данных
MOV A, Rn
(A)←(R)
MOV
Ri, #d
((Ri))←#d
MOV A, ad
(A)←(ad)
MOV
DPTR,
#d16
(DPTR)←#d16
MOV A, @Ri
(A)←(())
MOVC
A,
@A+DPTR
(A)←((A)+(DPTR))
MOV A, #d
(A)←
#d
MOVC
A,
@A+PC
(PC)←(PC)+1
(A)←((A)+
PC))
MOV
Rn, ad
(Rn)←(ad)
MOVX
A,
@Ri
(A)←((Ri))
MOV Rn, #d
(Rn)←#d
MOVX
A,
@DPTR
(A)←((DPTR))
MOV ad, A
(ad)←(A)
MOVX
@Ri,
A
((Ri))←(A)
MOV ad, Rn
(ad)←(Rn)
MOVX @DPTR, A
((DPTR))←(A)
MOV
add,
ads
(add)←(ads)
PUSH ad
(SP)←(SP)+1 ((SP))←(ad)
MOV
ad,
@Ri
(ad)←((Ri))
POP ad
(ad)←(SP)
(SP)←(SP)-1
MOV ad, #d
(ad)←#d
ХСН
A,
Rn
(A)↔(Rn)
MOV
@Ri,
A
((Ri))←(A)
ХСН
A, ad
(А)↔(ad)
MOV
@Ri,
ad
((Ri))←(ad)
ХСН
A,
@Ri
(А)↔((Ri))
XCHD
A,
@Ri
(А0-3)↔((Ri)0-3)
ANL A, Rn
(А)←(А)
Λ
(Rn)
XRL
A, ad
(А)←(А)
(ad)
ANL A, ad
(А)←(А)
Λ (ad)
XRL A, @Ri
(A)←(A)
((Ri))
ANL
A,
@Ri
(А)←(А)
Λ
((Ri))
XRL A, #d
(А)←(А)
#d
ANL A,#d
(А)←(А)
Λ #
d
XRL ad, A
(ad)←
(ad)
(A)
ANL ad, A
(ad)←(ad)
Λ
(А)
XRL ad, #d
(ad)←(ad)
#d
ANL
ad,
#d
(ad)←(ad)
Λ
#d
CLR A
(A)←0
ORL
A,
Rn
(А)←(А)
V (Rn)
CPL A
(A)←(Ā)
ORL A, ad
(А)←(А)
V (ad)
RL A
Rotate A left
ORL A,@Ri
(A)←(A)
V ((Ri))
RLC A
(A
n+
1)←
(An),
n=0
6,
(A0)←(C),
(C)←(A7)
ORL A, #d
(А)←(А)
V #d
RR A
(An)←(An+1),
n=0
6,
(A7)←(A0)
ORL ad, A
(ad)←(ad)
V
(A)
RRC A
(An)←(An+1),
n=0
6,
(A7)←(C),
(C)←(A0)
ORL ad, #d
(ad)←(ad)
V #
d
SWAP A
(A0-3)↔(A4-7)
LJMP ad 16
(PC)←ad 16
AJMP ad 11
(PC)←(PC)+2,
(PC0-10)←ad 11
SJMP rel
(PC)←(PC)+2,
(PC)←(PC)+rel
JMP @A+DPTR
(PC)←(A)+(DPTR)
JZ
rel
(РС)←(РС)+2б если
(Ф)=0б то (ЗС)← (ЗС)+куд
JNZ
rel
(PC)←(PC)+2,
если (A)≠0,
то (PC)←
(PC)+rel
JC
rel
(PC)←(PC)+2,
если (C)=1,
то (PC)←
(PC)+rel
JNC
rel
(PC)←(PC)+2,
если (C)=0,
то (PC)←
(PC)+rel
JB bit, rel
(PC)←(PC)+3,
если
(b)=1,
то
(PC)← (PC)+rel
JNB bit, rel
(PC)←(PC)+3,
если
(b)=0,
то
(PC)← (PC)+rel
JBC bit, rel
(PC)←(PC)+3,
если
(b)=1,
то
(b)←0 и
(PC)← (PC)+rel
DJNZ Rn, rel
(PC)←(PC)+2,
(Rn)←(Rn)-1, если
(Rn)≠0,
то
(PC)← (PC)+rel
DJNZ ad, rel
(PC)←(PC)+2,
(ad)←(ad)-1, если
(ad)≠0,
то
(PC)← (PC)+rel
CJNE A, ad, rel
(PC)←(PC)+3,
если
(A)≠(ad),
то
(PC)← (PC)+rel, если
(A)<(ad), то
(C)←1, иначе
(C)←0
CJNE A, #d, rel
(PC)←(PC)+3,
если
(A)≠#d,
то
(PC)← (PC)+rel, если
(A)<#d, то
(C)←1, иначе
(C)←0
CJNE Rn, ≠d, rel
(PC)←(PC)+3,
если
(Rn)≠#d,
то
(PC)← (PC)+rel, если
(Rn)<#d, то
(C)←1, иначе
(C)←0
CJNE @Ri,≠d, rel
(PC)←(PC)+3,
если
((Ri))≠#d,
то
(PC)← (PC)+rel, если
(Ri)<#d, то
(C)←1, иначе
(C)←0
LCALL
ad 16
(PC)←(PC)+3,
(SP)←(SP)+1, ((SP))←(PC0-7), (SP)←(SP)+1,то
((SP))←(PC8-15), (PC)←ad 16
ACALL ad 11
(PC)←(PC)+2,
(SP)←(SP)+1, ((SP))←(PC0-7), (SP)←(SP)+1, то
((SP))←(PC8-15), (PC0-10)←ad 11
RET
(PC8-15)←((SP)),
(SP)←(SP)-1, (PC0-7)←((SP)), (SP)←(SP)-1
RETI
(PC8-15)←((SP)),
(SP)←(SP)-1, (PC0-7)←((SP)), (SP)←(SP)-1
NOP
(PC)←(PC)+1
Группа команд арифметических операций
ADD A, Rn
(А)←(А)+(Rn)
SUBB A, Rn
(A)←(A)-(C)-(Rn)
ADD A, ad
(A)←(А)+(ad)
SUBB A, ad
(A)←(A)-(C)-((ad))
ADD A, @Ri
(А)←(А)+((Ri))
SUBB A, @Ri
(A)←(A)-(C)-((Ri))
ADD
A,
#d
(A)←(A)+#d
SUBB
A, d
(A)←
(A)-(С)←#
d
ADDC A, Rn
(А)←(А)+(Rn)+(С)
INC A
(A)←(A)+1
ADDC A, ad
(А)←(А)+(ad)+(С)
INC Rn
(Rn)←(Rn)+
1
ADDC A, @Ri
(А)←(А)+((Ri))+(С)
INC ad
(ad)←(ad)+ 1
ADDC
A,
#d
(А)←(А)+#d+(С)
INC @Ri
((Ri))←((Ri))+1
DAA
Если (А0-3)
> 9V
((AC)
=1,то
(А0-3)←(А0-3)+6,
затем
если (А4-7)
> 9V
((AC)
=1,
то (А4-7)←(А0-3)+6
INC DPTR
(DPTR)←(DPTR)+1
DEC
A
(А)←(А)-1
DEC Rn
(Rn)←(Rn)-1
DEC ad
(ad)←(ad)-1
DEC @Ri
((Ri))←((Ri))-1
DIV
AB
(А).(В)←(А)/(В)
MUL
AB
(B)(A)←(А)х(В)
CLR C
(C)←0
ANL C, bit
(C)←(C)^(b)
CLR bit
(b)←0
ANL C, /bit
(C)←(C)^(b)
SETB C
(C)←1
ORL C, bit
(C)←(C)V(b)
SETB bit
(b)←1
ORL C, /bit
(C)←(C)V(b)
CPL C
(C)←(C/)
MOV C, bit
(C)←(b)
CPL
bit
(b)←(b/)
MOV bit, C
(b)←(C)
-
оператор присваивания (замещения)
- оператор
взаимного обмена
А,
V, -
операторы логических операций: И
(конъюнкция), ИЛИ (дизъюнкция),
исключающее ИЛИ
@ -
префикс косвенной адресации
# -
префикс непосредственного операнда
(Y) -
содержимое регистра или ячейки памяти
с именем Y
((У)) -
содержимое ячейки памяти, адресуемой
содержимым У (косвенная адресация)
А -
регистр-аккумулятор
ad -
прямой 8-битный адрес байта РПД
(0-127), порта
или РСФ
add -
прямой 8-битный адрес назначения
ads -
прямой 8-битный адрес источника
ad11 -
прямой 11-битный адрес передачи управления
ad16 -
прямой 16-битный адрес передачи управления
В -
регистр-расширитель аккумулятора
bit -
прямой 8-битный адрес бита (i8051)
С -
флаг переноса
#d -
8-битный непосредственный операнд
(константа)
#d16 -
16-битный непосредственный операнд
(константа)
DPTR -
Data Pointer (см.
РУД)
PC -
Program Counter (см.
СК, рус.)
Rel -
8-битный относительный адрес передачи
управления (- 127
+128)
в i8051
Ri -
обобщенное имя регистра косвенного
адреса (R0
или R1)
Rn - обобщенное имя
рабочего регистра (n= 0
7)
SP - Stack
Pointer (см.
РУС)
Регистр управления/статуса универсального
асинхронного приемопередатчика (UART).
Символ
Позиция
Имя и назначение
SM0
SM1
SCON.7
SCON.6
Биты управления
режимом работы УАПП. Устанавливаются/
сбрасываются программно (см.
примечание).
SM2
SCON.5
Бит управления
режимом УАПП. Устанавливается
программно для запрета приема
сообщения, в котором девятый бит
имеет значение
0.
REN
SCON.4
Бит разрешения
приема. Устанавливается/сбрасывается
программно для разрешения/запрета
приема последовательных данных.
TB8
SCON.3
Передача бита
8.
Устанавливается/сбрасывается
программно для задания девятого
передаваемого бита в режиме УАПП-9
бит.
RB8
SCON.2
Прием бита
8.
Устанавливается/сбрасывается
аппаратурно для фиксации девятого
принимаемого бита в режиме УАПП-9
бит.
T1
SCON.1
Флаг прерывания
передатчика. Устанавливается
аппаратурно при окончании передачи
байта. Сбрасывается программно после
обслуживания прерывания.
R1
SCON.0
Флаг прерывания
приемника. Устанавливается аппаратурно
при приеме байта. Сбрасывается
программно после обслуживания
прерывания.
Примечание.
SM0
SM1
Режим работы УАПП
0
0
Сдвигающий
регистр расширения ввода/вывода.
0
1
УАПП-8 бит.
Изменяемая скорость передачи.
1
0
УАПП-9 бит.
Фиксированная скорость передачи.
1
1
УАПП-9 бит.
Изменяемая скорость передачи.
Настройка таймера 1 для управления
частотой работы UART.
Частота
приема/передачи (BAUD
RATE)
Частота
резонатора, МГц
SMOD
Таймер/счетчик
1
С/Т
Режим (MODE)
Перезагружаемое
число
Режим 0, макс: 1
МГц
12
X
X
X
X
Режим 2, макс:
375 кГц
12
1
X
X
X
Режимы 1,3:
62.5 кГц
12
1
0
2
0FFH
19.2 кГц
11.059
1
0
2
0FDH
9.6 кГц
11.059
0
0
2
0FDH
4.8 кГц
11.059
0
0
2
0FAH
2.4 кГц
11.059
0
0
2
0F4H
1.2 кГц
11.059
0
0
2
0E8H
137.5 кГц
11.059
0
0
2
1DH
110 Гц
6
0
0
2
72H
110 Гц
12
0
0
1
0FEEBH
Символ
Позиция
Наименование
и функция
SMOD
PCON.7
Удвоенная
скорость передачи. Если бит установлен
в
1, то
скорость передачи вдвое больше, чем
при SMOD
= О
–
PCON.6
Не используются
–
PCON.5
–
PCON.4
GF1
PCON.3
Флаги,
специфицируемые пользователем (флаги
общего на назначения)
GF0
PCON.2
PD
PCON.I
Бит пониженной
мощности. При установке бита в
1 МК
переходит в режим пониженной
потребляемой мощности
IDL
PCON.0
Бит холостого
хода. Если бит установлен в
1, то МК
переходит в режим холостого хода
Примечание. При
одновременной записи
1 в PD
и
IDL бит PD
имеет преимущество.
Сброс содержимого РУМ выполняется
путем загрузки в него кода ОХХХОООО.
Т/С1 в режиме 0: 13 битный счетчик
Т/С1 в режиме 2: 8 битный автоперегружаемый
счетчик
Т/С0 в режиме 3: два 8 битных
счетчика
Порт 3
Символ
Позиция
Имя и назначение
RD/
Р3.7
Чтение. Активный
сигнал низкого уровня формируется
аппаратно при обращении к ВПД
WR/
Р3.6
Запись. Активный
сигнал низкого уровня формируется
аппаратно при обращении к ВПД
Т1
Р3.5
Вход таймера/счетчика
1 или тест-вход
ТО
Р3.4
Вход таймера/счетчика
0 или тест-вход
INT1/
РЗ.З
Вход запроса
прерывания 1. Воспринимается сигнал
низкого уровня или срез
INT0/
Р3.2
Вход запроса
прерывания 0. Воспринимается сигнал
низкого уровня или срез
TXD
Р3.1
Выход передатчика
последовательного порта в режиме
УАПП. Выход синхронизации в режиме
сдвигающего регистра
RXD
РЗ.О
Вход приемника
последовательного порта в режиме
УАПП. Ввод/вывод данных в режиме
сдвигающего регистра
Регистр режима работы таймера/счетчика
(TMOD).
Символ
Позиция
Имя и назначение
GATE
TMOD.7
для Т/С1 и TMOD.3
для Т/С0
Управление
блокировкой. Если бит установлен, то
таймер/счетчик "х" разрешен
до тех пор, пока на входе "INTх"
высокий уровень и бит управления
"TRx"
установлен. Если бит сброшен, то Т/С
разрешается, как только бит управления
"TRx"
устанавливается
С/
TMOD.6
для Т/С1 и TMOD.2
для Т/С0
Бит выбора
режима таймера или счетчика событий.
Если бит сброшен, то работает таймер
от внутреннего источника сигналов
синхронизации. Если бит установлен,
то работает счетчик от внешних
сигналов на входе "Тx"
Ml
TMOD.5
для Т/С
1 и TMOD.1
для Т/СО
Режим работы
(см. примечание)
М0
TMOD.4
для Т/С
1 и TMOD.0
для Т/СО
Примечание.
Ml
М0
Режим работы
0
0
Таймер МК48.
"TLx"
работает как 5-битный предделитель.
0
1
16-битный
таймер/счетчик. "ТНх" и
"TLx"
включены последовательно.
1
0
8-битный
автоперезагружаемый таймер/счетчик.
"ТНх" хранит значение, которое
должно быть перезагружено в
"TLx"
каждый раз по переполнению.
1
1
Таймер/счетчик
1
останавливается. Таймер/счетчик
0: TLO
работает как 8-битный таймер/счетчик,
и его режим определяется управляющими
битами таймера
0. ТНО
работает только как 8-битный таймер,
и его режим определяется управляющими
битами таймера
1.
Регистр управления/статуса таймера
(TCON).
Символ
Позиция
Имя и назначение
TF1
TCON.7
Флаг переполнения
таймера
1.
Устанавливается аппаратно при
переполнении таймера/счетчика.
Сбрасывается при обслуживании
прерывания аппаратно.
TR1
TCON.6
Бит управления
таймера
1.
Устанавливается/сбрасывается
программой для пуска/останова.
TF0
TCON.5
Флаг переполнения
таймера
0.
Устанавливается аппаратно. Сбрасывается
при обслуживании прерывания.
TR0
TCON.4
Бит управления
таймера
0.
Устанавливается/сбрасывается
программой для пуска/останова
таймера/счетчика.
IE1
TCON.3
Флаг фронта
прерывания
1.
Устанавливается аппаратно, когда
детектируется срез внешнего сигнала
ЗПР1/ (INT1/)
Сбрасывается при обслуживании
прерывания
IT1
TCON.2
Бит управления
типом прерывания
1.
Устанавливается/ сбрасывается
программно для спецификации запроса
ЗПР1/ (срез/низкий уровень).
IE0
TCON.1
Флаг фронта
прерывания
0.
Устанавливается по срезу сигнала
.
Сбрасывается при обслуживании
прерывания
IT0
TCON.0
Бит управления
типом прерывания
0.
Устанавливается/ сбрасывается
программно для спецификации запроса
ЗПР0/ (срез/низкий уровень)
Схема прерываний i8051
Interrupt
Mnemonic
Interrupt Name
Vector
Address
Priority within Level
IE0
Внешнее прерывание
0
0003h
1
TF0
Переполнение
таймера 0
000Bh
2
IE1
Внешнее прерывание
1
0013h
3
TF1
Переполнение
таймера 1
001Bh
4
RI/TI
Прерывание UART
0023h
5
Регистр масок прерывания (IE).
Символ
Позиция
Имя и назначение
EA
IE.7
Снятие блокировки
прерываний. Сбрасывается программно
для запрета всех прерываний независимо
от состояний IE4-IE0
-
IE.6
Не используется.
-
IE.5
ES
IE.4
Бит разрешения
прерывания от УАПП. Установка/сброс
программой для разрешения/запрета
прерываний от флагов TI
или RI
ET1
IE.3
Бит разрешения
прерывания от таймера 1. Установка/сброс
программой для разрешения/запрета
прерываний от таймера 1.
EX1
IE.2
Бит разрешения
внешнего прерывания 1. Установка/сброс
программой для разрешения/запрета
прерываний.
ET0
IE.1
Бит разрешения
прерывания от таймера 0. Работает
аналогично IE.3.
EX0
IE.0
Бит разрешения
внешнего прерывания 0 Работает
аналогично IE.2.
Регистр приоритетов прерываний (IP)
Символ
Позиция
Имя и назначение
-
IР.7-IР.5
Не используются
PS
IР.4
Бит приоритета
УАПП. Установка/сброс программой для
присваивания прерыванию от УАПП
высшего/низшего приоритета
РТ1
1Р.З
Бит приоритета
таймера
1.
Установка/сброс программой присваивания
прерыванию от таймера
1
высшего/низшего приоритета
РХ1
IР.2
Бит приоритета
внешнего прерывания
1.
Установка/сброс программой для
присваивания высшего/низшего
приоритета внешнему прерыванию INT1/
РТО
IР.1
Бит приоритета
таймера
0. Работает
аналогично IP.3
РХО
IР.О
Бит приоритета
внешнего прерывания
0. Работает
аналогично IP.2
Карта
адресуемых бит в блоке регистров
специальных функций
Система подготовки программ i8051
Справочная информация
Псевдокоманды транслятора:
LIST,NOLIST
- управление листингом
ORG
<операнд> - установка счетчика
адресов
EQU
<операнд> - определение адреса
идентификатора
SET
<операнд> - аналогично EQU,
с возможной переустановкой в
программе
END
- конец программы
HEXFILE
<имя файла> - создание файла *.HEX
LISTFILE
<имя файла> - создание файла листинга
*.LST
DB
...
- определение однобайтных констант
DW
...
- определение двухбайтных констант
DS
<операнд> - резервирование памяти
в программе
Префиксы операндов:
LOW
- младший байт операнда
HIGH
- старший байт операнда
В Вашем распоряжении
программно-доступные регистры:
A, B,
PSW, SP, DPTR(DPH,DPL), P0, P1, P2, P3,
IP,
IE, TMOD, TCON, TH0,TL0, TH1,TL1, SCON, SBUF, PCON.
При этом возможны
и побитовые обращения к регистрам:
A, B,
PSW, P0, P1, P2, P3, IP, IE, TCON, SCON,
а также к ОЗУ с
адресами 20h-2Fh.
Например:
SETB
PSW.3
; третий бит регистра PSW
ANL
C,/P2.0
; младший бит регистра P2
MOV
C,23h.7
; старший бит в байте с адресом 23h
Существуют
следующие окна:
WATCH
-
доступно, если командой WS
(WatchpointSet)
были определены WАТСН-выражения.
Размер окна зависит от количества
WATCH-выражений.
LANGUAGE
-
используется для отображения
1) исходных текстов
загруженной программы;
2) соответствующих
им инструкций ассемблера;
Режим
отображения может быть изменен клавишами
Alt-View
(High
Level,
Mixed
или Assembler).
Переключение к этому окну осуществляется
клавишами Alt-L.
Самая нижняя линия окна служит командной
строкой.
По заглавной букве
доступны следующие команды:
Again
- повторяет последнюю Find,
-find
или Step
команду, включая аргументы.
Break
- создает/удаляет точку разрыва на
текущей позиции курсора.
Execute
- временно выводит в ЕХЕ - окно для
задания одной команды.
Find
- ищет в тексте программы строку вперед
от курсора.
-find
- то же назад от курсора.
Go_til
- запускает программу с текущего значения
программного счетчика.
Jump
- перемещает курсор на определенную
метку.
Pstep
- эквивалентно одному шагу в ЕХЕ-окне.
traceStep
- эквивалентно Т
в ЕХЕ-окне.
setTag
-
устанавливает метку.
SERIAL
- содержит информацию о текущем состоянии
последовательного порта микроконтроллера.
Горячие клавиши - Alt-S.
В случае ненадобности окно может быть
отключено клавишами Alt-V
S.
EXE
-
является контрольной панелью. Горячие
клавиши -Alt-E.
REGISTER
-
расположено в правой вертикальной зоне
экрана. Показывает текущее содержимое
регистров, стека, указателей стека,
счетчика циклов. Включается и отключается
комбинацией Alt-R.
HELP
-
окно содержит информацию-подсказку по
всем элементам DS51.
Система HELPa
очень развита и всеобъемлюща. Горячие
клавиши - Alt-H-I
или
F1.
Размер
окон EXE,
SERIAL,
LANGUAGE,
HELP
может быть изменен либо мышкой, либо
следующими комбинациями клавиш:
Аlt-стрелка_вниз
- уменьшить окно;
Аlt-стрелка_вверх
- увеличить окно;
Изменяется размер
лишь активного окна. Текущее активное
окно выделено подсветкой в заголовке.
Для
загрузки тестируемой программы в DS51
программа
должна существовать либо в OMF
- 51, либо в Intel
HEX
формате.
DS51
поддерживает следующие области памяти:
- 64К
программной памяти (CODE);
- 256
байт внутренней памяти данных IDATA;
- 128
байтов ОЗУ регистров специальных
функций (регистров управления встроенными
устройствами) SFR
RAM;
- 64К
внешней памяти данных XDATA;
-
побитово адресуемая RAM;
Регистр
IDATA
можно адаптировать к конкретному
микроконтроллеру, эмулируемому DS51
в пределах (128 - 256) байт.
Рассмотрим
наиболее часто употребляемые команды,
доступные в окне ЕХЕ;
-
Установка
32к внешней памяти
>МАР
0,0x7FFF
-
Загрузка
тестируемой программы
>LOAD
[NameProg]
- Список содержимого
внешней памяти
>МАР
0:
xdata
0000h
to
7FFEh
Начиная
с адреса 0 доступно 32к внешней памяти.
Попытки обратиться к адресам выше 7FFFh
будут расцениваться DS51
как ошибка.
- Просмотр области
памяти, расположенной по определенному
адресу
>D
[Идентификатор типа памяти]:[Адрес]
В
качестве идентификатора типа памяти
допустимо использовать следующие
символы; I,
X,
D,
В,
С.
-
Список всех глобальных переменных
программы NameProg
>DIR
[NameProg]
Следует список в
формате
[Adress]
.... [Name]
.. [Type]
- Список модулей
из которых состоит программа (включая
библиотечные)
>DIR
MODULE
-
Список локальных переменных функции
NameFunc
из модуля NameMod
>DIR
[NameMod]
. [NameFunc]
- Запуск программы
>G
- Выполнение одной
команды программы (при пошаговом
выполнении)
>Т
-
Выполнение программы до адреса функции
NameFunc
>G,
[NameFunc]
- Просмотр
содержимого переменных
>[ Имя переменной
]
Показывается
адрес переменной и ее значение
[Адрес] = [Значение]
Следует отдельно
рассмотреть случай, когда имя переменной
совпадает с зарезервированным словом.
Например
>BD
/* BD
- зарезервированное слово
BreakpointDisable
*/
Будет получено
сообщение об ошибке
ERROR
33: syntax
error
Необходимо
литерализировать зарезервированное
слово
>~BD
- Установка условных
точек разрыва
>BS
SUNDAY
new_record[6].
month.day
Программа
будет остановлена в случае присвоения
полю new_record[6].month.day
значения SUNDAY.
- Установка
безусловной точки разрыва
>В
При
этом курсор должен находиться в строке
окна LANGUAGE,
на которой устанавливается точка
разрыва.
- Установка точки
разрыва по адресу функции
>ВS
[Имя функции]
- Вывод определенных
точек разрыва
>BL
- Удаление точки
разрыва
>ВК
[Номер
точки разрыва]
-
Удаление
всех определенных точек разрыва
>ВК
*
-
Просмотр
содержимого функции
>U
[Имя
функции]
- Просмотр строки
программы
>G,
.[Имя программы]#[Номер строки]
- Установка
напряжения на выводе микроконтроллера
>[Имя
вывода] =
[Значение напряжения]
Допускаются
следующие имена выводов: PORT0
– 8
- Просмотр значений
напряжения на выводах микроконтроллера
>DIR
VTREG
- Вывод списка
доступных сигнальных функций
>SIGNAL
STATE
- Выход
из dScope
– 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
1.
PUBLIC
- провозглашает символ или метку видимыми
для других модулей, в которых они могут
быть декларированы как EXTERN.
Формат:
PUBLIC
Символ[,Символ,...]
2.
EXTERN
- декларирует символы и метки, описанные
в других модулях. Формат:
EXTERN
Тип_Сегмента (Символ), ...
Пример:
EXTERN
CODE
(PUT_CHAR),
DATA
(BUFFER)
3. NAME
- идентифицирует текущий программный
модуль.
Формат:
NAME
Имя_объектного_модуля
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.
P5.0
– G P5.4
- D
P5.1
– H P5.5
- C
P5.2
– F P5.6
- A
P5.3
– E P5.7
– B
0000H
-7FFFH – ПЗУ с
программой монитора
8000H
-9FFFH – Порт Р5 (для записи)
0C000H-0D7FFH
– ОЗУ пользователя ( фон-Неймана)
0D800H-0DFFFH
– ОЗУ монитора
Сегмент данных
DSEG AT
30H
ORG 30H
X1:
DS 1; Однобайтовая переменная X1
X2:
……………….; И так далее
……………….
Сегмент кода
СSEG AT
0C000H
ORG
0C100H
………………;
Текст программы
Блок клавиатуры
и индикации
Отладочная плата
1
32Министерство образования украины
«Однокристальный микроконтроллер i8051»
Структурная схема i8051
Типы команд i8051
Методы адресации
Блок регистров специальных функций(sfr)
Группа команд логических операций
Группа команд передачи управления
Группа команд операций с битами
Специальные символы
Условные обозначения
Регистр управления мощностью (pcon)
Таймер/счетчик событий
Схемотехника портов ввода/вывода i8051 Порт 0
Альтернативные функции порта 3
Адреса векторов прерываний
Отладчик dScope-51.
Эмуляция встроенной периферии.
Директивы Ассемблера а51
1)Директивы определения символов:
2) Директивы компоновки:
3) Директивы состояния и выбора сегментов:
Операции с адресами и данными.
Описание меток.
Назначение линий портов ввода-вывода контроллера отладочной платы
Назначение битов порта p5:
Распределение памяти монитора
Объявление абсолютных сегментов
2
31
3
30
4
29
5
28
6
27
7
26
8
25
9
24
10
23
11
22
12
21
13
20
14
19
15
18
16
17