Intel 8051

From Wikipedia, the free encyclopedia

Intel 8051
Remove ads

Intel MCS-51 (mida tuntakse tavaliselt Intel 8051 nime all) on Harvardi arhitektuuriga ühekiibi mikrokontrollerite seeria, mille töötas välja Intel 1980. aastatel. Kuigi Intel tänapäeval neid mikrokontrollereid ei tooda, on nendega ühilduvad mikrokontrollerid kasutusel teiste tootjate kiipides. Lisaks füüsilistele kiipidele pakuvad mitmed firmad MSC-51-l põhinevaid rakenduskiipe (ASIC) ja intellektuaalomandiga funktsiooniplokke (IP core), mida saab kasutada loogikamassiivides (nt FPGA-des).

Thumb
Mikrokontroller Intel P8051
Thumb
Mikrokontroller Infineon SAB-C515-LN mis põhineb 8051'l
Remove ads

Tehnilised omadused

MCS-51-l põhinevate mikrokontrolleriseeriate peamised tehnilised omadused:

Käsustik

Intel MCS-51 käsustik pole binaarkujul masinkoodina ühilduv Intel 8080/8085 ega Z80 mikroprotsessoritega, kuid käskude mnemokoodid on sarnased firma Intel teiste mikroprotsessorite käskude mnemokoodidega.

Käsukood (hex)0123456789ABCDEF
0xNOPAJMP aadr11LJMP aadr16RR AINC AINC directINC @Ri0INC @Ri1INC R0INC R1INC R2INC R3INC R4INC R5INC R6INC R7
1xJBC bitt, suhtACALL aadr11LCALL aadr16RRC ADEC ADEC directDEC @Ri0DEC @Ri1DEC R0DEC R1DEC R2DEC R3DEC R4DEC R5DEC R6DEC R7
2xJB bitt, suhtAJMP aadr11RETRL AADD A, #andmedADD A, directADD @Ri0ADD @Ri1ADD R0ADD R1ADD R2ADD R3ADD R4ADD R5ADD R6ADD R7
3xJNB bitt, suhtACALL aadr11RETIRLC AADDC A, #andmedADDC A, directADDC @Ri0ADDC @Ri1ADDC R0ADDC R1ADDC R2ADDC R3ADDC R4ADDC R5ADDC R6ADDC R7
4xJC suhtAJMP aadr11ORL direct, AORL direct, #andmedORL A, #andmedORL A, directORL @Ri0ORL @Ri1ORL R0ORL R1ORL R2ORL R3ORL R4ORL R5ORL R6ORL R7
5xJNC suhtACALL aadr11ANL direct, AANL direct, #andmedANL A, #andmedANL A, directANL @Ri0ANL @Ri1ANL R0ANL R1ANL R2ANL R3ANL R4ANL R5ANL R6ANL R7
6xJZ suhtAJMP aadr11XRL direct, AXRL direct, #andmedXRL A, #andmedXRL A, directXRL @Ri0XRL @Ri1XRL R0XRL R1XRL R2XRL R3XRL R4XRL R5XRL R6XRL R7
7xJNZ suhtACALL aadr11ORL C, bittJMP @A+DPTRMOV A, #andmedMOV direct, #andmedMOV @Ri0, #andmedMOV @Ri1, #andmedMOV R0, #andmedMOV R1, #andmedMOV R2, #andmedMOV R3, #andmedMOV R4, #andmedMOV R5, #andmedMOV R6, #andmedMOV R7, #andmed
8xSJMP suhtAJMP aadr11ANL C, bittMOVC A, @A+PCDIV ABMOV direct, directMOV direct, @Ri0MOV direct, @Ri1MOV direct, R0MOV direct, R1MOV direct, R2MOV direct, R3MOV direct, R4MOV direct, R5MOV direct, R6MOV direct, R7
9xMOV DPTR, #andmed16ACALL aadr11MOV bitt, CMOVC A, @A+DPTRSUBB A, #andmedSUBB A, directSUBB direct, @Ri0SUBB direct, @Ri1SUBB A, R0SUBB A, R1SUBB A, R2SUBB A, R3SUBB A, R4SUBB A, R5SUBB A, R6SUBB A, R7
AxORL C, bittAJMP aadr11MOV C, bittINC DPTRMUL ABmääramataMOV @Ri0, directMOV @Ri1, directMOV R0, directMOV R1, directMOV R2, directMOV R3, directMOV R4, directMOV R5, directMOV R6, directMOV R7, direct
BxANL C, bittACALL aadr11CPL bittCPL CCJNE A, #andmed, suhtCJNE A, direct, suhtCJNE @Ri0, #andmed, suhtCJNE @Ri1, #andmed, suhtCJNE R0, #andmed, suhtCJNE R1, #andmed, suhtCJNE R2, #andmed, suhtCJNE R3, #andmed, suhtCJNE R4, #andmed, suhtCJNE R5, #andmed, suhtCJNE R6, #andmed, suhtCJNE R7, #andmed, suht
CxPUSH directAJMP aadr11CLR bittCLR CSWAP AXCH A, directXCH A, @Ri0XCH A, @Ri1XCH A, R0XCH A, R1XCH A, R2XCH A, R3XCH A, R4XCH A, R5XCH A, R6XCH A, R7
DxPOP directACALL aadr11SETBSETBDA ADJNZ direct, suhtXCHD A, @Ri0XCHD A, @Ri1DJNZ R0, suhtDJNZ R1, suhtDJNZ R2, suhtDJNZ R3, suhtDJNZ R4, suhtDJNZ R5, suhtDJNZ R6, suhtDJNZ R7, suht
ExMOVX A,@DPTRAJMP aadr11MOVX A, @Ri0MOVX A, @Ri1CLR AMOV A, directMOV A, @Ri0MOV A, @Ri1MOV A, R0MOV A, R1MOV A, R2MOV A, R3MOV A, R4MOV A, R5MOV A, R6MOV A, R7
FxMOVX @DPTR,AACALL aadr11MOVX @Ri0MOVX @Ri1CPL AMOV direct, AMOV @Ri0MOV @Ri1MOV R0, AMOV R1, AMOV R2, AMOV R3, AMOV R4, AMOV R5, AMOV R6, AMOV R7, A

Käskude mnemokoodide selgitus

Aritmeetikakäsud:

  • ADD – Liitmine akuregistrigaAdd Accumulator
  • ADDC – Liitmine akuregistriga koos ülekandega – Add Accumulator With Carry
  • SUBB – Lahutada akuregistrist jättes tulemuse akuregistrisseSubtract From Accumulator With Borrow
  • INC – Suurendada registris olevat väärtust – Increment Register
  • DEC – Kahanda registri sisu ühe võrra – Decrement Register
  • MUL – Korrutada akuregistris olev arv registris B paikneva väärtusega – Multiply Accumulator by B
  • DIV – Jagada akuregistris olev arv registris B paikneva väärtusega – Divide Accumulator by B
  • CPL – Asendada registri sisu vastava pöördkoodigaComplement Register
  • DA – Kümnendkorrektsioon – Decimal Adjust

Loogikatehete käsud:

Bitinihutamise käsud:

  • RL – Akuregistri sisu nihutamine vasakule – Rotate Accumulator Left
  • RLC – Akuregistri sisu nihutamine vasakule koos ülekandelipuga – Rotate Accumulator Left Through Carry
  • RR – Akuregistri sisu nihutamine paremale – Rotate Accumulator Right
  • RRC – Akuregistri sisu nihutamine paremale koos ülekandelipuga – Rotate Accumulator Right Through Carry

Andmete kopeerimise käsud:

  • MOV – Andmete kopeerimine – Move Memory
  • MOVC – Andmete kopeerimine programmimälus – Move Code Memory
  • MOVX – Andmete kopeerimine laiendatud mälus – Move Extended Memory
  • POP – Väärtuse tagasilugemine pinumälust – Pop Value From Stack
  • PUSH – Väärtuse paigutamine pinumällu – Push Value Onto Stack
  • CLR – Nullida registri sisu – Clear Register
  • SETB – Biti seadmine 1'ks – Set Bit
  • SWAP – Vahetada akuregistri näksid (neli esimest ja neli viimast bitti) – Swap Accumulator Nibbles
  • XCH – Vahetada baidid registrites – Exchange Bytes
  • XCHD – Vahetada neli bitti akuregistrist (nt. kümnend- või kuueteistkümnendarv) sisemise mäluregistriga – Exchange Digits

Siirdekäsud:

  • JMP – Minna tingimusteta etteantud aadressile – Jump to Address
  • AJMP – Siirdumine absoluutaadressile – Absolute Jump
  • LJMP – Minna tingimusteta etteantud täispikale aadressile – Long Jump
  • SJMP – Minna tingimusteta etteantud lähiaadressile – Short Jump
  • CJNE – Võrrelda ja siirduda etteantud aadressile kui pole võrdne – Compare and Jump if Not Equal
  • DJNZ – Kahandada registrit ja minna etteantud aadressile kui registri sisu kahandamise järel pole null – Decrement Register and Jump if Not Zero
  • JB – Minna etteantud aadressile kui vastav bitt on 1 – Jump if Bit Set
  • JBC – Minna etteantud aadressile kui vastav bitt on 1 ja seejärel bitt nullida – Jump if Bit Set and Clear Bit
  • JC – Minna etteantud aadressile kui ülekandelipp "Carry" on 1 – Jump if Carry Set
  • JNB – Minna etteantud aadressile kui vastav bitt on 0 – Jump if Bit Not Set
  • JNC – Minna etteantud aadressile kui ülekandelipp "Carry" on 0 – Jump if Carry Not Set
  • JNZ – Minna etteantud aadressile kui akuregistri sisu pole null – Jump if Accumulator Not Zero
  • JZ – Minna etteantud aadressile kui akuregistri sisu on null – Jump if Accumulator Zero
  • RETI – Katkestustöötlusrutiinist väljumine – Return From Interrupt
  • NOP – Üks käsk tegevuseta edasi – No Operation

Alamprogrammikäsud:

  • ACALL – Alamprogrammi väljakutsumine absoluutaadressiga – Absolute Call
  • LCALL – Alamprogrammi väljakutsumine täispika aadressiga – Long Call
  • RET – Alamprogrammist väljumine – Return From Subroutine

Operandide tähised tabelis

Andmed:

  • A – kiire protsessori sisemine register ehk "Aku"
  • R0, R1, R2, R3, R4, R5, R6 ja R7 – protsessori registrid
  • C – ülekande tunnus ehk ülekandelipp (carry flag)
  • bitt – otseadresseeritav bitt sisemises põhi-muutmälus RAM või eriregistris SFR
  • @Ri0 – sisemise muutmäluploki 0 kaudne aadress, märgi "@" järgi antakse aadressi sisaldava registri tähis R0 kuni R7
  • @Ri1 – sisemise muutmäluploki 1 kaudne aadress, märgi "@" järgi antakse aadressi sisaldava registri tähis R0 kuni R7
  • #andmed – 8 bitiline konstant, mis antakse käsukoodi järel
  • #andmed16 – 16 bitiline konstant, mis antakse käsukoodi järel
  • direct – 128 sisemist mälupesa ja eriotstarbelised registrid SFR
  • @DPTR – andmeviit (data pointer)

Programmimälu:

  • aadr11 – 11 bitiline programmimälu aadress
  • aadr16 – 16 bitiline programmimälu aadress
  • suht – 8-bitiline suhteline aadress programmimälus (aadress on vahemikus −128 kuni +127)
Remove ads

Viited

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads