ADD A, src – сложение без учета бита переноса
Src:
#const
Addr
Ri
@Ri, i=0,1
ADDC A, src – сложение с учетом бита переноса
Src:
#const
Addr
Ri
@Ri, i=0,1
SUBB A, src – вычитание с учетом заема
Src:
#const
Addr
Ri
@Ri, i=0,1
INC src/dst
Src:
a
Addr
Ri
DEC src/dst
Src:
a
Addr
Ri
INC dprt – увеличивает содержимое datapointer на 1
MUL A,B – умножение. Результат = Младший байт в аккумуляторе, старший – в бкумулляторе.
DIV A,B – деление. A – делимое –> частное. B – делитель –> остаток.
Логические операции обнуляют биты переноса
ANL dst, src –логическое умножение
Dst:
A
Addr
Ri
@Ri
Src:
#const
Addr
Ri
@Ri
SWAP A - обмен тетрадами (A[3-0], A[7-4])
RL A – сдвиг влево с переносом выходящего бита в бит Carry
RR A – сдвиг вправо с переносом выходящего бита в бит Carry
RLC A – сдвиг влево с переносом 7 бита в бит Carry; значение Carry переходит в 0 бит
RRC A – сдвиг вправо с переносом 0 бита в бит Carry; значение Carry переходит в 7 бит
CPL A – инверсия А
DA A – десятичная коррекция содержимого аккумулятора. При сложении чисел они должны быть двоично-десятично кодированными
55h + 77h = ССh
DA A -> 32h + CY = 1 -> 132
Пример
B2BCD –Конвертирование двоичного числа в двоично-десятичное
Пусть в А находится число от 0 до 255. ответ – 2 байта: сотни и десятки, единицы
B2BCD: MOV B, #064h; (100d)
DIV A, B;
MOV HUND, A;
MOV A, #0Ah;
XCH A, B;
DIV A, B;
SWAP A;
ORL A, B;
MOV ONEDEC, A;
RET;
Пример работы:
A B
FF 64
02 37
0A 37
37 0A
05 05
50 05
55 05
Команды управления
Передача управления без возврата
SJMP offset (8pазр) +128, -127
AJMP addr (11pазр) переход в рамках 2k
LJMP addr (16pазр)
Вызов с возвратом
ACALL addr (11разр)
LCALL addr (16разр)
RET – возврат
RETI – return from interruption. Возврат из обработчика прерывания со снятием запроса на прерывание.
JB bit, offset - Jump Bit
JNB bit, offset – Jump Not Bit
JC offset – Jump Carry
JNC offset
JZ offset
JNZ offset
JBC bit, offset; Jump Bit And Clear – неделимая операция
DJNZ src/dst, offset – DEC and Jump Not Zero – семафор
CJNE dst, src, offset - сравнение и переход если не 0. Содержимое dst не портится, но CY устанавливается.
Dst src
A #, addr
Ri #
Addr #
JMP @A+PC; - переход по содержимому аккумулятора (к программному счетчику добавляется содержимое аккумулятора
Битовые операции
MOVB bit, c
MOVB c, bit – с – carry, т.е. в качестве аккумулятора служит бит переноса
ANLB c, bit
ANLB c, \bit
ORLB c, bit
ORLB c, \bit
CPLB bit - инверсия
CLR bit - очистка
SETB bit – установка
Задание тактовой частоты – кварцевый резонатор
(((((((()))))))
С1, С2 – 22-47pF. Если частота > 3Мгц – обеспечивают стабильную работу
Сброс
(((())))
С и R надо выбрать таким образом, чтобы по достижении напряжения питания конденсатор заряжался. ~4.7 мкФ, ~5.1кОм
Лучше использовать супервизоры питания.
Красивое решение – триггер Шмидта
Порты ввода-вывода
Порт P1
По включению питания все защелки портов устанавливаются в 1.
Управление питанием
PCON – прямо адресуемый регистр управления питанием.
SMOD |
- |
- |
- |
GF1 |
GF0 |
PD – power down |
IDLE |
GF – флаги пользователя
SMOD – модификатор скорости обмена по каналу (1 – в 2 раза больше)
IDLE – холостой ход. ЗГ работает, программа не выполняется, но работают таймеры – счетчики, … Выход из режима IDLE по любому прерыванию и RESET
IDLE: ORL PCON, #01;
SJMP IDLE;
PD – Power down – режим пониженного энергопотребления. Не работает ЗГ. Работает только контроллер прерываний по внешним запросам. Выход по Int0, Int1, RESET.
(проп лекция)
· По программе
· Холостого хода (IDLE)
· Пониженного энергопотребления (Power Down)
· Насхемная эмуляция (ONCE). В нем процессор вообще не реагирует ни на что, кроме нажатия кнопки сброса
i8052 = i8051 +
PCON – прямо адресуемый регистр управления питанием.
SMOD |
- |
- |
POF |
GF1 |
GF0 |
PD |
IDLE |
POF устанавливается в 1, если происходит подача питания. Старт из холодного режима.
T2CON
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.