C语言interrupt

void ISR_int0(void) interrupt 0
{
sta=SPI_Read(STATUS); // read register STATUS's value
if(RX_DR) // if receive data ready(RX_DR)interrupt
{
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
flag=1;
}
if(MAX_RT)
{
SPI_RW_Reg(FLUSH_TX,0);
}
SPI_RW_Reg(WRITE_REG+STATUS,sta);// clear RX_DR or TX_DS or MAX_RT interrupt flag
}

该函数什么意思?尤其是"interrupt 0"什么意思?怎么可以直接放函数后面,不用另起一行?

谢谢!!!!谢谢
那是不是调用这个函数 ISR_int0后,就产生中断0?

这个是中断函数,interrupt 0,interrupt是中断,0是中断向量号,具体的向量号需要查手册
放在函数后面是表示指向中断向量0的,不能另起一行
这个是SPI通讯用的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-26
这个函数就是一个c51(用于芯片编程)程序,interrupt 0 说明此函数是一个中断函数。
以前玩过这个东西。具体怎么说,早忘记了。查查资料吧
第2个回答  推荐于2018-02-12
二楼的说得很对。它是一个中断处理函数,与一般的函数的区别在于他被调用的方式。一般的函数是由其上一层函数调用而得到执行。而中断函数是是外围设备触发它执行的。比如说:SPI接收到一字节的数据、ADC采样完成、定时器发生溢出等等。一旦这些事件发生了,只要中断处于使能状态,就会触发对应的中断。
不管主程序执行到什么地方,CPU都会暂停它并立即执行这种中断处理函数。中断处理函数执行完成后又恢复之前的程序位置继续执行。
中断的产生,不是由调用引起的,是由外界触发的。就像,有人敲门,你就要去开门,这不等于你去开门了,就一定有人敲门。
另,中断函数不能被直接调用,否则会出错。本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网