uC技术交流社区≡嵌入系统开发≡【 51单片机<专版> 】 → [求助]如何清除变量num0=keyscan()的值?


  共有1543人关注过本帖树形打印

主题:[求助]如何清除变量num0=keyscan()的值?

帅哥哟,离线,有人找我吗?
careyyip
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:注册用户 贴子:19 积分:337 威望:0 精华:0 注册:2007-10-29 16:00:46
[求助]如何清除变量num0=keyscan()的值?  发贴心情 Post By:2008-1-8 11:04:39

各位老师,
    你们好!有个问题小的思考了很久了还是不得其解。如下图所示,我想控制电机,让物件从A端到B端,电机启动,物件从A→B,电机停止,物件自动从B→A;A、B两端均有检测开关。我的程序中,键盘采用查询方式的函数返回值num0=keyscan(),x1代表A端开关,x2代表B端开关,y12代表电机,数字1代表有效(电机启动或物件到位),数字0代表无效(电机停止或物件未到位);我希望实现的动作是,当物件在A时,我按下按键,物件往B走,到B后自动返回到A,停止。由于我程序采用是先扫描输入端,将传感器信号送入bit变量Xn保存,再进行处理,处理完后结果送入bit变量Yn保存,最后将Yn结果刷新到输出端,所以程序中不能有延时等待的情况出现,例如while(x2!=1);这种语句。我写的程序如下:
while(1)
{
   num0=keyscan();
   输入扫描程序……
   if(num0==1&&x1==1)
      y12=1;
   if(x2=1)
   {
      y12=0;
      num0=0;
   }
   输出刷新程序……
}
但实际上的结果是当物件回到A后,又往B走,也就是说,num0并没有被清除为0;当我按下其它按键时,num0才等于其它值(不为1),此时物件回A后才停下来。
    请问各位老师有没有什么比较好的办法能够解决这个自动清零的问题啊?我已经试了很多方法了,都不行!谢谢了!

 


供应NXP系列芯片:LPC2368,LPC2364等等(价格优势)“查看详情”。 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
boyljx
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:注册用户 贴子:10 积分:226 威望:0 精华:0 注册:2006-10-29 3:43:16
  发贴心情 Post By:2008-1-10 16:35:35

有這樣寫的嗎:if(x2=1)
x2=1 是賦值不是條件判斷。這里永遠也跑不進去的。

FREESCALE全系单片机仿真编程器ICS08!Motolora单片机轻松搞定! 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
careyyip
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:注册用户 贴子:19 积分:337 威望:0 精华:0 注册:2007-10-29 16:00:46
  发贴心情 Post By:2008-1-12 14:29:19

这位大哥,谢谢提醒,这个是我在发贴的时候搞错了,程序里是“==”。能否就这个问题发表一下高见,为什么清不了0啊?

广告:论坛更换独立服务器,速度更快,空间更大,双线路。 支持(0中立(0反对(0回到顶部