2742|6

965

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

求助,写一个程序,用键盘控制他在两个子函数间切换运行 [复制链接]

在做一个单片机项目,
要求按下键1(0x0d)只要不再按键2(0x19)就不停运行remote();
如果按下键2(0x19)不再按键1(0x0d)程序就不停运行loop();这个函数据
下面是我写的,但实现不了,这个函数应该怎么写
void implement()
{
     if(arraybyte[2]==0x0d)
     {
          while(arraybyte[2]!=0x19)
               remote();     
     }

     if(arraybyte[2]==0x19)
     {
          while(arraybyte[2]!=0x0d)
               loop();     
     }
}
此帖出自单片机论坛

最新回复

整个RTOS的话应该可以- - 或者在remote跟loop里面定时扫描按键,发现按键不对了就return出来,外面的程序自动就调用另外一个了 反正就得想办法让remote跟loop根据按键情况自动退出来  详情 回复 发表于 2012-10-20 13:48
点赞 关注
 

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶
此帖出自单片机论坛
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
在remote跟loop函数里面没有按键检测,就没法切换了
可以搞个定时器定时扫描按键,然后搞个全局变量,在两个函数里面检查变量,来实现函数的切换
或者用高级一点的技巧的话,可以用中断检测按键,然后嵌入汇编,直接把栈里面前一个函数的信息弄掉,再调用另外一个函数- -,还涉及到按键抖动的时候怎么处理什么的
不过看LZ的那个程序- -估计LZ实现不了
因为不知道LZ到底要干嘛,所以没法说哪种方法好点
此帖出自单片机论坛

点评

我用红外遥控,当按下0x0d时进入遥控模式,用遥控控制他行走,按下0x19时进入循线模式 remote();这个是遥控的函数 loop();这个是循线的函数 这个应该怎写呢  详情 回复 发表于 2012-10-20 09:42
 
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

4
 

回复 板凳 dashashi 的帖子

我用红外遥控,当按下0x0d时进入遥控模式,用遥控控制他行走,按下0x19时进入循线模式
remote();这个是遥控的函数
  loop();这个是循线的函数
这个应该怎写呢
此帖出自单片机论坛

点评

整个RTOS的话应该可以- - 或者在remote跟loop里面定时扫描按键,发现按键不对了就return出来,外面的程序自动就调用另外一个了 反正就得想办法让remote跟loop根据按键情况自动退出来  详情 回复 发表于 2012-10-20 13:48
 
 
 

回复

112

帖子

0

TA的资源

一粒金砂(中级)

5
 
如果程序比较简单的话可以使用查询方式循环读取按键值
此帖出自单片机论坛
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 4楼 石玉 的帖子

整个RTOS的话应该可以- -
或者在remote跟loop里面定时扫描按键,发现按键不对了就return出来,外面的程序自动就调用另外一个了
反正就得想办法让remote跟loop根据按键情况自动退出来
此帖出自单片机论坛
 
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

7
 
谢谢大家,已经解决了,实现不了的原因是没有在子函数里加入红外的解码程序,每次while判断的键值都是一样的,所以程序一开始就陷入while这个死循环
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表