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

从F到0 - From F to 0

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

STC单片机 自锁按钮 1个按键翻转控制1个LED亮灭 带掉电模式+外部中断 定时器中断消抖

[复制链接]
发表于 2021-11-20 19:14:41 | 显示全部楼层 |阅读模式
自锁开关.png
单片机型号:STC任意 晶振频率:6Mhz
本例程使用定时器中断识别按键事件并进行消抖,带看门狗喂狗。
硬件连接:按键:P3.2与GND LED:P3.3与100R电阻与VCC
按键按下后,LED点亮,再次按下后,LED熄灭,按键松开后,进入掉电模式,按键按下后唤醒外部中断。
  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. u8 KEYms = 0;       //按键按下时间毫秒 松开清0

  10. void main(){
  11.     WDT_CONTR = 0x27;   //开看门狗
  12.     TMOD = 0x01;
  13.     TH0 = 0xFE;
  14.     TL0 = 0x0C;
  15.     EX0 = 1;            //开INT0中断
  16.     IT0 = 1;            //INT0下降沿唤醒
  17.     PX0 = 1;            //INT0中断高优先级
  18.     EA = 1;             //开总中断
  19.     ET0 = 1;            //开定时器0中断
  20.     TR0 = 1;            //开定时器0计时
  21.     LED = 1;            //初始灭灯
  22.     while (1) {
  23.         feed_dog();
  24.         if (KEY == 0) {
  25.                 LED = !LED;     //LED亮灭翻转
  26.                 while (KEY == 0) {
  27.                 feed_dog();
  28.             }
  29.         }
  30.     }
  31. }

  32. void exint0() interrupt 0 {      //INT0(P3.2)外部中断入口
  33.     _nop_(); _nop_();
  34.     _nop_(); _nop_();
  35. }

  36. void Timer0Interrupt() interrupt 1 { //6Mhz 1mS定时器中断
  37.     TH0 = 0xFE;
  38.     TL0 = 0x0C;
  39.     if (sKEY) {
  40.         KEYms = 0;
  41.         PCON |= 0x02;           //进入掉电模式,可由外部中断唤醒
  42.         _nop_(); _nop_();
  43.         _nop_(); _nop_();
  44.     } else {
  45.         if (KEYms != 0xFF) {
  46.             KEYms++;
  47.         }
  48.     }
  49.     KEY = !(KEYms >= 25);
  50. }
复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-19 07:45 , Processed in 0.506029 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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