|
經過一番的查找資料,在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 紅外接收信號。不是虛擬調試。我想跟蹤實際接收到紅外的信號編碼。
|
|