Скачиваний:
21
Добавлен:
01.05.2014
Размер:
284.67 Кб
Скачать

4.1.6. Последовательный порт

Последовательный порт, который также называют универсальным асинхронным приемопередатчиком (УАПП), предназначен для приема и передачи информации в последовательной форме (младшими битами вперед). Порт обеспечивает полный дуплексный режим обмена, то есть позволяет работать одновременно на выдачу и на прием информации.

В состав УАПП входят принимающий и передающий сдвигающие регистры, а также буферный регистр SBUF приемопередатчика, через который программно доступны как принимающий, так и передающий регистры. Запись байта в регистр SBUF приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Порт позволяет начинать прием нового байта до того, как из приемного регистра считан предыдущий байт, однако, если первый байт еще не считан к тому моменту, когда закончится прием второго байта, то он будет потерян.

УАПП может работать в четырех различных режимах.

Режим 0. Последовательная информация передается и принимается 8-битными посылками через вывод RXD входа приемника. Через вывод TXD выхода передатчика выдаются тактовые импульсы, сопровождающие каждый бит. Таким образом в данном режиме информация записывается/считывается синхронно с тактовыми импульсами. Скорость обмена фиксирована и составляет 1/12 частоты тактового генератора.

Режим 1. В этом режиме посылка содержит 10 бит, которые передаются (через TXD) либо принимаются (через RXD) в следующей последовательности:

старт-бит (логический "0");

8 бит данных (младший бит первым);

стоп-бит (логическая "1").

При приеме стоп-бит заносится в разряд RB8 регистра SCON. Скорость обмена задается пользователем, для чего используется таймер/счетчик 1.

Режим 2. В этом режиме каждая посылка содержит 11 бит, которые передаются (через TXD) и/или принимаются (через RXD) в следующей последовательности:

старт-бит (логический "0");

8 бит данных (младший бит первым);

программируемый 9-й бит данных;

стоп-бит (логическая "1").

При передаче 9-й бит данных (размещается в разряде ТВ8 регистра SCON) может принимать фиксированное значение 0 или 1, либо формироваться программно, например, для контроля передаваемого байта по четности (в этом случае в него может быть помещено значение флага паритета из регистра PSW).

При приеме 9-й бит данных поступает в разряд RB8 регистра SCON. Скорость обмена в режиме 2 составляет 1/64 или 1/32 частоты внешнего тактового генератора и зависит от состояния бита SMOD (старший бит в регистре специального назначения PCON). Если SMOD=0 (устанавливается по сбросу МК), то скорость обмена составляет 1/64 частоты внешнего тактового генератора. Если SMOD=1, То скорость обмена составляет 1/32 частоты тактового генератора.

Режим 3. Данный режим совпадает с режимом 2, за исключением частоты приема/передачи, которая управляется программно с помощью таймера/счетчика 1.

Для задания режима работы последовательного порта используются регистры SCON и PCON.

4.1.7. Система команд

Базовая система команд МК семейства MCS-51 включает 111 команд, которые можно разделить на пять функциональных групп:

  • команды пересылки данных;

  • арифметических операций;

  • логических операций;

  • операций с битами;

  • команды передачи управления.

Полный перечень команд приведен в таблице 4.2. Для задания источников и приемников операндов в командах используются пять режимов адресации: регистровая, прямая, косвенно-регистровая, непосредственная и базово-индексная.

Регистровая адресация. В качестве источника/приемника операнда используются: аккумулятор А, регистр-расширитель В, аккумулятор А, регистр-расширитель В, регистры R0-R7 текущего банка рабочих регистров, регистр-указатель DPTR.

Прямая адресация. Позволяет адресовать ячейки встроенного ОЗУ данных и регистры специального назначения. Например, команда MOV A, 30h пересылает в аккумулятор содержимое ячейки встроенного ОЗУ с адресом 30h.

Адреса регистров специального назначения приведены выше в табл. 2.2. Команда MOV R1, P0, пересылающая содержимое порта Р0 в регистр R1, эквивалентна команде MOV R1, 80h (т. к. порт Р0 имеет адрес 80h), но первая запись более наглядна.

Косвенно-регистровая адресация.Позволяет обращаться к любым ячейкам как встроенного так и внешнего ОЗУ данных. Ячейки встроенного ОЗУ адресуются косвенно через регистры R0 или R1 текущего банка. Например, команда MOV A,

Табл.4.2

Система команд микроконтроллеров 8xC51

Мнемокод

Число байт

Число

циклов

Операция

Команды пересылки данных

MOV A,Rn

MOV A,ad

MOV A,@Ri

MOV A,#d

MOV Rn,A

MOV Rn,ad

MOV Rn,#d

MOV ad,A

MOV ad,Rn

MOV add,ads

MOV ad,@Ri

MOV ad,#d

MOV @Ri,A

MOV @Ri,ad

MOV @Ri,#d

MOV DPTR,#d16

MOVC A,@A+DPTR

MOVC A,@A+PC

MOVX A,@Ri

MOVX A,@DPTR

MOVX @Ri,A

MOVX @DPTR,A

PUSH ad

POP ad

XCH A,Rn

XCH A,ad

XCH A,@Ri

XCHD A,@Ri

1

2

1

2

1

2

2

2

2

2

3

2

3

1

2

2

3

1

1

1

1

1

1

1

2

2

1

2

1

1

1

1

1

2

1

1

2

2

2

2

1

2

1

2

2

2

2

2

2

2

2

2

1

1

1

1

(A)(Rn)

(A) (ad)

(A) ((Ri))

(A)  #d

(Rn) (A)

(Rn) (ad)

(Rn) #d

(ad) (A)

(ad) (Rn)

(add) (ads)

(ad) ((Ri))

(ad)  #d

((Ri))  (A)

((Ri)) (ad)

((Ri))  #d

(DPTR)  #d16

(A) ((A)+(DPTR))

(PC) (PC)+1,(A) ((A)+(PC))

(A) ((Ri))

(A) ((DPTR))

((Ri)) (A)

((DPTR)) (A)

(SP) (SP)+1,((SP)) (ad)

(ad) (SP),(SP) (SP)-1

(A)(Rn)

(A) (ad)

(A) ((Ri))

(A0-3) ((Ri)0-3)

Команды арифметических операций

ADD A,Rn

ADD A,ad

ADD A,@Ri

ADD A,#d

ADDC A,Rn

ADDC A,ad

ADDC A,@Ri

ADDC A,#d

DA A

SUBB A,Rn

SUBB A,ad

SUBB A,@Ri

SUBB A,#d

1

2

1

2

1

2

1

2

1

1

1

2

1

1

1

1

1

1

1

1

1

1

1

1

1

1

(A) (A)+(Rn)

(A) (A)+(ad)

(A) (A)+((Ri))

(A) (A)+ #d

(A) (A)+(Rn)+(C)

(A) (A)+(ad)+(C)

(A) (A)+((Ri))+(C)

(A) (A)+ #d +(C)

Десятичная коррекция

(A) (A)-(C)-(Rn)

(A) (A)-(C)-(ad)

(A) (A)-(C)-((Ri))

(A) (A)-(C)- #d

Продолжение табл. 4.2

Мнемокод

Число байт

Число

циклов

Операция

INC A

INC Rn

INC ad

INC @Ri

INC DPTR

DEC A

DEC Rn

DEC ad

DEC @Ri

MUL AB

DIV AB

1

1

2

1

1

1

1

2

1

1

1

1

1

1

1

2

1

1

1

1

4

4

(A) (A)+1

(Rn) (Rn)+1

(ad) (ad)+1

((Ri)) ((Ri))+1

(DPTR) (DPTR)+1

(A) (A)-1

(Rn) (Rn)-1

(ad) (ad)-1

((Ri)) ((Ri))-1

(B)(A) (A)*(B)

(A).(B) (A)/(B)

Команды логических операций

ANL A,Rn

ANL A,ad

ANL A,@Ri

ANL A,#d

ANL ad,A

ANL ad,#d

ORL A,Rn

ORL A,ad

ORL A,@Ri

ORL A,#d

ORL ad,A

ORL ad,#d

XRL A,Rn

XRL A,ad

XRL A,@Ri

XRL A,#d

XRL ad,A

XRL ad,#d

CLR A

CPL A

RL A

RLC A

RR A

RRC A

SWAP A

1

2

1

2

2

3

1

2

1

2

2

3

1

2

1

2

2

3

1

1

1

1

1

1

1

1

1

1

1

1

2

1

1

1

1

1

2

1

1

1

1

1

2

1

1

1

1

1

1

1

(A) (A)&(Rn)

(A) (A)&(ad)

(A) (A)&((Ri))

(A) (A)& #d

(ad) (ad)&(A)

(ad) (ad)& #d

(A) (A)(Rn)

(A) (A) (ad)

(A) (A) ((Ri))

(A) (A)  #d

(ad) (ad) (A)

(ad) (ad)  #d

(A) (A)(Rn)

(A) (A)(ad)

(A) (A)((Ri))

(A) (A) #d

(ad) (ad)(A)

(ad) (ad) #d

(A)  0

(A) (/A)

Циклический сдвиг (A) влево

Сдвиг (A) влево через флаг C

Циклический сдвиг (A) вправо

Сдвиг (A) вправо через флаг C

(A0-3)(A4-7)

Команды битовых операций

CLR C

CLR bit

SETB C

SETB bit

CPL C

CPL bit

ANL C,bit

ANL C,/bit

1

2

1

2

1

2

2

2

1

1

1

1

1

1

2

2

(C)  0

(b)  0

(C)  1

(b)  1

(C) (/C)

(b) (/b)

(C) (C)&(b)

(C) (C)&(/b)

Продолжение табл. 4.2

Мнемокод

Число байт

Число

циклов

Операция

ORL C,bit

ORL C,/bit

MOV C,bit

MOV bit,C

2

2

2

2

2

2

1

2

(C)(C)(b)

(C)(C)(/b)

(C)(b)

(b)(C)

Команды передачи управления

LJMP ad16

AJMP ad11

SJMP rel

JMP @A+DPTR

JZ rel

JNZ rel

JC rel

JNC rel

JB bit,rel

JNB bit,rel

JBC bit,rel

DJNZ Rn,rel

DJNZ ad,rel

CJNE A,ad,rel

CJNE A,#d,rel

CJNE Rn,#d,rel

CJNE @Ri,#d,rel

LCALL ad16

ACALL ad11

RET

RETI

NOP

3

2

2

1

2

2

2

2

3

3

3

2

3

3

3

3

3

3

2

1

1

1

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

1

(PC)  ad16

(PC) (PC)+2,(PC0-10)  ad11

(PC) (PC)+2,(PC) (PC)+rel

(PC) (A)+(DPTR)

(PC) (PC)+2,если (A)= 0,то

(PC) (PC)+rel

(PC) (PC)+2,если (A)0,то

(PC) (PC)+rel

(PC) (PC)+2,если (C)=1,то

(PC) (PC)+rel

(PC) (PC)+2,если (C)=0,то

(PC) (PC)+rel

(PC)  (PC)+3,если (b)=1,то

(PC) (PC)+rel

(PC) (PC)+3,если (b)=0,то

(PC) (PC)+rel

(PC) (PC)+3,если (b)=1,то

(b)  0 и (PC) (PC)+rel

(PC) (PC)+2,(Rn) (Rn)-1, если(Rn)0,то(PC) (PC)+rel

(PC) (PC)+2,(ad) (ad)-1, если(ad)0,то(PC) (PC)+rel

(PC)  (PC)+3,если (A)(ad), то(PC)  (PC)+rel

(PC) (PC)+3,если (A)  #d, то(PC) (PC)+rel

(PC) (PC)+3,если (Rn)  #d, то(PC) (PC)+rel

(PC) (PC)+3,если ((Ri))#d, то(PC) (PC)+rel

(PC) (PC)+3,(SP) (SP)+1,

((SP)) (PC0-7),(SP)(SP)+1,

((SP)) (PC8-15),(PC) ad16

(PC) (PC)+2,(SP) (SP)+1,

((SP))(PC0-7),(SP)(SP)+1,

((SP))(PC8-15),(PC0-10)  ad11

(PC) (PC)+1

@R0 пересылает в аккумулятор содержимое ячейки встроенного ОЗУ данных, адрес которой хранится в регистре R0.

Ячейки внешней памяти адресуются через регистры R0, R1 или через регистр-указатель DPTR. В первом случае содержимое регистра R0 или R1

определяет младший байт адреса ячейки внешней памяти данных. При этом старший байт адреса может задаваться с помощью порта 2. Примером команды с косвенно-регистровой адресацией к внешней памяти является MOVX A, @R0.

Во втором случае для адресации внешней памяти используется 16-и разрядный регистр-указатель данных DPTR. Например, команда MOVX @DPTR, A пересылает содержимое аккумулятора в ячейку внешней памяти данных, адрес которой записан в регистре DPTR.

Непосредственная адресация. Одним из операндов является константа, заданная как часть машинного кода команды. Непосредственным операндам должен предшествовать префикс «#». Например, команда MOV A, #03h загружает в аккумулятор шестнадцатеричную константу 03h.

Базово-индексная адресация. Используется для доступа к константам и таблицам, располагающимся в памяти программ. Адрес ячейки памяти программ, к которой выполняется обращение, определяется как сумма содержимого аккумулятора и содержимого либо регистра-указателя DPTR, либо программного счетчика РС. Например, команда MOVC A, @A+DPTR загружает аккумулятор содержимым ячейки памяти программ, адрес которой является суммой содержимого аккумулятора (до выполнения команды) и содержимого регистра-указателя DPTR.

Соседние файлы в папке Материалы по микроконтроллерам