找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2810|回复: 4
打印 上一主题 下一主题
收起左侧

红外遥控多级按键设定

[复制链接]
跳转到指定楼层
楼主
ID:65400 发表于 2014-9-3 00:11 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位前辈,我想在这个红外遥控程序:  总菜单按键(case ox01)下面加几个子菜单按键(也是红外遥控),switch后面要怎么改?         红外中断程序:
void int1()interrupt 2
{ uchar i,j,n=0;
dat[4]=0;
EX1=0; //必须将中断关闭,否则将无法准确解读
delay(0xf8,0x30);
if(ultra_red) //延时2ms后判断是否为高电平,若是,则跳出中断(红外发射端发射信号以9ms高电平开始,接收端接受信号与发射信号相反)
{ r=1;
delay(0x15,0xa0);
return;
}
while(!ultra_red) delay(0xff,0x9c);//等待9ms低电平
while(ultra_red) delay(0xff,0x9c); //等待4.5ms高电平
for(i=0;i<4;i++)
for(j=0;j<8;j++)
{ while(!ultra_red) delay(0xff,0x9c); //等待0.56ms的低电平区
while(ultra_red)
{ delay(0xff,0x9c); //每0.1ms,指针n自加1
n++;
}
dat[i]>>=1; //最高位写入0
if(n>6) dat[i]=dat[i]|0x80; //若n>6,说明高电平持续时间大于0.56ms,则将高位置1
n=0; //指针清零
}
if(dat[2]==~dat[3]) //若数据码与数据反码的非相同,说明解码成功
{ switch(dat[2])
{ case 0x01:
case 0x02:   
default:break;
}
}
else dat[4]=0;
r=1;
return;
}      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:65690 发表于 2014-9-3 00:16 | 只看该作者
我觉得你可以在switch case 0x01的下面再加一级 switch ,另外你这贴那这么长上面显示是手机发出来的?这么牛?
回复

使用道具 举报

板凳
ID:65400 发表于 2014-9-4 23:13 来自手机 | 只看该作者
手机复制的,if(dat[2]==~dat[3]) //若数据码与数据反码的非相同,说明解码成功 { switch(dat[2]) { case 0x01:switch (dat[2] ){case ox02:       case ox03:       dafault:break;} case 0x02:   default:break; } } else dat[4]=0; r=1; return; } 显示0错误0警告,但是没二级菜单的效果
回复

使用道具 举报

地板
ID:65400 发表于 2014-9-4 23:15 来自手机 | 只看该作者
直接加一级swich好像没作用,是不是还要加什么
回复

使用道具 举报

5#
ID:86938 发表于 2015-7-27 11:05 | 只看该作者
/* After is STC additional SFR or change */
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表