up/ansi Eksamensspørgsmål



Relaterede dokumenter
// Definition af porte og funktioner

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Datamaters arkitektur og programmering

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

System Arkitektur og Integration

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Microcontroller, Arduino

Arduino Programmering

Programmering i C. Lektion december 2008

Microcontroller, Arduino

uprocessorens hardware

Projekt - RoboNet Del Journal.

Indholdsfortegnelse :

Indholdsfortegnelse :

Filnavn: main.c

CANSAT & ARDUINO step by step

Computerens Anatomi. Af Martin Arnetoft

Internt interrupt - Arduino

MCE2040 SERIEL KOMMUNIKATIONSMODUL

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Programmeringseksempel tl BCxxxx (Seriel)

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

DGMF Kursus i Digitalcentralen. Rev. 19 / Poul Erik Christiansen. DiMAX 1200Z Digitalcentral

Programmering i C. Lektion november 2008

Fra programmering til mikroprocessor

Programmering i C. Lektion september 2009

Alt elektronik heri er købt via og arduino udviklingssoftware er hentet fra

LCD Character display Intro

Programmering i C. Lektion september 2009

Start på Arduino og programmering

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Kravspecifikation For. Gruppen

JAR Øvelse nr. 2. JAR-Manual, Version 1.0. Avanceret søgning. Regionsvejledning

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Arduino kursus lektion 3:

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

Programmering i C. Lektion oktober 2008

Analoge indgange og A/D konvertering. Analoge udgange

Videregående Programmering for Diplom-E Noter

Bruger manual AGAM kontrolboks

Detter dokument er kun til intern brug og klassificeret som strengt fortroligt. Forfatteren tager forbehold for alle fejl og mangler.

Dansk Mink Papir. Teknisk brugermanual

Stregkodereferencevejledning

Programmering af trådløse modtagere (RF)

Dokumentation af programmering i Python 2.75

Programmering af CS1700-Proxlæser

Routeren. - og lag 3 switchen! Netteknik 1

JavaScript. nedarvning.

3. Computerens opbygning.

18 Multivejstræer og B-træer.

BRUGERVEJLEDNING FLTA

Egenskaber for ROM/RAM

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Seriel kommunikation RS232 / RS485

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

ARDUINO PROGRAMMERING

FireBUS PARKERINGSVENTILATION

PR 2000 Proximity-læser Art. Nr.: Installationsmanual

Drejeskive fra Märklin/Fleischmann

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

Eksempel: Skat i år 2000

Brugervejledning for Senge- og dørvagt PIR2003

Betjeningsvejledning. til. Vandudvejning. system

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

Vejledning til Tidtagningssystem til ridebanespring. Sønderborg. Knap for addering af 6 sekunder ved total nedrivning af forhindring.

Opslagsbog om computer. Af Erik Veidorf og Mike T. Krogh.

Betjeningsvejledning. System Alarmpanel xx S2s

Introduktion til programmering. Af mikroprocessor Atmel ATmega328P i en Arduino Uno

Vejledning til Tidtagningssystem til ridebanespring. Sønderborg. Manuel Signal ( Radiosignal ) knap på pult ( Stopursfunktion )

Måle og test I. Lasse Kaae 2012

Adressering af ind- og ud gange på BCxxxx IEC1131 PLC uden TC system manager

Niveauer af abstrakte maskiner

IAI Quick Start Guide

Hardware dokumentation Skrevet af. Gruppen. Version 1.0

Svane Electronic Universal timer med 2 relæer og 18 funktioner hver 1

Computerens Anatomi Af Mathias og Mark

X88MV. Manual Version 1.26

Arduino Programmering

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling.

Hvad skal du vide for at bygge din egen computer?

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

KEB Combivert Frekvensomformer F5-B version (0,37-15kW)

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Manual til PRO DK180

GPS-Link version Brugervejledning Dansk Sejlunion

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Brugervejledning for SCANNER 410SMD

Side 2 CS 9452 Brugervejledning. Afsnit Navn Side. 1 Ordforklaring (terminologi) 3. 3 Betjeningsknapper og -lamper 6

Intro til AVR. Mads Pedersen, OZ6HR

Installér din Officepakke 2013

Transkript:

Side af 3 Dato: 26-06-2003 up/ansi Eksamensspørgsmål Spørgsmål : Erklæring af variable Skal placeres i første blok kan også placeres blandt erklæringer / definitioner af funktioner, dette er dog IKKE klogt. Det er det første der bliver defineret, efter funktionen er blevet døbt. M-type Type Num <=starværdi> Variabel typer void wr_data(char); // Definere funktion skriv data bit RS at P5.0; // Definere bit Data input på port 5.0 char test_key(); // Definere funktion sender test-data til keyboard, for (bit) bit = data = Overrouler model = small char 8 bit byte = idata medium int 6 bit 2 byte = xdata float 32 bit 4 byte = unsigned int double const char xddata unsigned int struct ventil #pragma direktiver Instruktion om hvorledes den kommende kode skal være. Direktiverne er nødvendige for at kunne konfigurere programmet til at virke på forskelligt hardware. Der er følgende direktiver: model=<model> Vigtig Small ingen ekstern RAM variabler bliver kun placeret i intern RAM, kun på adresser under 0x80 (RAM område hedder også data) Hvis andet ikke er defineret er model default small. Medium variable bliver placeret i xdata ekstern RAM. Hvis pointere defineres er de på to bytes og peger ligeledes på xdata området. Specificeres der en speciel placering for en variabel, bliver den der uanset hvad model specificerer. Large Her placeres variable også i xdata området, men pointere er 3-byte størrelse. Bruges til??? #pragma xdata=<start adresse> Vigtig Fortæller hvilken adresse i det eksterne RAM-lager man starter i. (default adresse 0x0000) #pragma code=<start adresse> Vigtig Fortælle hvilken adresse programmet skal starte i (skal stå først inden nogen kode gereres) (default adresse 0x0000) #pragma parameters=<parameterbærer> Lidt vigtig Her instrueres compileren om hvordan den skal data xdata register overføre parametre til og fra funktioner. Default overføres parametre i data (lav intern RAM) #pragma link=<link liste> Lidt vigtig Bruges til at linke til en anden fil *.OBJ, således at man kan have meget store programmer.

Side 2 af 3 Dato: 26-06-2003 #pragma asm=<on off> Lidt vigtig Her kan man bestemme om man vil generer en *.ASM fil. Meget gost til fejlfinding hvis man kan læse ASM-kode. #pragma jump=<jump type> #pragma debug=<tilstand> #pragma 8 bit calc=<antal bit> #pragma artificial #pragma natural #pragma library #pragma reentrant x #pragma absolute #pragma noaregs Lidt vigtig Memory mapping Kort over anvendelsesområdet af hukommelseområde resultatet kaldes en memory-map. Kan også være en tegning. FFFF Disp. Disp. 2 Disp. 3 Disp. 4 64 K Display 0 Display 2 Display 3 0 0 Display 4 32 K 0 Kit 32 K 0 0 0 0 0000 0 A5 A4 A3 A2 PEEL Disp.4 0 0 0 0 0 0 0 32 K A 5 A 4 A 3 A 2 A A 0 A 0 0 0 x x x 2 bit 4 K

Side 3 af 3 Dato: 26-06-2003 Seriel kommunikation Den måde programmet overføres til kittet fra en PC. I vores tilfælde 9600 Baud-rate. Overfører bit-seriel. (Parallel overfører byte-seriel) Digital overførsel med (2) ledninger: TX RX ) BAUD Rate = BIT pr. sek. 2) DATABIT 7/8 3) STOP,.5, 2 4) Paritet E, O, N 8 7 6 5 4 3 2 8 7 6 5 4 3 2 P MARK Start STOP BIT Stop P SPACE START LSB BIT 8 bit 2 bit 0 bit MSB 2 0 Ny START Baudrate bit/sek 9600 (4800, 2400, 200, (600, 300)) Step bit, ½, 2 Paritet E (even) / O (odd) / N (not) Ingenting at sende = Mark tilstand -2 V.

Side 4 af 3 Dato: 26-06-2003 Spørgsmål 2: if.. else konstruktion Her siger man med if en eller anden betingelse er opfyldt så gøres det man ber om. Men hvis if betingelsen ikke er opfyldt, køres else funktionen. Hvis if eller else kun fylder én sætning kan udelades. (else delen er valgfri) If (logisk udtryk) sætning sætning else sætning sætning #include direktiver Hvis der skal hentes eksterne filer. (headerfiler *.H) Der er to former: Syntaks #include <include.fil> Syntaks 2 #include filspec. - c:\...\...\fil <> standarform #pragma #include.h #define Beskriv HW Bit RW at P5.2 Prototyper Char funktion (int,int) Globale variabler RS = H/L H = Data input L = Instruktion input Include Main (), RW = H/L H = Data read L = Data write funk funk2 funk3 Display indretning og tilslutning Display læser mens E (enable) er høj, og skriver når den går fra høj til lav. Vores måde: kig næste side. HUSK! P5.6 anvendes til at styre kittets funktion som udviklingværktøj, og må IKKE ændres (program vil gå i stå). Kan godt komme ind på CG-ROM og CG-RAM Dataoverførsel Når interfacet er 4 bit bred, data bliver kun overført via DB4 DB7. DB0 DB3 er ikke i brug. Data overført mellem HD44780 og MPU en er komplet når 4 bit data bliver overført 2 gange. Data af en højere order end 4 bit (indhold af DB4 DB7 når interfacet er 8 bit bred) er overført først og så det lavere bit (indhold af DB0 DB3 når interfacet er 8 bit bred). RS RW osv

Side 5 af 3 Dato: 26-06-2003

Side 6 af 3 Dato: 26-06-2003 Spørgsmål 3: while og do. while konstruktion while-sætningen fortæller hvilke kriterier der skal være opfyldt for at funktionen, bliver udført. while sætninger udføres så længe betingelsen er opfyldt, der bliver tjekket i starten af while sætningen. do sætningen er magen til while bortset fra her tjekkes i slutningen af do sætningen, dvs. en do while vil altid blive udført mindst én gang. Man kan også bruge while til at tjekke for fejl med en while (); så stopper programmet lige derefter. #define direktiver Her defineres forskellige tilhørsforhold f.eks. kan man skrive: #define keyboard P4, så ved compileren at når den ser ordet keyboard at det hører til port 4. #define max_char do while do while (!TI) - (logisk signal) (variabel < 27) Keyboard indretning og tilslutning Det er tilsluttet på samme porte som display. Det fungere med kontaktflader inden i keyboardet. Modstanden er mindre end et par hundrede O. Der skal være mere end 0mA for at opnå sikker kontakt. ( ma ser også ud til at være nok) Med latche osv Inputs overskydende ben føres lavt på udgangslatch Outputs overskydende ben føres højt på indgangslatch Indbygget UART Kan udføre RS232 kommunikation - 80C535 har en indbygget UART UART P3.0 ADCON P3. 0 PCON RS232 Transmit-interrupt TI = RI = Reciever Interrupt SI Seriel Interrupt SCON SBUF Det der skal sendes kommer ned i SBUF, og så går den i gang med det samme. Er den måde data bliver overført på hadstighed: 0 -> Mode, 8-bit UART, Variabel baud rate bruger ikke paritets-bit 0 -> Mode 2, 9-bit UART, Fast baud rate -> Mode 3, 9-bit UART, Variabel baud rate

Side 7 af 3 Dato: 26-06-2003 Spørgsmål 4: switch, case, default, break konstruktion Kan bruges til f.eks. at lave de danske karakterer med, man kører nogle sammenligninger (cases) og det fortsætter den med selvom den har fundet én, ønskes dette ikke, sætter man en break ind efter hver case, Så kan man også få den til at skrive f.eks. en fejlkode ud: switch (karakter) case 'æ': karakter = 0X0; // Hvis karakteren er æ skriv HEX 0X0. break; // Hvis æ hop til slut(). case 'ø': karakter = 0X02; // Hvis karakteren er ø skriv HEX 0X02. break; // Hvis ø hop til slut(). case 'å': karakter = 0X03; // Hvis karakteren er å skriv HEX 0X03. break; // Hvis å hop til slut(). case 'Æ': karakter = 0X04; // Hvis karakteren er Æ skriv HEX 0X04. break; // Hvis Æ hop til slut(). case 'Ø': karakter = 0X05; // Hvis karakteren er Ø skriv HEX 0X05. break; // Hvis Ø hop til slut(). case 'Å': karakter = 0X06; // Hvis karakteren er Å skriv HEX 0X06. break; // Hvis Å hop til slut(). default: ; // Hvis karakteren ikke står ovenfor karakter = // karakter. //--------------------------------- Danske karakterer ----------------------------------------- void lcd_dkch(void) // Lær danske karakterer char ch; // char variabel som tæller afsendte pixels const char dk_ch[]= 0x00, 0x0A, 0x00, 0x04, 0x04, 0x, 0x0E, 0x00, // Hex koder for "smiley" 0x00, 0x00, 0x0E, 0x5, 0x5, 0x2, 0x0D, 0x00, // Hex koder for "æ" 0x00, 0x00, 0x0E, 0x3, 0x5, 0x9, 0x0E, 0x00, // Hex koder for "ø" 0x04, 0x0A, 0x0E, 0x0, 0x0F, 0x, 0x0F, 0x00, // Hex koder for "å" 0x07, 0x0C, 0x4, 0xF, 0x4, 0x4, 0x7, 0x00, // Hex koder for "Æ" 0x0E, 0x, 0x3, 0x5, 0x9, 0x, 0x0E, 0x00, // Hex koder for "Ø" 0x04, 0x0A, 0x5, 0x, 0xF, 0x, 0x, 0x00, // Hex koder for "Å" 0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00 // Hex koder for "gradtegn" ; // definitionen af :-) æ ø å Æ Ø Å "gradtegn". delay(); wr_ins(0x40); // adresse sættes til start af CG-Ram. delay(400); // vent til færdig. ch = 0; while(ch<=63) // karakter sendes. wr_data(dk_ch[ch]); // Skriver danske karakterer ch++; busy_read(); // pause efter sidste lcd_data. wr_ins(0x80); // curser til første plads. delay(400);

Side 8 af 3 Dato: 26-06-2003 return Bruges til at returnerer en værdi fra et sted til et andet, f.eks. hvis main afsluttes med en return, vil udtrykket blive sendt til styresystemet (som så må reagere på værdien). hvis der er et hvilket der jo ikke har været i vores projekt, med kittet. Deen returnerer oplysninger fra en funktion til det sted hvorfra den kaldes. Hvis en funktion afsluttes unde Return medfører den afsluttende at der underforstået er et Return. char funktion (char) ---- ---- main nyt_tal = funktion (27): char funktion (char data) data = data + ; return data; Den minimale processor Til venstre de dele der er på processoren til højre de ting der både kan være placeret internt og ekstert. ALU'en - De fleste vil kalde ALU en for den centrale del af processoren. Det er kun i denne der kan foretages beregninger, ofte kun meget simple som at lægge sammen, trække fra, sammenligne tal meget simpelt (og meget, meget hurtigt). Resultatet af den seneste operation ender normalt i A, som kaldes Akkumulator.

Side 9 af 3 Dato: 26-06-2003 Instruktionsdekoderen - Imidlertid er den virkelige centrale komponent snarere INSTRUKTIONS DEKODEREN. Denne er ansvarlig for at fortolke hver ny instruktion og sørge for, at de rigtige processor sker mellem de forskellige enheder på chippen. Instruktionsdekoderen kaldes også Timing & Control Block. ROM-en - ROM betyder Read Only Memory, altså en hukommelseskreds hvor det kun er muligt at læse. Her findes programmet, der indeholder informationer til processoren om hvad der skal udføres. De ROM kredse vi bruger i kittet er sletbare og reprogrammerbare - PROM hvor P'et står for programmerbar. Sletningen sker ved at belyse hukommelsens chip med ultraviolet lys i en særlig slettemaskine. Sletningen tager 5 til 20 minutter. Programmeringen sker i en PROM-brænder og tager kun få sekunder. RAM-en - RAM betyder Random Acces Memory, altså en hukommelseskreds hvor man kan få adgang til enhver hukommelsescelle og både aflæse hvad der står og eventuelt skrive noget nyt. I denne type kredse kan vi gemme data som forandrer sig under programmets afvikling, altså data værdier. Bemærk at pilen peger begge veje, både ind og ud. Data Bussen - Den transporterer data rundt mellem de forskellige enheder til og fra omverdenen. Den består af et antal parallelle ledninger, hyppigt 8 (altså lige en byte). Som det ses har denne databus forbindelse til både programlager og datalager, og muliggør f. eks. også at resultatet af en operation i ALU'en kan anvendes som input værdi til den næstfølgende instruktion, eller føres stort set hvorhen det skal være. Adresse bussen. - Når en instruktion hentes i programlageret går den altså først ind i Instruktions Dekoderen. Denne finder ud af hvad det er der skal ske, og sørger derpå for at åbne og lukke alle de forskellige "døre" så den ønskede funktion udføres. Når udførelsen er løbet til ende skal den næste instruktion hentes, men hvor??. Vi mangler noget der holder rede på hvor i programmet vi er kommet til. Hertil anvendes PC-registeret. Loop-strukturer Det der gør en processor til så stærkt et værktøj er følgende tre grundforhold:.dens funktion styres af et program som hurtigt kan ændres 2.Den kan behandle meget store datamængder på kort tid 3.En bestemt programstump kan (gen)anvendes fra mange steder i et hoved program. Punkt og 2 er belyst, men punkt 3 fordrer stadig en forklaring. Hvis vi forestiller os, at vi har lavet en lille programstump som ændrer en talværdi til den tilsvarende ASCII-værdi så ville de jo være håbløst tosset at skulle gentage konverteringskoden hver gang der i hovedprogrammet var behov for en konvertering. I stedet er processoren forsynet med nogle bestemte instruktioner der tilsammen udgør et CALL and RETURN system. Det betyder at man kan "kalde" på et underprogram og vende tilbage når underprogrammet er slut. Når det sker (med en særlig instruktion som oftest hedder CALL <adr>) gemmes den nuværende adresse (den der står i PC) på "stakken", som udpeges af indholdet i SP. Dernæst sættes adressen på konverteringsrutinen ind i SP. Nettovirkningen heraf må jo være at programmet hopper til konverteringsrutinen og starter på at udføre den, selv om den findes et helt andet sted. Konverteringsrutinen slutter med instruktionen RETur. Denne instruktion betyder at processoren henter den gamle adresse på stakken og sætter den ind i PC igen. Og VUPTI vi er tilbage hvor vi kom fra, men har i mellemtiden fået udført en subrutine. Takket være indførelsen af en Stack Pointer er det altså muligt at opbygge et program, som består af en mængde standardiserede subrutiner, som kaldes i takt med at der er behov for dem.

Side 0 af 3 Dato: 26-06-2003 PC, SP, ALU, RAM, ROM PC = Program Counter, den holder øje med hvor i programmet vi er kommet til. Når forsyning har været slået fra ( eller en RESET) står der 0000 H. Dvs. første instruktion skal ligge på laveste adr. i PROM en, så ligges til den eksisterende værdi i PC, så værdien nu er 0000 H, så peges der på næste instruktion. SP = Stack Pointer, lagrer de forskellige subrutiner, som så kaldes efterhånden som der er brug dem. ALU = Her foretages beregninger meget hurtigt, dog kun simple ligge til og trække fra og sammenligninger. Resultat ender som regel i A Akkumulator. RAM = Random Acces Memory, her ind- og udlæses programmer. ROM = Read Only Memory, her kan kun udlæses, den indeholder informationer til processoren om hvad der skal udføres. Dem vi har brugt til kittet kan slettes og programmeres om PROM (programmerbar). Sletning sker ved belysning med ultraviolet lys 5 20 min., programmering i en PROM-brænder få sekunder.

Side af 3 Dato: 26-06-2003 Spørgsmål 5: for ( ; ; ) sætning Bruges til at lave beregninger, for eksempel til at lave en slags tæller, vi brugte den til at lave vores delayfunktion og sletskærm-funktion: char delay(char tid) // Funktion Delay unsigned int taller; // Tildeler variablen taller værdien af en unsigned // int for (taller=0; taller <tid; taller++); // Længde på pause void clr_scr (void) char space; for (space=0;space<40;space++) wr_ins (0X80+space); delay (000); wr_data (' '); for (space=0;space<40;space++) wr_ins (0XC0+space); delay (000); wr_data (' '); wr_ins (0X80); //Sletning af display og curser til start af skærm. // Tildeler variablen space værdien af en char. operatorer Operatorer er parenteser, +, -, *, /, nogle er meget lidt og ikke vigtige, kan ses i tabellen. De står i et operatorhierarki dvs. hvis der står to operatorer i samme udtryk vil den der står øverst i den. hierarkeriske orden udføres først. Man kan dog bryde denne orden med alm. parenteser som kendes fra alm. matematik, boolesk algebra osv. definition af array char noget [27] (der oprettes en char med plads til 27 tegn) char i i = noget [9] char noget [27] = 9,4, A,27 9 4 65 27 27 RAM

Side 2 af 3 Dato: 26-06-2003 Portenes indretning Alle porte er IKKE ens, men dem vi bruger mest, har nogle fælles træk. Der er en FET-transistor (Field Effect Transsistor -bruges normalt til svagt signals forstærkning) som enten kan være åben ledende, eller spærret ikke ledende. Det er styrresignalet der bestemmer om den skal være åben eller spærret. P5.0 = eller P5.0 = 0 * P0 Adr/Data (alternering) (+) P * P2 Høje Adr. (+) P3 P4 P5 * P6 AD Conv/kun input Høj Lav P2 Latch FET-Transistorem i udgangen kan kun være enten åben eller lukket, ledende eller ikke ledende. Hvilken tilstand den er i bestemmes af styresignalet, som bestemmes af instruktionerne i vort program. Port 2 sender (næsten) altid den høje del af den øjeblikkelige adresse-bus. Dens pull-up arrangement er anderledes og den er næsten lige god til at source (Fig. 2) og til at sinke (Fig. 3) strøm. Det har ikke megen betydning da porten (næsten) kun bruges som adresse-bus, og vi derfor ikke kan anvende den. Port 6 er beregnet til analoge inputs, men kan også bruges som digital input-port. Den kan derimod ikke anvendes som output port og har derfor hverken en pull-up modtand eller en udgangs transistor. At bruge lysdioder: Når man betænker hvor forskelligt portene virker afhængigt af hvilken retning strømmen har, er der ikke meget grund til at overveje hvilken vej en lysdiode skal vende for at få den til at lyse ordentligt. Anvendelse af CG ROM Character Generator ROM her ligger 92 karakterer. Kaldes ved deres hex-værdi, eller E. 0X45 FF ROM Japnske tegn 32 byte mangler 00 ASCII

Side 3 af 3 Dato: 26-06-2003 Spørgsmål 6: Funktionsopbygning Funktionsopbygning. Giv funktionen et navn. Fortæl hvad den modtager og afsender af variabler. "Hvad funktionen returnerer" navn Hvad funktionen modtager 2. Start med "" 3. Hvis der skal bruges variabler i programmet skal de defineres her 4. Her skrives hvad funktionen skal (if, do) 5. Her skrives betingelsen for hvornår funktionen skal udføres 6. Funktionen afsluttes med "" funktions prototyper Det er dem der er defineret i starten af programmet: void wr_ins(char); // Definere funktion skriv instruktion Void returnere wr_ins (char modtager) preprocessoren Preprocesser er nogle specielle ordre, som der også kaldes direktiver der køres i softwaren inden der compileres. Direktiverne fortæller hvordan compileren skal oversætte det programmerede til maskinkode. AD converteren Man kan køre et analogt signal ind på P6. DAPR 3 bagerste Mx0 AD CON bit Mx 8 => P6.X Resultat af Mx2 AD konvertering AD DAT resultat Void navn char ---- ---- ---- ---- Hvis dette tal giver 4 måles der på P6.4 bsy-ben høj ved start, lav ved slut Resultat i AD DAT Anvendelse af CG RAM Character Generator RAM - Her kan programmerers egne karakterer i. FF RAM C0 40 karakt. 40 karakt. 80 7F RAM bruger 40 defineret kakart. 00