×
单片机 > 单片机程序设计 > 详情

51的中断程序用C怎么写

发布时间:2020-08-31 发布时间:
|

用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

{

...

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2