Programmering av MK-porter i språk C 51. Mikrokontrollere MCS–51: programmodell, struktur, kommandoer. Portlesemodus

Grunnversjon MCS-51 Kort informasjon. Moderne 8-bits mikrokontrollere (MC-er) har slike sanntidskontrollressurser, som tidligere ble brukt dyre multi-chip-oppsett i form av separate mikrodatakort, nemlig:

● ha tilstrekkelig minnekapasitet, dens fysiske og logiske inndeling i programminne og dataminne(Harvard-arkitektur) og et kommandosystem fokusert på å utføre kontrollalgoritmer;

● inkludere alle enheter (prosessor, ROM, RAM, inngangs-/utgangsporter, avbruddssystem, midler for behandling av bitinformasjon osv.) som er nødvendige for å implementere et mikroprosessorkontrollsystem med minimal konfigurasjon. På 70-tallet av forrige århundre selskapet Intel en familie av 8-bits mikrokontrollere MCS-48, forent med en rekke fellestrekk (bitkapasitet, kommandosystem, sett med hovedfunksjonsblokker, etc.), har blitt utviklet og lansert i industriell produksjon. Den grunnleggende versjonen av denne familien inkluderer:

● 8-bits prosessor;

● internt programminne (1/2/4K byte);

● internt dataminne (64/128/256 byte);

● opptil 27 interne og 16 eksterne I/O-linjer;

● en 8-bits timer-teller;

● ett-nivå avbruddssystem med to forespørselskilder. I 1980 utviklet det samme selskapet en ny familie med åtte-bits mikrokontrollere, MCS-51, som er kompatibel med arkitekturen til MCS-48-familien, men har større muligheter.

Arkitekturen til MCS-51-familien viste seg å være så vellykket at den fortsatt er en av standardene for 8-bits MK-er. Derfor ble studieobjektet valgt til å være mikrokontrollere av denne familien, som er mye brukt i relativt enkle kontrollsystemer.

Ulike programforberedende verktøy er utviklet for MCS-51-familien (kompilatorer, maskinvare-programvareemulatorer, etc.), og det finnes et stort antall biblioteker med standardrutiner. Familien inkluderer ulike modifikasjoner av mikrokretser (brikkeversjoner) av mikrokontrollere. Artiklene i denne delen diskuterer i noen detalj den grunnleggende versjonen av mikrokontrollerne til MCS-51-familien (8051-mikrokretsen tilsvarer den innenlandske analogen KP1816BE51), den enkleste i strukturelle og funksjonelle termer og fra et forståelsessynspunkt.

Påfølgende serier med mikrokretser, mens de opprettholder kompatibiliteten med den grunnleggende versjonen, skiller seg fra den i forbedret produksjonsteknologi, elektriske parametere, ekstra maskinvare og funksjonalitet. Følgende artikler er viet til de strukturelle og funksjonelle egenskapene til påfølgende modifikasjoner av MCS-51-familien av mikrokretser.
Generalisert blokkskjema av MCS-51. Sammensetningen av MC, et generalisert blokkdiagram som er vist i fig. 7.1.1, inkluderer:

● 8-bit prosessor CPU som består av ALU, kontrollenheter UU og adressegenerator F;

● maske ROM med en kapasitet på 4K byte for lagring av programmer;

● RAM med en kapasitet på 128 byte for datalagring;

● fire programmerbare porter P0–P3 for inngang– informasjonsutgang;

● blokkere seriell grensesnitt BPI for utveksling av informasjon med eksterne enheter via en to-leder linje;

● blokk av BT/C-timere/tellere for å opprettholde sanntidsmodus;

● BP-avbruddsblokk for organisering av avbrudd av kjørbare programmer. Disse midlene dannes beboer del av mikrokontrolleren plassert direkte på brikken. MK inkluderer et stort antall registre, som er tildelt separate funksjonsblokker og ikke er vist i diagrammet.

Diagrammet viser heller ikke styrekretser. Toveis utveksling av informasjon mellom blokker utføres via intern 8-bit data bussШД-8.

Ved intern 16-bit adresse bussША-16 Adressen generert i CPU-en sendes ut til ROM (12 adressebiter) og til RAM (8 lavordensbiter).

Når du bruker eksternt minne, sendes de 8 minst signifikante bitene av adressen til port P0 og de 3 eller 8 mest signifikante bitene til port P2.

For å logisk utvide grensesnittet, brukes det å kombinere funksjonene til portlinjer. Som et eksempel i fig. 7.1.1 den stiplede linjen viser linjene til P3-porten som fungerer alternativ funksjoner for å sende kontrollsignaler, hvis formål vil bli diskutert nedenfor. For å lage en intern klokkegenerator er en kvartsresonator og to kondensatorer koblet til terminalene til MK-mikrokretsen (fig. 7.1.1). I stedet for en intern klokkegenerator kan en ekstern oscillasjonskilde brukes til synkronisering. Betinget grafisk betegnelse MK mikrokretser er vist i fig. 7.1.2, betegnelse og formål med pinner - i tabell. 7.1.1. La oss vurdere de funksjonelle blokkene til MK og prinsippet om deres drift. Aritmetisk logisk enhet. Den aritmetiske logiske enheten er designet for å utføre aritmetiske (inkludert multiplikasjon og divisjon) og logiske operasjoner på åtte-bits operander, samt operasjoner med logisk skift, nullstilling, innstilling osv. Blokkdiagrammet til ALU er vist i fig. 7.1.3.

ALU inkluderer

● parallell åtte-bit huggorm SM av kombinasjonstype med sekvensiell bære, utfører aritmetiske (addisjon og subtraksjon) og logiske (addisjon, multiplikasjon, disparitet og identitet) operasjoner;

batteri A,å tilby funksjonene til det aritmetiske hovedregisteret;

registrere B, brukt til å implementere multiplikasjons- og divisjonsoperasjoner eller som et ekstra superoperasjonelt register, hvis funksjoner bestemmes av brukeren;

registrerer(programvare ikke tilgjengelig) midlertidig lagringРВХ1, РВХ2, beregnet for å motta og lagre operander under operasjonens varighet;

● ROM konstanter ROM, som lagrer korreksjonskoden for den binære desimalrepresentasjonen av data, maskekoden for bitoperasjoner og koden for konstanter;

programstatus ordregister PSW, som registrerer tilstanden til ALU etter en fullført operasjon. I tabellen 7.1.2 gir informasjon om tilordning av biter av individuelle biter i PSW-registeret. Kontrollenhet. Kontrollenhet (CU) til sentralprosessoren tiltenkt for koordinering samarbeid alle MK-noder som bruker genererte klokkepulser og styresignaler. Den består av (fig. 7.1.4):

synkronisering og kontrollenhet Kontrollsystemet, som genererer klokkepulser som definerer maskinsykluser og deres individuelle tilstander (S) og faser (P), og, avhengig av driftsmodusen til mikrokontrolleren, genererer det nødvendige settet med kontrollsignaler. Det tar en, to eller fire maskinsykluser for å utføre en kommando.

Hver maskinsyklus har seks stater S1–S6, A inkluderer hver stat to faser P1, P2, hvis varighet er oscillasjonsperioden til klokkegeneratoren T 0SC.

Varigheten av maskinsyklusen er 12T 0SC. Alle maskinsykluser er de samme, starter med fase S1P1 og slutter med fase S6P2.

I tillegg til klokkepulsene, genererer synkroniseringsenheten to (noen ganger ett) portsignaler for den lave byten til ALE-adressen i hver maskinsyklus i form av en positiv puls i fasene S1P2–S2P1 og S4P2–S5P1. Tidsdiagrammer i fig. 7.1.5 illustrere organiseringen av maskinsykluser;

● kommandoregister RK, kommandodekoder DC og PLM, tillater i hver maskinsyklus å generere et sett med mikrooperasjoner i samsvar med mikroprogrammet til den utførte kommandoen;

● LVV input/output logic for mottak og utsendelse av signaler som sikrer utveksling av informasjon fra MK med eksterne enheter gjennom portene P0–P3;

● PCON-register, som har en enkelt aktivert SMOD-bit i posisjon PCON.7 for å doble serieportens datahastighet. De resterende bitene er reservert for senere bruk.
Adressegenerator. Adressegenerator (FA), eller PC-kommandoteller, tiltenkt for å danne den gjeldende 16-biters adressen til programminnet og 8/16-bits adressen til eksternt dataminne. Den består av (fig. 7.1.6):

● 16-bit buffer B, som kommuniserer mellom 8-bits SD-databussen og 16-bits interne buss (IB) til adressedanneren;

● SI-inkrementkrets for å øke verdien av gjeldende adresse programminne per enhet;

● registrere deg for å lagre gjeldende adresse til PTA-kommandoer som kommer fra SI;

● datapekerregister DPTR , bestående av to 8-bits registre DPH og DPL. Den tjener til å lagre en 16-bits adresse til eksternt dataminne og kan brukes som to uavhengige programvaretilgjengelige RON-er;

● register for XRF-adressegeneratoren for lagring av den utøvende 16-biters adressen til programminnet eller 8/16-bits adressen til eksternt dataminne. Dette registeret brukes også til å overføre data gjennom port P0 til eksterne enheter når du utfører kommandoene MOVX @Rm, A og MOVX @DPRT, A.

Dataminne. Dataminne tiltenkt for å motta, lagre og utstede informasjon som brukes under programkjøring. Internt (resident) dataminne (fig. 7.1.7) består av RAM med en kapasitet på 128 byte, stabelpeker S.P. adresseregister RAM RA og dekoder Dsh. Stabelpekeren SP er et 8-bits register designet for å motta og lagre adressen til stabelcellen som sist ble aksessert. Etter tilbakestillingen settes stabelpekeren til adresse 07H, som tilsvarer begynnelsen av stabelen med adresse 08H. PA-adresseregisteret sammen med Dsh-dekoderen gir tilgang til den nødvendige minnecellen som inneholder en byte eller bit informasjon.

MK gir muligheten til å øke dataminnekapasiteten opp til 64 KB ved å koble til eksterne lagringsenheter. Som et eksempel i fig. 7.1.8 viser sideorganiseringen av eksternt VPD-dataminne med en kapasitet på 2K byte ved bruk av kommandoer av typen MOVX @ Rm(m = 0; 1). I dette tilfellet fungerer port P0 som en multiplekset adresse/databuss, tre linjer med port P2 brukes til å adressere en side med ekstern RAM, og de resterende fem linjene kan brukes som inngangs-/utgangslinjer.
I fig. 7.1.9 viser tidsdiagrammer over lese- og skrivesykluser når MK-en opererer med ekstern RAM. Diagrammene indikerer:

● RSN - høy byte for PC-kommandotelleren;

● DPL, DPH - lave og høye byte i DPTR-datapekerregisteret, som brukes som et register for indirekte adressering i MOVX @DPTR,A og MOVX A,@DPTR-kommandoene;

● P2 SFR - P2 portlåser;

● Rm (m = 0, 1) - registre brukt i MOVX @Rm, A og MOVX A, @Rm instruksjonene som indirekte adresseregistre;

● Z - høy motstandstilstand;

● D - perioden hvor data fra port P0 legges inn i mikrokontrolleren. Programminne. Programminne er designet for å lagre programmer, har sitt eget (atskilt fra dataminnet) adresserom og er skrivebeskyttet. Den inkluderer en Dsh-dekoder og ROM (fig. 7.1.10). En 16-bits PC-teller brukes til å adressere programminne, så dens maksimale kapasitet er 64K byte. Det interne programminnet består av en 4K byte ROM og en 12-bits dekoder. Eksternt minne kobles til i henhold til diagrammet i fig. 7.1.11. Hvis det tilføres 0 V til ¯EA-pinnen til MK (som vist i fig. 7.1.11), indre minne programmer er deaktivert. Alle minnetilganger starter ved adresse 0000h. Når ¯EA-pinnen er koblet til en strømkilde, skjer tilgang til det interne programminnet på adressene 0000h–FFFFh og til det eksterne programminnet på adressene 0FFFh–FFFFh automatisk.

For å lese det eksterne minnet til MK-programmer, genereres ¯PSEN-signalet. Ved arbeid med internminne brukes ikke lesesignalet. Ved tilgang til eksternt programminne dannes det alltid en 16-bits adresse. Den lave byten til adressen sendes gjennom port P0 i første halvdel av maskinsyklusen og fikseres ved kuttet av ALE-stroben i registeret. I andre halvdel av syklusen brukes port P0 til å legge inn en byte på data fra eksternt minne inn i MK.

Den mest signifikante byten til adressen overføres gjennom port P2 under hele minnetilgangstiden.

Tidsdiagrammer for lese- og skrivesykluser når MK opererer med ekstern RAM er vist i fig. 7.1.12.
Diagrammene indikerer:

● PCL OUT - utgang av den lave byten til PC-programtelleren;

● RSN OUT - utgang av høybyte til PC-kommandotelleren;

● DPH - høy byte av DPTR-datapekerregisteret, som brukes som et register for indirekte adressering i MOVX @DPTR,A og MOVX A,@DPTR-instruksjonene;

● P2 SFR - P2 portlåser;

● INS IN - inndata av instruksjon (kommando) byte fra programminnet;

● ADDR OUT - utsteder den lave byten til den eksterne dataminneadressen fra Rm-registrene (m = 0, 1) eller fra DPL-registeret (DPTR-lavregister). I/O-porter. Havneoppdrag. Porter P0, P1, P2, P3 tiltenkt for utveksling av informasjon mellom MK og eksterne enheter, og også for å utføre følgende funksjoner:

● den lave byten til adressen A7...A0 sendes ut gjennom port P0; en databyte sendes ut fra MK og legges inn i MK når du arbeider med eksternt programminne og eksternt dataminne (tidsseparert);

● gjennom port P2, sendes den høye byten til adressen A15...A8 ut når du arbeider med eksternt programminne og eksternt dataminne (kun når du bruker kommandoene MOVX A,@DPTR og MOVX @DPTR,A);

● linjene til P3-porten kan brukes til å utføre alternative funksjoner hvis 1 er lagt inn i låsen på denne linjen, ellers er 0 fast ved linjeutgangen.. Alternative funksjoner til P3-portpinnene er gitt i tabell. 7.1.3.

Kretsfunksjoner til porter

I fig. 7.1.13 viser diagrammer for én kanal for hver av MK-portene, inkludert:

● lås for å fikse den mottatte databiten;

● utgangsforsterker kaskade(sjåfør);

● node kontakt med utgangstrinn (unntatt P2);

● en krets for overføring av en databit fra utgangssiden av porten, bestående av buffere B2 og B3 (for port P4). Låsen er en D-flip-flop, klokket av det interne "Write to latch"-signalet. Databiten fra den direkte utgangen til D-flip-flop kan leses programmatisk gjennom buffer B1 ved å bruke "Read Latch"-signalet til linjen til den interne databussen (ID) til MK.

Utgangstrinn port P0 er en inverter, hvis funksjoner manifesteres i det faktum at lasttransistoren VT2 bare åpnes når du får tilgang til eksternt minne (når du sender adresser og data gjennom porten). I alle andre moduser er lasttransistoren lukket. Derfor, for å bruke P0 (fig. 7.1.13, a) som en generell utgangsport, er det nødvendig å koble eksterne belastningsmotstander til terminalene. Når du skriver 1 til portlåsen, er invertertransistoren VT1 låst og den eksterne pinnen til P0.X-porten byttes til en høymotstandstilstand. I denne modusen kan utgangen fra port P0.X tjene som inngang. Hvis P0-porten brukes som en generell I/O-port, kan hver av dens P0.X-pinner fungere uavhengig som en inngang eller utgang. Utgangsstadier portene P1, P2, P3 (fig. 7.1.13, b, c, d) laget i henhold til inverterkretser med en intern lastmotstand, som brukes som transistor VT2.

For å redusere svitsjetiden når portpinner går over fra tilstand 0 til tilstand 1, ble en ekstra transistor VT3 introdusert parallelt med lasttransistoren VT2. Transistor VT3, ved bruk av elementer i portkretsen, låses opp i en tid som tilsvarer to oscillasjonsperioder for masterkvartsoscillatoren (i fasene S1P1, S2P2 i maskinsyklusen). Utgangsstadier portene P0, P2 (fig. 7.1.13, A, c) ved bruk av MX-multiplekseren kan kobles enten til låser eller til de interne "Adresse/data"- og "Adresse"-bussene. Utgangstrinnet til port P1 (fig. 7.1.13, 6) er permanent koblet til låsen.

Hvis pinnen til port P3 er en utgang og låsen inneholder 1, styres utgangstrinnet av maskinvare internt signal"Alternativ utgangsfunksjon" som gir utførelsen av den tilsvarende alternative funksjonen, dvs. ett av signalene ¯WR, ¯RD eller RxD genereres på den eksterne pinnen. Hvis portutgangen brukes som en inngang, blir det alternative signalet som kommer til den (TxD, ¯INT0, ¯INT1, T0, T1) overført til den interne linjen "Alternativ inngangsfunksjon".

Portopptaksmodus.

Når en portskrivekommando utføres, skrives den nye verdien til låsen i fase S6P2 og sendes direkte til utgangspinnen til porten i fase S1P1 i neste maskinsyklus.

Portlesemodus

Portlesekommandoer leser informasjon direkte fra de eksterne pinnene til en port eller fra låseutganger. I det første tilfellet leses databiten fra portpinnen programmatisk gjennom buffer B2 ved å bruke "Read Pins"-signalet til linjen til den interne databussen (SD) til MK. Merk at signalene "Skriv til lås", "Les lås", "Les pinner" genereres i maskinvaren når de tilsvarende kommandoene utføres.

I det andre tilfellet implementeres den såkalte "Read-Modify-Write"-modusen, der kommandoen leser låsetilstandssignalet, modifiserer det om nødvendig, og deretter skriver det tilbake til låsen. "Read-Modify-Write"-modusen implementeres når du utfører følgende kommandoer: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

Å lese informasjon fra utgangene til låsene lar deg eliminere feil når du tolker det logiske nivået ved portpinnen. Les fortsettelsen av artikkelen.

Arkitekturen til MCS-51-familien bestemmes i stor grad av formålet - konstruksjonen kompakt Og billig digitale enheter. Alle mikrodatamaskinfunksjoner implementeres ved hjelp av en enkelt mikrokrets. MCS-51-familien inkluderer en hel rekke mikrokretser fra de enkleste mikrokontrollerne til ganske komplekse. Mikrokontrollere i MCS-51-familien lar deg utføre både kontrolloppgaver for ulike enheter og implementere individuelle komponenter analog krets. Alle mikrokretser i denne familien fungerer med samme kommandosystem, de fleste av dem utføres i identiske tilfeller med matchende pinout(nummerering av ben for kroppen). Dette lar deg bruke mikrokretser fra forskjellige produsenter (som Intel, Dallas, Atmel, Philips, etc.) for den utviklede enheten. uten omarbeid skjematisk diagram enheter og programmer.

Figur 1. Blokkskjema over K1830BE751-kontrolleren

Blokkskjemaet til kontrolleren er presentert i figur 1. og består av følgende funksjonelle hovedenheter: kontrollenhet, aritmetisk-logisk enhet, timer/tellerenhet, seriell grensesnitt og avbruddsenhet, programteller, dataminne og programminne. Toveiskommunikasjon utføres ved hjelp av en intern 8-bits databuss. La oss se nærmere på formålet med hver blokk. Nesten alle medlemmer av MCS-51-familien er bygget i henhold til denne ordningen. Ulike mikrokretser av denne familien skiller seg bare i spesialregistre (inkludert antall porter). Kommandosystem alle kontrollere familie MCS-51 inneholder 111 grunnleggende kommandoer med et format på 1, 2 eller 3 byte og endres ikke når du flytter fra en brikke til en annen. Dette sikrer utmerket programportabilitet fra en brikke til en annen.

Kontroll- og synkroniseringsenhet

Timing and Control-enheten er utformet for å generere synkroniserings- og kontrollsignaler som sikrer koordinering av fellesdriften av stormaskinenhetene i alle tillatte driftsmoduser. Kontrollenheten inkluderer:

  • enhet for å danne tidsintervaller,
  • input-output logikk,
  • kommandoregister
  • energiledelsesregister,
  • kommandodekoder, datakontrolllogikk.

Innretning for å danne tidsintervaller designet for å generere og utstede interne klokkesignaler for faser, klokker og sykluser. Antallet maskinsykluser bestemmer varigheten av instruksjonene. Nesten alle datamaskinkommandoer utføres i én eller to maskinsykluser, bortsett fra multiplikasjons- og divisjonsinstruksjoner, hvis utførelsesvarighet er fire maskinsykluser. La oss betegne frekvensen til masteroscillatoren med F g. Da er varigheten av maskinsyklusen lik 12/F g eller er 12 perioder av masteroscillatorens signal. I/O-logikk er designet for å motta og sende ut signaler som sikrer utveksling av informasjon med eksterne enheter gjennom inngangs-/utgangsportene P0-P3.

Kommandoregister designet for å registrere og lagre 8-bits operasjonskoden til kommandoen som utføres. Operasjonskoden, ved hjelp av kommandoer og datakontrolllogikk, konverteres til mikroprogram for å utføre kommandoen.

Etterspørselskontrollregister (PCON) lar deg stoppe mikrokontrolleren for å redusere strømforbruket og redusere nivået av interferens fra mikrokontrolleren. En enda større reduksjon i strømforbruk og interferens kan oppnås ved å stoppe mikrokontrollerens masteroscillatoren. Dette kan oppnås ved å veksle mellom bitene i PCON-forbrukskontrollregisteret. For n-MOS-produksjonsalternativet (1816-serien eller utenlandske brikker som ikke har en "c" i midten av navnet), inneholder PCON-forbrukskontrollregisteret bare én bit som kontrollerer overføringshastigheten til serieporten SMOD, og det er ingen kontrollbiter for strømforbruk.

Sammen med artikkelen "Architecture of microcontrollers MCS-51" les:


http://site/MCS51/tablms.php


http://site/MCS51/SysInstr.php


http://site/MCS51/port.php

For tiden produserer forskjellige selskaper mange modifikasjoner og analoger av denne familien, både av Intel og andre produsenter, klokkehastigheten og minnekapasiteten har tidoblet seg og fortsetter å øke. Settet med moduler som er innebygd i LSI blir også utvidet; et stort antall moderne modeller har en innebygget høyhastighets ADC med inntil 12, og nå kan det være flere biter. Men MCS51-familien er basert på Intel LSI-er 8051, 80С51, 8751, 87С51, 8031, 80С31, hvorav de første prøvene ble utgitt i 1980.

Mikrokontrollere av MCS51-familien er laget ved hjelp av høykvalitets n-MOS-teknologi (serie 8ХХХ, analog - serie 1816 i Russland og Hviterussland) og k-MOS-teknologi (serie 8ХСХХ, analog - serie 1830). Det andre tegnet etter 8 betyr: 0 – det er ingen EPROM på brikken, 7 – en 4K EPROM med ultrafiolett sletting. Tredje tegn: 3 – ROM på brikken, 5 – hvis det ikke er noen ROM, er det en maske-ROM på brikken.

Og så er 80С51 en LSI basert på k-MOS-teknologi med en maske ROM på brikken, 8031 ​​er en n-MOS LSI uten programminne (ROM, RPOM) på en brikke, 8751 er en n-MOS LSI med en resident (plassert på brikken) RPOM med ultrafiolett sletting. Vi vil videre vurdere 8751 LSI, og om nødvendig ta forbehold om forskjellene mellom andre kretser, med henvisning til parametrene som ble publisert for de første serielle LSI-ene. Om nødvendig kan du finne tilleggsinformasjon om alle moderne modifikasjoner i firmakataloger og teknisk dokumentasjon.

A. Generelle kjennetegn og pinnetilordninger

MCS51-familien er basert på fem modifikasjoner av MK (som har identiske grunnleggende egenskaper), hvor hovedforskjellen mellom disse er implementering av programminne og strømforbruk (se tabell 3.1). Mikrokontrolleren er åtte-bit, dvs. har kommandoer for å behandle åtte-bits ord, har en Harvard-arkitektur, klokkefrekvensen til de grunnleggende prøvene i familien er 12 MHz.

Tabell 3.1.

Mikrokretser

Internt programminne, bytes

Programminnetype

Internt dataminne, byte

Klokkefrekvens, MHz

Strømforbruk, mA

MK 8051 og 80C51 inneholder et maskeprogrammerbart ROM-programminne med en kapasitet på 4096 byte under produksjonen av brikken og er designet for bruk i masseproduksjon. MK 8751 inneholder en 4096-byte RPOM med ultrafiolett sletting og er praktisk på systemutviklingsstadiet ved feilsøking av programmer, så vel som under produksjon i små batcher eller ved opprettelse av systemer som krever omskriving under drift.

periodisk justering.

MK 8031 ​​og 80C31 inneholder ikke innebygd programminne. De, som de tidligere beskrevne modifikasjonene, kan bruke opptil 64 KB eksternt programminne og brukes effektivt i systemer som krever et betydelig større volum (enn 4 KB på brikken) ROM-programminne.

Hver MK i familien inneholder et internt dataminne med en kapasitet på 128 byte med muligheten til å utvide den totale mengden RAM-data opp til 64 KB ved bruk av eksterne RAM-ICer.

    åtte-bits sentral prosessor;

    4 KB programminne (kun 8751 og 87C51);

    128 byte dataminne;

    fire åtte-bits programmerbare I/O-porter;

    to 16-bits multi-modus timer/tellere;

    auto-vektor avbruddssystem med fem vektorer og to programvarestyrte prioritetsnivåer;

    seriell grensesnitt, inkludert en universell dupleks transceiver som kan operere i fire moduser;

    klokkegenerator.

MK-kommandosystemet inneholder 111 grunnleggende kommandoer med formatet 1, 2 eller 3 byte. Mikrokontrolleren har:

    32 generelle registre RON, organisert som fire banker med åtte registre hver med navn R0...R7, valget av en eller annen bank bestemmes av programmet ved å sette de tilsvarende bitene i programstatusregisteret PSW;

    128 programvarekontrollerte flagg (bitprosessor, se nedenfor);

    et sett med registre over spesialfunksjoner som styrer MK-elementer. Det er følgende driftsmoduser for mikrokontrolleren:

1). Generell tilbakestilling. 2). Normal funksjon. 3). Lavt strømforbruk modus og hvilemodus. 4). Programmeringsmodus for resident RPOM, hvis tilgjengelig.

Her vil vi fokusere på de to første driftsmodusene; en detaljert beskrivelse av sammensetningen og driften av MK i alle moduser er gitt i vedlegg P1.

RON og bitprosessorområdet er lokalisert i adresserommet til den residente RAM med adresser fra 0 til 80h.

I den øvre sonen av bolig-RAM-adressene er det spesielle funksjonsregistre (SFR, Special Function Registers). Formålet deres er gitt i tabellen. 3.2.

Tabell 3.2.

Betegnelse

Navn

Batteri

Registrer B

Programstatusregister

Stabelpeker

Datapeker. 2 byte:

Lav byte

Høy byte

Avbryt Prioritetsregister

Avbryt aktiver register

Registrering av timer/tellermodus

Tidtaker/tellerkontrollregister

Timer/teller 0. Høy byte

Timer/teller 0. Lav byte

Timer/teller 1. Høy byte

Timer/teller 1. Lav byte

Seriell portkontroll

Seriell buffer

Forbruksstyring

* - registrerer, tillater bitvis adressering

La oss kort se på funksjonene til SFR-registrene vist i Tabell 3.2.

Batteri ACC - akkumulatorregister. Kommandoer laget for å fungere

du med batteriet, bruk mnemonic "A", for eksempel, MOV EN, P2 . ACC-mnemonikken brukes for eksempel ved bitvis adressering av en akkumulator. Dermed vil det symbolske navnet på den femte biten til akkumulatoren ved bruk av A5M51-monteringsmaskinen være som følger: ACC. 5. .

Registrere I . Brukes under multiplikasjons- og divisjonsoperasjoner. For andre instruksjoner kan register B behandles som et ekstra sanntidsregister.

Registrere stat programmer P.S.W. inneholder informasjon om tilstanden til programmet og installeres dels automatisk basert på resultatet av operasjonen som er utført, og dels av brukeren. Betegnelsen og formålet med registerbitene er gitt i henholdsvis tabell 3.3 og 3.4.

Tabell 3.3.

Betegnelse

Tabell 3.4.

Betegnelse

Bitoppdrag

Bit tilgang

Bær flagg. Endringer under utførelsen av en rekke aritmetiske og logiske instruksjoner.

Maskinvare eller programvare

Ekstra bæreflagg. Sett/tømt i maskinvare under addisjons- eller subtraksjonsinstruksjoner for å indikere en carry eller borrow i bit 3 når den minst signifikante biten av resultatet (D0-D3) genereres.

Maskinvare eller programvare

Flagg 0. Brukerdefinert flagg.

Programmatisk

Programmatisk

Arbeidsregister Bankindeks

Programmatisk

Bank 0 med adresser (00Н - 07Н) Bank 1 med adresser (08Н - 0FН) Bank 2 med adresser (10Н - 17Н) Bank 3 med adresser (18Н - 1FН)

Overløpsflagg. Angi eller slettet av maskinvare under utførelse av aritmetiske instruksjoner for å indikere en overløpstilstand

Maskinvare eller programvare

Reserve. Inneholder en skrivbar og lesbar trigger som kan brukes

Paritetsbit. Maskinvare tilbakestilt eller innstilt på hver instruksjonssyklus for å indikere et partall eller oddetall batteribiter i "1"-tilstand.

Maskinvare eller programvare

Peker stable SP - Et 8-bits register hvis innhold økes før data skrives til stabelen når PUSH- og CALL-instruksjoner utføres. Ved første tilbakestilling settes stabelpekeren til 07H og stabelområdet i data-RAM-en starter på adressen 08H. Om nødvendig, ved å overstyre stabelpekeren, kan stabelområdet plasseres hvor som helst i den interne RAM-en til mikrokontrollerdataene.

Peker data DPTR består av en høy byte (DPH) og en lav byte

(DPL). Inneholder en 16-bits adresse ved tilgang til eksternt minne. Kan bli brukt

være enten et 16-bits register eller to uavhengige åtte-bits registre.

Port0 - PortZ. Separate biter av registrene til spesialfunksjoner P0, P1, P2, RZ er "låse"-bitene til portene P0, P1, P2, RZ.

Buffer konsistent havn SBUF representerer to separate registre: senderbufferen og mottakerbufferen. Når data skrives til SBUF, går den inn i senderbuffer, og å skrive en byte til SBUF starter automatisk overføring gjennom den serielle porten. Når data leses fra SBUF, hentes de fra mottakerbufferen.

Registrerer tidtaker. Registrer par (TH0, TL0) og (TH1, TL1) skjema 16

bittellingsregistre for henholdsvis timer/teller 0 og timer/teller 1.

Registrerer ledelse. Register over spesialfunksjoner IP, IE, TMOD, TCON, SCON og PCON inneholder kontrollbiter og statusbiter for avbruddssystemet, tids-

målere/tellere og serieport. De vil bli diskutert i detalj nedenfor.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1 E.A.

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

Når den fungerer, gir MC:

    minimum utførelsestid for tilleggskommandoer er 1 μs;

    maskinvare multiplikasjon og divisjon med en minimum utførelsestid på 4 μs.

MK gir muligheten til å stille inn frekvensen til den interne oscillatoren ved hjelp av kvarts, en LC-kjede eller en ekstern oscillator.

Det utvidede instruksjonssystemet gir byte- og bitadressering, binær og binær desimalaritmetikk, overløpsindikasjon og partall/oddetallsbestemmelse, og muligheten til å implementere en logisk prosessor.

Det viktigste og mest særegne ved MCS51-familiens arkitektur er at ALU kan manipulere enkeltbitsdata i tillegg til å utføre operasjoner på 8-biters datatyper. Individuelle programvaretilgjengelige biter kan settes, slettes eller erstattes av deres komplement, kan videresendes, sjekkes og

Fig.3.2. Eksterne pinner

mikrokontroller

brukes i logiske beregninger. Mens støtte for enkle datatyper (hvis tilgjengelig)

Mens den nåværende trenden mot lengre ordlengder kan virke som et skritt tilbake ved første øyekast, gjør denne kvaliteten MCS51-familien av mikrokontrollere spesielt egnet for kontrollerbaserte applikasjoner. Driftsalgoritmene til sistnevnte forutsetter tilstedeværelsen av boolske inn- og utdatavariabler, som er vanskelige å implementere ved bruk av standard mikroprosessorer. Alle disse egenskapene kalles samlet den boolske prosessoren til MCS51-familien. Denne kraftige ALU-en gjør MCS51-familien av mikrokontrollere egnet for både sanntidskontrollapplikasjoner og dataintensive algoritmer.

Kretsskjemaet til mikrokontrolleren er vist i fig. 3.2. I grunnversjonen er den pakket i en 40-pinners DIP-pakke. La oss se på formålet med pinnene.

La oss starte med strømpinnene «0 I" Og "5 I" , der han får grunnleggende ernæring. Nåværende forbruk er gitt i tabell. 3.1.

Konklusjon "RST" - tilbakestilling av mikrokontroller. Når et aktivt høyt nivå brukes på denne pinnen, vil modus generell nullstille og MK utfører følgende handlinger:

Setter PC-programtelleren og alle spesialfunksjonsregistre, bortsett fra P0-P3-portlåsene, SP-stabelpekeren og SBUF-registeret, til null;

    stabelpekeren tar verdien lik 07H;

    deaktiverer alle avbruddskilder, timer-teller og seriell

    velger BANK 0 RAM, klargjør porter P0-RZ for mottak av data og bestemmelse

deler ALE- og PME-pinner som innganger for ekstern klokke;

      i registre spesielle funksjoner PCON, IP og IE reserverte biter tar tilfeldige verdier, og alle andre biter tilbakestilles til null;

      SBUF-registeret er satt til tilfeldige verdier.

      setter låsene til portene P0-PZ til "1".

Tilstandene til mikrokontrollerregistrene etter tilbakestilling er vist i tabell 3.5.

Tabell 3.5.

Informasjon

Usikker

0ХХХ0000V for k-MOS 0XXXXXXXB for n-MOS

RST-pinnen har også en alternativ funksjon. Backup-strøm tilføres gjennom den for å holde innholdet i mikrokontrollerens RAM uendret når den viktigste fjernes.

konklusjoner BQ1, BQ2 er beregnet for å koble til en kvartsresonator som bestemmer klokkefrekvensen til MK.

Konklusjon EA` (E eksternt EN kjole utvendig adresse) - designet for å aktivere modusen for lesing av kontrollkoder fra eksternt programminne når et aktivt lavt nivå påføres denne pinnen. Utgangen har et alternativt formål (funksjon). Den forsynes med programmeringsspenning fra RPOM i programmeringsmodus.

Konklusjon PME (P rogram M minne E nable tillatelse hukommelse programmer) - er designet for å kontrollere lesesyklusen fra programminnet og aktiveres automatisk av MK i hver maskinsyklus.

Konklusjon ALE (EN kjole L ength E nable tillatelse junior adresser) strober utdataene fra den laveste delen av adressen via port P0. Utgangen brukes også ved programmering av RPOM, mens en strobepuls for programmeringsprosessen leveres til den.

MK inneholder fire grupper med porter: P0, P1, P2 og P3. Dette er de resterende 40 pinnene til mikrokontrolleren. Disse portene kan tjene for bit-for-bit input og output av informasjon, men i tillegg har hver av dem sin egen spesialisering. Et generalisert funksjonsdiagram av porten er vist i fig. 3.3. Porten inneholder FET-utgangsbrytere koblet til pinnen, en funksjonsbryter, en D-flip-flop-lås og kontrolllogikk. En enhet eller null kan skrives til låsen på den interne bussen til MK. Denne informasjonen sendes gjennom funksjonsbryteren til utgangsbryterne og utgangen til MK. I den ene tilstanden er begge transistorene N og N1 lukket, men N2 er åpen. I nulltilstanden åpner N-

Xia, og N2 stenger. I det øyeblikket en port utfører en alternativ funksjon som den er spesialisert for, slettes utgangslåsetilstanden. Mikrokontrolleren kan separat lese tilstanden til portlåsen og tilstanden til utgangen, satt av et eksternt signal. For dette formålet inneholder MK-montøren spesielle kommandoer som aktiverer de tilsvarende linjene. For å lese pin-tilstanden inn i den tilsvarende portlåsen,

være forhåndsinnspilt

Fra internt

Kontrolllås

Funksjonsbryter

Vcc

Helg

enhet. Når "read latch"-linjen er aktivert, vises utgangen til "AND"-cellen som denne linjen er koblet til.

hennes dekk MK D Q

Skriv til låsen C Q

Les låsen

Portpinne

Låsetilstanden overføres til den interne bussen til MC når den aktiveres

"les utgang" - tilstanden til den eksterne pinnen til porten.

Havn P0 – universal toveis port

I/O Utover denne porten

funksjonen til å organisere eksterne adressebusser og

Ris. 3.3. Funksjonsdiagram av mikrokontrollerporten

data for utvidelse av programminne og dataminne

mikrokontroller. Når det eksterne programminnet aksesseres eller en kommando utføres for å få tilgang til det eksterne dataminnet, settes den laveste delen av adressen (A0...A7) ved portpinnene, som er portet høyt ved ALE-pinnen. Deretter, når du skriver data til minnet, sendes den registrerte informasjonen fra den interne bussen til MK til pinnene til P0-porten. I leseoperasjoner sendes tvert imot informasjon fra portpinnene til den interne bussen. En funksjon ved P0-porten er fraværet av en "pull-up" transistor N2, som gir strøm til utgangen. Når du skriver til enhetsportlåsen, overføres den ganske enkelt til en høyimpedanstilstand, som er nødvendig for normal drift av databussen. Hvis det er nødvendig å drive eksterne enheter gjennom utgangen, bør eksterne motstander leveres fra strømkretsene til portutgangen.

Havn P1 – universal toveis I/O-port uten alternative funksjoner.

Havn P2 – en universell toveis I/O-port, som, som en alternativ funksjon, utsteder den høye delen av adressen (A8...A15) ved tilgang til eksternt minne.

Havn P3 – en universell toveis I/O-port, som hver bit sørger for implementering av ulike alternative funksjoner. I dette tilfellet implementeres alternative funksjoner bare hvis de er skrevet til låsene til portpinnene; ellers blokkeres utførelsen av alternative funksjoner. La oss liste dem separat for hver bit:

P3.0 RxD (R ead e X innvendig D spiste, les eksterne data) – inngang til den innebygde serielle transceiveren.

P3.1 TxD (T jo e X innvendig D spiste, overføre eksterne data) – utgang fra den innebygde serielle senderen.

P3.2 INT0` (INT avbryte, avbryte) – ekstern avbruddsinngang 0.

P3.3 INT1` – ekstern avbruddsinngang 1.

P3.4 С/T0 – null innebygd timer/tellerinngang.

P3.5 C/T1 – inngang av den første innebygde timeren/telleren.

P3.6 WR` (W rite, write) – utgang for å kontrollere skrivesyklusen i dataminnet.

P3.7 RD` (R ead, read) – kontrollutgang for lesesyklusen fra dataminnet.

Pinnene til port P1, P2 og P3 er i stand til å sende ut en strøm på ca. 0,2 mA per enhet og motta en strøm på 3 mA ved null; pinnene til port P0 er kraftigere og er i stand til å levere en strøm på ca. 0,8 mA i en enhet og mottar en strøm på 5 mA ved null. Kort informasjon om formålet med mikrokontrollerpinnene er gitt i tabell 3.6.

Tabell 3.6.

Betegnelse

Utgangsformål

8-bits toveis port P1. Adresseinngang A0-A7 ved kontroll av intern ROM (RPM)

gå inn i utgangen

Generelt tilbakestillingssignal. RAM backup strømutgang fra en ekstern kilde (for 1816)

8-bits toveis P3-port med tilleggsfunksjoner

gå inn i utgangen

Mottakers seriedata - RxD

Senderseriedata - TxD

Ekstern avbruddsinngang 0-INT0`

Ekstern avbruddsinngang 1-INT1`

Timer/tellerinngang 0: - T0

Timer/tellerinngang 1: - T1

Strobesignalutgang ved skriving til eksternt dataminne: - WR`

Strobesignalutgang ved lesing fra eksternt dataminne – RD`

Ledninger for tilkobling av kvartsresonator.

utgangsinngang

Generell konklusjon

8-bits toveis port P2. Adresse A8-A15-utgang i ekstern minnemodus. I den interne ROM-sjekkmodusen brukes pinnene P2.0 - P2.6 som inngangen til adressene A8-A14. Pin P2.7 – ROM lesetillatelse.

gå inn i utgangen

Program minneoppløsning

Aktiver utgangssignal for adressefiksering. Ved programmering av RPOM-signalet: PROG

gå inn i utgangen

Blokkering av arbeid med internminne. Ved programmering av RPOM gis UPR-signalet

gå inn i utgangen

8-bits toveis port P0. Adresse/databuss for arbeid med eksternt minne. Datautgang D7-D0 i intern ROM (RPM) testmodus.

gå inn i utgangen

Strømutgang fra +5V spenningskilde

FOREDRAGSPLAN

1. Introduksjon

2. Aritmetiske og logiske instruksjoner

3. Dataoverføringskommandoer

4. Boolske operasjoner

5. Hoppinstruksjoner

1. Introduksjon

Kommandosystem MCS-51 støtter et enkelt sett med instruksjoner, som er designet for å utføre 8-biters aktuatorkontrollalgoritmer. Det er mulig å bruke raske metoder for å adressere intern RAM og utføre bitoperasjoner på små datastrukturer. Det er et omfattende system for adressering av enkeltbitvariabler som en uavhengig datatype, som tillater bruk av individuelle biter i logiske og kontrollkommandoer for boolsk algebra.

Adresseringsmoduser : kommandosett MCS-51 støtter følgende adresseringsmoduser. Direkte adressering: Operaanden bestemmes av 8-bits adressen i instruksjonen. Direkte adressering brukes kun for den nedre halvdelen av det interne dataminnet og registrene SFR. Indirekte adressering: Instruksjonen adresserer et register som inneholder adressen til operanden. Denne typen adressering brukes for ekstern og intern RAM. Registre kan brukes til å spesifisere 8-biters adresser R0 Og R1 valgt registerbank eller stabelpeker SP. For 16-bits adressering brukes kun datapekerregisteret DPTR.

Registrer instruksjoner : registrerer R0–R7 gjeldende registerbank kan adresseres via spesifikke instruksjoner som inneholder et 3-bits felt som angir registernummeret i selve instruksen. I dette tilfellet mangler det tilsvarende adressefeltet fra kommandoen. Operasjoner ved hjelp av spesielle registre: noen instruksjoner bruker individuelle registre (for eksempel akkumulatoroperasjoner, DPTR, etc.). I dette tilfellet er operandadressen ikke spesifisert i kommandoen i det hele tatt. Den er forhåndsbestemt av operasjonskoden.

Umiddelbare konstanter : konstanten kan lokaliseres direkte i kommandoen etter opkoden.

Indeksadressering : Indeksadressering kan kun brukes for å få tilgang til programminnet og kun i lesemodus. I denne modusen vises tabeller i programminnet. 16-bits register ( DPTR eller programteller) indikerer baseadressen til den ønskede tabellen, og akkumulatoren indikerer inngangspunktet til den.

Kommandosetthar 42 kommandomnemonikk for å spesifisere de 33 funksjonene til dette systemet. Syntaksen til de fleste assembly-språkinstruksjoner består av en funksjon mnemonic etterfulgt av operander som indikerer adresseringsmetoder og datatyper. Forskjellige typer data eller adresseringsmoduser bestemmes av de angitte operandene, ikke av endringer i mnemonikk.

Kommandosystemet kan deles inn i fem grupper: aritmetiske instruksjoner; logiske kommandoer; dataoverføringskommandoer; bit prosessor kommandoer; forgrenings- og kontrolloverføringskommandoer. Notasjonene og symbolene som brukes i kommandosystemet er gitt nedenfor.

Bord. Notasjoner og symboler som brukes i kommandosystemet

Betegnelse, symbol

Hensikt

Batteri

Registre for gjeldende valgte registerbank

Nummeret på det lastede registeret som er spesifisert i kommandoen

direkte

Direkte adresserbar 8-bits intern datacelleadresse, som kan være en intern data-RAM-celle (0–127) eller et SFR spesialfunksjonsregister (128–255)

Indirekte adresserbar 8-bits intern data-RAM-celle

8-bit direkte data inkludert i operasjonskoden (OPC)

dataH

Mest signifikante biter (15–8) av de umiddelbare 16-bits dataene

dataL

Minst signifikante biter (7–0) med umiddelbare 16-biters data

11-biters destinasjonsadresse

adrL

Minst viktige biter av destinasjonsadressen

8-bits signert offsetbyte

Direkte adresserbar bit hvis adresse inneholder COP som ligger i det interne data-RAM eller spesialfunksjonsregister SFR

a15, a14...a0

Destinasjonsadressebiter

Innhold av element X

Innhold på adressen lagret i element X

Bit M av element X


+

*
OG
ELLER
XOR
/X

Operasjoner:
addisjon
subtraksjon
multiplikasjon
divisjoner
logisk multiplikasjon (OG operasjon)
logisk addisjon (ELLER-operasjon)
tilleggsmodulo 2 (eksklusiv ELLER)
inversjon av element X

Funksjonsmnemonikk er unikt assosiert med spesifikke kombinasjoner av adresseringsmetoder og datatyper. Totalt er det 111 slike kombinasjoner mulig i kommandosystemet.

2. Aritmetiske og logiske instruksjoner

Hvordan s eksempel regneundervisning, kan tilleggsoperasjonen utføres av en av følgende kommandoer.

LEGG TILEN,7 F 16 – legg til tallet 7 til innholdet i register A F 16 og lagre resultatet i register A;

LEGG TILEN,@ R0 – legg til innholdet i register A nummeret hvis adresse (@ – kommersielle ) er lagret i et register R 0 (indirekte adressering), og lagre resultatet i register A;

LEGG TIL A,R7– legge til innholdet i register A til innholdet i registeret R 7 og lagre resultatet i register A;

LEGG TIL A,#127– legg til innholdet i register A et nummer hvis lagringscelleadresse er 127 ( # – tallsymbol), og lagre resultatet i registeret T-re A.

Alle aritmetiske instruksjoner utføres i én maskinsyklus med unntak av instruksjonen INC DPTR(datapekerforskyvning DPTR til neste byte), som krever to maskinsykluser, samt multiplikasjons- og divisjonsoperasjoner utført i 4 maskinsykluser. Enhver byte i det interne dataminnet kan økes og reduseres uten bruk av batteri.

Bruksanvisning MUL AB utfører multiplikasjon (multiplikasjon) av dataene i akkumulatoren med dataene i register B, og plasserer produktet i registre A (lav halvdel) og B (høy halvdel).

Bruksanvisning DIV AB deler (divisjon) innholdet i akkumulatoren med verdien i register B, og lar resten stå i B og kvotienten i akkumulatoren.

Bruksanvisning DA A er beregnet på binære desimalarithmetiske operasjoner (aritmetiske operasjoner på tall representert i binær desimalkode). Den konverterer ikke binært tall til BCD, men gir bare riktig resultat når du legger til to binære desimaltall.

Eksempel logisk kommando: En logisk OG-operasjon kan utføres av en av følgende kommandoer:

ANLEN,7 F 16 – logisk multiplikasjon av innholdet i register A med tallet 7 F 16 og resultatet lagres i register A;

ANLEN,@ R1 – logisk multiplikasjon av innholdet i register A med nummeret hvis adresse er lagret i registeret R 1 (indirekte adressering), og lagre resultatet i register A;

ANL A,R6– logisk multiplikasjon av innholdet i register A med innholdet i registeret R 6, og lagre resultatet i register A;

ANL A,#53 – logisk multiplikasjon av innholdet i register A med et tall hvis lagringscelleadresse er 53 16, og resultatet lagres i register A.

Alle logiske operasjoner på innholdet i akkumulatoren utføres i en maskinsyklus, resten - i to. Logiske operasjoner kan utføres på hvilken som helst av de nedre 128 bytene av internt dataminne eller på et hvilket som helst register SFR (spesialfunksjonsregistre) i direkte adresseringsmodus uten bruk av batteri.

Roterende skiftoperasjoner RL A, RLC A osv. flytter innholdet i akkumulatoren en bit til høyre eller venstre. I tilfelle av et venstre syklisk skift, flyttes den minst signifikante biten til den mest signifikante posisjonen. Ved høyre syklisk skift skjer det motsatte.

Operasjon BYTT A utveksler de lave og høye tetradene i batteriet.

3. Dataoverføringskommandoer

Team MOV dest,src lar deg overføre data mellom interne RAM-celler eller spesielle funksjonsregisterområder SFR uten å bruke batteri. I dette tilfellet kan arbeid med den øvre halvdelen av intern RAM bare utføres i indirekte adresseringsmodus, og tilgang til registre SFR– kun i direkte adresseringsmodus.

I alle mikrokretser MCS-51 Stabelen plasseres direkte i det lokale dataminnet og vokser oppover. Bruksanvisning TRYKKøker først verdien i stabelpekerregisteret SP, og skriver deretter en byte med data på stabelen. Lag TRYKK Og POP brukes bare i direkte adresseringsmodus (skriver eller gjenoppretter en byte), men stabelen er alltid tilgjengelig ved indirekte adressering via et register SP. Dermed kan stabelen også bruke de øverste 128 bytene med dataminne. De samme hensyn utelukker muligheten for å bruke stabelinstruksjoner for å adressere registre SFR.

Dataoverføringsinstruksjoner inkluderer en 16-biters overføringsoperasjon MOV DPTR,#data16, som brukes til å initialisere datapekerregisteret DPTR når du ser på tabeller i programminnet eller for å få tilgang til eksternt dataminne.

Operasjon XCH A,byte brukes til å utveksle data mellom akkumulatoren og den adresserte byten. Team XCHD A,@Ri lik den forrige, men utføres bare for de lavere tetradene som er involvert i utvekslingen av operander.

For å få tilgang til eksternt dataminne brukes kun indirekte adressering. Ved enkeltbyteadresser brukes registre R0 eller R1 gjeldende registerbank, og for 16-bit – datapekerregister DPTR. Med en hvilken som helst metode for å få tilgang til eksternt dataminne, spiller batteriet rollen som en kilde eller mottaker av informasjon.

For å få tilgang til tabeller i programminnet, bruk følgende kommandoer:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Innholdet i datapekerregisteret brukes som baseadressen til tabellen DPTR eller PC(programteller), og forskyvningen tas fra EN. Disse instruksjonene brukes utelukkende til å lese data fra programminnet, men ikke til å skrive til det.

4. Boolske operasjoner

Mikrokretser MCS-51 inneholder en "boolsk" prosessor. Den interne RAM har 128 direkte adresserbare biter. Spesialfunksjonsregisterplass SFR kan også støtte opptil 128 bits felt. Bitinstruksjoner utfører betingede grener, overføringer, tilbakestillinger, inversjoner, OG- og ELLER-operasjoner. Alle spesifiserte biter er tilgjengelige i direkte adresseringsmodus.

Bær bit CF i spesialfunksjonsregisteret "programstatusord" P.S.W." brukes som en en-bits akkumulator for en boolsk prosessor.

5. Hoppinstruksjoner

Adressene til hoppoperasjoner er indikert på assemblerspråk med en etikett eller med en reell verdi i programminnet. Betingede grenadresser settes sammen til en relativ offset - en tegnbyte lagt til programtelleren PC dersom overgangsvilkåret er oppfylt. Grensene for slike overganger ligger mellom minus 128 og 127 i forhold til den første byten etter instruksjonen. I spesialfunksjonsregisteret "programstatusord" P.S.W."Det er ikke noe nullflagg, så instruksjonene JZ Og JNZ sjekk tilstanden "lik null" som testing av dataene i akkumulatoren.

Det er tre typer ubetingede hoppkommandoer: SJMP, LJMP Og AJMP– destinasjonsadresser som varierer i format. Bruksanvisning SJMP koder adressen som en relativ offset, og tar to byte. Hoppavstanden er begrenset til området fra minus 128 til 127 byte i forhold til instruksjonen som følger SJMP.

I instruksjonene LJMP Destinasjonsadressen brukes som en 16-bits konstant. Kommandolengden er tre byte. Destinasjonsadressen kan lokaliseres hvor som helst i programminnet.

Team AJMP bruker en 11-bits adressekonstant. Kommandoen består av to byte. Når denne instruksjonen utføres, erstattes de nederste 11 bitene av adressetelleren med 11-biters adressen fra instruksjonen. De fem mest betydningsfulle bitene i programtelleren PC forbli uendret. Dermed kan overgangen gjøres innenfor en 2K-byte blokk der instruksjonen som følger instruksjonen er plassert AJMP.

Det er to typer kommandoanrop til en subrutine: LCALL Og ACALL. Bruksanvisning LCALL bruker 16-biters adressen til den kalte subrutinen. I dette tilfellet kan subrutinen lokaliseres hvor som helst i programminnet. Bruksanvisning ACALL bruker en 11-bits subrutineadresse. I dette tilfellet må den kalte rutinen være plassert i en enkelt 2K byteblokk med instruksjonen som følger ACALL. Begge versjonene av instruksjonen skyver adressen til neste instruksjon på stabelen og last den inn i programtelleren PC tilsvarende ny verdi.

Subrutinen avsluttes med instruksjonen RET, som lar deg gå tilbake til instruksjonen etter kommandoen ANROP. Denne instruksjonen spretter returadressen av stabelen og laster den inn i programtelleren. PC . Bruksanvisning RETI brukes til å komme tilbake fra avbruddsrutiner. Den eneste forskjellen RETI fra RET er det RETI informerer systemet om at avbruddsbehandlingen er fullført. Hvis på utførelsestidspunktet RETI det er ingen andre avbrudd, da er den identisk RET.

Bruksanvisning DJNZ designet for å kontrollere sykluser. For å utføre en loop N når du trenger å laste en byte med en verdi inn i telleren N og lukk løkken med kommandoen DJNZ, som indikerer begynnelsen av syklusen.

Team CJNE sammenligner de to operandene som heltall uten fortegn og hopper til adressen spesifisert deri hvis operandene som sammenlignes ikke er like. Hvis den første operanden er mindre enn den andre, så bærebiten CF er satt til "1".

Alle instruksjoner i sammensatt form opptar 1, 2 eller 3 byte.

ARKITEKTUR AV MICROCONTROLLER FAMILIEMCS-51

Forelesningsnotater til kurs

"Mikroprosessorer i kontrollsystemer", "Mikroprosessorteknologi"

"Mikroprosessorverktøy og systemer"

for studenter av alle former for studiespesialister

072000 – Standardisering og sertifisering

210200 – Automatisering av teknologiske prosesser

230104 – Datastøttede designsystemer

Tambov 2005

INNLEDNING.. 3

1. STRUKTUR AV INTEL 8051 MIKROKONTROLLEREN 3

1.1. Organisering av minne. 5

1.2. Aritmetisk-logisk enhet. 6

1.3. Residentminne for programmer og data. 7

1.4. Akkumulator- og generelle registre. 8

1.5. Programstatusordregisteret og dets flagg. 9

1.6. Peker registrerer. 10

1.7. Spesialfunksjonsregistre. elleve

1.8. Kontroll- og synkroniseringsenhet. elleve

1.9. Parallelle informasjonsinngang/utgangsporter. 12

1.10. Tidtakere/tellere. 1. 3

1.11. Seriell port. 18

1.11.1. Registrer SBUF.. 18

1.11.2. Driftsmoduser for seriell port. 18

1.11.3. Registrer SCON.. 19

1.11.4. Mottak/overføringshastighet. 21

1.12. Avbryt systemet. 22

2. KOMMANDOSYSTEMET TIL INTEL 8051 MIKROKONTROLLEREN 26

2.1. Generell informasjon. 26

2.1.1. Typer kommandoer. 27

2.1.2. Operander typer. 28

2.1.3. Dataadresseringsmetoder. tretti

2.1.4. Resultatflagg. 31

2.1.5. Symbolsk adressering. 32

2.2. Dataoverføringskommandoer. 33

2.2.1. Struktur av informasjonslenker. 33

2.2.2. Tilgang til batteriet. 33

2.2.3. Tilgang til eksternt dataminne. 34

2.2.4. Tilgang til programminne... 34


2.2.5. Tilgang til stabelen. 35

2.3. Aritmetiske operasjoner. 35

2.4. Logiske operasjoner. 39

2.5. Kontroller overføringskommandoer. 43

2.5.1. Lang overgang. 43

2.5.2. Absolutt overgang. 43

2.5.3. Relativ overgang. 44

2.5.4. Indirekte overføring. 44

2.5.5. Betingede hopp.. 44

2.5.6. Subrutiner.. 47

2.6. Operasjoner med bits. 48

Testspørsmål... 49

LITTERATUR.. 50

Tillegg INTEL 8051 KOMMANDOSYSTEM. 51

INTRODUKSJON

Siden 80-tallet av det 20. århundre har en uavhengig klasse dukket opp innen mikroprosessorteknologi integrerte kretser– enkeltbrikke mikrokontrollere som er designet for integrering i enheter for ulike formål. De skiller seg fra klassen enkeltbrikke mikroprosessorer ved tilstedeværelsen av internt minne og utviklet midler for interaksjon med eksterne enheter.

8-bits enkeltbrikke mikrokontrollere av MCS-51-familien er mye brukt. Denne familien ble dannet på grunnlag av Intel 8051-mikrokontrolleren, som har fått stor popularitet blant utviklere av mikroprosessorkontrollsystemer på grunn av sin godt utformede arkitektur. Mikrokontrollerarkitekturen er et sett med interne og eksterne programvaretilgjengelige maskinvareressurser og kommandosystemer.

Deretter ga Intel ut rundt 50 modeller basert på operasjonskjernen til mikrokontrolleren Intel 8051. Samtidig begynte mange andre selskaper, som Atmel, Philips, å produsere sine egne mikrokontrollere utviklet i MCS-51-standarden. Det er også innenlandsk analog Intel 8051 mikrokontroller - K1816BE51-brikke.

2. STRUKTUR AV INTEL 8051 MIKROKONTROLLEREN

Intel 8051-mikrokontrolleren er basert på n-MOS-teknologi på høyt nivå. Dens viktigste egenskaper er som følger:

· åtte-bits sentral prosessor optimalisert for implementering av kontrollfunksjoner;

· innebygd klokkegenerator (maksimal frekvens 12 MHz);

· adresserom for programminne - 64 KB;

· dataminne adresserom - 64 KB;

· internt programminne - 4 KB;

· internt dataminne - 128 byte;

· tilleggsfunksjoner for å utføre boolske algebraoperasjoner (bitvise operasjoner);

· 2 seksten-bits multifunksjonelle timere/tellere;

· full-dupleks asynkron transceiver (seriell port);

· vektorisert avbruddssystem med to prioritetsnivåer og fem hendelseskilder.

Figur 1 - Blokkdiagram av Intel 8051-mikrokontrolleren

Grunnlaget for blokkskjemaet (fig. 1) er dannet av en intern toveis 8-bits buss, som kobler sammen hovednodene og enhetene til mikrokontrolleren: resident program memory (RPM), resident data memory (RDM), aritmetisk-logisk enhet (ALU), registerenhet spesialfunksjoner, kontrollenhet (CU), parallelle I/O-porter (P0-P3), samt programmerbare timere og en seriell port.

2.1. Minneorganisering

Denne mikrokontrolleren har innebygd (resident) og eksternt minne for programmer og data. Det residente programminnet (RPM) har en kapasitet på 4 KB, og det residente dataminnet (RDM) har en kapasitet på 128 byte.


Avhengig av modifikasjonen av mikrokontrolleren, implementeres RPM i form av en maske-ROM, engangsprogrammerbar eller omprogrammerbar ROM.

Om nødvendig kan brukeren utvide programminnet ved å installere en ekstern ROM. Tilgang til intern eller ekstern ROM bestemmes av verdien til signalet på pinne EA (ekstern tilgang):

EA=VCC (forsyningsspenning) - tilgang til intern ROM;

EA=VSS (jordpotensial) - tilgang til ekstern ROM.

Eksternt program- og dataminne kan være på 64 KB hver og adresseres ved hjelp av portene P0 og P2. Figur 2 viser Intel 8051-minnekortet.

Figur 2 - Intel 8051 minneorganisasjon

Ekstern ROM-lese-strobe - (Program Store Enable) genereres når du får tilgang til eksternt programminne og er inaktiv når du får tilgang til ROM-en som ligger på brikken.

Området med lavere programminneadresser (fig. 3) brukes av avbruddssystemet. INTEL 8051-brikkearkitekturen gir støtte for fem avbruddskilder. Adressene som avbruddskontrollen overføres til kalles avbruddsvektorer.

Figur 3 - Kart over det nedre programminneområdet

2.2. Aritmetisk logikkenhet

Den 8-bits aritmetiske logiske enheten (ALU) kan utføre de aritmetiske operasjonene addisjon, subtraksjon, multiplikasjon og divisjon; logiske operasjoner OG, ELLER, eksklusive ELLER, samt operasjoner av syklisk skift, tilbakestilling, inversjon osv. Programvareutilgjengelige registre T1 og T2, beregnet for midlertidig lagring av operander, en desimalkorreksjonskrets (DCU) og en funksjonsgenereringskrets er koblet til inngangsoperasjonsresultatet (PSW).

Den enkle addisjonsoperasjonen brukes i ALU for å øke innholdet i registre, føre frem datapekerregisteret (RAR) og automatisk beregne neste programresidentminneadresse. Den enkleste subtraksjonsoperasjonen brukes i ALU for å redusere registre og sammenligne variabler.

De enkleste operasjonene danner automatisk "tandemer" for å utføre operasjoner som for eksempel å øke 16-bits registerpar. ALU implementerer en mekanisme for kaskadeutførelse av enkle operasjoner for å implementere komplekse kommandoer. Så, for eksempel, når du utfører en av de betingede kontrolloverføringskommandoene, basert på sammenligningsresultatet i ALU, økes programtelleren (PC) tre ganger, RDM leses to ganger, en aritmetisk sammenligning av to variabler utføres, det dannes en 16-bits overgangsadresse, og det tas en beslutning om hvorvidt overgangen skal gjøres eller ikke i henhold til programmet. Alle de ovennevnte operasjonene utføres på bare 2 μs.

En viktig funksjon ved ALU er dens evne til å betjene ikke bare byte, men også biter. Individuelle programvaretilgjengelige biter kan settes, slettes, inverteres, overføres, testes og brukes i logiske operasjoner. Denne evnen er ganske viktig, siden det ofte brukes algoritmer for å kontrollere objekter som inneholder operasjoner på boolske inn- og utdatavariabler, hvis implementering er forbundet med visse vanskeligheter ved bruk av konvensjonelle mikroprosessorer.

Dermed kan ALU-en operere med fire typer informasjonsobjekter: boolsk (1 bit), digital (4 bit), byte (8 bit) og adresse (16 bit). ALU utfører 51 forskjellige operasjoner for å videresende eller transformere disse dataene. Siden det er 11 adresseringsmoduser (7 for data og 4 for adresser), ved å kombinere operasjonen og adresseringsmodusen, utvides det grunnleggende antallet 111 instruksjoner til 255 av 256 mulige med en enkeltbyte opkode.

2.3. Residentprogram og dataminne

Residential (on-chip) programminne (RPM) og dataminne (RDM) er fysisk og logisk atskilt, har forskjellige adresseringsmekanismer, opererer under kontroll av forskjellige signaler og utfører forskjellige funksjoner.

RPM-programminnet har en kapasitet på 4 KB og er designet for å lagre kommandoer, konstanter, initialiseringskontrollord, konverteringstabeller for inngangs- og utdatavariabler osv. Minnet har en 16-bits adressebuss, gjennom hvilken tilgang gis fra PC-programteller eller fra registeret datapeker (DPTR). DPTR fungerer som et basisregister for indirekte programhopp eller brukes i tabelloperasjoner.

RDM-dataminnet er designet for å lagre variabler under kjøring av et applikasjonsprogram, er adresserbart med én byte og har en kapasitet
128 byte. I tillegg ligger adresserommet ved siden av adressene til spesialfunksjonsregistre, som er oppført i tabell. 1.

Programminnet kan, i likhet med dataminnet, utvides til
64 KB ved å koble til eksterne brikker.

Tabell 1

Spesialfunksjonsregisterblokk

Navn

Batteri

Akkumulatorutvidelsesregister

Programstatusord

Stabelpekerregister

Datapekerregister

Avbryt Prioritetsregister

Avbryt Mask Register

Registrering av timer/tellermodus

Tidsurkontroll/statusregister

Timer 0 (høy byte)

Timer 0 (lav byte)

Timer 1 (høy byte)

Timer 1 (lav byte)

Transceiver kontrollregister

Transceiver Buffer

Effektkontrollregister

Merk. Registre hvis navn er merket med (*) tillater adressering av individuelle biter.

2.4. Akkumulator og generelle registre

Akkumulatoren (A) er kilden til operanden og plasseringen av resultatet ved utføring av aritmetiske, logiske operasjoner og en rekke dataoverføringsoperasjoner. I tillegg kan skiftoperasjoner, kontroll av null, generering av et paritetsflagg, etc. bare utføres ved bruk av akkumulatoren.

Brukeren har fire banker med 8 generelle registre R0–R7 til disposisjon (fig. 9). Det er imidlertid mulig å bruke registrene til bare én av de fire bankene, som velges ved bruk av PSW-registerbiten.

2.5. Programstatusordregister og dets flagg

Når mange instruksjoner utføres i ALU, genereres et antall operasjonsattributter (flagg) som registreres i programstatusordregisteret (PSW). I tabellen 2 gir en liste over PSW-flagg, gir deres symbolske navn og beskriver betingelsene for deres dannelse.

tabell 2

PSW-programstatus Word-format

Navn og formål

Bær flagg. Still inn og tilbakestill av maskinvare eller programvare når du utfører aritmetiske og logiske operasjoner

Hjelpe bæreflagg. Angis og slettes kun av maskinvare når addisjons- og subtraheringsinstruksjoner utføres og signaliserer en carry eller lån i bit 3

Flagg 0. Kan settes, slettes eller kontrolleres av programmet som et brukerspesifisert flagg.

Velge en registerbank. Still inn og tilbakestill av programvare for å velge en fungerende registerbank (tabell 3)

Overløpsflagg. Still inn og tilbakestill av maskinvare når du utfører aritmetiske operasjoner

Ikke brukt

Paritetsflagg. Sett og tilbakestill av maskinvare i hver syklus og fikser oddetall/partall av én bit i akkumulatoren, dvs. utfører paritet

Tabell 3

Velge en fungerende registerbank

Adressegrenser

Det mest "aktive" PSW-flagget er bæreflagget, som er involvert og modifisert under mange operasjoner, inkludert addisjon, subtraksjon og skift. I tillegg fungerer bæreflagget (CY) som en "boolsk akkumulator" i bitmanipulerende instruksjoner. Overløpsflagget (OV) oppdager aritmetisk overløp i signerte heltallsoperasjoner og gjør det mulig å bruke aritmetikk i tos komplementkoder. ALU kontrollerer ikke registerbankvalgflaggene (RS0, RS1), deres verdi er fullstendig bestemt av applikasjonsprogrammet og brukes til å velge en av de fire registerbankene.

Som en byte kan PSW-registeret representeres som følger:

I mikroprosessorer hvis arkitektur er avhengig av en akkumulator, opererer de fleste instruksjoner på akkumulatoren ved bruk av implisitt adressering. Intel 8051 er annerledes. Selv om prosessoren er basert på et batteri, kan den utføre mange kommandoer uten at den deltar. For eksempel kan data overføres fra en hvilken som helst RDM-celle til et hvilket som helst register, ethvert register kan lastes med en umiddelbar operand osv. Mange logiske operasjoner kan utføres uten å involvere en akkumulator. I tillegg kan variabler økes, reduseres og kontrolleres uten å bruke en akkumulator. Flagg og kontrollbiter kan kontrolleres og endres på samme måte.

2.6. Peker registrerer

8-bit stack pointer (SP) kan adressere et hvilket som helst RDM-område. Innholdet økes før dataene lagres på stabelen under PUSH- og CALL-instruksjoner. Innholdet i SP reduseres etter at POP- og RET-kommandoene er utført. Denne metoden for å adressere stabelelementer kalles pre-increment/post-decrement. Under initialiseringen av mikrokontrolleren, etter RST-signalet, blir kode 07H automatisk lastet inn i SP. Dette betyr at med mindre applikasjonsprogrammet overstyrer stabelen, vil det første dataelementet på stabelen være plassert i RDM-lokasjon 08H.

To-byte datapekerregisteret DPTR brukes vanligvis til å fange opp en 16-bits adresse i eksterne minnetilgangsoperasjoner. Ved mikrokontrollerkommandoer kan datapekerregisteret brukes enten som et 16-bits register eller som to uavhengige 8-bits registre (DPH og DPL).

2.7. Spesialfunksjonsregistre

Registrene, symbolsk kalt IP, IE, TMOD, TCON, SCON og PCON, brukes til å låse og programmessig endre kontroll- og statusbitene til avbruddskretsen, timer/teller, seriell transceiver og strømstyring. Organisasjonen deres vil bli beskrevet i detalj i avsnitt 1.8-1.12, når man vurderer funksjonene til mikrokontrolleren i forskjellige moduser.

2.8. Kontroll- og synkroniseringsenhet

En kvartsresonator koblet til de eksterne pinnene til mikrokontrolleren kontrollerer driften av den interne oscillatoren, som igjen genererer synkroniseringssignaler. Styreenheten (CU), basert på synkroniseringssignaler, genererer en maskinsyklus med fast varighet lik 12 generatorperioder. De fleste mikrokontrollerinstruksjoner utføres i én maskinsyklus. Noen instruksjoner som opererer på 2-byte ord eller får tilgang til eksternt minne tar to maskinsykluser å fullføre. Bare divisjons- og multiplikasjonsinstruksjonene krever fire maskinsykluser. Basert på disse betjeningsegenskapene til kontrollenheten, beregnes utførelsestiden for applikasjonsprogrammer.

I mikrokontrollerkretsen er et instruksjonsregister (IR) ved siden av kontrollenheten. Dens funksjon er å lagre koden til kommandoen som utføres.

Inn- og utgangssignaler til kontroll- og synkroniseringsenheten:

1. PSEN – programminneoppløsning,

2. ALE – utgangssignal for adressefiksering,

3. PROG – programmeringssignal,

4. EA – blokkerer arbeid med internminne,

5. VPP – programmeringsspenning,

6. RST – generelt tilbakestillingssignal,

7. VPD – minne backup strømutgang fra ekstern kilde,

8. XTAL – tilkoblingsinnganger kvartsresonator.

2.9. Parallelle inngangs-/utgangsporter

Alle fire portene (P0-P3) er designet for å legge inn eller sende ut informasjon byte for byte. Hver port inneholder et kontrollert låseregister, en inngangsbuffer og en utgangsdriver.

Utgangsdriverne til portene P0 og P2, samt inngangsbufferen til port P0, brukes ved tilgang til eksternt minne. I dette tilfellet, gjennom port P0 i tidsmultipleksingsmodus, sendes først den lave byten til adressen ut, og deretter sendes eller mottas databyten. Port P2 sender ut den mest signifikante byten til adressen i tilfeller hvor adressebredden er 16 biter.

Alle pinnene til port P3 kan brukes til å implementere de alternative funksjonene som er oppført i tabellen. 4. Disse funksjonene kan aktiveres ved å skrive 1 til de tilsvarende bitene i låseregisteret (P3.0-P3.7) til port P3.

Tabell 4

Alternative P3-portfunksjoner

Navn og formål

Lesning. Et aktivt lavnivåsignal genereres av maskinvare ved tilgang til eksternt dataminne

Ta opp. Et aktivt lavnivåsignal genereres av maskinvare ved tilgang til eksternt dataminne

Timer/tellerinngang 1 eller testinngang

Timer/tellerinngang 0 eller testinngang

Avbruddsforespørselinngang 1. Registrerer lavt nivå eller avskjæringssignal

Avbruddsforespørselinngang 0. Registrerer lavt nivå eller avskjæringssignal

Seriell portsenderutgang i UART-modus. Klokkeutgang i skiftregistermodus

Seriell portmottakerinngang i UART-modus. Datainngang/utgang i skiftregistermodus

Port 0 er toveis og portene 1-3 er kvasi-toveis. Hver portlinje kan brukes uavhengig for input eller output.

Basert på RST-signalet blir enheter automatisk skrevet til låseregistrene til alle porter, og konfigurerer dem derved for inngangsmodus.

Alle porter kan brukes til å organisere informasjonsinngang/-utgang via toveis overføringslinjer. Portene P0 og P2 kan imidlertid ikke brukes til dette formålet hvis systemet har eksternt minne, kommunikasjon med dette er organisert gjennom en felles delt adresse/databuss som opererer i tidsmultipleksingsmodus.

Tilgang til I/O-porter er mulig ved å bruke kommandoer som opererer på en byte, en individuell bit eller en vilkårlig kombinasjon av biter. Dessuten, i tilfeller der porten er både en operand og målet for resultatet, implementerer kontrollenheten automatisk en spesiell modus kalt "les-modifiser-skriv". Denne tilgangsmodusen innebærer å legge inn signaler ikke fra de eksterne pinnene til porten, men fra dens låseregister, noe som eliminerer feil lesing av tidligere utdatainformasjon. Denne mekanismen for tilgang til porter er implementert i kommandoene:




Topp