Az MSP430 a Texas Instruments 16 bites mikrokontrollereinek családja .
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.
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 parancsrendszertizenö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ódMint | 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. |
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áraMegjegyzé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.
Mikrokontrollerek | ||||||||
---|---|---|---|---|---|---|---|---|
Építészet |
| |||||||
Gyártók |
| |||||||
Alkatrészek | ||||||||
Periféria | ||||||||
Interfészek | ||||||||
OS | ||||||||
Programozás |
|