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

从F到0 - From F to 0

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

STC单片机 1按键和1个LED实现童锁 长按1秒解锁 10秒无按键锁定点亮LED 否则熄灭

[复制链接]
发表于 2021-11-13 19:55:41 | 显示全部楼层 |阅读模式
单片机型号:STC任意 晶振频率:12Mhz 硬件连接:按键:P3.2与GND LED:P3.3与VCC

1.png
  1. #include "STC15.h"
  2. #include "intrins.h"
  3. #define u8 unsigned char
  4. #define u16 unsigned int

  5. #define feed_dog() WDT_CONTR |= 0x10
  6. sbit sKEY = P3 ^ 2;
  7. sbit LED = P3 ^ 3;
  8. bit KEY = 1;
  9. u16 KEYms = 0;       //按键按下时间毫秒 松开清0
  10. bit lock = 1;        //1锁定 (锁定状态任何按键无效) 0解锁
  11. u16 leave = 0;
  12. void InitTimer0(){
  13.     TMOD = 0x01;
  14.     TH0 = 0x0FC;
  15.     TL0 = 0x18;
  16.     EA = 1;
  17.     ET0 = 1;
  18.     TR0 = 1;
  19. }

  20. void main(){
  21.     lock = 1;
  22.     LED = !lock;
  23.     WDT_CONTR = 0x27;
  24.     InitTimer0();
  25.     while (1) {
  26.         feed_dog();
  27.     }
  28. }

  29. void Timer0Interrupt() interrupt 1{
  30.     TH0 = 0x0FC;
  31.     TL0 = 0x18;
  32.     if (sKEY) {
  33.         KEYms = 0;
  34.     } else {
  35.         if (KEYms != 0xFFFF) {
  36.             KEYms++;
  37.         }
  38.     }
  39.     KEY = !(KEYms >= 25);
  40.     if (lock) {                 //锁定状态
  41.         if (KEYms >= 1000) {    //长按1秒解锁
  42.             lock = 0;
  43.             LED = !lock;
  44.             leave = 10000;
  45.         }
  46.     } else {                    //解锁状态
  47.         if (KEY) {              //10秒无按键自动锁定
  48.             if (!--leave) {
  49.                 lock = 1;
  50.                 LED = !lock;
  51.             }
  52.         } else {
  53.             leave = 10000;
  54.         }

  55.     }

  56. }
复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-20 10:15 , Processed in 0.505029 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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