Maskinnära programmering 6B2266
Maskinnära programmering 6B2266
Maskinnära programmering 6B2266
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