gracialee 发表于 2012-5-5 10:06:58

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

就是不知道这几句话嘛意思了。。。汗。。。。

gracialee 发表于 2012-5-7 08:41:48

咋就没个老师给讲段课类?

avrgogo 发表于 2012-5-7 09:13:40

rPDATC=((LedStatus & 0x1ff)<<3);//读取LEDSTATUS状态
判断是否为1,为1就置0,为0就置1,应该是闪烁灯吧。

gracialee 发表于 2012-5-7 11:20:14

        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亮就行了。现在上面是来几几灭,能不能反一下让它亮着?刚取反试了一下,貌似这样子行不通,

lovelywwei 发表于 2012-5-7 11:40:45

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
调换一下位置不就可以了?
先打好基础吧

gracialee 发表于 2012-5-7 14:00:49

谢楼上的提醒,我说怎么也没看出这个意思出来,原来那上面的算法本就是个错的。当“来几几灭”(原来代码)的时候,遇到3咋办?

gracialee 发表于 2012-5-7 17:52:09

这样的问题,应该用CASE算法。
页: [1]
查看完整版本: S3c44b0x学习汇报,会点灯会出字,可知其然而不知所以然。