找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机现在可以将p2流水灯左移显示出来,再次按S2键无反应

查看数: 1785 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-10-3 00:05

正文摘要:

单片机现在可以将p2流水灯左移显示出来,再次按S2键无反应,求大神指点迷津,找了一天的漏洞没找出来

回复

ID:637144 发表于 2021-10-4 15:53
两个死循环,有用都是假的
ID:624769 发表于 2021-10-3 20:03
010329 发表于 2021-10-3 10:37
您好  首先很感谢您的回帖,听了您的建议后将左移和右移的while(1)去掉,单片机的效果还是没法判断s1键 ...

你光是去掉了那两个While(1) ,  但是你整个程序 没有while(1), 是只会跑一遍,然后就结束的,所以,也不会反复判断按键的。
ID:332444 发表于 2021-10-3 12:47
如果没看到效果修改这句P2=a?P2<<1:P2>>1;为P2=a?P2>>1:P2<<1;
ID:332444 发表于 2021-10-3 12:45
还更正一点把if(a)删除了
ID:332444 发表于 2021-10-3 12:43
忘记初始化了,添加一句代码P2=0;在无限循环外。
ID:332444 发表于 2021-10-3 12:40
  1. 这么简单功能用的着怎么多代码?就是用一个按键按下左移再次按下改变方向这个功能?
  2. #include "REG52.h"
  3. sbit k=P1^0;
  4. main()
  5. {
  6.         char a=0,xd=0;
  7.         int ys=47474;
  8.         while(1)
  9.         {
  10.                 if(k==0&&++xd==0)
  11.                 {
  12.                         if(a==0)a=1;
  13.                         else a=0;
  14.                         while(k==0);
  15.                 }
  16.                 if(a)P2=a?P2<<1:P2>>1;
  17.                 while(--ys);
  18.                 ys=47474;
  19.         }
  20. }
  21. 试看这个直接写未测试
复制代码
ID:969579 发表于 2021-10-3 10:37

RE: 单片机现在可以将p2流水灯左移显示出来,再次按S1键无反应

188610329 发表于 2021-10-3 01:43
你的通篇代码,没有S2………………

按你的代码看, S1按下后,会开始左移,并始终在左移代码中循环,不 ...

您好  首先很感谢您的回帖,听了您的建议后将左移和右移的while(1)去掉,单片机的效果还是没法判断s1键再次按下,不过我有些头绪了,谢谢
ID:624769 发表于 2021-10-3 01:43
你的通篇代码,没有S2………………

按你的代码看, S1按下后,会开始左移,并始终在左移代码中循环,不出来。所以也不会再次判断按键。
因为你用了 while(1)  ,  他代表的意义是 死循环。当代码走到while(1), 就死在这个括号里了。

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

Powered by 单片机教程网

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