Vår väg till Godkänt, och sedan vidare...

Relevanta dokument
Introduktion till programmering och Python Grundkurs i programmering med Python

Det finns en hemsida. Adressen är

Kursplan för ENK Mikroprocessorteknik A

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 2. Operativsystem och programmering

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Lösningar till tentamen i EIT070 Datorteknik

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Programmering eller Datalogiskt tänkande

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

HF0010. Introduktionskurs i datateknik 1,5 hp

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Introduktion till MySQL

Grundläggande datorteknik

LEU240 Mikrodatorsystem

Mattias Wiggberg Collaboration

Pipelining i Intel Pentium II

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

Systemkonstruktion SERIEKOMMUNIKATION

Laboration i datateknik

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Grundläggande datavetenskap, 4p

LV6 LV7. Aktivera Kursens mål:

Grundläggande Datorteknik Digital- och datorteknik

Processor pipelining genom historien (Intel i9-intel i7)

Tentamen PC-teknik 5 p Lösningar och kommentarer

Stack och subrutiner Programmeringskonventionen

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Inledande programmering med C# (1DV402) Introduktion till programmering

Tentamen den 18 mars svar Datorteknik, EIT070

Programexempel för FLEX

Konstruera, styra, reglera och programmera en röd tråd F-9

Datorteknik TSIU02 Kursinformation

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Digitala system EDI610 Elektro- och informationsteknik

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Loopar och ljud 3 av 7. Lektionen handlar om att lära sig programmera loopar och använda ljudeffekter med verktyget Scratch. Loopar och ljud 3 av 7

Loopar och ljud 3 av 7. Lektionen handlar om att lära sig programmera loopar och använda ljudeffekter med verktyget Scratch. Loopar och ljud 3 av 7

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Datorsystemteknik DVGA03 Föreläsning 8

Föreläsning 1: Intro till kursen och programmering

Tentamen i EIT070 Datorteknik

Föreläsning 1: Intro till kursen och programmering

Datorsystemteknik DAV A14 Föreläsning 1

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Pipelining i Intel 80486

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Lösningar till tentamen i EIT070 Datorteknik

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

ENKEL Programmering 3

IT för personligt arbete F5

Introduktion till att programmera med Scratch (lektion 3 av 5)

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Erfarenheter från labben

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Digitala System: Datorteknik ERIK LARSSON

Kontrollskrivning Mikrodatorteknik CDT S2-704

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Föreläsning 4/11. Lite om logiska operationer. Hambley avsnitt 12.7, 14.1 (7.3 för den som vill läsa lite mer om grindar)

Föreläsningsanteckningar 3. Mikroprogrammering II

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

IT för personligt arbete F6

Hambley avsnitt 12.7 (7.3 för den som vill läsa lite mer om grindar) sann 1 falsk 0

Datorsystemteknik DAV A14 Föreläsning 1

T1-modulen Lektionerna Radioamatörkurs OH6AG OH6AG. Bearbetning och översättning: Thomas Anderssén, OH6NT Heikki Lahtivirta, OH2LH

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

MARIN EL OCH ELEKTRONIK

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen i Informationsteknologi 5p Fredagen den 13 augusti 2004

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Digital- och datorteknik

Grunderna i stegkodsprogrammering

Programmeringsteknik med C och Matlab

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

LABORATION. Datorteknik Y

Programmering och begrepp

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Editering, Kompilering och Exekvering av Javaprogram

Labbrapport LEGO-robot linefollower

Transkript:

Grunder i programmering Vår väg till Godkänt, och sedan vidare... Ett väl utfört arbete ger en inre tillfredsställelse, och är den grund varpå samhället vilar. Karl-Bertil Jonsson ii

Grunder i programmering Innehållsförteckning Mikroprocessorteknik A - ENK1207...4 Lite historia:...5 Röret, transistorn, Operationsförstärkaren...5 ALU, register, bussar...5 Instruktioner, hur instruktioner blir signaler...5 register för stack, zero, carry...5 Aritmetik...5 Allmän programmering...6 Angående kommentarer!...6 Angående kodning!...6 Arbetsgång i text...7 Arbetsgång grafisk...8 Hacka kod för PIC...9 Skapa en loop...9 Skapa ett pulståg...9 Skapa en logisk funktion...9 Villkor...9 Hopp...9 Avbrott...9 Koda säkert och skalbart...9 Länkar...10 Digitalteknik...10 iii

Mikroprocessorteknik A - ENK1207 50 poäng inrättad 2000-07 SKOLFS: 2000:31 Mål Mål för kursen 4 av 12 09-01-09

Lite historia: Anledningen till historielektionen är att visa varför processorer har kommit att bli vad de är. Röret, transistorn, Operationsförstärkaren Reläet är en enkel komponent att hantera, men ack så effektkrävande och långsam. Röret (Eng. electron tube eller valve) kräver att en svärm av elektroner finns tillgängliga och det får man genom att värma upp en glödtråd (filament) i vakuum. På så vis kan man attrahera elektronerna med mer eller mindre positivt laddade metallytor. Mellan glödtråden och den positiva sidan finns ett galler vilket matas med en signalspänning för att styra elektronflödet (strömmen). Ganska avancerade konstruktioner kan tryckas in i ett rör. Dioder, trioder, pentoder bara för att nämna de vanligaste. Operationsförstärkaren utvecklades för att utföra aritmetiska operationer, men då med analoga signaler. Huvudblocket i en OP är strömspegeln och konstantströmsgeneratorn. OP:n förekommer sällan, eller aldrig i datorer, utan som förstärkare i olika konstellationer. ALU, register, bussar ALU:n bearbetar data enligt de kretslösningar den är konstruerad med. Data och instruktioner anländer på samma buss, och samtidigt, eller inte, beroende av arkitektur. Harvard-arkitekturen har olika minnen och bussar för data och instruktioner. von Neumann-arkitekturen använder samma minne och buss till både data och instruktioner. Därför kan Harvard-arkitekturen uppvisa snabbare exekvering på bekostnad av en mer komplex kretslösning. Instruktioner, hur instruktioner blir signaler register för stack, zero, carry Aritmetik 5 av 12

Allmän programmering Från idé via flödesschema till exekverbar fil. Det är inte bara vid programmering man kan dra nytta av flödesschema. Det hjälper till att bringa ordning på tankar och hjälper till att förklara för andra sina idéer. Flera av standardsymbolerna härstammar från just datortekniken, men det gör inget om man lånar dem för att beskriva avloppsrening eller möblering vid en flytt. Det är också så att ett antal symboler beskriver föråldrade begrepp. Det gör inte så mycket eftersom vi klarar os långt på de övriga. I vårt fall ska vi ju dock använda flödesschemat för att ge stöd vid programmeringen. Det hjälper inte att bara ha ett schema, i slutänden ska det ju bli kod som vi kan programmera processorn med. Angående kommentarer! Att skriva överdrivet många kommentarer hjälper väldigt lite, även om det hjälper mer än inga alls. Men att sätta rätt kommentar på rätt ställe är guld värt. Strunta i att beskriva exakt vad instruktionen ska göra, den som hjälpligt kan instruktionsuppsättningen blir inte hjälpt av det. Skriv istället tydligt vad rutinen ska åstadkomma, vilka parametrar som ingår, kanske vilka rutiner som behöver resultatet. Angående kodning! Tänk på att en processor bara kan göra en sak åt gången. Vid detta laget känner vi till hur man skapar loopar för att vänta bort en massa tid i form av klockcykler. Det är användbart när man bara ska utföra en enkel sekvens. Men det är ett fruktansvärt slöseri med resurser och lämpar sig inte när flera processer måste skötas parallellt. 6 av 12 09-01-09

Arbetsgång i text Här ska jag nu beskriva hur man med små steg i många omgångar åskådliggjör sina problemställningar på ett tydligt sätt, och därför förenklar problemlösningen. Rena skolexempel kan skilja sig ganska mycket från verkligheten, det får inte glömmas bort. Det gäller att hitta lösningar på problemen oavsett. 1. Teckna ner din idé. Det spelar ingen roll hur du gör, bara du fångar den så att den inte glöms bort. Att använda standardsymboler är inte nödvändigt. 2. Identifiera olika delar i projektet. Somliga är distinkta och lätta att urskilja. 3. Ordna delarna i en följd som kan fungera. Sällan är det en bra idé att sätta upp fönstren först när man bygger hus... 4. När vi kommit så här långt kan det vara lönt att använda standardsymboler. Först och främst för att kunna förklara för andra vad man menar när man frågar om hjälp. 5. Allteftersom flödesschemat börjar ta form, kan man börja fundera över att fylla delblocken med kod. Om blocken redan innan beskrivits med ytterligare en nivå av flödesschema, ja då blir arbetet ännu lättare. 6. Glöm inte att ta hänsyn till hårdvarumässiga begränsningar. 7. Innan vi når ett sådant djup i kodandet att överblicken försämras (för det gör den i lite större projekt), så fundera över vilka delblock som liknar varandra. Dessa block kan man skapa som subrutiner med gemensamma parametrar. Lägger man lite tid här, så vinner man tiofalt lite längre fram. 8. Man får lov att backa och revidera sitt projekt, både för att lägga till och dra ifrån funktioner. Men också för att ändra så att koden blir lättare att hantera och generalisera kodsnuttar så att de lättare kan återanvändas. Tja, så här håller man på och successivt byter innehållet i schemats symboler mot programmeringskod. 8. Om bara koden håller ihop så mycket att det går att kompilera den, så gör det. Bara det faktum att koden funkar i kompilatorn betyder inte att allt är utan problem. Men det betyder att man inte behöver tänka så mycket på irriterande syntaktiska buggar, när det finns allvarligare fel att hitta. 9. Väldigt sällan (aldrig) funkar det som man tänkt sig redan första gången. Du blir troligen tvungen att gå tillbaka och "putsa" lite på koden mer än en gång. Glöm därför inte att hela tiden skriva kommentarer om hur koden är tänkt att fungera. Att börja rota i koden efter en vecka utan kommentarer är illa nog. En månad och två projekt senare är det bara löjligt att försöka. 7 av 12

Arbetsgång grafisk Fånga idéen och sortera de ingående villkoren Identifiera vad som behövs för att realisera projektet Fyll blocken med kod ; ----Knapptest-------------------------------- test btfss PORTA,0 ;Kontrollera knappen goto slack0 ;Annars gå vidare movlw D'0' call tand ;tänd och gå vidare goto next1 RETURN ; ----/Knapptest------------------------------- Glöm inte kommentarerna!! Gör tydliga referenser till andra block när de inte får plats på samma sida! Räkna med att pröva och ompröva lösningarn hela tiden. Se om koden fungerar att kompilera då och då. 8 av 12 09-01-09

Hacka kod för PIC Se dokumentet Elmer för assembler till mikrokontrollern från Microchip. Det är ganska enkelt att säga att PIC har 35 instruktioner och är lätt att lära sig. Det finns även direktiv och konfigurationer att lära sig. Skapa en loop Skapa ett pulståg Skapa en logisk funktion Villkor Hopp Avbrott Koda säkert och skalbart Jag ska nu införa begreppet skalbarhet. Det betyder att oavsett funktionens, organisationens (det kan kvitta om det är ett program, företag, förening eller maskin) storlek, så måste arbetet uträttas. Skalbart är det när man uträttar ett arbete och storleken är ovidkommande. Man kan skala upp lönekontorets antal utbetalningar till 3000, men processen är densamma om det bara är fyra. Till kodningen hör att koda säkert. Med det menar jag att du redan i flödesschemat som ligger till grund för programmeringen, tar hänsyn till oförutsedda händelser. Det låter kanske motsägelsefullt, och man lär sig nog bäst genom att gå på minorna själv. Vad jag menar är att innan varje gång man lämnar en subrutin, så städa upp efter den. Låt inte småskräp föröka sig i minnesareorna. Se till att subrutiner, makron, variabler och annat har enkla men betydelsefulla namn. Undvik Svenska tecken i koden. Det funkar dock oklanderligt i kommentarerna. 9 av 12

Länkar Digitalteknik Grindar och transistorer förklarade på ett bra sätt. Ett löst sammansatt nätverk av kollegor och vänner bidrar också fackkunskaper inom sina områden. Mats Wiklund http://faktabanken.nu/elektronik.htm Inte bara elektronik presenteras. surfa upp en nivå och se. Wikipedia täcker alldeles för mycket för att jag ska kunna nämna allt i en kort presentation. Men mycket information saknas på Svenska. Bortse inte från viktig kunskap på Engelska eller Danska, Norska och för den delen andra språk. http://www.wikipedia.org/ Talsystem och siffror: http://sv.wikipedia.org/wiki/siffra Låskretsar och vippor. Högskolorna är suveräna källor till kunskap. William Sandqvist har skrivit detta dokument. http://www.isk.kth.se/kursinfo/6b4059/vippor/index.htm Men William har skrivit mycket mer. En bit ner på sidan hittar du en lista på kursmaterial. Han har dessutom tillåtit oss att använda det i undervisningen, med glädje till och med! Vi har all anledning att återkomma till hans verk. http://www.isk.kth.se/kursinfo/6b4059/kursprogvt07.htm Datatermgruppen http://www.nada.kth.se/dataterm/ 10 av 12

Nu är det slut.