S3c44b0x学习汇报,会点灯会出字,可知其然而不知所以然。
rPDATC=((LedStatus & 0x1ff)<<3);
// */
if((LedStatus&0x01)==0x01) //PE7状态设置 0100&0001
rPDATC=rPDATC&0xfffD; //1111 1111 1111 1101LED0不亮
else
rPDATC=rPDATC|0x02; //rPDATC | 0000 0010 点亮LED0
就是不知道这几句话嘛意思了。。。汗。。。。 咋就没个老师给讲段课类? rPDATC=((LedStatus & 0x1ff)<<3);//读取LEDSTATUS状态
判断是否为1,为1就置0,为0就置1,应该是闪烁灯吧。 if((LedStatus&0x01)==0x01) //PE7状态设置 0100&0001
rPDATC=rPDATC&0xfffD; //1111 1111 1111 1101LED0不亮
else
rPDATC=rPDATC|0x02; //rPDATC | 0000 0010 点亮LED0
if((LedStatus&0x02)==0x02) //PE6状态设置
rPDATC=rPDATC&0xfffB; //1111 1111 1111 1011 LED1不亮
else
rPDATC=rPDATC|0x04; //rPDATC | 0000 0100 LED1点亮
if((LedStatus&0x04)==0x04) //PE5状态设置
rPDATC=rPDATC&0xfff7;//rPDATC & 0xfff7=1111 1111 1111 0111LED2不亮
else
rPDATC=rPDATC|0x08; //LED2点亮
我觉得这个算法可奇怪了,应该是来个1就LED1亮,来个2就是LED2亮,来个3就是LED3亮就行了。现在上面是来几几灭,能不能反一下让它亮着?刚取反试了一下,貌似这样子行不通, if((LedStatus&0x01)==0x01) //PE7状态设置 0100&0001
rPDATC=rPDATC&0xfffD; //1111 1111 1111 1101LED0不亮
else
rPDATC=rPDATC|0x02; //rPDATC | 0000 0010 点亮LED0
把 rPDATC=rPDATC&0xfffD; //1111 1111 1111 1101LED0不亮
和rPDATC=rPDATC|0x02; //rPDATC | 0000 0010 点亮LED0
调换一下位置不就可以了?
先打好基础吧 谢楼上的提醒,我说怎么也没看出这个意思出来,原来那上面的算法本就是个错的。当“来几几灭”(原来代码)的时候,遇到3咋办?
这样的问题,应该用CASE算法。
页:
[1]