设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1947|回复: 1
收起左侧

按下按键,LED点亮,否则熄灭,按键按住不放1秒以上LED则闪烁,放开则熄灭的实现方法

[复制链接]
发表于 2017-8-5 18:34:45 | 显示全部楼层 |阅读模式

  1. /*
  2. 按下按键,LED点亮,否则熄灭,按键按住不放1秒以上LED则闪烁,放开则熄灭。
  3. 延迟时间通过晶振频率修改,LED接P3.4和VCC,按键接P3.5和GND即可。
  4. 延时时间根据晶振频率修改,型号C51指令集通用。
  5. By:LscmunaixMG 2017-08-05
  6. */

  7. #include "reg51.h"
  8. #include "intrins.h"
  9. sbit led=P3^4 ;//灯
  10. sbit key=P3^5 ;//按键
  11. void delay1ms()                //延时1毫秒
  12. {
  13.         unsigned char i, j;

  14.         _nop_();
  15.         _nop_();
  16.         i = 12;
  17.         j = 168;
  18.         do
  19.         {
  20.                 while (--j);
  21.         } while (--i);
  22. }

  23. void delay10ms()                //延时10毫秒
  24. {
  25.         unsigned char i, j;

  26.         _nop_();
  27.         _nop_();
  28.         i = 117;
  29.         j = 183;
  30.         do
  31.         {
  32.                 while (--j);
  33.         } while (--i);
  34. }

  35. void main() {//主函数

  36.     unsigned int a; //按键按住时间计数
  37.     unsigned int b; //延时计数
  38.     while(1) { //无限循环
  39.         if(key==0){ //按键按下则
  40.         delay10ms(); //按键消抖
  41.             while(key==0){ //按键按住不放则
  42.                 if(a!=1000){ //a不等于1000则
  43.                     led=0 ; //led点亮
  44.                     delay1ms(); //延迟1毫秒
  45.                     a++ ; //a加1
  46.                 } else { //a等于1000则
  47.                     led=1 ; //led熄灭
  48.                     for(b=0;b!=250;b++)delay1ms(); //延时250毫秒
  49.                     led=0 ; //led点亮
  50.                     for(b=0;b!=250;b++)delay1ms(); //延时250毫秒


  51.                 }
  52.             }
  53.         } else { //按键没有按下则
  54.                 delay10ms(); //延时10毫秒
  55.             led=1 ; //led熄灭
  56.             a=0 ; //a等于0
  57.         }


  58.     }


  59. }

复制代码



您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-20 07:34 , Processed in 0.437025 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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