|
- #include
- int a=1,b=2;
- int c=100,d=200;
- int Temp;
- void Swap(int *x,int *y )
- {
- Temp= *x;
- *x=*y;
- *y=Temp;
- }
- void main( void )
- {
- WDTCTL= WDTPW +WDTHOLD;
- P2OUT=0;
- P2DIR|=BIT0; // P2.0指示灯
- BTCTL = BT_ADLY_500; // 中断周期500ms
- IE2 |= BTIE; // 允许BasicTimer中断
- _EINT(); // 允许总中断
- while(1)
- {
- Swap(&a,&b); // 交换a b
- if((a+b)!=3) // 理论上交换a b后,和不变,等于3
- {
- P2OUT|=BIT0; // 如果出错,才会执行到这一句(亮灯)
- }
- }
- }
- #pragma vector = BASICTIMER_VECTOR // BasicTimer定时器中断(1/2秒)
- __interrupt void BT_ISR(void) //
- {
- Swap(&c,&d); // 中断内交换 c,d的值
- }
[color=rgb(51, 102, 153) !important]复制代码
重入测试:
- int Fibonacci(int n)
- {
- if (n<3) return(1);
- else return (Fibonacci(n-1)+Fibonacci(n-2));
- }
- void main( void )
- { int a;
- a=Fibonacci(8);
- a++;
- }
|
|