MSP430

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 2. juli 2015; checks kræver 12 redigeringer .

MSP430  er en familie af 16-bit mikrocontrollere fra Texas Instruments .

Skabelsehistorie og særlige kendetegn

Den første controller med forkortelsen MSP430 dukkede op i 1992 [1] . TI annoncerede sit ønske om at skabe en mikrocontroller med et instruktionssystem tæt på PDP-11- arkitekturen populær i 70'erne og 80'erne .

MSP430 kerne er 16-bit. De forsøgte at gøre kommandosystemet så ortogonalt som muligt med en række forskellige adresseringsmetoder. Ortogonaliteten af ​​instruktionssystemet betyder, at i enhver instruktion kan enhver metode til adressering af operanden bruges: en konstant, direkte fra et register eller hukommelse, indirekte osv.

På tidspunktet for familiens fødsel var hovedfokus på at reducere energiforbruget. Men siden da er energibesparelse blevet en fast idé inden for elektronisk teknologi, og MSP430 bliver aktivt presset ud på denne piedestal af andre producenter med deres egne arkitekturer.

Den vigtigste forskel og "telefonkort" i MSP430-familien er evnen til at clocke ethvert perifert modul asynkront fra kernen. I langt de fleste single-chip mikrocontrollere er periferien synkron med kernen (med undtagelse af nogle specielle noder). Denne funktion giver dig mulighed for fleksibelt at styre hastigheden (og dermed forbruget) af hvert modul. Derudover er USB -interfacemodulet også unikt: Det har et separat strømdomæne, som forenkler udviklingen af ​​batteridrevne enheder med et USB-interface.

I dag tilbyder MSP430-familien en bred vifte af single-chip mikrocontrollere med flashhukommelse fra enheder op til 512 kilobyte og RAM op til 64 kilobyte. Kerne-urhastigheder op til 25 MHz.

MSP430 kommandosystem

MSP430 har en Von Neumann -arkitektur med et enkelt adresseområde til kommandoer og data. Hukommelse kan adresseres både byte-for-byte og ord-for-ord. Lagringsrækkefølgen for 16-bit ord er fra den yngste til den ældste ( engelsk  little-endian ).

Processoren indeholder 16 16-bit ortogonale registre. R0 registret bruges som programtæller ( Program Counter - PC ), R1 registret som stack pointer ( English Stack  Pointer - SP ), R2 registret som statusregister ( Status Register - SR ), og R3 som en speciel register kaldet konstant generator ( eng. Constant Generator - CG ), R2 kan også bruges som konstant generator. Konstantgeneratoren bruges til at reducere den samlede længde af instruktionen på grund af den implicitte repræsentation af konstanten i opkoden. Registrene R4 til R15 bruges som registre til generelle formål.    

Sættet af instruktioner er meget enkelt og repræsenteres af 27 instruktioner, 24 emulerede instruktioner. Instruktioner har både 8-bit (byte) og 16-bit (ord) operandhåndteringsformer. S/H-bitten styrer denne funktion.

MSP430 kommandosystem
femten fjorten 13 12 elleve ti 9 otte 7 6 5 fire 3 2 en 0 Hold
0 0 0 en 0 0 opkode S/H Som Tilmeld Enkelt Operand Instruktioner
0 0 0 en 0 0 0 0 0 S/H Som Tilmeld RRC Roter lige gennem bære
0 0 0 en 0 0 0 0 en 0 Som Tilmeld SWPB Byte Exchange
0 0 0 en 0 0 0 en 0 S/H Som Tilmeld RRA Rotationshøjre aritmetik
0 0 0 en 0 0 0 en en 0 Som Tilmeld SXT Sign-udvidelse af byte til ord
0 0 0 en 0 0 en 0 0 S/H Som Tilmeld PUSH Skub operand ind på stakken
0 0 0 en 0 0 en 0 en 0 Som Tilmeld CALL Subrutineopkald; gem pc'en på stakken og indlæs pc'en med den nye værdi
0 0 0 en 0 0 en en 0 0 0 0 0 0 0 0 RETI Retur fra afbrydelse; Pop SR og PC fra stakken
0 0 en tilstand 10-bit tegn offset Betinget filial; PC=PC+2×offset
0 0 en 0 0 0 10-bit tegn offset JNE / JNZ Hop hvis ikke_lige/ikke_nul
0 0 en 0 0 en 10-bit tegn offset JEQ / JZ Hop hvis lig/nul
0 0 en 0 en 0 10-bit tegn offset JNC / JLO Hop hvis ikke_bære/under (usigneret sammenligning)
0 0 en 0 en en 10-bit tegn offset JC / JHS Hop hvis bære/højere eller samme (usigneret sammenligning)
0 0 en en 0 0 10-bit tegn offset JN Hop hvis negativ
0 0 en en 0 en 10-bit tegn offset JGE Hop hvis større_eller_lige
0 0 en en en 0 10-bit tegn offset JL Hop hvis mindre
0 0 en en en en 10-bit tegn offset JMP Jump (øjeblikkelig)
opkode kilde Ad S/H Som bestemmelsessted To operander aritmetik
0 en 0 0 kilde Ad S/H Som bestemmelsessted MOV Send kilde til destination
0 en 0 en kilde Ad S/H Som bestemmelsessted ADD Tilføj kilde til destination
0 en en 0 kilde Ad S/H Som bestemmelsessted ADDC Tilføj source_and_transfer til destination
0 en en en kilde Ad S/H Som bestemmelsessted SUBC Træk kilde fra destination (med carry)
en 0 0 0 kilde Ad S/H Som bestemmelsessted SUB Træk kilde fra destination
en 0 0 en kilde Ad S/H Som bestemmelsessted CMP Sammenlign (træk fra) kilde til destination
en 0 en 0 kilde Ad S/H Som bestemmelsessted DADD Decimal Decimal tilføjelse af kilde og destination (med carry)
en 0 en en kilde Ad S/H Som bestemmelsessted BIT Bitkontrol (OG operation) af kilde og destination
en en 0 0 kilde Ad S/H Som bestemmelsessted BIC Bit flush (dest &= ~src)
en en 0 en kilde Ad S/H Som bestemmelsessted BIS Bit-indstilling (logisk ELLER)
en en en 0 kilde Ad S/H Som bestemmelsessted XOR Eksklusiv eller kildedestination
en en en en kilde Ad S/H Som bestemmelsessted OG Logisk OG kilde med destination (dest &= src)

Alle instruktioner er 16-bit. 4 operandadresseringsmetoder, defineret i 2 bit som As-feltet.

Felt Som – Registreret, indekseret, indirekte registreret, indirekte registreret med post-dekrement. Annoncefeltet definerer to adresseringsmetoder - register og indeks.

MSP430 Adresseringstilstand
Som Tilmeld Syntaks Beskrivelse
00 n R n Tilmeld. Operanden er indholdet af et af registrene fra R n .
01 n x ( Rn ) indeks. Operaanden er i hukommelsen på adressen R n + x .

X-ordet er efter den aktuelle kommando.

ti n @Rn _ Indirekte register. Operaanden er placeret i hukommelsen på adressen indeholdt i registeret Rn .
elleve n @Rn + _ Indirekte register med autoincrement. Afhængigt af værdien af ​​B/W-bitten øges værdien af ​​Rn - registret efter operationen er fuldført med 1 eller 2.
Adresseringstilstande ved brug af R0 (pc)
01 0 (pc) ETIKET Relativ (karakter). x(PC) Hukommelsesoperanden ved PC+ x .
elleve 0 (pc) # x Direkte. @PC+ Adresse på x-ord-operanden efter den aktuelle instruktion.
Brug af R2 (SR) og R3 (CG), speciel afkodningsmåde
01 2 (SR) & etiket Absolut. Operanden i hukommelsen på adressen taget fra x .
ti 2 (SR) #fire Konstant 4.
elleve 2 (SR) #otte Konstant 8.
00 3 (CG) #0 Konstant 0.
01 3 (CG) #en Konstant 1. for byte-operationer.
ti 3 (CG) #2 Konstant 2.
elleve 3 (CG) #-en Konstant −1 eller 0xFFFF.

Mnemonics til emulerede kommandoer

Andre instruktioner, der understøttes af MSP430-samleren, er dannet ud fra de vigtigste og kaldes emulerede (metoden til opnåelse er i parentes). Det samlede antal emulerede instruktioner, der understøttes af assembleren, er 24.

CLRZ - Ryd Processor Status Register (PSW) Z Flag ( BIC #2,SR ) CLRN - Ryd Processor Status Register (PSW) Flag N ( BIC #4,SR ) CLRC - Ryd Processor Status Register (PSW) Flag C ( BIC # 1,SR) SETZ - Indstil Z-flaget for processorstatusregistret (PSW) ( BIS #2,SR ) SETN - Indstil N-flaget for processorstatusregistret (PSW) ( BIS #4,SR ) SETC - Indstil C-flaget for Processor Status Register (PSW) (BIS # 1,SR) EINT - aktiver interrupts ( BIC #8,SR ) DINT - deaktiver interrupts ( BIS #8,SR ) CLR dst - Slet operand ( MOV #0,dst ) TST dst - Tjek operand for nul ( CMP #0,dst ) INV dst - Inverter operandbits ( XOR #-1,dst ) ADC dst - add carry til operand ( ADDC #0,dst ) DADC dst - add decimal carry til destination ( DADD #0,dst ) SBC dst - subtraher carry fra operand ( SUBC #0,dst) INC dst - operand stigning ( ADD #1,dst ) DEC dst - operand reduktion ( SUB #1,dst ) INCD dst - øg med 2 operander ( ADD #2,dst ) DECD dst - sænk med 2 operander ( SUB #2, dst) RLA dst - venstre skift af operanden, bæreflaget udfyldes fra den høje bit, og den lave bit af resultatet er -0 ( ADD dst,dst ) RLC dst - venstre skift af operanden ved hjælp af carry ( ADDC dst,dst ) RET - retur fra subrutine (MOV @sp+,pc) POP dst - pop operand fra stakken ( MOV @sp+,dst) BR dst - programspring ved hjælp af operand (MOV dst,pc) NOP - ingen betjening (MOV r3,r3) der er andre mulige operationer til at generere en programkodeeksekveringsforsinkelse

Bemærk: formen for skrivekommandoer er givet uden at angive typen af ​​operander byte/ord.

Det understøttede format af kommandoer af assembleren i mnemonikken har en indikation af typen af ​​data, der behandles.

Noter

  1. AF STEPHEN EVANCZUK.  De mest populære MCU'er nogensinde  ? . https://www.edn.com/ (20. august 2013). Hentet 15. januar 2021. Arkiveret fra originalen 9. juni 2021.

Links

Kompilere og assemblere

Emulatorer

Nyttige links