找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键控制程序开始结束

[复制链接]
跳转到指定楼层
楼主
大佬们看看为什么这个程序只能按一次开始,后面按它就没用了。怎么能做到按一下开始按一下结束

T[JD1$HESM]RE4J6%S8SU9S.png (130.57 KB, 下载次数: 45)

T[JD1$HESM]RE4J6%S8SU9S.png

)6QB9]932GG]HQ`ZV2J08T6.png (64.95 KB, 下载次数: 51)

)6QB9]932GG]HQ`ZV2J08T6.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:752974 发表于 2021-5-11 08:34 | 只看该作者
用一个按键操作的话,只能用计数的方法,根据计数值:1.。。;2.。。。。;3.。。完成各相关的动作。根据需要确定最大计数值,在最大值时在适当的地方清计数值。
回复

使用道具 举报

板凳
ID:213173 发表于 2021-5-11 14:23 | 只看该作者


  1. #include<reg52.h>

  2. sbit key=P3^2;

  3. bit flag=0;

  4. void delay(unsigned int cnt)
  5. {
  6.         while(--cnt);
  7. }

  8. void led()
  9. {
  10.         if(P0==0xff)
  11.                 P0=0xfe;
  12.         delay(65535);//不能大于65535
  13.         P0<<=1;
  14.         P0|=0x01;
  15. }

  16. void main()
  17. {
  18.         while(1)
  19.         {
  20.                 if(key==0)               
  21.                 {
  22.                         delay(100);       
  23.                         if(key==0)               
  24.                         {
  25.                                 flag=~flag;
  26.                         }
  27.                         while(!key);
  28.                 }
  29.                 if(flag)
  30.                 {
  31.                         led();
  32.                 }
  33.                 else
  34.                         P0=0xff;
  35.         }
  36. }
复制代码



回复

使用道具 举报

地板
ID:905775 发表于 2021-5-11 20:06 | 只看该作者

谢谢大佬,修改好了。那为什么不加按键的时候是可以循环的呢
回复

使用道具 举报

5#
ID:609524 发表于 2021-5-12 10:49 | 只看该作者
wcf101 发表于 2021-5-11 20:06
谢谢大佬,修改好了。那为什么不加按键的时候是可以循环的呢

按他这样写应该不会啊,flag为1的时候才会执行led()函数;
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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