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()重启的。我晕,原来它不只是简单的从中断返回,而且重启了整个程序。这一点要谨记啊。
查看评论 回复
"AVR-GCC 关于reti() -"的相关文章
- 上一篇:基于AT89C52单片机的多用户密码锁设计 -
- 下一篇:PIC指令介绍 -