|
经过一番的查找资料,在51论坛找到了相关资料,而且通过修改代码,能够实现红外遥控LED的亮灭。
但是,有一些疑问和BUG,想请教一下大家:
判断代码如下,全部代码在附件
- switch(IRcord[2])
- {
- case 0x0c: led1=0;break;//按1,LED1亮
- //case 0x18: led1=1;break;//按2,LED1灭,注释1
- case 0x5e: led2=0;break;//按3,LED2亮
- //case 0x08: led2=1;break;//按4,LED2灭,注释2
- case 0x1c: led3=0;break;//按5,LED3亮
- //case 0x5a: led3=1;break;//按6,LED3灭,注释3
- case 0x42: led4=0;break;//按7,LED4亮
- case 0x52: led4=1;break;//按8,LED4灭
- case 0x4a: led5=0;break;//按9,LED5亮
- case 0x16: led5=1;break;//按0,LED5灭
- case 0x45:
- led1=1;
- led2=1;
- led3=1;
- led4=1;
- led5=1;
- break;//全部灭
- }
复制代码 如果按照上面的代码,按相对应的按钮会达到相应的效果,例如按7,LED4会亮,按8,LED4会灭,如果只是按7,LED4只会亮,不会灭。
问题来了:
1)如果把注释1,2,3其中一个注释取消,当我按7,LED4会亮,但是连续按两下7,LED4竟然会灭。。。。。这是什么情况?
2)另外有个问题,我想把代码写成
case 0x42: led4=~led4;break;//按7,LED4亮,目的就是取反,按同一个键,就达到开和关。但是实际情况,不行啊。。。。为什么
3)怎样用KEIL联机调试debug 红外接收信号。不是虚拟调试。我想跟踪实际接收到红外的信号编码。
|
|