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