21.12.2013 Views

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Det är därför viktigt att interruptrutinen börjar med att lagra undan innehållet W-<br />

registret mfl. på säker plats innan rutinen utför något som kan påverka dessa. Det sker<br />

här genom att man includerat filen #include "int16Cxx.h" och skrivit<br />

int_save_registers.<br />

Denna textsträng är ett uttryck som C:s preprocessor "byter ut" mot några, för<br />

processortypen, lämpliga instruktioner. Det är därför viktigt att man anger<br />

processortypen med #include "16F874.h" (#include "16F628.h")<br />

i början av programmet.<br />

Genom att avsluta interruptrutinen med textsträngen<br />

int_restore_registers<br />

så läggs de ursprungliga registerinnehållen tillbaka innan återhoppet till<br />

huvudprogrammet sker.<br />

Väl tillbaka i huvudprogrammet blir interrupt åter enablat.<br />

Interrupt flag bits<br />

Registren INTCON, PIR1 och PIR2 innehåller olika interruptflagbits. Bitarna heter<br />

som källan, men med tillägg av bokstaven F på slutet. Om en interruptflagbit är "1",<br />

så innebär det att motsvarande händelse har inträffat.<br />

Det är lämpligt att börja interruptrutinen med att undersöka vilken händelse det är<br />

som utlöst interruptet, för att sedan styra programflödet till rätt åtgärd. Observera att<br />

man måste 0-ställa aktuell interruptflagbit innan man lämnar interruptrutinen.<br />

Annars kommer man direkt tillbaka till interruptrutinen! ( dvs. programmet låser sig ).<br />

Även när man inte använder interrupt, när interruptet är disablat, kan programmet<br />

ändå avkänna dessa bitar, dvs "polla" bitarna.<br />

Bild på ett "klaffskåp med blänkare", en elektromekanisk signalanordning som förekom i början av<br />

1900 talet i paradvåningar. Från trycknappar i de olika rummen kunde man kalla på<br />

serveringspersonalen eller hembiträdet. Ringklockan i klaffskåpet ringde och motsvarande "blänkare"<br />

för respektive rum föll ned. När uppdraget utförts tryckte betjäningen på knappen under "blänkaren"<br />

så att den återställdes. - Är det månne härifrån Microchip fått idén till sitt interrupt?<br />

14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!