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

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

#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()重启的。我晕,原来它不只是简单的从中断返回,而且重启了整个程序。这一点要谨记啊。


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