Insida II
Kursplan för ENK1207 - Mikroprocessorteknik A Ämne: Elektronik 50 poäng inrättad 200007 SKOLFS: 2000:31 Mål Mål för kursen Kursen skall ge grundläggande kunskaper om funktion och arbetssätt hos de mikroprocessorer och enchipsdatorer som används i olika elektroniksystem. Kursen skall även ge kunskap om mikroprocessorers bussanslutningar och signaler på dessa. Kursen skall också ge grundkunskaper om mikroprocessorers kringkomponenter och kringutrustningar samt arbetssättet hos dessa. Dessutom skall kursen ge färdighet i att programmera mikroprocessorer och enchipsdatorer i assembler. Mål som eleverna skall ha uppnått efter avslutad kurs Eleven skall kunna styra enkla processer med mikroprocessor eller enchipsdator kunna programmera enchipsdatorer eller mikroprocessorer i assembler med hjälp av persondator kunna analysera programmeringsuppgifter samt skriva och felsöka enkla program kunna använda programmeringsutrustningar för minneskretsar ha kunskap om mikroprocessorers och enchipsdatorers funktion samt hur de används i elektroniksystem inom vald inriktning ha kunskap om arbetssättet hos de vanligaste minnestyperna och kunna beskriva deras egenskaper ha kunskap om AD- och DA-omvandlarnas arbetssätt kunna skydda mikroprocessorkretsarna mot ESD-skador. Betygskriterier Kriterier för betyget Godkänt Eleven programmerar med viss handledning mikroprocessorer eller enchipsdatorer i assembler för styrning av enkla processer. Eleven hanterar mikroprocessorer och enchipsdatorer samt övrig utrustning på ett godtagbart och säkert sätt. Eleven söker de de fakta som behövs för arbetsuppgifterna ur olika källor. Eleven beskriver hur mikroprocessorer och enchipsdatorer fungerar och utnyttjas i apparater och elektroniksystem. Kriterier för betyget Väl godkänt Eleven utför på egen hand sina arbetsuppgifter och väljer själv arbetsmetoder, instrument och komponenter. Eleven hämtar på egen hand information från olika källor och tillämpar denna i olika arbetsuppgifter och situationer. Kriterier för betyget Mycket väl godkänt Eleven utför sina arbetsuppgifter med noggrannhet och når snabbt avsett resultat. Eleven anpassar sin arbetsinsats till den aktuella situationen, analyserar och bedömer resultatet samt åtgärdar avvikelser. Eleven beskriver samband och ser helheter i komplexa programmeringsuppgifter. III
Innehållsförteckning Kursplan för ENK1207 - Mikroprocessorteknik A...3 Mål...3 Mål för kursen...3 Betygskriterier...3 Kriterier för betyget Godkänt...3 Kriterier för betyget Väl godkänt...3 Kriterier för betyget Mycket väl godkänt...3 En kort genomgång av kursen...6 Perspektivet / Ändamålet...6 Exempel...6 Hur tar vi oss dit?...7 Vägarna / Alternativen...7 Praktiska laborationer...8 Bonus...8 Arkitekturer...10 Harvard...10 Von Neumann...10 Ingående block...11 ALU...11 Bussar...11 Register...12 Portar...12 I/O...12 Minne...12 EEPROM...12 Flash...12 Register...12 Logiska operationer...13 Additioner...13 Subtraktioner...13 Addition med 2-komplementet...13 Multiplikation...14 Arbetsgången...15 Flödesschema...15 Tips från kunniga...15 Utvecklingsverktygen...21 Editor...21 Resultat: Källkod...21 Kompilator...21 Resultat: Objektkod...21 Länkare...22 Resultat: Hexfilen...22 Programmeraren...22 Att hacka kod...23 Positioner...23 Header...23 Labels...23 Instruktioner...23 Operander...24 Kommentarer...24 Instruktioner...24 Direktiv...24 Loopar...24 Hopp...24 Relativa...24 Villkorliga...24 Lookup-tabeller...24 Programräknare...24 Offset...25 Programblock...25 Include-filer...25 Subrutiner...25 Makron...25 Programmoduler...25 Bibliotek (Libbar)...25 IV
Tim Primärt Sekundärt OK 1 Kurspresentation 2 3 4 5 Logiska operationer 6 7 Bussar 8 ALU 9 10 PIC inuti Diagnostiskt prov 11 Portar Hårdvara 12 Mnemonics 13 Assembler 14 Utvecklingsverktygen 15 Direktiv God programmeringssed 16 17 Styra portpinnar 18 19 Initiera projekt 20 21 22 23 Blinka lilla LED 24 25 Prov 26 Läsa ingångar 27 28 29 A/D - D/A 30 Diagnostiskt prov 31 Anpassa givare 32 33 34 35 Använda/skapa libbar 36 37 Kommunikation minnen 38 39 40 Interrupt 41 42 43 44 45 Prov 46 47 48 49 50 V
Kursgenomgång En kort genomgång av kursen Kursplanen har en mycket vidsynt specifikation på vad kursen ska ge. Här ska beskrivas närmare vad kursen innehåller för att kunna uppfylla Skolverkets krav. Perspektivet / Ändamålet Idag finns mikroprocessorer i många apparater. Utöver mobiltelefoner, mikrovågsugnar, DVDspelare, ge exempel på några tänkbara applikationer. En gång i tiden utfördes enkla villkor av reläer. Sekvenser till tvättmaskiner har länge utförts av excenterskivor med mikrobrytare. Mikroprocessorerna är bra på att utföra enformiga upprepade moment. Beräkningar och sekvenser är bara mycket ytliga begrepp om vad som ingår. Avancerade uppgifter kan skötas av en CPU (Central Processing Unit). Den har då kontakt med omvärlden via bussar med data och adresser. Det krävs en FPGA, eller Field Programmable Grid Array, är en utökad variant av PGA. De består av en stor matris med logiska block. Blockens funktioner sparas i ett litet minne som läses av vid varje uppstart. Med dessa kan mycket komplexa funktioner utföras, till exempel kan man efterlikna egenskaperna av en specifik processor. Tekniken kräver mer effekt och är inte världens snabbaste. Men buggar kan fixas i fält med en enkel uppgradering. Utvecklingstiden tenderar också till att bli kortare. Blocken beskrivs i ett Hardware Description Language, HDL. De två vanligaste är Verilog och VHDL del kringkomponenter och anpassning innan CPU:n kan börja arbeta. Bland annat ett minne där programmet lagras. Enklare arbetsuppgifter kan klara sig med en mikrokontroller. Ett annat namn är enchipsdator. Den består av en CPU, men har in- och utgångar speciellt anpassade för att direkt hantera signaler från omgivningen. Framför allt finns program- och arbetsminnet inbyggt. Därmed har man också blivit av med processorns stora flexibilitet. Enchipsdatorerna har på senare år blivit mycket kompetenta. Den utvecklingen fortsätter. Exempel Trafikljus, temperaturlogger, kopplingsur, är applikationer som med lätthet kan styras av en enkel kontroller. Robotar, processindustri, kan styras med en kontroller, men en CPU är troligen att föredra på grund av den större flexibiliteten. 6 Av 27
Mikroprocessorteknik A Hur tar vi oss dit? Vi behöver naturligtvis förstå lite av vad som pågår inne i en processor. Det betyder lite logik och grindar. Den första praktiska uppgiften i alla liknande kurser är att få en lysdiod att blinka. Det ska vi göra även i denna kursen. Sedan ska vi lära oss en del om assemblerprogrammering. Det är ett språk som gör maskinkod lättare att läsa. Sorgligt nog är assembler också specifik för sin processor. Det betyder att ett program, skrivet för en processor, inte passar till en annan utan modifikation. Assemblerprogrammeringen innefattar en del handgrepp för att undvika fällor. Dessutom ska vi lägga grunderna till god programmeringssed. Alltför ofta ser man kod som är både okommenterad, slarvigt skriven och mycket svår att återanvända. 50 poäng är inte mycket tid, så vi får absolut inte slösa bort den! Viktigt är att ha kunskaper med sig från skolan som faktiskt kan användas där ute... i verkligheten! Vägarna / Alternativen Vi kan ta vägen om de stora CPU:erna, men det ska vi inte göra. Läsa scheman Läsa datablad De två mest vanligt förekommande tillverkarna av mikrokontrollrar heter Atmel och Microchip. Vi behöver slippa kringkomponenterna så mycket som möjligt för att snabbt komma in på det roliga och se resultat. Det gör att de enklare mikrokontrollrarna är självskrivna. Microchips kretsar är väl kända och ganska enkla att hantera. Men det är Atmels kretsar också. Valet faller ändå på Microchip... Vi ska också välja en krets som inte är så komplicerad att börja med. Det betyder inga banker, mycket minne. Kort sagt, en PIC ur familjen 18F. I verkliga livet, är det kostnader som styr valen. Ofta vill man ha in alla möjliga funktioner i en så billig krets som möjligt. Det sätter programmeraren på prov. Eftersom utvecklingstiden är mycket dyrbar, händer det ibland att man använder en överdimensionerad kontroller i alla fall. För att verkligen hålla kursen på en allmängiltig nivå, och inte låsa tankegångarna till ett par specifika hjälpmedel, så ska vi använda verkligt allmänna verktyg i utvecklingsarbetet. Relokerbar kod i motsats till absolut. Interrupt (avbrottshantering) är inte svårt Registerhantering är viktigt Kommentering! 7 Av 27
Kursgenomgång Praktiska laborationer Ett par hårdvarulösningar ska finnas för enkla laborationer. 1. Blinka lysdiod 2. Trafikljus 3. LCD-modul 4. Temperaturgivare Rimligen bör man få bygga något själv. Exempel: Rinnande LED-display / Hårddiskklocka Motorstyrning Självstyrande fordon PID-regulator Högtflygande planer? Det är bara exempel... Bonus Datablad och hjälp är på Engelska. Arbetet bedrivs som Projekt. Uträkningar måste göras med Matematik. Intresserade elever begränsas inte av skolan! 8 Av 27
Mikroprocessorteknik A 9 Av 27
Mikrokontrollerns insida Arkitekturer Vikten av att kunna detta har minskat dramatiskt det senaste decenniet. Processortillverkare har nämligen lånat friskt av varandras fördelar till den grad att de snart sagt kan sägas vara liknande allihop. Men det hör till att förstå hur signalerna far omkring i processorernas innandömen. Det hjälper också till en del när man ska programmera dem på så låg nivå som med assembler. Harvard Von Neumann 10 Av 27
Mikroprocessorteknik A Ingående block ALU Det är i den Aritmetisk-Logiska Enheten som beräkningarna utförs. Bussar De elektriska ledningar som leder signalerna kallas bussar. Oftast förknippar man de med flera parallella banor, men seriella överföringar ser på entrådsbussar. I 2 C är ett exempel. 11 Av 27
Register De minnen som håller reda på status i processorns inre kallas register. Man kan skriva till register som bestämmer om en portpinne ska vara in- eller utgång. Annars kan man läsa av Z- flaggan (registerparametrarna kallas flaggor) och se om en beräkning blev noll eller inte. Mikrokontrollerns insida Det finns många register, och flera av dem ska vi gå igenom under kursens gång. Portar En samling av I/O kallas port. De flesta mikrokontrollrar har fler än en port om åtta I/O. Det måste absolut inte vara just åtta. I/O Input/Output är just de pinnar vi styr och läser av med hjälp av programmet. Somliga pinnar har specialfunktioner. Vid konstruktion ska man därför se till att behoven blir täckta innan värdefulla pinnar använts till triviala funktioner. Timer- och A/D-omvandlare är exempel på sådana. De andra brukar kallas GPIO (General Purpose I/O). Minne EEPROM Flash Register 12 Av 27
Mikroprocessorteknik A Logiska operationer Nu ska vi se vad som verkligen händer med de elektriska signalerna. De vanliga grindarna är de som utför själva jobbet. De i sin tur är uppbyggda av alldeles vanliga transistorer. Från digitaltekniken ska vi ha lärt oss att utföra på papper det som processorn gör elektriskt. Här är en kort repetition: Additioner Som synes utförs binära additioner med hjälp av OR, bitvis mellan det övre och det undre talet. Precis som i det decimala talsystemet. Det syns kanske också att det kan förekomma minnessiffror. Inga problem, processorn har register för att komma ihåg dem. Minnessiffror OR:as helt enkelt med nästa bitpar. Subtraktioner Så här skulle vi ha gjort... Alls inte knepigare. Man ska bara komma ihåg att låna 2 (2 10 =10 2 ) där det behövs. Nu ska vi se hur binära subtraktioner skiljer sig från vår vanliga decimala metod. Vi har ju en viss förmåga att se ett par steg framåt och besluta om handgrepp utifrån rådande situation. Den möjligheten har inte en processor. Lyckligtvis finns det mer än en metod, och en som processorer kan använda. Addition med 2-komplementet 1 1 136 +75 211 10 136-75 61 1 10001000 +1001011 11010011 10 10 10 10 10 10 10 10001000-1001011 111101 Metoden fungerar utmärkt, men ett par villkor måste uppfyllas. Sorgligt nog kan man inte hantera hur stora tal som helst. Ordlängden måste vara fixerad. 1. Bestäm ordlängden (antal bitar) 2. Fyll ut med nollor om det behövs (glöm inte detta) 3. Invertera talet som ska subtraheras 4. Addera 1 (Nu kallas talet för 2-komplement) 5. Addera de två talen 6. Blir det en bit för många i svaret, släng bort den 7. Färdigt! 150-72=78 Det tal som ska subtraheras måste inverteras. När det är gjort, kallas det komplementärtalet. Visst kan vi räkna med det, men resultatet kommer att vara 1 för litet. Lägg därför till en 1:a, först som sist. Varför saknar det enkla komplementärtalet värdet av 1? tal1(150) 10010110 tal2(72) 01001000 invertera 10110111 addera + 1 2-kompl. 10111000 addera 10010110 talen + 10111000 Svar(78) 101001110 13 Av 27
I en värld där alla tal har ett bestämt antal bitar, och även negativa tall måste kunna representeras, går MSB åt till talets tecken. Vi tittar närmare på ett exempel med tre bitar. Multiplikation Upprepad addition. Inget konstigt alls. Talet som ska multipliceras, multiplikanden, adderas till sig själv, så många gånger som det multiplicerande talet, multiplikatorn, anger. Från ALU:ns utgång återvänder resultatet till den ena ingången. Den andra ingången innehåller originalet, det som adderas till resultatet. Ett register innehåller multiplikatorn. Den räknas ned för varje varv. När registret blivit noll, är multiplikationen färdig. Detta är EN metod av alla tillgängliga. Tilltalande är att det enda som behövs är OR-grindar och en del register. Nackdelen är dock att antalet iterationer kan bli betydande och tidskrävande. En betydligt effektivare metod är att skifta till vänster och addera. Logiska operationer Bin 0 000 0 1 001 1 2 010 2 3 011 3-4 100 4-3 101 5-2 110 6-1 111 7 0 000 0 1 001 1 : : : 14 Av 27
Mikroprocessorteknik A Arbetsgången Varje utvecklare har sina egenheter. Men vi ska lära ut en metod för att på ett överskådligt vis ha möjlighet att skapa projekt där storleken är utan betydelse. Stort eller smått, spelar ingen roll. Det kallas skalbarhet. Vad som är viktigt är att ha ett definierat mål och delmål. Dela upp arbetet i små block. Flödesschema Med några enkla symboler kan man snabbt rita upp de stora dragen för ett projekt. De ingående blocken fylls med villkor och operationer. De blir sedan lättare att översätta till kod, eller dela upp i ännu mindre bitar. Tips från kunniga Generally use BRA within a module and GOTO between modules. Digitala kretsar, särskilt processorer, skall avkopplas med lämplig kondensator. 15 Av 27
Arbetsgången Uppenbarligen är mikrokontrollern rätt svar i denna kursen... Databladen är helt ovärderliga, men det finns gott om andra nyttiga dokument. Internet ska användas flitigt. Information behövs i rikliga mängder. Hårdvaran ska inte vålla några större problem, när databladen väl är förstådda! En skicklig utvecklare vet hur man gör jobbet lättare. Bryt upp arbetet i små hanterliga delblock. Första delmålet är att få ihop en eller flera filer med källkod. 16 Av 27
Mikroprocessorteknik A Att skriva kod är ett iterativt arbete. Det betyder att vi ständigt får prova om koden funkar efter ändring. Kompilatorn kommer att berätta vad som felar om koden inte går igenom. När kompilatorn godkänt koden, trillar objektfiler ut. De får filändelsen.o. Flera källkodsfiler kan användas till samma projekt. Lika många objektfiler trillar ut. Om du ändrar i en, behöver de andra inte kompileras igen. Stora projekt sparar mycket tid på det. Eftersom många projekt använder samma, eller liknande funktioner, undviker man att upprepa gamla misstag och slösa bort värdefull tid genom att skapa programbibliotek med färdiga programblock. Från huvudprogrammet kan funktioner åberopas från anslutna libbar. 17 Av 27
Arbetsgången Källkod och includefiler körs genom en kompilator, förhoppningsvis utan fel... Objektfiler skapas inte bara från källkod skriven i assembler. Det finns andra språk. Skapa gärna libbar av fungerande objektfiler. Då sparar du värdefull tid i kommande projekt! Länkaren sätter samman de halvsmälta delarna enligt givna direktiv. Ett mycket viktigt jobb! Ut kommer delmål 2, den hexfil som hårdvaran ska programmeras med. Inte bara hexfilen, utan ett par andra filer resulterar. 18 Av 27
Mikroprocessorteknik A 19 Av 27
20 Av 27 Arbetsgången
Mikroprocessorteknik A Utvecklingsverktygen Som tidigare nämnt, ska vi inte låsa fast hjärnan i ett specifikt tankesätt. Istället ska vi använda vanliga, allmänna och kostnadsfria verktyg. MPLAB är också kostnadsfritt, men vi ska lära oss att det faktiskt inte behövs. Nackdelen är att vi inte får godbitar såsom inbyggda verktyg för programmerare, simulator och liknande. Det finns hjälpmedel i andra program att ta till istället. Den fördel som är avgörande, är att lärdomen blir lättare att anpassa till andra sätt att arbeta efter skoltiden. En del tid går till att lära sig hantera verktygen. Sorgligt, men nödvändigt. Allt som har med att hantera källkoden sedan den skrivits, står att läsa om i den här guiden från Microchip: Ref: 33014j.pdf (MPASM Assembler, MPLINK Object Linker, MPLIB Object Librarian User s Guide) Editor Källkoden kan skrivas i vilken texteditor som helst. Till och med i en ordbehandlare, men helst inte. De lämnar vanligen en massa kontrolltecken i källfilen som är förvirrande för kompilatorn. Notepad funkar utmärkt, men det finns texteditorer som har syntax hilighting, vilket gör jobbet ännu lättare. Resultat: Källkod Den kod vi skriver och kan förstå, kallas källkod. Den är liksom källan till det färdiga programmet. Källkoden innehåller alla delar som labels, instruktioner, operander, direktiv och kommentarer. Kompilator När källkoden är skriven, behöver den formas, översättas, för att processorn ska förstå den. Programblock skapas till objektfiler. Microchips kompilator för assembler kallas MPASM. Det är den vi ska använda, och vi ska använda den flitigt. Det ska nämnas att det finns andra språk, och kompilatorer till dessa. Det definitivt vanligaste språket vid sidan av assembler, är C. Andra språk är JAL, Pascal och BASIC. Anledningen till assembler är att språket är mycket intimt knutet till hårdvaran. Resultat: Objektkod Dessa filerna blir mer framträdande när vi använder relokerbar kod. Varje delblock blir till en objektfil. Dessa halvsmälta delar behöver inte kompileras 21 Av 27
Utvecklingsverktygen igen om inga ändringar gjorts. Det betyder att stora projekt kan byggas snabbt eftersom de då bara behöver länkas samman. Program som är skrivna enligt absolut stil, blir oftast bara till en objektfil. Det ger inte länkaren någon större utmaning. Det ger inte programskrivaren någon större flexibilitet heller. Länkare Länkarens jobb är viktig i kompileringsprocessen. Vanligtvis ingår den automatiskt och man behöver inte tänka på den. Men vi vill tänka på den, och vi ska därför manuellt utföra den process som en integrerad utvecklingsmiljö sköter om. Det som länkaren gör är att sätta samman de objektfiler som skapats av kompilatorn. Det ska inte behöva uppstå några konstiga fel eftersom objektfilerna inte skapas om de inte godkänns av just kompilatorn. Vi får väl se... Ut kommer i alla fall hexkoden! Resultat: Hexfilen Det finns ett par format att välja mellan... Vilken är rätt för dig? Microchip använder Intel HEX formatet, antingen för 8- eller 16-bitars ordlängd. 8-bitarsvarianten finns också som en delad variant, där datat delas upp i udda respektive jämna bytes. I två filer. Man kan gå djupt i ämnet, men INHX8M är vår modell. Hexfilen är bara den viktigaste av länkarens resulterande filer, inte den enda. Programmeraren Inte att förväxla med den som skriver programmet. I dagligt tal kallas den också för brännare. Det är gränssnittet mellan själva mikrokontrollern och datorn som hexfilen ska överföras från. I bilden från arbetsgången kan vi se att det finns mer än en väg att gå. Kretsen kan programmeras i en särskild dosa, och sedan kan den lyftas på plats där den hör hemma. Så har man gjort sedan urminnes tider. Det är dock smidigare att göra hårdvaran färdig, med kontroller och allt, för att sedan föra över programmet med en kabel. Det kallas ICSP, eller In Circuit Serial Programming). Metoden är extra smidig när elektroniken är ytmonterad. 22 Av 27
Mikroprocessorteknik A Att hacka kod Här har vi ett cirkulärt beroende. Vi måste ha hårdvaran för att dra nytta av mjukvaran. Utan mjukvaran är hårdvaran värdelös. Vi måste dessutom förstå hårdvaran för att kunna skriva koden. I det fallet blir databladen ovärderliga. Det hjälper naturligtvis om man har klart för sig vad man vill åstadkomma. Positioner Program skrivs i kolumner. Olika kompilatorer hanterar avsteg olika bra. Här ska vi dock lära oss RÄTT sätt. Det går naturligtvis att hoppa till nästa kolumn med tab -tangenten. Det är ju liksom det som den tangenten är till för. Dock är det så att det kan ställa till med problem. Särskilt illa blir det när man skickar källkod via e-post för granskning, och mottagarens e- postklient inte hanterar tabbarna likadant som du är van vid. Av den anledningen är det bättre att använda mellanslag för att skilja kolumnerna åt. Somliga editorer kan ställas in för att automatiskt ersätta tabbar med mellanslag. Header Varje källkodsfil bör ha en liten header. Det är kommentarer om vad filen är för något, vad den innehåller och helst datum och namn på den som skrivit den. Include-filerna ses som header även de. Men de gås genom i Programblock. Labels På svenska kallas de etiketter, men vi behåller Engelskans label. Engelskan är ett viktigt språk och större delen av den hjälp som finns att tillgå, är på Engelska. Labels ska finnas i första kolumnen. Några få ord är reserverade och får inte användas som label. Man ska dessutom akta sig för att använda speciella tecken. Instruktioner ;header label mne/di r/makr operand komme ntarer Det som inte finns i första kolumnen, är inte labels. Det är regeln. Men praxis är att opkoderna hamnar i nästa kolumn. De är sifferkoder för vad som händer inne i processorn. De är lite jobbiga att lära sig. Därför har de fått namn istället, som MOVLW, BSF och BTFSS. Mnemonics kallas opkodernas namn. 23 Av 27
Operander Att hacka kod Efter instruktionerna kommer operanderna. Det är de som beskriver vad instruktionerna ska göra. Kommentarer Sist på en rad kommer eventuella kommentarer. Kompilatorn struntar i allt som kommer efter ett semikolon (;). Instruktioner Det finns inte så många instruktioner att hålla reda på. Mellan 30 och 40. Det kan skilja lite på olika kretsar. Alla behövs inte särskilt ofta. Några av dem är dock flitigt förekommande Direktiv Bara instruktionerna räcker inte. Loopar Dessa kan kallas räknare om man så vill. Ibland används de som timer, att slösa bort en massa klockcykler. Enkelt och praktiskt i flera fall. Men andra gånger behövs resurserna till andra saker. Resten av processorn kan inte göra något annat under tiden. Loopar används också (hellre) för iterativa operationer. Hopp Program skrivs bäst i små snuttar. Ju mindre kodsnuttarna är, ju enklare är det att skriva dem korrekt. Om de inte kommer i rätt ordning, får man hoppa emellan. Ett par av instruktionerna är till just för att hoppa. Relativa Villkorliga Inflamatoriska diskussioner pågår med jämna mellanrum om hopp är bra eller dåligt. Närmare bestämt om instruktionen Goto är skadlig eller inte. Att hoppa fram och tillbaka, kallas spagettikod. Lookup-tabeller En tabell med data. Bland dessa data kan det finnas ett som är av värde för tillfället. Ett exempel är att skriva tecken till en display. Programräknare För att hålla reda på vilket data i tabellen som behövs används PC (Program 24 Av 27
Mikroprocessorteknik A Counter). Offset Med Offset menas hur mycket som behöver adderas till värdet av PC för att accessa rätt data. Programblock Include-filer För att göra livet lite lättare, har flera definitioner redan lagts i en särskild fil. Den filen är speciellt anpassad för det chip som ska programmeras. I den finns definitioner för bland annat direktiv och register, så att man inte själv måste ge de hänvisningarna. Subrutiner Från huvudprogrammet kan man hoppa till ett programblock för att återvända när jobbet är utfört. Genom att hoppa till subrutinen från alla de platser den behövs, behöver man bara skriva den en gång. Programmet blir inte större för att man använder den ofta, men att göra ett hopp tar ett par klockcykler i anspråk. Makron Enkla små kodsnuttar kan klistras in på ett enkelt vis i form av makron. Det är väldigt lätt att gå överstyr. Tänk på att hela kodsnutten klistras in varje gång man använder makrot. Programmet kan alltså växa i storlek tills det inte får plats i minnet. Programmoduler Med relokerbar kod, kan kodsnuttar sparas i moduler som senare kan återanvändas i andra program. Bibliotek (Libbar) En samling med programmoduler (objektfiler) kan sparas i filer som vi kallar för bibliotek. Hädanefter kallar vi dem för libbar. Dessa libbar kan vi sedan knyta till ett program och åkalla funktioner i de moduler som finns där. 25 Av 27
26 Av 27 Att hacka kod