LED 实验 全亮全灭 有点疑问
有个疑问在 \TQ2440_Test\src\2440lib.c BOARD LED里面rGPBDAT = (rGPBDAT & ~(0xf<<5)) | ((~data & 0xf)<<5); 有什么用 ?
刚开始 LED2 和LED3 总是亮 后我把这句屏蔽了才可以控制LED全亮全灭
还有 寄存器赋值 为什么要写成rGPBCON = rGPBCON & ~0x3d57fc|0x3d57fc;
在实验中 我写成 // rGPBDAT = 0xfffffe1e ; // 全亮
rGPBDAT = 0xfffffffe ; // 全灭
没有什么影响啊 ?上面那样写有什么好处吗?
下面是我做的可以全亮全灭( GPB0是蜂鸣器 我把它赋0了) 其实呢,rGPBDAT = (rGPBDAT & ~(0xf<<5)) | ((~data & 0xf)<<5); 这句话你改成
rGPBDAT = (~data & 0xf)<<5; 同样可以实现。前面那一段自己去理解吧,注意input和output。
LED1~4连接着GPB5~8,所以data需要左移5位,而data要取反是因为低电平才点亮LED。
假如data = 0x01,那就是 LED1 亮
假如data = 0x0f,那就是 LED1~4 全 亮
还有你说到源程序那样写有什么好处,好处就是方便维护和修改程序。
页:
[1]