📄 isr.lst
字号:
C51 COMPILER V8.08 ISR 01/15/2008 19:31:23 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN .\out-file\isr.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE isr.c OPTIMIZE(9,SIZE) BROWSE DEFINE(MAKE_WITH_FREE_LIB,SYSI,USE_INTERRUPTS
-) DEBUG OBJECTEXTEND PRINT(.\list-file\isr.lst) TABS(2) OBJECT(.\out-file\isr.obj)
line level source
1 /************************************************************
2 Copyright (C) 1995-2002 Pumpkin, Inc. and its
3 Licensor(s). Freely distributable.
4
5 $Source: C:\\RCS\\d\\salvo\\tut\\tu1\\isr.c,v $
6 $Author: aek $
7 $Revision: 3.22 $
8 $Date: 2003-07-28 18:41:36-07 $
9
10 Source for tutorial programs. Contains the interrupt service
11 routine and other interrupt-associated code for all of
12 the tutorials. Organized by compiler and target (SYS*).
13
14 ************************************************************/
15
16 #include "isr.h"
17 #include <salvo.h>
18
19
20 #if defined(USE_INTERRUPTS)
21
22 #if defined(SYSA) || defined(SYSH) || defined(SYSF) \
23 || defined(SYSP)
#if defined(SYSA) || defined(SYSH) || defined(SYSF)
void interrupt IntVector( void )
#elif defined(SYSP)
#pragma vector=0x08
__interrupt void IntVector( void )
#endif
{
if ( T0IE && T0IF ) {
T0IF = 0;
TMR0 -= TMR0_RELOAD;
OSTimer();
}
}
#elif defined(SYSE)
#pragma interrupt ISRHigh save=PROD,section(".tmpdata")
void ISRHigh( void )
{
if ( INTCONbits.TMR0IE && INTCONbits.TMR0IF ) {
INTCONbits.TMR0IF = 0;
TMR0 -= TMR0_RELOAD;
C51 COMPILER V8.08 ISR 01/15/2008 19:31:23 PAGE 2
OSTimer();
}
}
#pragma code IntVectorHigh = 0x08
void IntVectorHigh( void )
{
_asm
goto ISRHigh
_endasm
}
#elif defined(SYSI)
70
71 /* Reload values for Timer0 - 5msec interrupts for Oscillator at 11.0592 MHz */
72 /* This code courtesy Michael Stepanov. */
73 //#define TIMER_H 238 /* TH0 reload value */
74 //#define TIMER_L 0 /* TL0 reload value */
75
76
77 #define TIMER_H 0x10 /* TH0 reload value */
78 #define TIMER_L 0xBE /* TL0 reload value */
79
80
81 void timer0 (void) interrupt 1 //using 2
82 {
83 1 /* stop, reload and start timer. */
84 1 TR0 = 0;
85 1
86 1 TL0 = TIMER_L;
87 1
88 1 TH0 = TIMER_H;
89 1
90 1 TR0 = 1;
91 1
92 1 OSTimer();
93 1 }
94
95
96 #elif defined(SYSL)
ROM_VECTOR(NMI, IntVector);
ROM_VECTOR(INT1, IntVector);
ROM_VECTOR(INT2, IntVector);
ROM_VECTOR(INT3, IntVector);
ROM_VECTOR(INT4, IntVector);
ROM_VECTOR(INT5, IntVector);
ROM_VECTOR(INT6, IntVector);
ROM_VECTOR(INT7, IntVector);
#pragma interrupt_level 1
void fast interrupt IntVector( void )
{
OSTimer();
}
#elif defined(SYSM)
C51 COMPILER V8.08 ISR 01/15/2008 19:31:23 PAGE 3
ROM_VECTOR(0x0B, timer0);
interrupt void timer0 ( void)
{
OSTimer();
}
#elif defined(SYSQ) || defined(SYSR) || defined(SYSS) || defined (SYSX) /* MSP430 */
#if defined(SYSQ)
#if (__VER__ < 200)
interrupt[TIMERA0_VECTOR] void Timer_A (void)
#else
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
#endif
#elif defined(SYSR)
interrupt[TIMERA0_VECTOR] void Timer_A (void)
#elif defined(SYSS)
#pragma interrupt_handler Timer_A:TIMERA0_VECTOR
void Timer_A (void)
#elif defined(SYSX)
void Timer_A (void) __interrupt[TIMERA0_VECTOR]
#endif
{
CCR0 += 10000;
OSTimer();
}
#elif defined(SYST) /* M68HC11 */
#pragma interrupt_handler intVector
void intVector ( void )
{
/* clear RTIF */
TFLG2 |= 0b01000000;
OSTimer();
}
#pragma abs_address:0x00EB /* RTI BUFFALO 3.4 EVB11 */
asm(" jmp _intVector");
#pragma end_abs_address
#elif defined(SYSU) /* Z8 Encore */
#pragma interrupt
void IntVector(void)
{
OSTimer();
}
#elif defined(SYSV) /* AVR */
C51 COMPILER V8.08 ISR 01/15/2008 19:31:23 PAGE 4
#pragma interrupt_handler IntVector:iv_TIMER1_CAPT IntVector:iv_TIMER1_COMPA
void IntVector(void)
{
OSTimer();
}
#elif defined(SYSW) /* TMS320C28x */
/* vectors are defined in vectors.asm */
interrupt void ISR14(void) /* Timer 2 is in INTVECT #14 */
{
OSTimer();
}
#elif defined(SYSY) /* AVR */
#include <avr/signal.h>
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
OSTimer();
}
#elif defined(SYSAA) /* TMS320C240x */
/* vectors are defined in vectors.asm */
#define HEARTBEAT_LED_PRESCALAR 50
unsigned char prescalar = HEARTBEAT_LED_PRESCALAR;
interrupt void ISR3(void) /* Timer 2 is in INT3 */
{
/* clear T2PINT flag -- required for this type of interrupt.*/
*EVAIFRB = *EVAIFRB & 0x0001;
/* System tick period is 10ms @ 30MHz. Toggle the IOPC0 pin */
/* every 250ms via a divide-by-50 prescalar. */
if (--prescalar == 0)
{
prescalar = HEARTBEAT_LED_PRESCALAR;
/* XOR the IOPC0 bit to toggle the pin */
*PCDATDIR = *PCDATDIR ^ 0x0001;
}
/* a system tick occured, so call OSTimer(). */
OSTimer();
}
#else /* SYS* not defined */
#error Undefined Salvo test system (SYS*). Definition required.
#endif
236
237 #endif
238
C51 COMPILER V8.08 ISR 01/15/2008 19:31:23 PAGE 5
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 69 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -