红外遥控器同一个键控制一个I/O口,第一次开,第二次关,比如P0^1开启关闭C语言代码?高手请进。

使用51单片机,单片机能够解码遥控器16进制编码,但第一次只能开,再按第二次关不了。请问怎么回事?C语言代码要怎么写?那位大侠知道,本人在此先行谢谢了!voidmain(... 使用51单片机,单片机能够解码遥控器16进制编码,但第一次只能开,再按第二次关不了。请问怎么回事?C语言代码要怎么写?那位大侠知道,本人在此先行谢谢了!
void main()
{
P0=0x00;
IrInit();
while(1)
{
switch(IrValue[2])
{
case(0X16):
d18=0;break;
}
}
展开
 我来答
烟火夜空
2017-01-14 · TA获得超过6623个赞
知道大有可为答主
回答量:1678
采纳率:93%
帮助的人:567万
展开全部
第一,收到你要的按键后,是取反某个位,而不是赋值。如P10=~P10;(建议取个名字)
第二,为了避免一次按键,多次触发,对按键值操作后,需要进行清除处理;(即赋值成无效的按键值),如 IrValue[2]=0xff;(如果没有按键是 0xff的话)
第三,最正确的做法是,收到遥控后,额外提供一个标志位(如 IR_UpdateFlag),程序识别标志位后,进行按键选择,处理完按键后,清除标志位。这样可以避免程序重复、多余执行按键选择(虽然是无效的按键,但那也是选择),可以提高系统执行效率!
羽翼追梦在路上
2018-09-22
知道答主
回答量:3
采纳率:0%
帮助的人:2842
展开全部
求更新 我也遇到这种问题 你是怎么解决的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
顶起石头的小草
2017-01-14 · TA获得超过695个赞
知道小有建树答主
回答量:1447
采纳率:0%
帮助的人:305万
展开全部
你的代码不完整
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式