MSP430 on Texas Instrumentsin 16-bittisten mikro - ohjainten perhe .
Ensimmäinen ohjain, jonka lyhenne on MSP430, ilmestyi vuonna 1992 [1] . TI ilmoitti haluavansa luoda mikro-ohjaimen, jonka ohjausjärjestelmä on lähellä 70- ja 80- luvuilla suosittua PDP-11- arkkitehtuuria .
MSP430-ydin on 16-bittinen. He yrittivät tehdä komentojärjestelmästä mahdollisimman ortogonaalisen useilla eri osoitusmenetelmillä. Käskyjärjestelmän ortogonaalisuus tarkoittaa, että missä tahansa käskyssä voidaan käyttää mitä tahansa menetelmää operandin osoittamiseksi: vakiota, suoraan rekisteristä tai muistista, epäsuoraa jne.
Perheen syntymän aikaan pääpaino oli energiankulutuksen vähentämisessä. Siitä lähtien energiansäästöstä on kuitenkin tullut kiinteä ajatus elektroniikkatekniikassa, ja muut valmistajat, joilla on omat arkkitehtuurinsa, ovat aktiivisesti syrjäyttäneet MSP430:n tällä jalustalla.
MSP430-perheen avainero ja "käyntikortti" on kyky kellota mitä tahansa oheismoduulia asynkronisesti ytimestä. Suurimmassa osassa yksisiruisista mikro-ohjaimista reuna on synkroninen ytimen kanssa (joitakin erikoissolmuja lukuun ottamatta). Tämän ominaisuuden avulla voit joustavasti ohjata kunkin moduulin nopeutta (ja siten kulutusta). Lisäksi USB - liitäntämoduuli on myös ainutlaatuinen: siinä on erillinen tehoalue, mikä yksinkertaistaa akkukäyttöisten laitteiden kehittämistä USB-liitännällä.
Nykyään MSP430-perhe tarjoaa laajan valikoiman yksisiruisia mikro-ohjaimia, joissa on flash-muisti aina 512 kilotavuun asti ja RAM 64 kilotavuun asti. Ydinkellotaajuus jopa 25 MHz.
MSP430:ssa on Von Neumann -arkkitehtuuri, jossa on yksi osoitetila komennoille ja datalle. Muistia voidaan käsitellä sekä tavu-tavulta että sana sanalta. 16-bittisten sanojen tallennusjärjestys on nuorimmasta vanhimpaan ( englanniksi little-endian ).
Prosessori sisältää 16 16-bittistä ortogonaalista rekisteriä. R0-rekisteriä käytetään ohjelmalaskurina ( Program Counter - PC ), R1-rekisteriä pinoosoittimena ( englanniksi Stack Pointer - SP ), R2-rekisteriä tilarekisterinä ( Status Register - SR ) ja R3:a erikoisrekisterinä. rekisteriä kutsutaan vakiogeneraattoriksi ( eng. Constant Generator - CG ), R2:ta voidaan käyttää myös vakiogeneraattorina. Vakiogeneraattoria käytetään lyhentämään käskyn kokonaispituutta vakion implisiittisen esityksen vuoksi opkoodissa. Rekisterejä R4 - R15 käytetään yleiskäyttöisinä rekistereinä.
Ohjesarja on hyvin yksinkertainen ja sitä edustaa 27 käskyä, 24 emuloitua käskyä. Ohjeissa on sekä 8-bittinen (tavu) että 16-bittinen (sana) operandikäsittelymuoto. Mustavalko-bitti ohjaa tätä ominaisuutta.
viisitoista | neljätoista | 13 | 12 | yksitoista | kymmenen | 9 | kahdeksan | 7 | 6 | 5 | neljä | 3 | 2 | yksi | 0 | Tiimi |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | yksi | 0 | 0 | opcode | B/W | Kuten | rekisteröidy | Yhden operandin ohjeet | ||||||
0 | 0 | 0 | yksi | 0 | 0 | 0 | 0 | 0 | B/W | Kuten | rekisteröidy | RRC Kierrä oikealle kuljetuksen kautta | ||||
0 | 0 | 0 | yksi | 0 | 0 | 0 | 0 | yksi | 0 | Kuten | rekisteröidy | SWPB- tavunvaihto | ||||
0 | 0 | 0 | yksi | 0 | 0 | 0 | yksi | 0 | B/W | Kuten | rekisteröidy | RRA Kierto oikealle aritmetiikka | ||||
0 | 0 | 0 | yksi | 0 | 0 | 0 | yksi | yksi | 0 | Kuten | rekisteröidy | SXT Merkitse tavun laajennus sanaksi | ||||
0 | 0 | 0 | yksi | 0 | 0 | yksi | 0 | 0 | B/W | Kuten | rekisteröidy | PUSH Työnnä operandi pinoon | ||||
0 | 0 | 0 | yksi | 0 | 0 | yksi | 0 | yksi | 0 | Kuten | rekisteröidy | CALL Aliohjelman kutsu; tallenna tietokone pinoon ja lataa tietokoneeseen uusi arvo | ||||
0 | 0 | 0 | yksi | 0 | 0 | yksi | yksi | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | RETI Paluu keskeytyksestä; Pop SR ja PC pinosta |
0 | 0 | yksi | kunto | 10-bittinen etumerkkisiirtymä | Ehdollinen haara; PC=PC+2×offset | |||||||||||
0 | 0 | yksi | 0 | 0 | 0 | 10-bittinen etumerkkisiirtymä | JNE / JNZ Hyppää, jos ei_saa/ei_nolla | |||||||||
0 | 0 | yksi | 0 | 0 | yksi | 10-bittinen etumerkkisiirtymä | JEQ / JZ Hyppää, jos yhtä suuri/nolla | |||||||||
0 | 0 | yksi | 0 | yksi | 0 | 10-bittinen etumerkkisiirtymä | JNC / JLO Hyppää if not_carry/below (allekirjoittamaton vertailu) | |||||||||
0 | 0 | yksi | 0 | yksi | yksi | 10-bittinen etumerkkisiirtymä | JC / JHS Hyppää, jos kantaa/korkeampi tai sama (allekirjoittamaton vertailu) | |||||||||
0 | 0 | yksi | yksi | 0 | 0 | 10-bittinen etumerkkisiirtymä | JN Hyppää, jos negatiivinen | |||||||||
0 | 0 | yksi | yksi | 0 | yksi | 10-bittinen etumerkkisiirtymä | JGE Hyppää, jos suurempi_tai_yhtä | |||||||||
0 | 0 | yksi | yksi | yksi | 0 | 10-bittinen etumerkkisiirtymä | JL Hyppää jos vähemmän | |||||||||
0 | 0 | yksi | yksi | yksi | yksi | 10-bittinen etumerkkisiirtymä | JMP- hyppy (välitön) | |||||||||
opcode | lähde | Ilmoitus | B/W | Kuten | määränpäähän | Kahden operandin aritmetiikka | ||||||||||
0 | yksi | 0 | 0 | lähde | Ilmoitus | B/W | Kuten | määränpäähän | MOV Lähetä lähde kohteeseen | |||||||
0 | yksi | 0 | yksi | lähde | Ilmoitus | B/W | Kuten | määränpäähän | LISÄÄ Lisää lähde määränpäähän | |||||||
0 | yksi | yksi | 0 | lähde | Ilmoitus | B/W | Kuten | määränpäähän | ADDC Lisää lähde_ja_siirto kohteeseen | |||||||
0 | yksi | yksi | yksi | lähde | Ilmoitus | B/W | Kuten | määränpäähän | SUBC Vähennä lähde määränpäästä (kannolla) | |||||||
yksi | 0 | 0 | 0 | lähde | Ilmoitus | B/W | Kuten | määränpäähän | SUB Vähennä lähde kohteesta | |||||||
yksi | 0 | 0 | yksi | lähde | Ilmoitus | B/W | Kuten | määränpäähän | CMP Vertaa (vähennä) lähdettä kohteeseen | |||||||
yksi | 0 | yksi | 0 | lähde | Ilmoitus | B/W | Kuten | määränpäähän | DADD Desimaali Lähteen ja määränpään desimaalien yhteenlaskettu (siirto) | |||||||
yksi | 0 | yksi | yksi | lähde | Ilmoitus | B/W | Kuten | määränpäähän | BITTI Lähteen ja kohteen bittitarkistus (JA toiminta). | |||||||
yksi | yksi | 0 | 0 | lähde | Ilmoitus | B/W | Kuten | määränpäähän | BIC -bittihuuhtelu (dest &= ~src) | |||||||
yksi | yksi | 0 | yksi | lähde | Ilmoitus | B/W | Kuten | määränpäähän | BIS -bittiasetus (looginen TAI) | |||||||
yksi | yksi | yksi | 0 | lähde | Ilmoitus | B/W | Kuten | määränpäähän | XOR Exclusive tai lähde-kohde | |||||||
yksi | yksi | yksi | yksi | lähde | Ilmoitus | B/W | Kuten | määränpäähän | AND Looginen AND lähde määränpään kanssa (dest &= src) |
Kaikki ohjeet ovat 16-bittisiä. 4 operandin osoitusmenetelmää, jotka on määritelty kahdessa bitissä As-kenttään.
Kenttä As—Rekisteröity, indeksoitu, epäsuora-rekisteröity, epäsuora-rekisteröity jälkivähennyksellä. Mainos-kentässä määritellään kaksi osoitusmenetelmää - rekisteri ja indeksi.
Kuten | Rekisteröidy | Syntaksi | Kuvaus |
---|---|---|---|
00 | n | R n | Rekisteröidy. Operandi on yhden Rn: n rekisterin sisältö . |
01 | n | x (R n ) | indeksi. Operandi on muistissa osoitteessa R n + x .
X-sana on nykyisen komennon jälkeen. |
kymmenen | n | @Rn _ | Epäsuora rekisteri. Operandi sijaitsee muistissa rekisterin Rn sisältämässä osoitteessa . |
yksitoista | n | @ Rn + | Epäsuora rekisteri automaattisella lisäyksellä. Mustavalko-bitin arvosta riippuen Rn- rekisterin arvoa kasvatetaan toiminnon päätyttyä 1 tai 2. |
Osoitetilat käytettäessä R0 (PC) | |||
01 | 0 (PC) | LABEL | Sukulainen (hahmo). x(PC) Muistioperandi kohdassa PC+ x . |
yksitoista | 0 (PC) | # x | Suoraan. @PC+ X-sanan operandin osoite nykyisen käskyn jälkeen. |
Käyttämällä R2 (SR) ja R3 (CG), erityinen dekoodaustapa | |||
01 | 2 (SR) | & etiketti | Ehdoton. Operandi muistissa x :stä otetussa osoitteessa . |
kymmenen | 2 (SR) | #neljä | Vakio 4. |
yksitoista | 2 (SR) | #kahdeksan | Vakio 8. |
00 | 3 (CG) | #0 | Vakio 0. |
01 | 3 (CG) | #yksi | Vakio 1. tavuoperaatioille. |
kymmenen | 3 (CG) | #2 | Vakio 2. |
yksitoista | 3 (CG) | #-yksi | Vakio −1 tai 0xFFFF. |
Muut MSP430-asamblerin tukemat ohjeet muodostetaan pääkäskyistä ja niitä kutsutaan emuloiduiksi (hankintatapa on suluissa). Kokoonpanijan tukemien emuloitujen ohjeiden kokonaismäärä on 24.
CLRZ - Tyhjennä prosessorin tilarekisteri (PSW) Z Lippu ( BIC #2,SR ) CLRN - Tyhjennä prosessorin tilarekisteri (PSW) Lippu N ( BIC #4,SR ) CLRC - Tyhjennä prosessorin tilarekisteri (PSW) Lippu C ( BIC # 1,SR) SETZ - Aseta prosessorin tilarekisterin (PSW) Z-lippu ( BIS #2,SR ) SETN - Aseta prosessorin tilarekisterin (PSW) N-lippu ( BIS #4,SR ) SETC - Aseta prosessorin tilarekisterin C-lippu Prosessorin tilarekisteri (PSW) (BIS # 1,SR) EINT - ota keskeytykset käyttöön ( BIC #8,SR ) DINT - poista keskeytykset käytöstä ( BIS #8,SR ) CLR dst - Tyhjennä operandi ( MOV #0,dst ) TST dst - Tarkista operandi nollasta ( CMP #0,dst ) INV dst - Kääntele operandibitit ( XOR #-1,dst ) ADC dst - lisää siirto operandiin ( ADDC #0,dst ) DADC dst - lisää desimaalisiirto kohteeseen ( DADD #0,dst ) SBC dst - vähennä siirto operaandista ( SUBC #0,dst) INC dst - operandin lisäys ( ADD #1,dst ) DEC dst - operandin vähennys ( SUB #1,dst ) INCD dst - lisäys 2 operandilla ( ADD #2,dst ) DECD dst - vähennys 2 operandilla ( SUB #2, dst) RLA dst - operandin siirto vasemmalle, siirtolippu täytetään yläbitistä ja tuloksen alhainen bitti on -0 ( ADD dst,dst ) RLC dst - operandin siirto vasemmalle siirtoa käyttäen ( ADDC dst,dst ) RET - paluu aliohjelmasta ( MOV @sp+,pc ) POP dst - pop-operandi pinosta ( MOV @sp+,dst ) BR dst - ohjelman hyppy operandilla ( MOV dst,pc) NOP - ei toimintaa (MOV r3,r3) on olemassa muita mahdollisia operaatioita ohjelmakoodin suoritusviiveen generoimiseksiHuomautus: kirjoituskomentojen muoto annetaan ilmoittamatta operandityyppiä tavu/sana.
Kokoonpanijan tukema komentomuoto muistiinpanossa ilmaisee käsiteltävän tiedon tyypin.
Mikro-ohjaimet | ||||||||
---|---|---|---|---|---|---|---|---|
Arkkitehtuuri |
| |||||||
Valmistajat |
| |||||||
Komponentit | ||||||||
Periferia | ||||||||
Liitännät | ||||||||
OS | ||||||||
Ohjelmointi |
|