ARM Technical Support Knowledge Articles

USING THE OS_ENABLE_ISR FUNCTION

Applies to: RTX51 Real-time Kernel

Answer


Information in this article applies to:


QUESTION

How do I create an interrupt service routine in RTX51?

ANSWER

Using interrupt service routines in RTX51 is pretty straight-forward.

  1. Create the interrupt service routine as you would in a standard Keil C51 program. This is the int0 function in the following example.
  2. Create some code that enables the interrupt source. The statements EX0 = 1; and IT0 = 1; in the startup task do this.
  3. Call the os_enable_isr function and pass the interrupt number. This is also done in the startup task.

For example:

#include <rtx51.h>
#include <reg51.h>
#include <stdio.h>

#define STARTUP_TASK 0

//-----------------------------------------------
//-----------------------------------------------
void int0 (void) interrupt 0
{
static unsigned int i;

i++;
}

//-----------------------------------------------
//-----------------------------------------------
void task0 (void) _task_ STARTUP_TASK
{
os_set_slice (1000);        /* Set for OSC Frequency / 10,000 */

EX0 = 1;                    /* Enable External Int 0 */
IT0 = 1;                    /* Edge-triggered */

os_enable_isr (0);          /* Enable interrupt #0 */


while (1)
  {
  os_wait (K_TMO, 100, NULL);
  }
}
//-----------------------------------------------
//-----------------------------------------------
void main (void)
{
os_start_system (STARTUP_TASK);
}

MORE INFORMATION

You may download this complete RTX51 example for uVision from the Keil website.

Article last edited on: 2005-09-22 12:53:31

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential