菜鸟提问,请指教。关于中断

千面魔军   2008-12-27 16:49 楼主
void int0_init(void)
{
        if(rEINTPEND == (1<<11))     //rEINTPEND  中断挂起
        {
                uart_printf("EINT1 interrupt occurred.\n");
                rEINTPEND = (1<<11);
                if(g_nKeyPress < 20)
                        g_nKeyPress +=1;
                else
                        g_nKeyPress  = 0;
        }
}

这个程序先判了if(rEINTPEND == (1<<11)),为何后面还要赋值呢??rEINTPEND = (1<<11);

回复评论 (15)

真的假的?
点赞  2008-12-27 17:45
如果不错的话应该是写1清中断指示位吧,等待下次的中断发生
一般的情况下都要这么做的
点赞  2008-12-27 23:06
查一下CPU的Spec吧,看写1是什么作用
点赞  2008-12-27 23:07
把中断寄存器中断位给清除掉。
具体可以看spec
点赞  2008-12-28 10:34
看看datasheet吧。每个芯片有点不太一样的。
点赞  2008-12-28 10:51
看看datasheet吧,可能写1是清中断位
点赞  2008-12-29 22:50
清中断位
点赞  2008-12-30 09:37
清中断,保证下一个相同的中断能被正确响应,否则下一个中断不会被响应。
点赞  2008-12-30 10:06
有的芯片某些位是写0清,有的是写1清。
点赞  2008-12-30 10:35
是S3C2410芯片。
点赞  2008-12-30 13:10
问个笨问题。中断是S3C2410管,还是其他什么芯片管?我刚来做电子这块
点赞  2008-12-30 13:17
S3C2410管
点赞  2008-12-30 13:18
我只有1,2,5,6,8,16章的S3C2410的文档,没有介绍中断这些东西的。我恨。。。
点赞  2008-12-30 13:38
我只有1,2,5,6,8,16章的S3C2410的文档,没有介绍中断这些东西的。我恨。。。
————————————————————————————————————————————
怎么可能?Google一把出来。
莫非你还留恋看中文?放手吧。哈哈,没有办法的,谁叫咱技术落后呢。
点赞  2008-12-30 14:49
谢谢gooogleman,找到了。我一直是用Baidu的.哈哈
点赞  2008-12-30 14:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复