MSP430

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2015. július 2-án felülvizsgált verziótól ; az ellenőrzések 12 szerkesztést igényelnek .

Az MSP430 a Texas Instruments  16 bites mikrokontrollereinek családja .

Teremtéstörténet és speciális jellemzők

Az első MSP430 rövidítésű vezérlő 1992 -ben jelent meg [1] . A TI bejelentette, hogy a 70-es és 80- as években népszerű PDP-11 architektúrához közeli utasításrendszerrel rendelkező mikrokontrollert kíván létrehozni .

Az MSP430 mag 16 bites. Különféle címzési módszerekkel igyekeztek a parancsrendszert a lehető legortogonálisabbá tenni. Az utasításrendszer ortogonalitása azt jelenti, hogy bármely utasításban az operandus megszólításának bármely módja használható: konstans, közvetlen regiszterből vagy memóriából, közvetett stb.

A család születésekor a fő hangsúly az energiafelhasználás csökkentésén volt. Azóta azonban az energiatakarékosság állandó gondolattá vált az elektronikai technikában, és az MSP430-at más, saját architektúrájú gyártók is aktívan kiszorítják erre a talapzatra.

Az MSP430 család legfontosabb különbsége és "hívókártyája" abban rejlik, hogy bármely periféria modult a magról aszinkron módon lehet órajelezni. Az egychipes mikrokontrollerek túlnyomó többségében a periféria szinkronban van a maggal (néhány speciális csomópont kivételével). Ez a funkció lehetővé teszi az egyes modulok sebességének (és így fogyasztásának) rugalmas szabályozását. Emellett az USB interfész modul is egyedülálló: külön táptartománya van, ami leegyszerűsíti az USB interfésszel rendelkező akkumulátoros eszközök fejlesztését.

Ma az MSP430 család egylapkás mikrokontrollerek széles választékát kínálja flash memóriával 512 kilobájtig és RAM -mal 64 kilobájtig. A mag órajele 25 MHz-ig terjed.

MSP430 Command System

Az MSP430 Von Neumann architektúrával rendelkezik, egyetlen címtérrel a parancsok és adatok számára. A memória bájtonként és szavanként is megszólítható. A 16 bites szavak tárolási sorrendje a legfiatalabbtól a legidősebbig terjed ( angolul  little-endian ).

A processzor 16 darab 16 bites ortogonális regisztert tartalmaz. Az R0 regisztert programszámlálóként ( Program Counter - PC ), az R1 regisztert veremmutatóként ( angolul Stack  Pointer - SP ), az R2 regisztert állapotregiszterként ( Status Register - SR ), az R3 pedig speciálisként használjuk. konstans generátornak nevezett regiszter ( eng. Constant Generator - CG ), az R2 konstans generátorként is használható. A konstansgenerátor az utasítás teljes hosszának csökkentésére szolgál, mivel az állandót az opkódban lévő implicit reprezentációval látják el. Az R4-R15 regisztereket általános célú regiszterként használják.    

Az utasításkészlet nagyon egyszerű, és 27 utasításból, 24 emulált utasításból áll. Az utasításoknak van 8 bites (byte) és 16 bites (szó) operanduskezelési formája is. A fekete-fehér bit vezérli ezt a funkciót.

MSP430 parancsrendszer
tizenöt tizennégy 13 12 tizenegy tíz 9 nyolc 7 6 5 négy 3 2 egy 0 Csapat
0 0 0 egy 0 0 opcode F/W Mint Regisztráció Egyoperandusú utasítások
0 0 0 egy 0 0 0 0 0 F/W Mint Regisztráció RRC Forgatás jobbra a szállításon keresztül
0 0 0 egy 0 0 0 0 egy 0 Mint Regisztráció SWPB bájtcsere
0 0 0 egy 0 0 0 egy 0 F/W Mint Regisztráció RRA Forgatás jobbra aritmetika
0 0 0 egy 0 0 0 egy egy 0 Mint Regisztráció SXT A bájt kiterjesztése szóra
0 0 0 egy 0 0 egy 0 0 F/W Mint Regisztráció PUSH Tolja az operandust a veremre
0 0 0 egy 0 0 egy 0 egy 0 Mint Regisztráció CALL Szubrutin hívása; mentse a PC-t a verembe, és töltse be a számítógépet az új értékkel
0 0 0 egy 0 0 egy egy 0 0 0 0 0 0 0 0 RETI Visszatérés a megszakításból; Tegye fel az SR-t és a PC-t a veremből
0 0 egy állapot 10 bites előjeleltolás Feltételes ág; PC=PC+2×offset
0 0 egy 0 0 0 10 bites előjeleltolás JNE / JNZ Ugrás, ha nem_egyenlő/nem_nulla
0 0 egy 0 0 egy 10 bites előjeleltolás JEQ / JZ Ugrás, ha egyenlő/nulla
0 0 egy 0 egy 0 10 bites előjeleltolás JNC / JLO Ugrás, ha not_carry/below (előjel nélküli összehasonlítás)
0 0 egy 0 egy egy 10 bites előjeleltolás JC / JHS Ugrás, ha hordozható/magasabb vagy ugyanaz (előjel nélküli összehasonlítás)
0 0 egy egy 0 0 10 bites előjeleltolás JN Ugrás, ha negatív
0 0 egy egy 0 egy 10 bites előjeleltolás JGE Ugrás, ha nagyobb_vagy_egyenlő
0 0 egy egy egy 0 10 bites előjeleltolás JL Ugrás, ha kevesebb
0 0 egy egy egy egy 10 bites előjeleltolás JMP ugrás (azonnali)
opcode forrás Hirdetés F/W Mint rendeltetési hely Két operandus aritmetika
0 egy 0 0 forrás Hirdetés F/W Mint rendeltetési hely MOV Forrás küldése a célállomásra
0 egy 0 egy forrás Hirdetés F/W Mint rendeltetési hely HOZZÁADÁS Forrás hozzáadása a célhoz
0 egy egy 0 forrás Hirdetés F/W Mint rendeltetési hely ADDC Forrás_és_átvitel hozzáadása a célhoz
0 egy egy egy forrás Hirdetés F/W Mint rendeltetési hely SUBC Forrás kivonása a célból (szállítással)
egy 0 0 0 forrás Hirdetés F/W Mint rendeltetési hely SUB Vonja ki a forrást a célból
egy 0 0 egy forrás Hirdetés F/W Mint rendeltetési hely CMP Hasonlítsa össze (vonja ki) a forrást a céllal
egy 0 egy 0 forrás Hirdetés F/W Mint rendeltetési hely DADD Tizedes A forrás és a cél tizedes összeadása (átvitellel)
egy 0 egy egy forrás Hirdetés F/W Mint rendeltetési hely BIT A forrás és a cél bit ellenőrzése (ÉS művelet).
egy egy 0 0 forrás Hirdetés F/W Mint rendeltetési hely BIC Bit flush (dest &= ~src)
egy egy 0 egy forrás Hirdetés F/W Mint rendeltetési hely BIS bitbeállítás (logikai VAGY)
egy egy egy 0 forrás Hirdetés F/W Mint rendeltetési hely XOR Exkluzív vagy forrás-cél
egy egy egy egy forrás Hirdetés F/W Mint rendeltetési hely ÉS logikai ÉS forrás céllal (dest &= src)

Minden utasítás 16 bites. 4 operandus címzési módszer, 2 bitben az As mezőként definiálva.

As mező – Regisztrált, indexelt, közvetett-regisztrált, közvetett-regisztrált utólagos dekrementtel. A Hirdetés mező két címzési módot határoz meg - a regisztert és az indexet.

MSP430 Címzési mód
Mint Regisztráció Szintaxis Leírás
00 n R n Regisztráció. Az operandus az R n egyik regiszterének tartalma .
01 n x (R n ) index. Az operandus R n + x címen van a memóriában .

Az X-szó az aktuális parancs után van.

tíz n @Rn _ Közvetett regiszter. Az operandus az R n regiszterben található címen található a memóriában .
tizenegy n @ Rn + Indirekt regiszter autoinkrementtel. A fekete-fehér bit értékétől függően az R n regiszter értéke a művelet befejezése után 1-gyel vagy 2-vel nő.
Címzési módok R0 használatakor (PC)
01 0 (PC) CÍMKE Rokon (karakter). x(PC) A memória operandusa PC+ x esetén .
tizenegy 0 (PC) # x Közvetlen. @PC+ Az x-word operandus címe az aktuális utasítás után.
R2 (SR) és R3 (CG) használata, speciális dekódolási mód
01 2 (SR) & címke Abszolút. Az operandus a memóriában az x -ből vett címen .
tíz 2 (SR) #négy Állandó 4.
tizenegy 2 (SR) #nyolc Állandó 8.
00 3 (CG) #0 Állandó 0.
01 3 (CG) #egy Állandó 1. bájtos műveletekhez.
tíz 3 (CG) #2 Konstans 2.
tizenegy 3 (CG) #-egy Konstans −1 vagy 0xFFFF.

Mnemonika emulált parancsokhoz

Az MSP430 assembler által támogatott egyéb utasítások a főbb utasításokból jönnek létre, és emuláltnak nevezik őket (a beszerzés módja zárójelben van). Az assembler által támogatott emulált utasítások száma összesen 24.

CLRZ - Processzorállapot-regiszter törlése (PSW) Z-jelző (BIC #2,SR) CLRN - Processzorállapot-regiszter törlése (PSW) Flag N (BIC #4,SR) CLRC - Processzorállapot-regiszter törlése (PSW) C jelző (BIC -szám) 1,SR) SETZ - A processzorállapot-regiszter (PSW) Z jelzőjének beállítása ( BIS #2,SR ) SETN - A processzorállapot-regiszter (PSW) N jelzőjének beállítása ( BIS #4,SR ) SETC - A processzorállapot-regiszter C jelzőjének beállítása Processzor állapotregiszter (PSW) (BIS # 1,SR) EINT - megszakítások engedélyezése ( BIC #8,SR ) DINT - megszakítások letiltása ( BIS #8,SR ) CLR dst - Operandus törlése ( MOV #0,dst ) TST dst - Az operandus nulla ellenőrzése ( CMP #0,dst ) INV dst - Operandus bitek invertálása ( XOR #-1,dst ) ADC dst - átvitel hozzáadása az operandushoz ( ADDC #0,dst ) DADC dst - decimális átvitel hozzáadása a rendeltetési helyhez ( DADD #0,dst ) SBC dst - az átvitel kivonása az operandusból ( SUBC #0,dst) INC dst - operandus növekménye ( ADD #1,dst ) DEC dst - operandus csökkenése ( SUB #1,dst ) INCD dst - növelése 2 operandusszal ( ADD #2,dst ) DECD dst - csökkentése 2 operandusszal ( SUB #2, dst) RLA dst - az operandus balra eltolása, a hordozó jelző a felső bitből kerül kitöltésre, és az eredmény alsó bitje -0 ( ADD dst,dst ) RLC dst - az operandus balra eltolása carry segítségével ( ADDC dst,dst ) RET - visszatérés a szubrutinból ( MOV @sp+,pc ) POP dst - pop operandus veremből ( MOV @sp+,dst ) BR dst – programugrás operandussal (MOV dst,pc) NOP – nincs művelet (MOV r3,r3) más műveletek is lehetségesek a programkód-végrehajtási késleltetés generálására

Megjegyzés: az írási parancsok formája az operandusok bájt/szó típusának feltüntetése nélkül van megadva.

Az assembler által támogatott parancsformátum az emlékeztetőben jelzi a feldolgozott adatok típusát.

Jegyzetek

  1. STEPHEN EVANCZUK. A valaha volt  legnépszerűbb  MCU -k ? . https://www.edn.com/ (2013. augusztus 20.). Letöltve: 2021. január 15. Az eredetiből archiválva : 2021. június 9.

Linkek

Fordítók és összeállítók

Emulátorok

Hasznos linkek