^异或?

[复制链接]
13317|71
 楼主| areshan 发表于 2011-6-22 15:54 | 显示全部楼层 |阅读模式
PORTD^=0x80;
我一直认为上面的语句只会把pord7管脚翻转,但是如果portd的其他管家如果设为下降沿中断,也会触发中断。郁闷,这个是不是管脚间相互干扰呢?
xwj 发表于 2011-6-22 15:58 | 显示全部楼层
按说是不会受影响,除非编译器有BUG
yewuyi 发表于 2011-6-22 16:00 | 显示全部楼层
如果触发产生了下降沿中断,说明在^前,具备下降沿中断的IO口处于高电平状态,执行^后,该IO口编程了低电平,所以产生了中断。
 楼主| areshan 发表于 2011-6-22 16:03 | 显示全部楼层
用的是avr的studio4,不知道是芯片问题还是编译器问题!用的而是avr的xmega32a4!
 楼主| areshan 发表于 2011-6-22 16:05 | 显示全部楼层
用^=马上进下降沿中断,屏蔽后就不不进去了!
 楼主| areshan 发表于 2011-6-22 16:07 | 显示全部楼层
这个IO口接的是红外接收头,一直是高!不知道是不是因为^=指令被分成了好几个指令,其中把io口当成一部寄存器用于保存中间值的原因!
xwj 发表于 2011-6-22 16:08 | 显示全部楼层
studio4?

你是用的用GCC的WINAVR吧?studio4可不带C编译器。
 楼主| areshan 发表于 2011-6-22 16:08 | 显示全部楼层
呵呵,不行,我就在红外发射时把接收的下降沿中断给关闭了吧!我试试了关全局中断竟然没有用,非要关下降沿中断才可!不理解!
 楼主| areshan 发表于 2011-6-22 16:10 | 显示全部楼层
原厂给的一个叫toolchain的工具,好像是winavr! 7# xwj
yewuyi 发表于 2011-6-22 16:10 | 显示全部楼层
用^=马上进下降沿中断,屏蔽后就不不进去了!
areshan 发表于 2011-6-22 16:05


如果该下降沿中断IO口上有内部弱上拉的话,你把它打开,然后执行^看看结果如何
 楼主| areshan 发表于 2011-6-22 16:11 | 显示全部楼层
全名:avr-toolchain-installer-3.0.0.240-win32.win32.x86.exe
估计是winavr,以前没有用过winavr!
 楼主| areshan 发表于 2011-6-22 16:12 | 显示全部楼层
试过,没有效果,谢谢你yewuyi 10# yewuyi
yewuyi 发表于 2011-6-22 16:15 | 显示全部楼层
试过,没有效果,谢谢你yewuyi 10# yewuyi
areshan 发表于 2011-6-22 16:12


在程序的初始化中,在初始化完毕各个寄存器后,先清除一次所有的中断标志
qzhui121 发表于 2011-6-22 16:17 | 显示全部楼层
结果如何?!!!
 楼主| areshan 发表于 2011-6-22 16:18 | 显示全部楼层
恩,谢谢yewuyi,和xwj,还好问题及时被找到:P!
 楼主| areshan 发表于 2011-6-22 17:24 | 显示全部楼层
339:              PORTD.OUT^=PIN3_bm;
+0000038B:   91800000    LDS       R24,0x0000     Load direct from data space
+0000038D:   2789        EOR       R24,R25        Exclusive OR
+0000038E:   8384        STD       Z+4,R24        Store indirect with displacement
上面是avr的汇编,不过不懂!
t.jm 发表于 2011-6-22 17:30 | 显示全部楼层
winavr应该没什么问题的,还是从C源程序里差问题吧。
yewuyi 发表于 2011-6-22 17:42 | 显示全部楼层
从楼主的问题衍生出来的一个话题:

AVR的IO口,在输出的时候,有一个端口缓冲寄存器,LZ为什么不用?而直接用PORTD来操作呢?
 楼主| areshan 发表于 2011-6-22 18:26 | 显示全部楼层
端口缓存器?这个我还没有没用过,avr的端口不是只有PORTADIR(端口方向),PORTOUT(端口输出),PORTIN(端口输入),不知道端口缓存器是哪个?还希望yewuyi能多多指教!
dqyubsh 发表于 2011-6-22 18:38 | 显示全部楼层
我不敢用异或,因为不确定它会干什么。

|= 置位
&= 清位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部