当前位置:首页 > 单片机 > 单片机
[导读]中断函数注意如下:(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类

中断函数注意如下:
(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。
(3)在任何情况下都不能直接调用中断函数,否则会产生编译错误。因为中断函数的返回是由8051单片机的RETI指令完成的,RETI指令影响8051单片机的硬件中断系统。如果在没有实际中断情况下直接调用中断函数,RETI指令的操作结果会产生一个致命的错误。
(4)如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器必须与中断函数相同。否则会产生不正确的结果。
(5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容,具体如下:在程序开始处对ACC、B、DPH、DPL和PSW入栈,结束时出栈。中断函数未加using n修饰符的,开始时还要将R0~R1入栈,结束时出栈。如中断函数加using n修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。
(6)C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。

void IsrTimer0(void) interrupt [n] n为中断号,编译器将n*8+3=中断(入口)向量地址

也就是说:

中断号 中断名 中断向量地址

0 INT 0(外部中断0) 0003H

1 TIMER/COUNTER 0(定时/计数器0) 000BH

2 INT 1(外部中断1) 0013H

3 TIMER/COUNTER 1(定时/计数器1) 001BH

4 SERIAL PORT(串口中断) 0023H

5 TIMER/COUNTER 2(定时/计数器2) 002BH

外注: 上电复位 0000H


(7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其它程序调用。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在ARM架构中,中断处理是一个关键机制,它允许CPU在执行主程序时能够响应外部或内部的事件。对于ARM MCU(微控制器单元)而言,中断处理程序入口通常分为两类:ARM保留的标准中断处理程序入口和外设中断处理程序入口。

关键字: ARM 中断处理

中断装置和中断处理程序统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。

关键字: CPU 中断处理 自动处理

STM32Cube HAL出来六七年了,还是有很多初学者没有适应,今天就分享一个读者问到的关于中断处理的问题。

关键字: 中断处理 回调函数

测试环境:keil c51 +STC89C52说明:1.keil的不定参数只有15个字节也就是说sizeof(...) 加起来总共不能超过15字节,否则会出错2.当不定参数中有常数时,你也会得不到你想要的结果,字符串除外...

关键字: sprintf keil51

在介绍2410的中断处理之前,我们不得不先看看先把ARM的异常向量表(Exception Vectors),下面对异常向量表(Exception Vectors),做一个简单的介绍: ARM的异常向量表一般存放在0x...

关键字: s3c2410 中断处理

几个基本概念: 1.ARM cortex_m3 内核支持 256 个中断(16 个内核+240 外部)和可编程 256 级中断优先级的设置,与其相关的中断控制和中断优先级控制寄存器(NVIC、SYST

关键字: 中断处理 中断控制器

ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用...

关键字: ARM 中断处理 中断控制器

这个 2440test里面的中断写的向量有些隐蔽,兜了很多个圈,也难怪这么难理解,下面就对这个东西抽丝剥茧,看清楚这究竟是一个怎么样的过程。中断向量bHandlerIRQ;handler for IRQ interrup...

关键字: 中断处理 2440中

中断:中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。中断处理程序:当中断发生时,

关键字: 中断 中断处理

STM32的USB双缓存接收代码其实已经可以在ST提供的USB示例代码中找到,只要稍加修改,就可以得到将近1MB的数据接收性能。虽然Datasheet中说明USB发送也同样可以使用双缓存,但并没有示例代码,由于为了测试性...

关键字: STM32 USB 中断处理 双缓存
关闭