Har funderat på hur det blir när det kommer flera interrupt samtidigt.
Ofta kan man hitta exempel så här:
Kod: Markera allt
static void interrupt ISR(void)
{
if (TMR0IE && TMR0IF) // Interrupt från Timer0
  {
  TMR0IF = 0;         // Återställ flagga för Timer0
  // gör nåt här
  }
else
if (INTE && INTF)     // Interrupt från INT-pin
  {
  INTF = 0; 
  // gör nåt här
  }
else
if (RCIE && RCIF)     // Seriellt tecken kommit in
  { // RCIF           // Denna bit nollställs genom att läsa RCREG
  // gör nåt här
  }
}
Det går också att hitta exempel med fristående if-satser så här:
Kod: Markera allt
static void interrupt ISR(void)
{
if (TMR0IE && TMR0IF) // Interrupt från Timer0
  {
  TMR0IF = 0;         // Återställ flagga för Timer0
  // gör nåt här
  }
if (INTE && INTF)     // Interrupt från INT-pin
  {
  INTF = 0; 
  // gör nåt här
  }
if (RCIE && RCIF)     // Seriellt tecken kommit in
  { // RCIF           // Denna bit nollställs genom att läsa RCREG
  // gör nåt här
  }
}
Då borde man kunna ha en slinga som söker av alla aktuella interrupt-flaggor och utför dem, i samma interrupt-anrop. Så här:
Kod: Markera allt
static void interrupt ISR(void)
{
boolean IFfixad = false;
do
  {
  if (TMR0IE && TMR0IF) // Interrupt från Timer0
    {
    TMR0IF = 0;         // Återställ flagga för Timer0
    // gör nåt här
    IFfixad = true;
    }
  if (INTE && INTF)     // Interrupt från INT-pin
    {
    INTF = 0; 
    // gör nåt här
    IFfixad = true;
    }
  if (RCIE && RCIF)     // Seriellt tecken kommit in
    { // RCIF           // Denna bit nollställs genom att läsa RCREG
    // gör nåt här
    IFfixad = true;
    }
  }
while (IFfixad );
}
Vad sägs ? För och nackdelar ?
 
				


 PIC16Fxxxx alltså. När jag googlar den får jag bara exempel likt ditt, låter som en primitiv processor. T.ex.
  PIC16Fxxxx alltså. När jag googlar den får jag bara exempel likt ditt, låter som en primitiv processor. T.ex. 

