急:请教一个LPC21xx的外中断唤醒CPU,但不产生中断的例子

[复制链接]
2793|1
 楼主| czj8127 发表于 2008-9-1 11:52 | 显示全部楼层 |阅读模式
我在周立功的例程里调试这个程序有些东西搞不懂,请教高手指点<br />&nbsp;&nbsp;1,第10句为什么要用IO0SET而不用IO0PIN呢?IO0SET不是只写吗?好像它读出的数都是0啊。<br />&nbsp;&nbsp;2.当p0.16设置位外中断时,对p0.16操作(比如按键按下或抬起)会对IO0SET有什么影响呢?它的位会变化吗?<br />&nbsp;&nbsp;3.是不是p0.16按键一抬起,系统又进入掉电模式了?对这个功能不太懂,能否讲一下<br />&nbsp;&nbsp;4./*&nbsp;当系统被唤醒后,取反BEEP控制&nbsp;*/下面的三句10、11、12为什么要那么写呢?尤其if&nbsp;((IO0SET&nbsp;&&nbsp;BEEP)&nbsp;==&nbsp;0)&nbsp;不太理解。<br />请高手指点啊&nbsp;调试的结果好像和它书上说的不太一样。书上是2131芯片,我用的是2132芯片调试的,应该区别不大吧?程序如下:<br /><br />#include&nbsp;&quot;config.h&quot;<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;P0.7控制蜂鸣器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />int&nbsp;main&nbsp;(void)<br />{<br />&nbsp;PINSEL1&nbsp;=&nbsp;0x00000001;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;P0.16连接EINT0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br />&nbsp;IO0DIR&nbsp;&nbsp;=&nbsp;BEEP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置BEEP控制口为输出,其余输入&nbsp;&nbsp;&nbsp;&nbsp;3<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;EXTWAKE&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;外部中断0唤醒芯片&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br />&nbsp;EXTINT&nbsp;&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除EINT0中断标志&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;IO0SET&nbsp;=&nbsp;BEEP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6<br /><br />&nbsp;while&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;PCONP&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;关闭定时器、RTC、UART等功能部件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br />&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;&nbsp;=&nbsp;0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;系统进入掉电模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;当系统被唤醒后,取反BEEP控制&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((IO0SET&nbsp;&&nbsp;BEEP)&nbsp;==&nbsp;0)&nbsp;IO0CLR&nbsp;=&nbsp;BEEP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;IO0SET&nbsp;=&nbsp;BEEP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTINT&nbsp;&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除EINT0中断标志&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);&nbsp;<br />
 楼主| czj8127 发表于 2008-9-2 08:50 | 显示全部楼层

怎么没人回复呢

大家说说啊。我实在不懂。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

20

帖子

0

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