Mikrodatorteknik Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3 7,5 högskolepoäng Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00 Hjälpmedel: Totalt antal poäng på tentamen: För att få respektive betyg krävs: 20p 3:a 30p: 4:a 40p: 5:a 50p Allmänna anvisningar: Skriv läsligt med blyertspenna. Uppgifterna är inte arrangerade i svårighetsgrad. Läs igenom alla uppgifter innan du börjar lösa dem. Rättningstiden är som längst tre veckor Viktigt! Glöm inte att skriva namn på alla blad du lämnar in. Lycka till! Ansvarig lärare: Pontus Liljerup Telefonnummer: 0705 726570
Tentamen i Mikrodatorteknik I OBS! Om det inte står explicit i uppgiften att du skall skriva ett komplett program, kan du använda godtyckliga variabelnamn direkt i koden! 1) Besvara följande frågor. (1 p per uppgift) a) Vad är fördelen med avbrottsstyrda tangentbord istället för pollade? b) Ange operationskoden för instruktionen sublw b 00010001. c) Beskriv skillnaden mellan enchipsdator- och mikroprocessorsystem. d) Varför är det viktigt att alltid avsluta en subrutin med return och inte goto? e) PIC16F884 tillåter endast åtta nästlade subrutiner, varför? f) Du vill generera avbrott var 10 ms, beräkna lämplig klockfrekvens Fosc. 2) Besvara följande frågor. (1 p per uppgift) a) Varför krävs ibland transistordrivsteg för inkoppling av lysdiod? b) När kan det vara bra att använda indirekt adressering? c) Vad skiljer dynamiska RAM minne från statiska? d) Nämn två tillämpningar för PWM- modulering. e) Beskriv två typer at kommunikation som används internt på kretskort? 3) Konstruera ett komplett program som tänder varannan lysdiod på PORTB samt blinkar med en lysdiod ansluten till RA0, med frekvensen 1 khz ( <1 % felfrekvens godtas). 1 MHz klocka. a) Skriv MAIN- rutinen. Subrutinen Delay1kHz finns tillgänglig. (4p) b) Skriv subrutinen Delay1kHz. Redogör för dina beräkningar. (4p) 4) Skriv en subrutin ADCINIT som initierar mikrokontollerns interna AD omvandlare för sampling av kanal 0 och kanal 3. Övriga kanaler skall vara digitala. Intern referens skall användas. (3p) 5) Ponera att du med en PIC16F870 och port RB0 skall styra en 230 V växelströmsmotor av/på. Rita upp hur du skulle lösa detta hårdvarumässigt. Inga beräkningar behövs. (3p)
6) Du skall med hjälp av tre trycknappar styra ett enkelt menysystem. Alla tryckknapparna skall vara avbrottsstyrda, det kommer således att krävas någon form av enkel logik utanför processorn. a) Rita ett kopplingsschema över designen (glöm ej avstudsning). (4p) b) Skriv avbrottsrutinen som avkodar knapparna och exekverar subrutinerna BUTT1, BUTT2 och BUTT3 beroende på knapptryckning. (4p) c) Varför är det viktigt att spara undan W-registret och statusregister vid subrutin anrop? (3p) 7) Ett 24-bitars tal ligger skarvat i tre 8-bitars RAM-adresser (HIGHBYTE, LOWBYTE och DECIMAL) i följande format: 23 8 7 0 HIGHBYTE LOWBYTE DECIMAL Alltså talet: 4361, 85 lagras som: 23 8 7 0 0001 0001 0000 1001 01010101 Din uppgift är skriva en subrutin LCDWRITE som skriver ut ett tal lagrat i ovanstående format på en display liknande den du tidigare använt i laborationerna, jmf LCDUT som du skrivit som laboration tidigare. Även decimalkommat skall finnas med i utskriften. Samtliga drivrutiner som tidigare använts till displayen får användas, dvs. LCDINI, LCDHOME, LCDR2, LCDTKN, BINBCD etc. (6p)
8) LM35 är en precisionstemperatursensor vars utspänning är proportionell mot celsiusskalan. Följande samband gäller för givaren: u (t) = 0,010* t ( C). En givare av denna modell fungerar som en del i ett reglersystem där vatten skall vid en konstant temperatur. Utsignalen från regleralgoritmen är styrsignalen till en värmespiral som sänkts ned i behållaren. Värmespiralen styrs av/på mha av en port på en PIC16F870/872. Regleringen skall ske på så vis att när temperaturen överskrider 70 grader skall värmeelementet stängas av och när temperaturen underskrider 70 grader skall elementet startas. MCU som används ovan är jämförbar med 16F884 m.a.p instruktionsuppsättning och hårdvara. a) Skriv en subrutin COMPARE som tar till vara på AD omvandlarens värde samt utför ovanstående uppgift. Antag att det digitala mätvärdet ligger i TEMP, du behöver således ej tänka på själva AD omvandlaren utan endas ta vara på färdigomvandlat data. Vidare kan du även anta att resultatet är vänsterjusterat och endast de åtta MSB bitarna är intressanta, därav endast en byte TEMP. (7p) Hint1: C-flaggan ett-ställs då en operation blev större eller lika med noll. Hint 2: Obervera att talet är vänsterjusterat och att de 2 LSB är bortskalade=> 8 bitars omvandlare! b) För att ovanstående system skall hoppa igång och fungera på erforderligt sätt, krävs två funktionsmässigt viktiga kompletteringar av schemat. Förutsätt att alla spänningar finns tillgängliga och att även PIC:en är spänningssatt. (3p) OBS! Glöm ej att bifoga denna sida när du lämnar in!!!