您现在的位置: 主页 > MCU > 单片机应用 > AVR-GCC 关于reti() -
本文所属标签:
为本文创立个标签吧:

AVR-GCC 关于reti() -

来源: 网络用户发布,如有版权联系网管删除 2018-09-09 

[导读]用过汇编的同学知道,在汇编语言中,指令reti是用来从中断服务程序中返回的。然后在winavr中我们用C遍了这样一段程序:#include……ISR(USART_RXC_vect){uart_putc('a');while(!(UCSRA&(1

用过汇编的同学知道,在汇编语言中,指令reti是用来从中断服务程序中返回的。然后在winavr中我们用C遍了这样一段程序:

本文引用地址: http://www.21ic.com/app/mcu/201809/778459.htm

#include

……

ISR(USART_RXC_vect)

{

uart_putc('a');

while(!(UCSRA&(1<

char dummy = UDR;

flag = !flag;

uart_putc_hex(flag);

reti();

}

……

int main(void)

{

uart_init();

uart_putstring("startingrn");//send data to PC

sei();

while(1)

{

……

}

}

运行程序发现,只要你从串口助手向单片机发送字符,都会输出一条:

“starting”

这就说明了,每次从中断返回的时候,程序被重启了。被谁重启的呢,经过调试发现,是reti()重启的。我晕,原来它不只是简单的从中断返回,而且重启了整个程序。这一点要谨记啊。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > AVR-GCC 关于reti() -
 

"AVR-GCC 关于reti() -"的相关文章

网站地图

围观()