Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Команди пересилки даних мікроконтролера MCS51.




Ця група представлена 28 командами, їх короткий опис приведено в табл. 2, де також вказані тип команди (Т) у відповідності з табл. 1, її довжина в байтах (Б) та час виконання команди в машинних циклах (Ц).

Табл. 2. Команди передачі даних

Назва команди Мнемокод КОП Т Б Ц Операция
Пересилка даних з регістру Rn (n=0÷7) в аккумулятор A MOV A, Rn 11101rrr       (A) (Rn)
Пересилка даних з байту ad, що прямо адресується в аккумулятор А MOV A, ad         (A) (ad)
Пересилка даних з РПД @Ri (i=0,1) в аккумулятор А MOV A, @Ri 1110011i       (A) ((Ri))
Завантаження в аккумулятор константи MOV A, #d         (A) #d
Пересилка даних з акумулятора в регістр MOV Rn, A 11111rrr       (Rn) (A)
Пересилка даних з байту ad, що прямо адресується в регистр Rn (n=0÷7) MOV Rn, ad 10101rrr       (Rn) (ad)
Завантаження в регістр Rn (n=0÷7) константи MOV Rn, #d 01111rrr       (Rn) #d
Пересилка даних з акумулятора А в байт ad, що прямо адресується MOV ad, A         (ad) (A)
Пересилка даних з регістру Rn (n=0÷7) в байт ad, що прямо адресується MOV ad, Rn 10001rrr       (ad) (Rn)
Пересилка даних з байту ads в байт add MOV add, ads         (add) (ads)
Пересилка даних з РПД @Ri (i=0,1) в байт ad, що прямо адресується MOV ad, @Ri 1000011i       (ad) ((Ri))
Пересилка константи в байт ad, що прямо адресується MOV ad, #d         (ad) #d
Пересилка даних з аккумулятора А в РПД @Ri (i=0,1) MOV @Ri, A 1111011i       ((Ri)) (A)
Пересилка даних з байту ad, що прямо адресується в РПД @Ri (i=0,1) MOV @Ri, ad 0110011i       ((Ri)) (ad)
Пересилка константи в РПД @Ri (i=0,1) MOV @Ri, #d 0111011i       ((Ri)) #d
Завантаження даних в вказівник даних DPTR MOV DPTR, #d16         (DPTR) #d16
Пересилка даних з ПП в аккумулятор А MOVC A, @A + DPTR         (А) ((A) +(DPTR))
Пересилка даних з ПП в аккумулятор А MOVC A, @A + PC         (PC) (PC)+1, (A) ((A)+(PC))
Пересилка даних з ВПД @Ri (i=0,1) в аккумулятор А MOVX A, @Ri 1110001i       (A) ((Ri))
Пересилка даних з ВПД @Ri (i=0,1) в аккумулятор А MOVX A, @DPTR         (A) ((DPTR))
Пересилка в ВПД з аккумулятора MOVX @Ri, A 1111001i       ((Ri)) (A)
Пересилка даних з аккумулятора А в ВПД @Ri (i=0,1) MOVX @DPTR, A         ((DPTR)) (A)
Завантаження даних в стек PUSH ad         (SP) (SP) + 1, ((SP)) (ad)
Витягнення даних з стеку POP ad         (ad) (SP), (SP) (SP) - 1
Обмін вмістимого аккумулятора А з регістром Rn (n=0÷7) XCH A, Rn 11001rrr       (A) ↔ (Rn)
Обмін аккумулятора А з байтом ad, що прямо адресується XCH A, ad         (A) ↔ (ad)
Обмін аккумулятора А з байтом з РПД @Ri (i=0,1) XCH A, @Ri 1100011i       (A) ↔ ((Ri))
Обмін молодших тетрад аккумулятора А та байту РПД @Ri (i=0,1) XCHD A, @Ri 1101011i       (A0…3) ↔((Ri)0…3)

 

Більшість команд, приведених в табл. 2, можна представити у вигляді:

MOV “байт-приймач”, “байт-джерело”.

Команда пересилає дані з байту-джерела в байт-приймач. Вмістиме байту-джерела не змінюється. Ця команда не впливає на прапорці та інші регістри. Команда “MOV” допускає 15 комбінацій адресації байту-джерела та байту–приймача. Нижче наведено приклади цих комбінацій:

1) (A)=DCH, (R4)=54H,

MOV A, R4,

(A)=54H, (R4)=54H.

Вмістиме регістру R4 пересилається в аккумулятор А.

2) (A)=BFH, (40H)=15H

MOV A, 40H

(A)=15H, (40H)=15H

Вмістиме комірки ОЗП 40H пересилається в акумулятор А.

3) (R0)=3AH, (3AH)=1FH, (A)=24H,

MOV A, @R0,

(A)=1FH, (R0)=3AH, `(3AH)=1FH.

Вмістиме комірки ОЗП 3АН, яка адресується регістром R0, пересилається в аккумулятор А.

4) (A)=A5H=1010 0101B,

MOV A, #49H,

(A)=49H=0100 1001B.

Константа 49Н заноситься в аккумулятор А.

5) (А)=2DH, (R7)=5BH,

MOV R7, A,

(A)=2DH, (R7)=2DH.

Вмістиме регістру R7 пересилається в аккумулятор А.

6) (R2)=6DH, (P2)=CCH,

MOV R2, P2,

(R2)=CCH, (P2)=CCH.

Вмістиме порта P2 пересилається в регістр R2.

7) (R3)=FDH,

MOV R3, #49H

(R3)=49H.

Константа 49Н заноситься в регістр R3.

8) (A)=3CH, (P1)=BBH,

MOV P1, A,

(P1)=3CH, (A)=3CH.

Вмістиме аккумулятора А пересилається в порт Р1.

9) (R5)=57H, (30H)=9FH,

MOV 30H, R5,

(30H)=57H, (R5)=57H.

Вмістиме регістра R5 пересилається в комірку ОЗП 30Н.

10) (33H)=45H, (38H)=50H,

MOV 38H, 33H,

(38H)=45H, (33H)=45H.

Вмістиме комірки 33Н пересилається в комірку 38Н.

11) (R0)=25H, (52H)=DFH, (25H)=CCH

MOV 52H, @R0,

(52H)=CCH, (25H)=CCH, (R0)=25H.

Вмістиме комірки ОЗП 25Н, що адресується регістром R0, пересилається в комірку ОЗП 52Н.

12) (4FH)=8DH,

MOV 4FH, #13H

(4FH)=13H.

Константа 13Н заноситься в комірку ОЗП 4FH.

13) (R0)=40H, (40H)=6DH, (A)=88H,

MOV @R0, A,

(40H)=88H, (A)=88H, (R0)=40H.

Вмістиме аккумулятора А пересилається в комірку ОЗП 40Н, що адресується регістром R0.

14) (R1)=37H, (37H)=F5H, (P2)=8CH,

MOV @R1, P2,

(37H)=8CH, (P2)=8CH, (R1)=37H.

Вмістиме порта Р2 пересилається в комірку ОЗП 37Н, що адресується регістром R1.

15) (R0)=40H, (40H)=76H,

MOV @R0, #AAH,

(R0)=40H, (40H)=AAH.

В комірку 40Н, що адресується регістром R0, засилається константа ААН.

16) (DPTR)=35ACH,

MOV DPTR, #1456H,

(DPTR)=1456H, (DPH)=14H, (DPL)=56H.

В регістр DPTR (вказівник даних) завантажується 16-бітна константа 1456Н, вказана в другому та третьому байтах команди. Другий байт команди завантажується в старший байт вказівника даних (DPH), а третій байт – в молодший байт вказівника даних (DPL). Ця команда на прапорці не впливає і є єдиною командою, яка одночасно завантажує 16 біт даних.

17) MOVC A, @A+DPTR

18) MOVC A, @A+PC

Ці команди завантажують в аккумулятор байтом коду чи константою з ПП. Адрес цього байту обчислюється як сума 8-бітного вихідного вмістимого аккумулятора без знаку та вмістимого 16-бітного регістру. В якості 16-бітного регістру може бути як вказівник даних DPTR так і програмний лічильник PC. У випадку, коли використовується PC, програмний лічильник збільшується до адресу наступної команди, перед тим як його вмістиме додається з вмістимим аккумулятора. 16-бітне додавання виконується так, що перенос з молодших восьми біт може поширюватися через старші біти. Ця команда на прапорці не впливає.

(A)=1BH, (DPTR)=1020H, ПП(103BH)=48H, ОЗП(103BН)=88Н,

MOVС A, @A+DPTR

(A)=48H, (DPTR)=1020H.

(A)=FAH, (PC)=0289H, ПП(0384Н)=9BH,

MOVC A, @A+PC

(A)=9BH, (PC)=028AH.

19) MOVX A, @Ri.

20) MOVX A, @DPTR.

Ці команди пересилають дані з ЗПД (зовнішньої пам’яті даних) в аккумулятор. Вони відрізняються тим, що забезпечують 8-бітну або 16-бітну непряму адресацію до ЗПД. В першому випадку, вмістиме R0 або R1 вибраного банку регістрів забезпечує 8-бітний адрес, який мультиплексується з даними порта P0. Якщо використовуються ОЗП ненабагато більші, ніж 256 байт, то для фіксації старших байтів адресу можна використовувати будь-які інші виходи портів, які переключаються командою, розміщеною перед командою MOVX. В другому випадку, при виконанні команди MOVX, вказівник даних генерує 16-бітний адрес. Порт P2 виводить старші 8 біт адресу (DPH), а порт P0 мультиплексує молодші 8 біт (DPL) з даними. Остання команда є більш швидкою та ефективною при доступі до великих масивів даних (до 64K байт), так як для встановлення портів виводу не потрібно додаткових команд.

21) MOVX @Ri, A.

22) MOVX @DPTR, A.

Ці команди пересилають дані з аккумулятора в ЗПД.

(A)=95H, (R1)=FDH, ЗПД(FDH)=00H,

MOVX @R1, A,

(A)=95H, (R1)=FDH, ЗПД(FDH)=95H.

(A)=97H, (DPTR)=1FFFH, ЗПД(1FFFH)=00H,

MOVX @DPTR, A,

(A)=97H, (DPTR)=1FFFH, ЗПД(1FFFH)=97H.

23) PUSH ad

Команда “запису в стек” збільшує вказівник стеку SP на одиницю, і після цього, вмістиме вказаної змінної, що прямо адресується, копіюється в комірку ВПД, що адресується з допомогою вказівника стеку. На прапорці ця команда не впливає і використовується для запису проміжних даних в стек.

(SP)=09H, (DPTR)=4567H

PUSH DPH

PUSH DPL

(SP)=0BH, ВПД(0AH)=45H, ВПД(0BH)=67H, (DPTR)=4567H.

24) POP ad

Команда “читання з стеку” зчитує вмістиме комірки ВПД, яка адресується з допомогою вказівника стеку в комірку ВПД, що прямо адресується, при цьому, вказівник стеку зменшується на одиницю. Ця команда не впливає на прапорці і використовується для читання з стеку проміжних даних.

(SP)=32H, ВПД(32H)=12H, ВПД(31H)=56H,

(DPH)=01H, (DPL)=ABH, ВПД(30H)=20H,

POP DPH

POP DPL

(SP)=30H, (DPH)=12H, (DPL)=56H,

ВПД(32H)=12H ВПД(31H)=56H.

25) XCH A, Rn

26) XCH A, ad

27) XCH A, @Ri

Останні команди здійснюють обмін між вмістимим аккумулятора та вмістимим джерела, вказаного в команді. Операнд джерела може використовувати такі режими адресації: регістрову, пряму та непряму.

(A)=3CH, (R4)=15H,

XCH A, R4,

(A)=15H, (R4)=3CH.

(A)=FFH, (P3)=DAH,

XCH A, P3

(A)=DAH, (P3)=FEH.

(R1)=39H, ВПД(39H)=44H, (A)=BCH,

XCH A, @R1

ВПД(39H)=BCH, (A)=44H.

28) XCHD A, @Ri

Команда “обмін тетрадою” виконує обмін молодшої тетради (біти 3...0) акумулятора А з вмістимим тетради комірки ВПД, непряма адресація до якої здійснюється з допомогою вказаного регістру. На старші біти (біти 7...4) ця команда не впливає.

(R0)=55H, (A)=89H, ВПД(55Н)=А2Н,

XCHD A, @R0,

(A)=82H, ВПД(55H)=A9H.

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...