用c语言的话中断程序是单独写在中断服务函数中的,51单片机的中断服务函数的定义:
void functionname(void) interrupt num //functionname是自己定义的函数名字,num对应实际的中断向量号
进入中断要执行中断子程序,不同的中断源要进入不同的中断子程序。对于51的C编程,可以用中断标号,如‘interrupt 0 ’来使中断进入不同的中断。
中断标号与它们的中断优先级一致,即
外部中断0 interrupt 0
定时器中断0 interrupt 1
外部中断1 interrupt 2
定时器中断1 interrupt 3
串行中断 interrupt 4
//----------------------------------------------------------------------------- // Interrupt Priorities //-----------------------------------------------------------------------------
#define INTERRUPT_INT0 0 // External Interrupt 0 #define INTERRUPT_TIMER0 1 // Timer0 Overflow #define INTERRUPT_INT1 2 // External Interrupt 1 #define INTERRUPT_TIMER1 3 // Timer1 Overflow #define INTERRUPT_UART0 4 // Serial Port 0 #define INTERRUPT_TIMER2 5 // Timer2 Overflow #define INTERRUPT_SPI0 6 // Serial Peripheral Interface 0 #define INTERRUPT_SMBUS0 7 // SMBus0 Interface #define INTERRUPT_USB0 8 // USB Interface #define INTERRUPT_ADC0_WINDOW 9 // ADC0 Window Comparison #define INTERRUPT_ADC0_EOC 10 // ADC0 End Of Conversion #define INTERRUPT_PCA0 11 // PCA0 Peripheral #define INTERRUPT_COMPARATOR0 12 // Comparator0 #define INTERRUPT_COMPARATOR1 13 // Comparator1 #define INTERRUPT_TIMER3 14 // Timer3 Overflow #define INTERRUPT_VBUS_LEVEL 15 // VBUS level-triggered interrupt #define INTERRUPT_UART1 16 // Serial Port 1
实例:
问题:
外部中断0 外部中断1对应的是一个中断程序吗?
如果是对应一个中断程序,那2个外部中断 能对应2种动作吗?(正用中断做了电子表按键选择,按键加是用的查询法,想把这个键也用中断 跳变触发。)
如果不是,请举一下例子好吗,只说一下中断程序的程序名也好。
回答:
void in0 (void) interrupt 0
{
...
}
void in1 (void) interrupt 2
{
...
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』