zengwen 发表于 2006-4-10 12:02:45

如何在ICC AVR中设置同一中断源的不同中断函数

如何在ICC AVR中设置同一中断源的不同中断服务函数,例如定时器,一个中断服务函数是计数值加1,另一个中断服务函数是IO输出反转,如何设置和调用?汇编语言中可以设置中断服务程序的入口地址,C语言该怎么编写呢?

machao 发表于 2006-4-10 23:57:10

给出下面采用CVAVR编写的T0中断服务程序。不同C的平台,中断服务的定义有区别。



bit T0_int_mode



// Timer 0 overflow interrupt service routine

interrupt void timer0_ovf_isr(void)

{

    if (T0_int_mode)

    {

      ...... //计数加1

   }

   else

   {

         ...... // I/O输出反转

   }



   T0_int_mode = ~T0_int_mode;

}



上面的中断服务,一次执行“计数加1”,下一次执行“I/O输出反转”,交替。

T0_int_mode为全局变量,用于控制中断处理的内容,可以在其它的程序中根据实际需要设置。

zengwen 发表于 2006-4-13 14:52:15

除了设置中断标志变量外,还有没有其他方法?
页: [1]
查看完整版本: 如何在ICC AVR中设置同一中断源的不同中断函数