找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3460|回复: 4
收起左侧

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

[复制链接]
ID:905775 发表于 2021-5-10 18:23 | 显示全部楼层 |阅读模式
大佬们看看为什么这个程序只能按一次开始,后面按它就没用了。怎么能做到按一下开始按一下结束
T[JD1$HESM]RE4J6%S8SU9S.png
)6QB9]932GG]HQ`ZV2J08T6.png
回复

使用道具 举报

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

使用道具 举报

ID:213173 发表于 2021-5-11 14:23 | 显示全部楼层
无标题.jpg

  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 | 显示全部楼层

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

使用道具 举报

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 单片机教程网

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