单片机中断函数的编写
2013-12-11 11:29
225 查看
interrupt m修饰符
C51中断函数必须通过该修饰符进行修饰。在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。
在该修饰符中,m的取值为0~31,对应的中断情况如下:
0——外部中断0
1——定时/计数器T0
2——外部中断1
3——定时/计数器T1
4——串行口中断
5——定时/计数器T2
其它值预留。
C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。
【例】编写一个用于统计外中断0的中断次数的中断服务程序
using n修饰符
修饰符using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。该修饰符可以省略,省略后系统自动选择
中断函数注意如下:
(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。
C51中断函数必须通过该修饰符进行修饰。在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。
在该修饰符中,m的取值为0~31,对应的中断情况如下:
0——外部中断0
1——定时/计数器T0
2——外部中断1
3——定时/计数器T1
4——串行口中断
5——定时/计数器T2
其它值预留。
C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。
【例】编写一个用于统计外中断0的中断次数的中断服务程序
1 int x=0; void int0() interrupt 0 using 1 { x++; }
using n修饰符
修饰符using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。该修饰符可以省略,省略后系统自动选择
中断函数注意如下:
(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。
相关文章推荐
- STM32单片机串口的深思--主要是接收中断函数的编写
- 单片机_C语言函数_中断函数(中断服务程序)
- 用C51编写单片机延时函数
- STM32F103ZE单片机在WWDG窗口看门狗的EWI中断中喂狗导致系统复位的原因及解决办法(中断函数重入问题)
- 使用51内核单片机检测开关状态中断函数的问题
- c语言编写51单片机中断程序,执行过程是怎样的?
- C51内核单片机中用printf()函数进行打印时候,中断的问题
- 用C51编写单片机延时函数(转贴)
- 用C51编写单片机延时函数(转贴)
- UART0串口编程(三):中断方式的串口编程;用中断编写发送函数
- 单片机入门学习九 STM32单片机学习六 延时函数、端口复用和重映射、中断
- 单片机在中断函数里定时器是否还计数问题
- UCOS中断函数的编写
- 用C51编写单片机延时函数
- 中断服务函数的编写要求
- 51中断函数编写注意事项
- 嵌入式中断服务函数的编写要求
- 单片机_C语言函数_中断函数(中断服务程序)
- 系统时钟总结和带中断函数的程序的编写步骤
- 单片机C语言函数之中断函数(中断服务程序)