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

从F到0 - From F to 0

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

C51/STC 单片机 定时器中断实现一个按键控制两个LED的亮灭翻转 (60秒无按键灭灯)

[复制链接]
发表于 2021-9-17 08:28:27 | 显示全部楼层 |阅读模式
晶振频率:12Mhz 型号:STC任意
通电灭灯,按键按下后,LED1亮LED2灭,再按LED1灭LED2亮,60秒无按键灭灯。

按键控制两个LED.png
  1. #include "STC15F104E.h"     //型号 STC15F104E 其他型号请换头文件
  2. #define u8 unsigned char
  3. #define u16 unsigned int
  4. sbit sKEY = P3 ^ 0;
  5. sbit LED1 = P3 ^ 4;
  6. sbit LED2 = P3 ^ 5;
  7. bit KEY = 1;

  8. void InitTimer0(){
  9.     TMOD = 0x01;    //定时器0方式1 (16位)
  10.     TH0 = 0xFC;     //装入定时器0初值高8位
  11.     TL0 = 0x18;     //低8位
  12.     EA = 1;         //开总中断
  13.     ET0 = 1;        //开定时器0中断
  14.     TR0 = 1;        //开定时器0计时
  15. }

  16. void main() {
  17.         WDT_CONTR = 0x27;       //开看门狗
  18.     LED1 = 1; LED2 = 1;
  19.     InitTimer0();
  20.         while (1) {
  21.                 WDT_CONTR |= 0x10;  //看门狗喂狗
  22.         if (KEY == 0) {
  23.             if (LED1 && LED2) {
  24.                 LED1 = 0;
  25.             } else {
  26.                 LED1 = !LED1; LED2 = !LED2;
  27.             }
  28.             while (KEY == 0) {
  29.                 WDT_CONTR |= 0x10;
  30.             }
  31.         }
  32.         }
  33. }

  34. void Timer0Interrupt() interrupt 1{     //12Mhz 1mS定时器中断
  35.     static u8 KEYms = 0;    //按键按下的时间毫秒 松开清零 识别长按请改成 u16
  36.     static u16 delay = 0;   //按键按下后亮灯置延时,减到0灭灯
  37.     TH0 = 0xFC;
  38.     TL0 = 0x18;
  39.     if (sKEY) {
  40.         KEYms = 0;
  41.     } else {
  42.         if (KEYms != 0xFF) {    //防止长按溢出
  43.             KEYms++;
  44.         }
  45.     }
  46.     KEY = !(KEYms >= 25);       //按键消抖25毫秒
  47.     if (KEY) {
  48.         if ((LED1 == 0 || LED2 == 0) && !--delay) {
  49.             LED1 = 1; LED2 = 1;
  50.         }
  51.     } else {
  52.         delay = 60000;          //置60000毫秒
  53.     }
  54. }
复制代码
发表于 2021-9-20 22:20:58 | 显示全部楼层

要的话自己去买改名卡
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-28 01:58 , Processed in 0.886051 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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