Programmering av MK-portar i språk C 51. Mikrokontroller MCS–51: programmodell, struktur, kommandon. Portläsläge

Grundversion MCS-51 Kort information. Moderna 8-bitars mikrokontroller (MC) har sådana kontrollresurser i realtid, för vilka tidigare dyra flerchipslayouter i form av separata mikrodatorkort användes, nämligen:

● ha tillräcklig minneskapacitet, dess fysiska och logiska uppdelning i programminne och dataminne(Harvard-arkitektur) och ett kommandosystem fokuserat på att exekvera kontrollalgoritmer;

● inkludera alla enheter (processor, ROM, RAM, in-/utgångsportar, avbrottssystem, medel för bearbetning av bitinformation, etc.) som är nödvändiga för att implementera ett mikroprocessorstyrsystem med minimal konfiguration. På 70-talet av förra seklet företaget Intel en familj av 8-bitars mikrokontroller MCS-48, förenade av ett antal gemensamma funktioner (bitkapacitet, kommandosystem, uppsättning huvudfunktionsblock, etc.), har utvecklats och lanserats i industriell produktion. Den grundläggande versionen av denna familj inkluderar:

● 8-bitars processor;

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

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

● upp till 27 interna och 16 externa I/O-linjer;

● en 8-bitars timerräknare;

● ennivåavbrottssystem med två begärandekällor. 1980 utvecklade samma företag en ny familj av åttabitars mikrokontroller, MCS-51, som är kompatibel med arkitekturen i MCS-48-familjen, men har större kapacitet.

MCS-51-familjens arkitektur visade sig vara så framgångsrik att den fortfarande är en av standarderna för 8-bitars MK. Därför valdes studieobjektet till att vara mikrokontroller av denna familj, som används flitigt i relativt enkla styrsystem.

Olika programförberedande verktyg har utvecklats för MCS-51-familjen (kompilatorer, hård- och mjukvaruemulatorer, etc.) och det finns ett stort antal bibliotek med standardrutiner. Familjen inkluderar olika modifieringar av mikrokretsar (chipversioner) av mikrokontroller. Artiklarna i det här avsnittet diskuterar i detalj den grundläggande versionen av mikrokontrollerna i MCS-51-familjen (8051-mikrokretsen motsvarar den inhemska analogen KP1816BE51), den enklaste i strukturella och funktionella termer och ur förståelsesynpunkt.

Efterföljande serier av mikrokretsar, med bibehållen kompatibilitet med grundversionen, skiljer sig från den i förbättrad tillverkningsteknik, elektriska parametrar, ytterligare hårdvara och funktionalitet. Följande artiklar ägnas åt de strukturella och funktionella egenskaperna hos efterföljande modifieringar av MCS-51-familjen av mikrokretsar.
Generaliserat blockschema för MCS-51. Sammansättningen av MC, ett generaliserat blockschema av vilket visas i fig. 7.1.1, inkluderar:

● 8-bitars CPU CPU som består av ALU, styranordningar U U och adressgenerator F;

● maskera ROM med en kapacitet på 4K byte för lagring av program;

● RAM med en kapacitet på 128 byte för datalagring;

● fyra programmerbara portar P0–P3 för ingång– informationsutmatning;

● blockera Seriellt gränssnitt BPI för utbyte av information med externa enheter via en tvåtrådslinje;

● block av BT/C-timers/räknare för att upprätthålla realtidsläge;

● BP-avbrottsblock för att organisera avbrott i körbara program. Dessa medel bildas bosatt del av mikrokontrollern som sitter direkt på chippet. MK inkluderar ett stort antal register, som är tilldelade separata funktionsblock och inte visas i diagrammet.

Diagrammet visar inte heller styrkretsar. Tvåvägsutbyte av information mellan block utförs via intern 8-bit databussШД-8.

Med intern 16-bit adressbussША-16 Adressen som genereras i CPU:n matas ut till ROM (12 adressbitar) och till RAM (8 lågordningsbitar).

Vid användning av externt minne matas de 8 minst signifikanta bitarna av adressen ut till port P0 och de 3 eller 8 mest signifikanta bitarna till port P2.

För att logiskt expandera gränssnittet används en kombination av portlinjers funktioner. Som ett exempel i fig. 7.1.1 den prickade linjen visar linjerna för P3-porten som fungerar alternativ funktioner för att sända styrsignaler, vars syfte kommer att diskuteras nedan. För att skapa en intern klockgenerator är en kvartsresonator och två kondensatorer anslutna till terminalerna på MK-mikrokretsen (Fig. 7.1.1). Istället för en intern klockgenerator kan en extern oscillationskälla användas för synkronisering. Villkorlig grafisk beteckning MK-mikrokretsar visas i fig. 7.1.2, beteckning och syfte för stift - i tabell. 7.1.1. Låt oss överväga MK:s funktionella block och principen för deras funktion. Aritmetisk logisk enhet. Den aritmetiska logiska enheten är utformad för att utföra aritmetiska (inklusive multiplikation och division) och logiska operationer på åtta-bitars operander, såväl som operationer av logisk skiftning, nollställning, inställning etc. Blockschemat för ALU visas i fig. 7.1.3.

ALU inkluderar

● parallell åtta bitar huggorm SM av kombinationstyp med sekventiell överföring, som utför aritmetiska (addition och subtraktion) och logiska (addition, multiplikation, disparitet och identitet) operationer;

batteri A, tillhandahålla funktionerna för det aritmetiska huvudregistret;

Registrera B, används för att implementera multiplikations- och divisionsoperationer eller som ett extra superoperativt register, vars funktioner bestäms av användaren;

register(mjukvara inte tillgänglig) Tillfällig förvaringРВХ1, РВХ2, avsedda för att ta emot och lagra operander under operationens varaktighet;

● ROM konstanter ROM, som lagrar korrigeringskoden för den binära decimalrepresentationen av data, maskkoden för bitoperationer och koden för konstanter;

programstatus ordregister PSW, som registrerar tillståndet för ALU efter en avslutad operation. I tabell 7.1.2 ger information om tilldelningen av bitar av enskilda bitar i PSW-registret. Kontrollenhet. Styrenhet (CU) för centralprocessorn avsedd för samordning samarbete alla MK-noder använder genererade klockpulser och styrsignaler. Den består av (Fig. 7.1.4):

synkroniserings- och styrenhet Styrsystemet, som genererar klockpulser som definierar maskincykler och deras individuella tillstånd (S) och faser (P), och, beroende på mikrokontrollerns driftläge, genererar den nödvändiga uppsättningen styrsignaler. Det tar en, två eller fyra maskincykler att utföra ett kommando.

Varje maskincykel har sex stater S1–S6, A varje stat inkluderar två faser P1, P2, vars varaktighet är oscillationsperioden för klockgeneratorn T 0SC.

Maskincykelns varaktighet är 12T 0SC. Alla maskincykler är desamma, börjar med fas S1P1 och slutar med fas S6P2.

Utöver klockpulserna genererar synkroniseringsanordningen två (ibland en) grindsignaler för den låga byten av ALE-adressen i varje maskincykel i form av en positiv puls i faserna S1P2–S2P1 och S4P2–S5P1. Tidsdiagram i fig. 7.1.5 illustrera organisationen av maskincykler;

● kommandoregister RK, kommandoavkodare DC och PLM, som tillåter att i varje maskincykel generera en uppsättning mikrooperationer i enlighet med mikroprogrammet för det exekverade kommandot;

● LVV in-/utgångslogik för att ta emot och utfärda signaler som säkerställer utbyte av information från MK med externa enheter via portarna P0–P3;

● PCON-register, som har en enda aktiverad SMOD-bit i position PCON.7 för att fördubbla datahastigheten för serieporten. De återstående bitarna är reserverade för senare användning.
Adressgenerator. Adressgenerator (FA) eller PC-kommandoträknare, avsedd för att bilda den aktuella 16-bitarsadressen för programminnet och 8/16-bitarsadressen för externt dataminne. Den består av (fig. 7.1.6):

● 16-bitars buffert B, som kommunicerar mellan 8-bitars SD-databussen och 16-bitars interna buss (IB) hos adressbildaren;

● SI-inkrementkrets för att öka värdet på den aktuella adressen programminne per enhet;

● registrera för att lagra den aktuella adressen för PTA-kommandon som kommer från SI;

● datapekarregister DPTR , bestående av två 8-bitars register DPH och DPL. Den tjänar till att lagra en 16-bitars adress för externt dataminne och kan användas som två oberoende mjukvarutillgängliga RON:er;

● register för XRF-adressgeneratorn för lagring av den verkställande 16-bitars adressen för programminnet eller 8/16-bitars adressen för externt dataminne. Detta register används också för att överföra data via port P0 till externa enheter när kommandona MOVX @Rm, A och MOVX @DPRT, A utförs.

Dataminne. Dataminne avsedd för att ta emot, lagra och utfärda information som används under programexekveringen. Internt (resident) dataminne (fig. 7.1.7) består av RAM med en kapacitet på 128 byte, stackpekare S.P. adressregister RAM RA och avkodare Dsh. Stackpekaren SP är ett 8-bitars register utformat för att ta emot och lagra adressen till den stackcell som senast åtkoms till. Efter återställningen sätts stackpekaren till adress 07H, vilket motsvarar början av stacken med adress 08H. PA-adressregistret tillsammans med Dsh-avkodaren tillåter åtkomst till den erforderliga minnescellen som innehåller en byte eller bit information.

MK ger möjlighet att öka dataminneskapaciteten upp till 64 KB genom att ansluta externa lagringsenheter. Som ett exempel i fig. 7.1.8 visar sidorganisationen för externt VPD-dataminne med en kapacitet på 2K byte med kommandon av MOVX-typ @ Rm(m = 0; 1). I detta fall fungerar port PO som en multiplexerad adress/databuss, tre linjer av port P2 används för att adressera en sida med externt RAM, och de återstående fem raderna kan användas som in-/utgångslinjer.
I fig. 7.1.9 visar tidsdiagram över läs- och skrivcykler när MK arbetar med externt RAM. Diagrammen visar:

● RSN - hög byte för PC-kommandoträknaren;

● DPL, DPH - låga och höga bytes i DPTR-datapekarregistret, som används som ett register för indirekt adressering i kommandona MOVX @DPTR,A och MOVX A,@DPTR;

● P2 SFR - P2-portlås;

● Rm (m = 0, 1) - register som används i MOVX @Rm, A och MOVX A, @Rm instruktionerna som indirekta adressregister;

● Z - högresistanstillstånd;

● D - den period under vilken data från port P0 matas in i mikrokontrollern. Programminne. Programminnet är utformat för att lagra program, har sitt eget (separat från dataminnet) adressutrymme och är skrivskyddat. Den innehåller en Dsh-avkodare och ROM (fig. 7.1.10). En 16-bitars PC-räknare används för att adressera programminnet, så dess maximala kapacitet är 64K byte. Det interna programminnet består av en 4K byte ROM och en 12-bitars avkodare. Externt minne ansluts enligt diagrammet i Fig. 7.1.11. Om 0 V matas till ¯EA-stiftet på MK (som visas i Fig. 7.1.11), inre minne program är inaktiverade. Alla minnesåtkomster börjar vid adress 0000h. När ¯EA-stiftet är anslutet till en strömkälla sker åtkomst till det interna programminnet vid adresserna 0000h–FFFFh och till det externa programminnet vid adresserna 0FFFh–FFFFh automatiskt.

För att läsa det externa minnet för MK-program genereras ¯PSEN-signalen. Vid arbete med internminne används inte lässignalen. Vid åtkomst till externt programminne bildas alltid en 16-bitars adress. Adressens låga byte sänds genom port P0 under den första halvan av maskincykeln och fixeras genom skärningen av ALE-stroben i registret. Under den andra halvan av cykeln används port PO för att mata in en byte på data från externt minne till MK.

Den mest signifikanta byten av adressen sänds genom port P2 under hela minnesåtkomsttiden.

Tidsdiagram över läs- och skrivcykler när MK arbetar med externt RAM visas i fig. 7.1.12.
Diagrammen visar:

● PCL OUT - utdata från den låga byten för PC-programräknaren;

● RSN OUT - utdata från PC-kommandoträknarens höga byte;

● DPH - hög byte för DPTR-datapekarregistret, som används som ett register för indirekt adressering i instruktionerna MOVX @DPTR,A och MOVX A,@DPTR;

● P2 SFR - P2-portlås;

● INS IN - inmatning av instruktions (kommando) byte från programminnet;

● ADDR OUT - utfärdar den låga byten för den externa dataminnesadressen från Rm-registren (m = 0, 1) eller från DPL-registret (DPTR-lågregister). I/O-portar. Hamnuppdrag. Portarna P0, P1, P2, P3 avsedd för utbyte av information mellan MK och externa enheter, och även för att utföra följande funktioner:

● den låga byten för adressen A7…A0 matas ut via port P0; en databyte matas ut från MK och matas in i MK när man arbetar med externt programminne och externt dataminne (tidsseparerat);

● via port P2 matas den höga byten av adressen A15...A8 ut när man arbetar med externt programminne och externt dataminne (endast när man använder kommandona MOVX A,@DPTR och MOVX @DPTR,A);

● linjer i P3-porten kan användas för att utföra alternativa funktioner om 1 anges i låset på denna linje, annars är 0 fast vid linjeutgången. Alternativa funktioner för P3-portens stift anges i tabell. 7.1.3.

Kretsfunktioner för portar

I fig. 7.1.13 visar diagram för en kanal för var och en av MK-portarna, inklusive:

● spärr för fixering av den mottagna databiten;

● utgångsförstärkare kaskad(förare);

● nod kontakt med slutsteg (förutom P2);

● en krets för att överföra en databit från portens utgångssida, bestående av buffertar B2 och B3 (för port P4). Spärren är en D-flip-flop, klockad av den interna "Write to latch"-signalen. Databiten från den direkta utgången av D-vippan kan läsas programmatiskt genom buffert B1 med hjälp av "Read Latch"-signalen till linjen för den interna databussen (ID) hos MK.

Utgångssteg port P0 är en växelriktare, vars egenskaper manifesteras i det faktum att lasttransistorn VT2 endast öppnas vid åtkomst till externt minne (vid överföring av adresser och data via porten). I alla andra lägen är belastningstransistorn stängd. Därför, för att använda P0 (Fig. 7.1.13, a) som en allmän utgångsport, är det nödvändigt att ansluta externa belastningsmotstånd till dess terminaler. När 1 skrivs till portlåset är invertertransistorn VT1 låst och det externa stiftet på P0.X-porten växlas till ett högresistanstillstånd. I detta läge kan utgången från port P0.X fungera som en ingång. Om P0-porten används som en allmän I/O-port, kan var och en av dess P0.X-stift fungera oberoende av varandra som en ingång eller utgång. Utgångssteg portarna P1, P2, P3 (Fig. 7.1.13, b, c, d) tillverkad enligt inverterkretsar med ett internt belastningsmotstånd, som används som en transistor VT2.

För att minska omkopplingstiden när portstiften övergår från tillstånd 0 till tillstånd 1, introducerades en extra transistor VT3 parallellt med lasttransistorn VT2. Transistor VT3, med hjälp av element i grindkretsen, låses upp under en tid lika med två oscillationsperioder för masterkvartsoscillatorn (under faserna S1P1, S2P2 i maskincykeln). Utgångssteg Portarna P0, P2 (Fig. 7.1.13, A, c) som använder MX-multiplexern kan anslutas antingen till lås eller till de interna "Adress/data"- och "Adress"-bussarna. Slutsteget för port P1 (Fig. 7.1.13, 6) är permanent anslutet till spärren.

Om stiftet på port P3 är en utgång och dess lås innehåller 1, så styrs dess utgångssteg av hårdvara intern signal"Alternativ utgångsfunktion" tillhandahåller exekvering av motsvarande alternativa funktion, dvs. en av signalerna ¯WR, ¯RD eller RxD genereras vid det externa stiftet. Om portutgången används som en ingång, så sänds den alternativa signalen som kommer till den (TxD, ¯INT0, ¯INT1, T0, T1) till den interna linjen "Alternativ ingångsfunktion".

Portinspelningsläge.

När ett portskrivkommando exekveras skrivs det nya värdet till låskretsen i fas S6P2 och matas ut direkt till portens utgångsstift i fas S1P1 i nästa maskincykel.

Portläsläge

Portläskommandon läser information direkt från de externa stiften på en port eller från låsutgångar. I det första fallet läses databiten från portstiftet programmatiskt genom buffert B2 med hjälp av "Read Pins"-signalen till linjen för den interna databussen (SD) hos MK. Observera att signalerna "Write to latch", "Read latch", "Read stifts" genereras i hårdvaran när motsvarande kommandon exekveras.

I det andra fallet implementeras det så kallade "Read-Modify-Write"-läget, i vilket kommandot läser spärrtillståndssignalen, modifierar den vid behov och sedan skriver tillbaka den till spärren. Läget "Read-Modify-Write" implementeras när följande kommandon utförs: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

Genom att läsa information från utgångarna på spärrarna kan du eliminera fel när du tolkar den logiska nivån vid portstiftet. Läs fortsättningen på artikeln.

MCS-51-familjens arkitektur bestäms till stor del av dess syfte - konstruktionen kompakt Och billig digitala enheter. Alla mikrodatorfunktioner implementeras med en enda mikrokrets. MCS-51-familjen inkluderar en hel rad mikrokretsar från de enklaste mikrokontroller till ganska komplexa. Mikrokontroller i MCS-51-familjen låter dig utföra både kontrolluppgifter för olika enheter och implementera enskilda komponenter analog krets. Alla mikrokretsar i denna familj fungerar med samma kommandosystem, de flesta av dem utförs i identiska fall med matchande pinout(numrering av ben för kroppen). Detta gör att du kan använda mikrokretsar från olika tillverkare (som Intel, Dallas, Atmel, Philips, etc.) för den utvecklade enheten. utan omarbetning schematiskt diagram enheter och program.

Figur 1. Blockschema över K1830BE751-styrenheten

Regulatorns blockschema presenteras i figur 1 och består av följande huvudfunktionsenheter: styrenhet, aritmetisk-logisk enhet, timer/räknareenhet, seriellt gränssnitt och avbrottsenhet, programräknare, dataminne och programminne. Tvåvägskommunikation utförs med hjälp av en intern 8-bitars databuss. Låt oss ta en närmare titt på syftet med varje block. Nästan alla medlemmar i MCS-51-familjen är byggda enligt detta schema. Olika mikrokretsar i denna familj skiljer sig endast åt i specialregister (inklusive antalet portar). Kommandosystem alla kontroller familjen MCS-51 innehåller 111 grundläggande kommandon med ett format på 1, 2 eller 3 byte och ändras inte när man flyttar från ett chip till ett annat. Detta säkerställer utmärkt programportabilitet från ett chip till ett annat.

Styr- och synkroniseringsenhet

Timing and Control-enheten är utformad för att generera synkroniserings- och styrsignaler som säkerställer samordning av den gemensamma driften av stordatorenheterna i alla tillåtna driftlägen. Styrenheten inkluderar:

  • anordning för att bilda tidsintervall,
  • input-output logik,
  • kommandoregister
  • energiledningsregister,
  • kommandoavkodare, datorstyrningslogik.

Anordning för att bilda tidsintervall designad för att generera och utfärda interna klocksignaler för faser, klockor och cykler. Antalet maskincykler avgör instruktionernas varaktighet. Nästan alla datorkommandon exekveras i en eller två maskincykler, förutom multiplikations- och divisionsinstruktioner, vars exekveringslängd är fyra maskincykler. Låt oss beteckna masteroscillatorns frekvens med F g. Då är maskincykelns varaktighet lika med 12/F g eller är 12 perioder av masteroscillatorsignalen. I/O-logik är designad för att ta emot och mata ut signaler som säkerställer utbyte av information med externa enheter via in-/utgångsportarna P0-P3.

Kommandoregister utformad för att spela in och lagra 8-bitars operationskoden för kommandot som exekveras. Operationskoden, med hjälp av kommandon och datorstyrlogik, omvandlas till mikroprogram för att utföra kommandot.

Efterfrågekontrollregister (PCON) låter dig stoppa mikrokontrollern för att minska strömförbrukningen och minska störningsnivån från mikrokontrollern. En ännu större minskning av strömförbrukning och störningar kan uppnås genom att stoppa mikrokontrollerns masteroscillator. Detta kan uppnås genom att växla bitarna i PCON-förbrukningskontrollregistret. För n-MOS-tillverkningsalternativet (1816-serien eller utländska chips som inte har ett "c" i mitten av namnet), innehåller PCON-förbrukningskontrollregistret endast en bit som styr baudhastigheten för serieporten SMOD, och det finns inga strömförbrukningskontrollbitar.

Tillsammans med artikeln "Architecture of microcontrollers MCS-51" läs:


http://site/MCS51/tablms.php


http://site/MCS51/SysInstr.php


http://site/MCS51/port.php

För närvarande producerar olika företag många modifieringar och analoger av denna familj, både av Intel och andra tillverkare, klockhastigheten och minneskapaciteten har tiodubblats och fortsätter att öka. Uppsättningen av moduler som är inbyggda i LSI utökas också, ett stort antal moderna modeller har en inbyggd ADC med inbyggd höghastighets-ADC med upp till 12, och nu kan det finnas fler, bitar. Men MCS51-familjen är baserad på Intel LSIs 8051, 80С51, 8751, 87С51, 8031, 80С31, vars första prov släpptes 1980.

Mikrokontroller i MCS51-familjen är gjorda med högkvalitativ n-MOS-teknik (serie 8ХХХ, analog - serie 1816 i Ryssland och Vitryssland) och k-MOS-teknik (serie 8ХСХХ, analog - serie 1830). Det andra tecknet efter 8 betyder: 0 – det finns inget EPROM på chipet, 7 – ett 4K EPROM med ultraviolett radering. Tredje tecken: 3 – on-chip ROM, 5 – om det inte finns något ROM, så finns det ett mask ROM på chipet.

Och så är 80С51 en LSI baserad på k-MOS-teknik med en mask-ROM på chipet, 8031 ​​är en n-MOS LSI utan programminne (ROM, RPOM) på ett chip, 8751 är en n-MOS LSI med en resident (finns på chipet) RPOM med ultraviolett radering. Vi kommer vidare att överväga 8751 LSI, och vid behov göra reservationer mot skillnaderna mellan andra kretsar, med hänvisning till de parametrar som publicerades för de första seriella LSI:erna. Vid behov kan du hitta ytterligare information om alla moderna ändringar i företagskataloger och teknisk dokumentation.

A. Allmänna egenskaper och stifttilldelningar

MCS51-familjen är baserad på fem modifieringar av MK (med identiska grundläggande egenskaper), den största skillnaden mellan vilka är implementeringen av programminne och strömförbrukning (se tabell 3.1). Mikrokontrollern är åttabitar, d.v.s. har kommandon för bearbetning av åtta-bitars ord, har en Harvard-arkitektur, klockfrekvensen för familjens grundläggande sampel är 12 MHz.

Tabell 3.1.

Mikrokretsar

Internt programminne, bytes

Programminnestyp

Internt dataminne, byte

Klockfrekvens, MHz

Strömförbrukning, mA

MK 8051 och 80C51 innehåller ett maskprogrammerbart ROM-programminne med en kapacitet på 4096 byte under tillverkningen av chipet och är designade för användning i massproduktion. MK 8751 innehåller en 4096-byte RPOM med ultraviolett radering och är praktiskt i systemutvecklingsstadiet vid felsökning av program, såväl som under produktion i små partier eller när man skapar system som kräver omskrivning under drift.

periodisk justering.

MK 8031 ​​och 80C31 innehåller inte inbyggt programminne. De kan, liksom de tidigare beskrivna modifieringarna, använda upp till 64 KB externt programminne och används effektivt i system som kräver en betydligt större volym (än 4 KB på chipet) ROM-programminne.

Varje MK i familjen innehåller ett inbyggt dataminne med en kapacitet på 128 byte med möjlighet att utöka den totala mängden RAM-data upp till 64 KB genom användning av externa RAM-IC:er.

    åtta-bitars central processor;

    4 KB programminne (endast 8751 och 87C51);

    128 byte dataminne;

    fyra åtta-bitars programmerbara I/O-portar;

    två 16-bitars multi-mode timer/räknare;

    autovektoravbrottssystem med fem vektorer och två mjukvarustyrda prioritetsnivåer;

    seriellt gränssnitt, inklusive en universell duplex transceiver som kan fungera i fyra lägen;

    klockgenerator.

MK-kommandosystemet innehåller 111 grundläggande kommandon med formatet 1, 2 eller 3 byte. Mikrokontrollern har:

    32 allmänna register RON, organiserade som fyra banker med åtta register vardera med namnen R0...R7, valet av en eller annan bank bestäms av programmet genom att sätta motsvarande bitar i programstatusregistret PSW;

    128 mjukvarustyrda flaggor (bitprocessor, se nedan);

    en uppsättning register över specialfunktioner som styr MK-element. Det finns följande driftlägen för mikrokontrollern:

1). Allmän återställning. 2). Normal funktion. 3). Låg strömförbrukning läge och viloläge. 4). Programmeringsläge för resident RPOM, om tillgängligt.

Här kommer vi att fokusera på de två första driftlägena; en detaljerad beskrivning av sammansättningen och driften av MK i alla lägen ges i Appendix P1.

RON och bitprocessorområdet är belägna i adressutrymmet för det inbyggda RAM-minnet med adresser från 0 till 80h.

I den övre zonen av bostads-RAM-adresserna finns speciella funktionsregister (SFR, Special Function Registers). Deras syfte anges i tabellen. 3.2.

Tabell 3.2.

Beteckning

namn

Batteri

Registrera B

Programstatusregister

Stackpekare

Datapekare. 2 byte:

Låg byte

Hög byte

Avbryt Prioritetsregister

Avbryt aktivera register

Timer/Räknarläge Register

Timer/Räknarkontrollregister

Timer/räknare 0. Hög byte

Timer/räknare 0. Låg byte

Timer/räknare 1. Hög byte

Timer/räknare 1. Låg byte

Seriell portkontroll

Seriell buffert

Förbrukningshantering

* - register, tillåter bitvis adressering

Låt oss kort titta på funktionerna hos SFR-registren som visas i Tabell 3.2.

Batteri ACC - ackumulatorregister. Kommandon utformade för att fungera

du med batteriet, använd minnesminnet "A", till exempel, MOV A, P2 . ACC-mnemoniken används till exempel vid bitvis adressering av en ackumulator. Således kommer det symboliska namnet på den femte biten i ackumulatorn vid användning av A5M51 assembler att vara följande: ACC. 5. .

Registrera I . Används vid multiplikation och division. För andra instruktioner kan register B behandlas som ett extra realtidsregister.

Registrera stat program P.S.W. innehåller information om programmets tillstånd och installeras dels automatiskt baserat på resultatet av den utförda operationen, dels av användaren. Beteckningen och syftet med registerbitarna ges i tabellerna 3.3 respektive 3.4.

Tabell 3.3.

Beteckning

Tabell 3.4.

Beteckning

Bituppdrag

Bittillgång

Bär flagga. Ändringar under exekveringen av en serie aritmetiska och logiska instruktioner.

Hårdvara eller mjukvara

Ytterligare bärflagga. Ställ in/rensas i hårdvaran under additions- eller subtraktionsinstruktioner för att indikera en överföring eller ett lån i bit 3 när den minst signifikanta biten av resultatet (D0-D3) genereras.

Hårdvara eller mjukvara

Flagga 0. Användardefinierad flagga.

Programmässigt

Programmässigt

Arbetsregister Bank Index

Programmässigt

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

Overflow flagga. Ställ in eller rensas av hårdvaran under exekvering av aritmetiska instruktioner för att indikera ett spilltillstånd

Hårdvara eller mjukvara

Reserv. Innehåller en skrivbar och läsbar trigger som kan användas

Paritetsbit. Hårdvaruåterställning eller inställning på varje instruktionscykel för att indikera om antalet batteribitar i "1"-tillståndet är jämnt eller udda.

Hårdvara eller mjukvara

Pekare stack SP - Ett 8-bitars register vars innehåll inkrementeras innan data skrivs till stacken när PUSH- och CALL-instruktioner exekveras. Vid initial återställning ställs stackpekaren till 07H och stackarean i data-RAM-minnet börjar vid adress 08H. Om nödvändigt, genom att åsidosätta stackpekaren, kan stackområdet placeras var som helst i det interna RAM-minnet för mikrokontrollerdata.

Pekare data DPTR består av en hög byte (DPH) och en låg byte

(DPL). Innehåller en 16-bitars adress vid åtkomst till externt minne. Kan användas

vara antingen ett 16-bitars register eller två oberoende åttabitarsregister.

Port0 - PortZ. Separata bitar i registren för specialfunktioner P0, P1, P2, RZ är "lås"-bitarna för portarna P0, P1, P2, RZ.

Buffert konsekvent hamn SBUF representerar två separata register: sändarbufferten och mottagarbufferten. När data skrivs till SBUF:en går den in i sändarbufferten, och skrivning av en byte till SBUF:n initierar automatiskt överföring genom serieporten. När data läses från SBUF, hämtas den från mottagarbufferten.

Register timer. Registrera par (TH0, TL0) och (TH1, TL1) formulär 16

biträkningsregister för timer/räknare 0 respektive timer/räknare 1.

Register förvaltning. Register över specialfunktioner IP, IE, TMOD, TCON, SCON och PCON innehåller styrbitar och statusbitar för avbrottssystemet, tid-

mätare/räknare och serieport. De kommer att diskuteras i detalj nedan.

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 fungerar tillhandahåller MC:

    den minsta exekveringstiden för tilläggskommandon är 1 μs;

    hårdvarumultiplikation och division med en minsta exekveringstid på 4 μs.

MK ger möjlighet att ställa in frekvensen för den interna oscillatorn med hjälp av kvarts, en LC-kedja eller en extern oscillator.

Det utökade instruktionssystemet tillhandahåller byte- och bitadressering, binär och binär decimalaritmetik, overflow-indikering och jämn/udda bestämning, och möjligheten att implementera en logisk processor.

Den viktigaste och mest utmärkande egenskapen hos MCS51-familjens arkitektur är att ALU kan manipulera enbitsdata förutom att utföra operationer på 8-bitars datatyper. Individuella mjukvarutillgängliga bitar kan ställas in, raderas eller ersättas av deras komplement, kan vidarebefordras, kontrolleras och

Fig.3.2. Externa stift

mikrokontroller

används i logiska beräkningar. Stöd för enkla datatyper (om tillgängligt)

Även om den nuvarande trenden mot längre ordlängder kan verka som ett steg bakåt vid första anblicken, gör denna kvalitet MCS51-familjen av mikrokontroller särskilt lämplig för kontrollerbaserade applikationer. Driftsalgoritmerna för de senare förutsätter närvaron av in- och utgående booleska variabler, som är svåra att implementera med standardmikroprocessorer. Alla dessa egenskaper kallas gemensamt för den booleska processorn i MCS51-familjen. Denna kraftfulla ALU gör MCS51-familjen av mikrokontroller lämpliga för både realtidskontrollapplikationer och dataintensiva algoritmer.

Kretsschemat för mikrokontrollern visas i fig. 3.2. I grundversionen är den förpackad i ett 40-stifts DIP-paket. Låt oss titta på syftet med stiften.

Låt oss börja med kraftstiften «0 I" Och "5 I" , genom vilken han får grundläggande näring. Aktuell förbrukning anges i tabell. 3.1.

Slutsats "RST" - återställning av mikrokontroller. När en aktiv hög nivå appliceras på detta stift, läge allmän återställa och MK utför följande åtgärder:

Ställer in PC-programräknaren och alla specialfunktionsregister, förutom P0-P3-portlåsen, SP-stackpekaren och SBUF-registret, till noll;

    stackpekaren tar värdet lika med 07H;

    inaktiverar alla avbrottskällor, timer-räknare och seriell

    väljer BANK 0 RAM, förbereder portarna P0-RZ för att ta emot data och bestämma

delar ALE- och PME-stift som ingångar för extern klockning;

      i register speciella funktioner PCON, IP och IE reserverade bitar tar slumpmässiga värden, och alla andra bitar nollställs;

      SBUF-registret är satt till slumpmässiga värden.

      ställer spärrarna för portarna P0-PZ till "1".

Tillstånden för mikrokontrollerregistren efter återställning visas i Tabell 3.5.

Tabell 3.5.

Information

Osäker

0ХХХ0000V för k-MOS 0XXXXXXXB för n-MOS

RST-stiftet har också en alternativ funktion. Säkerhetskopiering tillförs genom den för att hålla innehållet i mikrokontrollerns RAM oförändrat när huvudet tas bort.

Slutsatser BQ1, BQ2 är avsedda för att ansluta en kvartsresonator som bestämmer klockfrekvensen för MK.

Slutsats EA` (E externt A klänning extern adress) - utformad för att aktivera läget för att läsa kontrollkoder från externt programminne när en aktiv låg nivå appliceras på detta stift. Utgången har ett alternativt syfte (funktion). Den matas med programmeringsspänning från RPOM i programmeringsläge.

Slutsats PME (P rogram M minne E nable lov minne program) - är utformad för att styra läsningscykeln från programminnet och aktiveras automatiskt av MK i varje maskincykel.

Slutsats ALE (A klänning L ength E nable lov junior adresser) strobes utsignalen från den låga delen av adressen via port P0. Utgången används också vid programmering av RPOM, medan en strobepuls för programmeringsprocessen tillförs den.

MK innehåller fyra grupper av portar: P0, P1, P2 och P3. Dessa är de återstående 40 stiften på mikrokontrollern. Dessa portar kan tjäna för bit-för-bit-inmatning och utmatning av information, men dessutom har var och en av dem sin egen specialisering. Ett generaliserat funktionsdiagram av porten visas i fig. 3.3. Porten innehåller FET-utgångsomkopplare anslutna till stiftet, en funktionsomkopplare, en D-vippa-spärr och styrlogik. En enhet eller nolla kan skrivas till spärren på MK:ns interna buss. Denna information skickas via funktionsomkopplaren till utgångsomkopplarna och utgången på MK. I det ena tillståndet är båda transistorerna N och N1 stängda, men N2 är öppen. I nollläge öppnas N-

Xia och N2 stänger. I det ögonblick som en port utför en alternativ funktion för vilken den är specialiserad, rensas utgångslåstillståndet. Mikrokontrollern kan separat läsa tillståndet för portlåset och tillståndet för dess utgång, inställt av en extern signal. För detta ändamål innehåller MK assembler speciella kommandon som aktiverar motsvarande rader. För att läsa av stifttillståndet i motsvarande portspärr,

vara förinspelad

Från inre

Kontrollspärr

Funktionsomkopplare

Vcc

Helgen

enhet. När "read latch"-linjen är aktiverad, visas utgången från "AND"-cellen som denna linje är ansluten till.

hennes däck MK D Q

Skriv till spärren C Q

Läs spärren

Portstift

Spärrtillståndet överförs till den interna bussen på MC när den aktiveras

"läs utgång" - tillståndet för portens externa stift.

Hamn P0 – universal dubbelriktad port

I/O Bortom denna hamn

funktionen att organisera externa adressbussar och

Ris. 3.3. Funktionsdiagram över mikrokontrollerporten

data för att utöka programminnet och dataminnet

mikrokontroller. När det externa programminnet nås eller ett kommando exekveras för att komma åt det externa dataminnet, ställs den låga delen av adressen (A0...A7) in på portstiften, som är gated högt vid ALE-stiftet. Sedan, när du skriver data till minnet, skickas den inspelade informationen från MK:s interna buss till stiften på P0-porten. I läsoperationer, tvärtom, skickas information från portstiften till den interna bussen. En egenskap hos P0-porten är frånvaron av en "pull-up" transistor N2, som ger ström till utgången. När du skriver till enhetens portlås överförs den helt enkelt till ett högimpedanstillstånd, vilket är nödvändigt för normal drift av databussen. Om det är nödvändigt att driva externa enheter via utgången, bör externa motstånd tillhandahållas från strömkretsarna till portutgången.

Hamn P1 – universell dubbelriktad I/O-port utan alternativa funktioner.

Hamn P2 – en universell dubbelriktad I/O-port, som, som en alternativ funktion, utfärdar den höga delen av adressen (A8...A15) vid åtkomst till externt minne.

Hamn P3 – en universell dubbelriktad I/O-port, vars varje bit möjliggör implementering av olika alternativa funktioner. I det här fallet implementeras alternativa funktioner endast om sådana skrivs till låsen på portstiften, annars blockeras exekveringen av alternativa funktioner. Låt oss lista dem separat för varje bit:

P3.0 RxD (R ead e X inre Dåt, läs extern data) – ingång för den inbyggda seriella transceivern.

P3.1 TxD (T japp e X inre Dåt, överför extern data) – utgång från den inbyggda seriella transceivern.

P3.2 INT0` (INT avbryta, avbryta) – extern avbrottsingång 0.

P3.3 INT1` – extern avbrottsingång 1.

P3.4 С/T0 – noll inbyggd timer/räknare-ingång.

P3.5 C/T1 – ingång av den första inbyggda timern/räknaren.

P3.6 WR` (W rite, write) – utgång för att styra skrivcykeln i dataminnet.

P3.7 RD` (R ead, read) – styr utdata från läscykeln från dataminnet.

Stiften på port P1, P2 och P3 kan mata ut en ström på cirka 0,2 mA per enhet och ta emot en ström på 3 mA vid noll; stiften på port P0 är kraftfullare och kan leverera en ström på cirka 0,8 mA i en enhet och tar emot en ström på 5 mA vid noll. Kort information om syftet med mikrokontrollerstiften ges i Tabell 3.6.

Tabell 3.6.

Beteckning

Utgångssyfte

8-bitars dubbelriktad port P1. Adressingång A0-A7 vid kontroll av intern ROM (RPM)

gå in i utgången

Allmän återställningssignal. RAM reservkraft från en extern källa (för 1816)

8-bitars dubbelriktad P3-port med ytterligare funktioner

gå in i utgången

Mottagare seriella data - RxD

Sändarens seriella data - TxD

Extern avbrottsingång 0-INT0`

Extern avbrottsingång 1-INT1`

Timer/räknare ingång 0: - T0

Timer/räknare ingång 1: - T1

Strobesignalutgång vid skrivning till externt dataminne: - WR`

Strobesignalutgång vid läsning från externt dataminne – RD`

Kablar för anslutning av kvartsresonator.

exit ingång

Allmän slutsats

8-bitars dubbelriktad port P2. Adress A8-A15 utgång i externt minnesläge. I det interna ROM-kontrollläget används stiften P2.0 - P2.6 som ingång för adresserna A8-A14. Pin P2.7 - ROM-läsningstillstånd.

gå in i utgången

Programminnesupplösning

Adressfixering aktivera utsignal. Vid programmering av RPOM-signalen: PROG

gå in i utgången

Blockering av arbete med internminne. Vid programmering av RPOM ges UPR-signalen

gå in i utgången

8-bitars dubbelriktad port P0. Adress/databuss för arbete med externt minne. Datautgång D7-D0 i intern ROM (RPM) testläge.

gå in i utgången

Uteffekt från +5V spänningskälla

FÖRELÄSNINGSPLAN

1. Introduktion

2. Aritmetiska och logiska instruktioner

3. Dataöverföringskommandon

4. Booleska operationer

5. Hoppa instruktioner

1. Introduktion

Kommandosystem MCS-51 stöder en enda uppsättning instruktioner, som är utformad för att exekvera 8-bitars ställdonstyrningsalgoritmer. Det är möjligt att använda snabba metoder för att adressera internt RAM och utföra bitoperationer på små datastrukturer. Det finns ett omfattande system för att adressera enbitsvariabler som en oberoende datatyp, vilket tillåter användning av individuella bitar i logiska och styrkommandon för boolesk algebra.

Adresseringslägen : kommandouppsättning MCS-51 stöder följande adresseringslägen. Direkt adressering: Operanden bestäms av 8-bitarsadressen i instruktionen. Direktadressering används endast för den nedre halvan av det interna dataminnet och registren SFR. Indirekt adressering: Instruktionen adresserar ett register som innehåller adressen för operanden. Den här typen adressering används för externt och internt RAM. Register kan användas för att ange 8-bitars adresser R0 Och R1 vald registerbank eller stackpekare SP. För 16-bitars adressering används endast datapekarregistret DPTR.

Registrera instruktioner : register R0–R7 aktuell registerbank kan adresseras via specifika instruktioner som innehåller ett 3-bitars fält som anger registernumret i själva instruktionen. I det här fallet saknas motsvarande adressfält i kommandot. Operationer med hjälp av speciella register: vissa instruktioner använder individuella register (till exempel ackumulatoroperationer, DPTR, etc.). I det här fallet anges inte operandens adress i kommandot alls. Den är förutbestämd av operationskoden.

Omedelbara konstanter : konstanten kan placeras direkt i kommandot efter opkoden.

Indexadressering : Indexadressering kan endast användas för att komma åt programminnet och endast i läsläge. I detta läge visas tabeller i programminnet. 16-bitars register ( DPTR eller programräknare) indikerar basadressen för den önskade tabellen, och ackumulatorn indikerar ingångspunkten till den.

Kommandouppsättninghar 42 kommandomnemonics för att specificera de 33 funktionerna i detta system. Syntaxen för de flesta assemblerspråksinstruktioner består av en funktionsmnemonic följt av operander som indikerar adresseringsmetoder och datatyper. Olika typer data eller adresseringslägen bestäms av de inställda operanderna, inte av ändringar i minnesminnen.

Kommandosystemet kan delas in i fem grupper: aritmetiska instruktioner; logiska kommandon; dataöverföringskommandon; bitprocessorkommandon; förgrenings- och kontrollöverföringskommandon. Beteckningarna och symbolerna som används i kommandosystemet ges nedan.

Tabell. Noteringar och symboler som används i kommandosystemet

Beteckning, symbol

Syfte

Batteri

Register för den för närvarande valda registerbanken

Numret på det laddade registret som anges i kommandot

direkt

Direkt adresserbar 8-bitars intern datacelladress, som kan vara en intern data-RAM-cell (0–127) eller ett SFR-specialfunktionsregister (128–255)

Indirekt adresserbar 8-bitars intern data-RAM-cell

8-bitars direkt data som ingår i operationskoden (OPC)

dataH

Mest signifikanta bitar (15–8) av den omedelbara 16-bitarsdatan

dataL

Minst signifikanta bitar (7–0) av omedelbar 16-bitars data

11-bitars destinationsadress

addrL

Minst betydande bitar av destinationsadressen

8-bitars signerad offsetbyte

Direkt adresserbar bit vars adress innehåller COP som finns i det interna data-RAM-minnet eller specialfunktionsregistret SFR

a15, a14...a0

Destinationsadressbitar

Innehållet i element X

Innehåll på adressen lagrad i element X

Bit M av element X


+

*
OCH
ELLER
XOR
/X

Operationer:
tillägg
subtraktion
multiplikation
divisioner
logisk multiplikation (OCH operation)
logisk addition (ELLER operation)
addition modulo 2 (exklusiv ELLER)
inversion av element X

Funktionsminnen är unikt förknippade med specifika kombinationer av adresseringsmetoder och datatyper. Totalt finns det 111 sådana kombinationer möjliga i kommandosystemet.

2. Aritmetiska och logiska instruktioner

Hur sid exempel räkneundervisning, kan tilläggsoperationen utföras med något av följande kommandon.

LÄGG TILLA,7 F 16 – lägg till siffran 7 till innehållet i register A F 16 och lagra resultatet i register A;

LÄGG TILLA,@ R0 – lägg till innehållet i register A numret vars adress (@ – kommersiell ) lagras i ett register R 0 (indirekt adressering), och lagra resultatet i register A;

LÄGG TILL A,R7– lägga till innehållet i register A till innehållet i register R 7 och spara resultatet i register A;

LÄGG TILL A,#127– lägg till innehållet i register A ett nummer vars lagringscellsadress är 127 ( # – nummersymbol), och spara resultatet i registret T-re A.

Alla aritmetiska instruktioner exekveras i en maskincykel med undantag för instruktionen INC DPTR(datapekarens offset DPTR till nästa byte), vilket kräver två maskincykler, såväl som multiplikations- och divisionsoperationer utförda i 4 maskincykler. Alla byte i det interna dataminnet kan ökas och minskas utan att använda batteri.

Instruktioner MUL AB utför multiplikation (multiplikation) av data i ackumulatorn med data i register B, och placerar produkten i register A (låg halva) och B (hög halva).

Instruktioner DIV AB dividerar (division) innehållet i ackumulatorn med värdet i register B, och lämnar resten i B och kvoten i ackumulatorn.

Instruktioner DA Aär avsedd för binära decimala aritmetiska operationer (aritmetiska operationer på tal representerade i binär decimalkod). Det konverterar inte binärt tal till BCD, men ger bara rätt resultat när två binära decimaltal adderas.

Exempel logiskt kommando: En logisk OCH-operation kan utföras med något av följande kommandon:

ANLA,7 F 16 – logisk multiplikation av innehållet i register A med siffran 7 F 16 och resultatet lagras i register A;

ANLA,@ R1 – logisk multiplikation av innehållet i register A med det nummer vars adress är lagrad i registret R 1 (indirekt adressering), och lagra resultatet i register A;

ANL A,R6– logisk multiplikation av innehållet i register A med innehållet i registret R 6, och spara resultatet i register A;

ANL A,#53 – logisk multiplikation av innehållet i register A med ett tal vars lagringscellsadress är 53 16, och resultatet lagras i register A.

Alla logiska operationer på innehållet i ackumulatorn utförs i en maskincykel, resten - i två. Logiska operationer kan utföras på vilken som helst av de lägre 128 byten av internt dataminne eller på vilket register som helst SFR (specialfunktionsregister) i direktadresseringsläge utan att använda batteri.

De roterande växlingsoperationerna RL A, RLC A, etc. flyttar innehållet i ackumulatorn en bit åt höger eller vänster. I fallet med en vänstercyklisk växling flyttas den minst signifikanta biten till den mest signifikanta positionen. Vid en högercyklisk växling inträffar det motsatta.

Drift BYTA A byter ut de låga och höga tetraderna i batteriet.

3. Dataöverföringskommandon

Team MOV dest,src låter dig överföra data mellan interna RAM-celler eller speciella funktionsregisterområden SFR utan att använda ett batteri. I det här fallet kan arbete med den övre hälften av det interna RAM-minnet endast utföras i indirekt adresseringsläge och tillgång till register SFR– endast i direktadresseringsläge.

I alla mikrokretsar MCS-51 Stacken placeras direkt i det inbyggda dataminnet och växer uppåt. Instruktioner SKJUTA PÅökar först värdet i stackpekarregistret SP, och skriver sedan en byte med data till stacken. Lag SKJUTA PÅ Och POP används endast i direktadresseringsläge (skriver eller återställer en byte), men stacken är alltid tillgänglig vid indirekt adressering via ett register SP. Således kan stacken också använda de översta 128 byten av dataminne. Samma överväganden utesluter möjligheten att använda stackinstruktioner för att adressera register SFR.

Dataöverföringsinstruktioner inkluderar en 16-bitars överföringsoperation MOV DPTR,#data16, som används för att initiera datapekarregistret DPTR när du tittar på tabeller i programminnet eller för att komma åt externt dataminne.

Drift XCH A,byte används för att utbyta data mellan ackumulatorn och den adresserade byten. Team XCHD A,@Ri liknande den föregående, men utförs endast för de lägre tetraderna som är involverade i utbytet av operander.

För att komma åt externt dataminne används endast indirekt adressering. Vid enkelbyteadresser används register R0 eller R1 aktuell registerbank, och för 16-bitars – datapekarregister DPTR. Med vilken metod som helst för att komma åt externt dataminne spelar batteriet rollen som en källa eller mottagare av information.

För att komma åt tabeller som finns i programminnet, använd följande kommandon:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Innehållet i datapekarregistret används som basadress för tabellen DPTR eller PC(programräknare), och offseten tas från A. Dessa instruktioner används uteslutande för att läsa data från programminnet, men inte för att skriva till det.

4. Booleska operationer

Mikrokretsar MCS-51 innehåller en "boolesk" processor. Det interna RAM-minnet har 128 direkt adresserbara bitar. Särskilt funktionsregisterutrymme SFR kan också stödja upp till 128 bitars fält. Bitinstruktioner utför villkorliga förgreningar, överföringar, återställningar, inversioner, OCH- och ELLER-operationer. Alla specificerade bitar är tillgängliga i direktadresseringsläge.

Bär lite CF i specialfunktionsregistret "programstatusord" P.S.W." används som en enbitsackumulator för en boolesk processor.

5. Hoppa instruktioner

Adresserna för hoppoperationer indikeras i assemblerspråk med en etikett eller med ett verkligt värde i programminnesutrymmet. Villkorliga grenadresser sätts samman till en relativ offset - en teckenbyte som läggs till programräknaren PC om övergångsvillkoret är uppfyllt. Gränserna för sådana övergångar ligger mellan minus 128 och 127 i förhållande till den första byten efter instruktionen. I specialfunktionsregistret "programstatusord" P.S.W."Det finns ingen nollflagga, så instruktionerna JZ Och JNZ kontrollera villkoret "lika med noll" när du testar data i ackumulatorn.

Det finns tre typer av ovillkorliga hoppkommandon: SJMP, LJMP Och AJMP– destinationsadresser som skiljer sig i format. Instruktioner SJMP kodar adressen som en relativ offset och tar två byte. Hoppavståndet är begränsat till intervallet från minus 128 till 127 byte i förhållande till instruktionen som följer SJMP.

I instruktionerna LJMP Destinationsadressen används som en 16-bitars konstant. Kommandolängden är tre byte. Destinationsadressen kan finnas var som helst i programminnet.

Team AJMP använder en 11-bitars adresskonstant. Kommandot består av två byte. När denna instruktion exekveras ersätts de nedre 11 bitarna av adressräknaren med 11-bitars adressen från instruktionen. De fem mest signifikanta bitarna i programräknaren PC fortsätter vara oförändrat. Således kan övergången göras inom ett 2K-byte block i vilket instruktionen som följer instruktionen finns AJMP.

Det finns två typer av kommandoanrop till en subrutin: LCALL Och ETT SAMTAL. Instruktioner LCALL använder 16-bitarsadressen för den anropade subrutinen. I detta fall kan subrutinen placeras var som helst i programminnet. Instruktioner ETT SAMTAL använder en 11-bitars subrutinadress. I detta fall måste den anropade rutinen placeras i ett enda 2K-byteblock med följande instruktion ETT SAMTAL. Båda versionerna av instruktionen skjuter adressen till nästa instruktion till stacken och laddar den i programräknaren PC motsvarande nyvärde.

Subrutinen avslutas med instruktionen RÖTA, som låter dig återgå till instruktionen efter kommandot RING UPP. Denna instruktion tar bort returadressen från stacken och laddar den i programräknaren. PC . Instruktioner RETI används för att återvända från avbrottsrutiner. Den enda skillnaden RETI från RÖTAär det RETI informerar systemet om att avbrottsbehandlingen har slutförts. Om vid tidpunkten för utförande RETI det finns inga andra avbrott, då är det identiskt RÖTA.

Instruktioner DJNZ utformad för att styra cykler. För att utföra en loop N när du behöver ladda en byte med ett värde i räknaren N och stäng loopkroppen med kommandot DJNZ, som indikerar början av cykeln.

Team CJNE jämför sina två operander som heltal utan tecken och hoppar till adressen som anges där om operanderna som jämförs inte är lika. Om den första operanden är mindre än den andra, då bärbiten CF är inställd på "1".

Alla instruktioner i sammansatt form upptar 1, 2 eller 3 byte.

MICROCONTROLLER FAMILJENS ARKITEKTURMCS-51

Föreläsningsanteckningar för kurser

"Mikroprocessorer i styrsystem", "Mikroprocessorteknik"

"Mikroprocessorverktyg och system"

för studenter av alla former av studiespecialiteter

072000 – Standardisering och certifiering

210200 – Automatisering av tekniska processer

230104 – Datorstödda designsystem

Tambov 2005

INTRODUKTION.. 3

1. STRUKTUR HOS INTEL 8051 MICROCONTROLLER 3

1.1. Organisation av minnet. 5

1.2. Aritmetisk-logisk anordning. 6

1.3. Residentminne för program och data. 7

1.4. Ackumulator- och allmänna register. 8

1.5. Programstatusordregistret och dess flaggor. 9

1.6. Pekarregister. 10

1.7. Specialfunktionsregister. elva

1.8. Kontroll- och synkroniseringsenhet. elva

1.9. Parallella in-/utgångsportar för information. 12

1.10. Timers/räknare. 13

1.11. Serieport. 18

1.11.1. Registrera SBUF.. 18

1.11.2. Driftlägen för serieportar. 18

1.11.3. Registrera SCON.. 19

1.11.4. Mottagning/överföringshastighet. 21

1.12. Avbryta systemet. 22

2. KOMMANDOSYSTEM FÖR INTEL 8051 MICROCONTROLLER 26

2.1. Allmän information. 26

2.1.1. Typer av kommandon. 27

2.1.2. Operander typer. 28

2.1.3. Dataadresseringsmetoder. trettio

2.1.4. Resultatflaggor. 31

2.1.5. Symbolisk adressering. 32

2.2. Dataöverföringskommandon. 33

2.2.1. Struktur av informationslänkar. 33

2.2.2. Åtkomst till batteriet. 33

2.2.3. Åtkomst till externt dataminne. 34

2.2.4. Åtkomst till programminne... 34


2.2.5. Tillgång till stapeln. 35

2.3. Aritmetiska operationer. 35

2.4. Logiska operationer. 39

2.5. Styr överföringskommandon. 43

2.5.1. Lång övergång. 43

2.5.2. Absolut övergång. 43

2.5.3. Relativ övergång. 44

2.5.4. Indirekt överföring. 44

2.5.5. Villkorliga hopp.. 44

2.5.6. Subrutiner.. 47

2.6. Operationer med bitar. 48

Testfrågor... 49

LITTERATUR.. 50

Bilaga INTEL 8051 COMMAND SYSTEM. 51

INTRODUKTION

Sedan 80-talet av 1900-talet har en självständig klass vuxit fram inom mikroprocessorteknik integrerade kretsar– Enkelchips mikrokontroller som är designade för integration i enheter för olika ändamål. De skiljer sig från klassen av mikroprocessorer med ett chip genom närvaron av internt minne och utvecklade sätt att interagera med externa enheter.

8-bitars mikrokontroller med ett chip från MCS-51-familjen används ofta. Denna familj bildades på basis av Intel 8051 mikrokontroller, som har vunnit stor popularitet bland utvecklare av mikroprocessorkontrollsystem på grund av sin väldesignade arkitektur. Mikrokontrollerns arkitektur är en uppsättning av interna och externa mjukvarutillgängliga hårdvaruresurser och kommandosystem.

Därefter släppte Intel ett 50-tal modeller baserade på operativsystemets kärna i mikrokontrollern Intel 8051. Samtidigt började många andra företag, som Atmel, Philips, producera sina egna mikrokontroller utvecklade i MCS-51-standarden. Det finns också inhemsk analog Intel 8051 mikrokontroller - K1816BE51 chip.

2. STRUKTUR HOS INTEL 8051 MIKROCONTROLLER

Intel 8051 mikrokontroller är baserad på n-MOS-teknik på hög nivå. Dess huvudsakliga egenskaper är följande:

· åtta-bitars central processor optimerad för implementering av kontrollfunktioner;

· inbyggd klockgenerator (maximal frekvens 12 MHz);

· programminnesadressutrymme - 64 KB;

· dataminnesadressutrymme - 64 KB;

· internt programminne - 4 KB;

· internt dataminne - 128 byte;

· ytterligare möjligheter för att utföra booleska algebraoperationer (bitvisa operationer);

· 2 sexton-bitars multifunktionella timers/räknare;

· full-duplex asynkron transceiver (serieport);

· vektoriserat avbrottssystem med två prioritetsnivåer och fem händelsekällor.

Figur 1 - Blockschema över Intel 8051 mikrokontroller

Grunden för blockschemat (fig. 1) bildas av en intern dubbelriktad 8-bitars buss, som sammankopplar mikrokontrollerns huvudnoder och enheter: resident program memory (RPM), resident data memory (RDM), aritmetisk-logisk enhet (ALU), registerenhets specialfunktioner, styrenhet (CU), parallella I/O-portar (P0-P3), samt programmerbara timers och en seriell port.

2.1. Minnesorganisation

Denna mikrokontroller har inbyggt (resident) och externt minne av program och data. Det residenta programminnet (RPM) har en kapacitet på 4 KB och det inbyggda dataminnet (RDM) har en kapacitet på 128 byte.


Beroende på modifieringen av mikrokontrollern implementeras RPM i form av ett mask-ROM, engångsprogrammerbart eller omprogrammerbart ROM.

Om det behövs kan användaren utöka programminnet genom att installera en extern ROM. Tillgång till internt eller externt ROM bestäms av värdet på signalen på stift EA (extern åtkomst):

EA=VCC (matningsspänning) - åtkomst till internt ROM;

EA=VSS (jordpotential) - åtkomst till extern ROM.

Externt program- och dataminne kan vara 64 KB vardera och adresseras med portarna P0 och P2. Figur 2 visar Intel 8051-minneskortet.

Figur 2 - Intel 8051 minnesorganisation

Extern ROM-läs-strobe - (Program Store Enable) genereras vid åtkomst till externt programminne och är inaktiv vid åtkomst till ROM-minnet som finns på chipet.

Området med lägre programminnesadresser (fig. 3) används av avbrottssystemet. INTEL 8051-chiparkitekturen ger stöd för fem avbrottskällor. Adresserna till vilka avbrottskontrollen överförs kallas avbrottsvektorer.

Figur 3 - Karta över det nedre programminnesområdet

2.2. Aritmetisk logisk enhet

Den 8-bitars aritmetiska logiska enheten (ALU) kan utföra de aritmetiska operationerna addition, subtraktion, multiplikation och division; logiska operationer AND, OR, exklusiv ELLER, såväl som operationer av cyklisk skiftning, återställning, inversion, etc. Programvaruotillgängliga register T1 och T2, avsedda för tillfällig lagring av operander, en decimalkorrigeringskrets (DCU) och en funktionsgenereringskrets är anslutna till ingångarnas operationsresultat (PSW).

Den enkla additionsoperationen används i ALU:n för att öka innehållet i registren, föra fram datapekarregistret (RAR) och automatiskt beräkna nästa programminnesadress. Den enklaste subtraktionsoperationen används i ALU för att minska register och jämföra variabler.

De enklaste operationerna bildar automatiskt "tandemer" för att utföra operationer som till exempel att öka 16-bitars registerpar. ALU implementerar en mekanism för kaskadexekvering av enkla operationer för att implementera komplexa kommandon. Så, till exempel, när man kör ett av de villkorliga kontrollöverföringskommandona, baserat på jämförelseresultatet i ALU, ökas programräknaren (PC) tre gånger, RDM läses två gånger, en aritmetisk jämförelse av två variabler utförs, en 16-bitars övergångsadress bildas, och ett beslut fattas om huruvida övergången ska göras eller inte enligt programmet. Alla ovanstående operationer utförs på bara 2 μs.

En viktig egenskap hos ALU är dess förmåga att driva inte bara bytes utan även bitar. Individuella mjukvarutillgängliga bitar kan ställas in, raderas, inverteras, sändas, testas och användas i logiska operationer. Denna förmåga är ganska viktig, eftersom för att styra objekt används ofta algoritmer som innehåller operationer på in- och utgående booleska variabler, vars implementering är förknippad med vissa svårigheter med att använda konventionella mikroprocessorer.

Således kan ALU:n arbeta med fyra typer av informationsobjekt: booleska (1 bit), digital (4 bitar), byte (8 bitar) och adress (16 bitar). ALU:n utför 51 olika operationer för att vidarebefordra eller transformera dessa data. Eftersom det finns 11 adresseringslägen (7 för data och 4 för adresser), utökas grundantalet av 111 instruktioner genom att kombinera operationen och adresseringsläget till 255 av 256 möjliga med en enkelbyte opkod.

2.3. Residentprogram och dataminne

Residential (on-chip) programminne (RPM) och dataminne (RDM) är fysiskt och logiskt separerade, har olika adresseringsmekanismer, fungerar under kontroll av olika signaler och utför olika funktioner.

RPM-programminnet har en kapacitet på 4 KB och är utformat för att lagra kommandon, konstanter, initieringskontrollord, konverteringstabeller för in- och utvariabler etc. Minnet har en 16-bitars adressbuss, genom vilken åtkomst ges från PC-programräknare eller från registerdatapekaren (DPTR). DPTR fungerar som ett basregister för indirekta programhopp eller används i tabelloperationer.

RDM-dataminnet är utformat för att lagra variabler under exekvering av ett applikationsprogram, är adresserbart med en byte och har en kapacitet
128 byte. Dessutom ligger dess adressutrymme i anslutning till adresserna till specialfunktionsregister, vilka är listade i tabell. 1.

Programminnet kan, liksom dataminnet, utökas till
64 KB genom att ansluta externa chips.

bord 1

Specialfunktionsregisterblock

namn

Batteri

Ackumulatorexpanderregister

Programstatusord

Stapelpekarregister

Datapekarregister

Avbryt Prioritetsregister

Avbryt maskregister

Timer/Räknarläge Register

Timerkontroll/statusregister

Timer 0 (hög byte)

Timer 0 (låg byte)

Timer 1 (hög byte)

Timer 1 (låg byte)

Transceiver Control Register

Transceiver buffert

Effektkontrollregister

Notera. Register vars namn är markerade med (*) tillåter att enskilda bitar adresseras.

2.4. Ackumulator- och allmänna register

Ackumulatorn (A) är källan till operanden och platsen för resultatet när man utför aritmetiska, logiska operationer och ett antal dataöverföringsoperationer. Dessutom kan skiftoperationer, kontroll av noll, generering av en paritetsflagga, etc. endast utföras med användning av ackumulatorn.

Användaren har fyra banker med 8 allmänna register R0–R7 till sitt förfogande (fig. 9). Det är emellertid möjligt att använda registren för endast en av de fyra bankerna, som väljs med hjälp av PSW-registerbiten.

2.5. Programstatusordregister och dess flaggor

När många instruktioner exekveras i ALU:n genereras ett antal operationsattribut (flaggor), vilka registreras i programstatusordsregistret (PSW). I tabell 2 ger en lista över PSW-flaggor, ger deras symboliska namn och beskriver villkoren för deras bildande.

Tabell 2

PSW-programstatus Word-format

Namn och syfte

Bär flagga. Ställ in och återställ av hårdvara eller mjukvara när du utför aritmetiska och logiska operationer

Extra bärflagga. Ställs in och nollställs endast av hårdvara när tilläggs- och subtraheringsinstruktioner exekveras och signalerar en bära eller låna i bit 3

Flagga 0. Kan ställas in, nollställas eller kontrolleras av programmet som en användarspecificerad flagga.

Välja en registerbank. Ställ in och återställ med programvara för att välja en fungerande registerbank (tabell 3)

Overflow flagga. Ställ in och återställ av hårdvara när du utför aritmetiska operationer

Inte använd

Paritetsflagga. Ställ in och återställ av hårdvara i varje cykel och fixar det udda/jämna antalet en bitar i ackumulatorn, dvs utför paritet

Tabell 3

Välja en fungerande registerbank

Adressgränser

Den mest "aktiva" PSW-flaggan är bärflaggan, som är involverad och modifierad under många operationer, inklusive addition, subtraktion och skift. Dessutom fungerar bärflaggan (CY) som en "boolesk ackumulator" i bitmanipulerande instruktioner. Overflow-flaggan (OV) upptäcker aritmetiskt spill i signerade heltalsoperationer och gör det möjligt att använda aritmetik i tvås komplementkoder. ALU kontrollerar inte registerbanksvalflaggorna (RSO, RS1), deras värde bestäms helt av applikationsprogrammet och används för att välja en av de fyra registerbankerna.

Som en byte kan PSW-registret representeras enligt följande:

I mikroprocessorer vars arkitektur bygger på en ackumulator, fungerar de flesta instruktioner på ackumulatorn med hjälp av implicit adressering. Intel 8051 är annorlunda. Även om processorn är baserad på ett batteri kan den utföra många kommandon utan dess deltagande. Till exempel kan data överföras från vilken RDM-cell som helst till vilket register som helst, vilket register som helst kan laddas med en omedelbar operand, etc. Många logiska operationer kan utföras utan att involvera en ackumulator. Dessutom kan variabler ökas, minskas och kontrolleras utan att använda en ackumulator. Flaggor och kontrollbitar kan kontrolleras och ändras på samma sätt.

2.6. Pekarregister

8-bitars stackpekaren (SP) kan adressera vilket RDM-område som helst. Dess innehåll ökas innan data lagras i stacken under PUSH- och CALL-instruktioner. Innehållet i SP minskas efter att POP- och RET-kommandona exekveras. Denna metod för att adressera stackelement kallas pre-increment/post-decrement. Under initieringen av mikrokontrollern, efter RST-signalen, laddas kod 07H automatiskt in i SP. Detta betyder att om inte applikationsprogrammet åsidosätter stacken, kommer det första dataelementet i stacken att vara placerat på RDM-plats 08H.

Två-byte datapekarregistret DPTR används typiskt för att fånga en 16-bitars adress i externa minnesåtkomstoperationer. Genom mikrokontrollerkommandon kan datapekarregistret användas antingen som ett 16-bitars register eller som två oberoende 8-bitarsregister (DPH och DPL).

2.7. Specialfunktionsregister

Registren, symboliskt benämnda IP, IE, TMOD, TCON, SCON och PCON, används för att låsa och programmässigt ändra styr- och statusbitarna för avbrottskretsar, timer/räknare, seriell transceiver och effekthantering. Deras organisation kommer att beskrivas i detalj i avsnitt 1.8-1.12, när man överväger funktionerna hos mikrokontrollern i olika lägen.

2.8. Kontroll- och synkroniseringsenhet

En kvartsresonator ansluten till de externa stiften på mikrokontrollern styr funktionen hos den interna oscillatorn, som i sin tur genererar synkroniseringssignaler. Styrenheten (CU), baserad på synkroniseringssignaler, genererar en maskincykel med en fast varaktighet lika med 12 generatorperioder. De flesta mikrokontrollerinstruktioner exekveras i en maskincykel. Vissa instruktioner som fungerar på 2-byte ord eller kommer åt externt minne tar två maskincykler att slutföra. Endast divisions- och multiplikationsinstruktionerna kräver fyra maskincykler. Baserat på dessa driftegenskaper hos styranordningen beräknas exekveringstiden för applikationsprogram.

I mikrokontrollerkretsen finns ett instruktionsregister (IR) intill styranordningen. Dess funktion är att lagra koden för kommandot som körs.

In- och utsignaler från kontroll- och synkroniseringsenheten:

1. PSEN – programminnesupplösning,

2. ALE – utgångssignal för aktivering av adressfixering,

3. PROG – programmeringssignal,

4. EA – blockerar arbete med internminne,

5. VPP – programmeringsspänning,

6. RST – allmän återställningssignal,

7. VPD – minnesbackupeffekt från extern källa,

8. XTAL – anslutningsingångar kvartsresonator.

2.9. Parallella in-/utgångsportar

Alla fyra portarna (P0-P3) är utformade för att mata in eller mata ut information byte för byte. Varje port innehåller ett kontrollerat låsregister, en ingångsbuffert och en utgångsdrivrutin.

Utgångsdrivrutinerna för portarna P0 och P2, liksom ingångsbufferten för port P0, används vid åtkomst till externt minne. I detta fall, via port PO i tidsmultiplexmod, matas först adressens låga byte ut, och sedan skickas eller mottas databyten. Port P2 matar ut den mest signifikanta byten av adressen i fall där adressbredden är 16 bitar.

Alla stift på port P3 kan användas för att implementera de alternativa funktionerna som anges i tabellen. 4. Dessa funktioner kan aktiveras genom att skriva 1 till motsvarande bitar i låsregistret (P3.0-P3.7) för port P3.

Tabell 4

Alternativa P3-portfunktioner

Namn och syfte

Läsning. En aktiv lågnivåsignal genereras av hårdvara vid åtkomst till externt dataminne

Spela in. En aktiv lågnivåsignal genereras av hårdvara vid åtkomst till externt dataminne

Timer/räknare ingång 1 eller testingång

Timer/räknare ingång 0 eller testingång

Ingång för avbrottsbegäran 1. Känner av lågnivå- eller avstängningssignal

Ingång för avbrottsbegäran 0. Känner av lågnivå- eller avstängningssignal

Serieportens sändarutgång i UART-läge. Klockutgång i skiftregisterläge

Seriell port mottagare ingång i UART-läge. Datainmatning/utmatning i skiftregisterläge

Port 0 är dubbelriktad och portar 1-3 är kvasi-dubbelriktade. Varje portlinje kan användas oberoende för in- eller utmatning.

Baserat på RST-signalen skrivs enheterna automatiskt till låsregistren för alla portar, vilket ställer in dem för ingångsläge.

Alla portar kan användas för att organisera informationsinmatning/utmatning via dubbelriktade transmissionslinjer. Portarna P0 och P2 kan dock inte användas för detta ändamål om systemet har externt minne, med vilket kommunikationen organiseras genom en gemensam delad adress/databuss som arbetar i tidsmultiplexmod.

Det är möjligt att komma åt I/O-portar med hjälp av kommandon som fungerar på en byte, en enskild bit eller en godtycklig kombination av bitar. Dessutom, i fall där porten är både en operand och destinationen för resultatet, implementerar kontrollenheten automatiskt ett speciellt läge som kallas "läs-modifiera-skriv". Detta åtkomstläge involverar inmatning av signaler inte från portens externa stift, utan från dess låsregister, vilket eliminerar felaktig läsning av tidigare utdatainformation. Denna mekanism för att komma åt portar är implementerad i kommandona:




Topp