亿加合和智能车制作

标题: PORTA_ISFR = (1 << n);这句话为什么是清除中断标志位的意思? [打印本页]

作者: 夜雨闻铃    时间: 2015-12-10 20:20
标题: PORTA_ISFR = (1 << n);这句话为什么是清除中断标志位的意思?
既然PORTA_ISFR的第n位已经是1了,为什么 还要写PORTA_ISFR = (1 << n);给它赋值?我看注释上是说这句是清除中断标志位,可是进此中断判断的条件不就是第n位是1吗?那怎么清除中断标志位了?求大神详细解答下,谢谢!!!

作者: 支点305    时间: 2015-12-11 10:11
因为是“写1清零”
作者: 六步上篮    时间: 2015-12-11 10:43
写1清零  清掉可以下次再进入中断
作者: 跑龙套的人    时间: 2015-12-11 11:06
楼上的几位同学已经详细说明了问题所在,我再强调一下,写1清零
作者: 夜雨闻铃    时间: 2015-12-11 18:54
支点305 发表于 2015-12-11 10:11
因为是“写1清零”

写1怎么就清零了呢?他现在第n位已经是1了啊?怎么还给它再进行赋值?那下次不用满足中断条件就直接进中断了啊,因为它的第n位一直是1啊?既然他的第n位一直是1,为什么还用if来判断?

作者: 夜雨闻铃    时间: 2015-12-11 19:13
六步上篮 发表于 2015-12-11 10:43
写1清零  清掉可以下次再进入中断

麻烦看一下我5楼的追问,谢谢!
作者: 夜雨闻铃    时间: 2015-12-11 19:15
跑龙套的人 发表于 2015-12-11 11:06
楼上的几位同学已经详细说明了问题所在,我再强调一下,写1清零

谢谢回答,麻烦看一下5楼追问。

作者: 跑龙套的人    时间: 2015-12-11 19:49
夜雨闻铃 发表于 2015-12-11 19:15
谢谢回答,麻烦看一下5楼追问。

如果是写0就清零,你看看是不是把整个寄存器都给清零了。

作者: 夜雨闻铃    时间: 2015-12-11 21:03
跑龙套的人 发表于 2015-12-11 19:49
如果是写0就清零,你看看是不是把整个寄存器都给清零了。

它不是第n位写入的1吗?寄存器怎么会全部清零?
作者: Quixote    时间: 2015-12-17 14:19
#在这里快速回复#因为数据手册里约定了,具体可以看看数据手册。
作者: 夜雨闻铃    时间: 2015-12-17 19:14
Quixote 发表于 2015-12-17 14:19
#在这里快速回复#因为数据手册里约定了,具体可以看看数据手册。

谢谢!我在数据手册中找到了!

作者: 5477    时间: 2016-1-17 14:01
你写1清零 写的1不是直接给那个内存 是写到清零的寄存器的, 就像你平时读端口 写端口实际上用的是两个寄存器
作者: 橙子123    时间: 2017-12-29 00:22
兄弟,你这个问题懂了么?我也有和你一样的疑问
作者: 橙子123    时间: 2017-12-29 00:23
兄弟 你这个问题懂了么? 我也和你有一样的疑问




欢迎光临 亿加合和智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2