设为首页收藏本站帮助中心
查看: 121|回复: 2
收起左侧

STC15F104E/STC15F104W单片机定时器中断实现控制继电器延时1小时通断

[复制链接]
发表于 2020-7-2 15:29:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
本帖最后由 哒哒哒 于 2020-7-2 15:55 编辑

RELAY.jpg

  1. /*
  2. 单片机型号:STC15F104E或STC15F104W
  3. 晶振频率:12Mhz 上电后继电器吸合1小时,再断开1小时、以此类推。
  4. */
  5. #include "reg51.h"
  6. #include "intrins.h"
  7. #define u8 unsigned char
  8. #define u16 unsigned int
  9. u8 ms5=0;                //5毫秒计数
  10. u16 sec=0;                //秒计数

  11. sbit LED0=P3^0;                //满12分钟点亮 (不满12分钟全不亮)
  12. sbit LED1=P3^1;                //满24分钟点亮
  13. sbit LED2=P3^2;                //满36分钟点亮
  14. sbit LED3=P3^3;                //满48分钟点亮 (全亮,满60分钟全灭并清零分钟,翻转继电器吸合状态)

  15. sbit LED_SEC=P3^4;        //1HZ 秒闪烁LED 低电平点亮
  16. sbit RELAY=P3^5;        //继电器或MOS管等 低电平吸合(导通)


  17. sfr AUXR   = 0x8E;
  18. sfr WDT_CONTR = 0xC1;        //看门狗寄存器

  19. void Init5ms() {        //初始化5毫秒定时器0
  20.     TMOD = 0x01;
  21.     TH0 = 0x15;
  22.     TL0 = 0xA0;
  23.     EA = 1;
  24.     ET0 = 1;
  25.     TR0 = 1;
  26. }

  27. void main(){        //入口函数
  28.     AUXR |= 0x80;
  29.     P3 = 0xFF;
  30.     RELAY = 0;
  31.     Init5ms();
  32.     while(1);
  33. }

  34. void Timer0Interrupt() interrupt 1 {        //5毫秒定时器0中断
  35.     TH0 = 0x15;
  36.     TL0 = 0xA0;
  37.         WDT_CONTR = 0x35;        //喂狗
  38.         ms5++;
  39.         if(ms5 == 100 || ms5 >= 200){
  40.         LED_SEC=!LED_SEC;
  41.                 if(ms5 >= 200) {
  42.                 ms5 = 0;
  43.                         sec++;
  44.                         if(sec == 720){
  45.                                 LED0=0;
  46.                         } else if(sec == 1440){
  47.                                 LED1=0;
  48.                         } else if(sec == 2160){
  49.                                 LED2=0;
  50.                         } else if(sec == 2880){
  51.                                 LED3=0;
  52.                         }else if (sec >= 3600){
  53.                         sec=0;
  54.                         P3 |= 0xF;
  55.                         RELAY=!RELAY;
  56.                         }
  57.                 }
  58.         }
  59. }
复制代码

相关帖子

这个小可爱很神秘,什么都没留下
回复

使用道具 举报

发表于 2020-7-5 22:32:33 | 显示全部楼层

你试试不就知道了
这个小可爱很神秘,什么都没留下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则