基于89C51的一个简单的警报系统

发布者:dandan666最新更新时间:2018-01-22 来源: eefocus关键字:89C51  警报系统 手机看文章 扫描二维码
随时随地手机看文章

#include "reg52.h"
#define   uchar unsigned char
#define   uint  unsigned int


sbit light = P1^0
sbit loud = P1^7;
sbit alarm = P2^0;
bit alarm_flag,flag_dec,flag_change;

uint t0_count = 1;
uint t0_set,second;

void delay_1ms(unsigned int count) //1MS的延时×count
{
 unsigned int i,j;
 for(i=0;i for(j=0;j<120;j++);
}

void light_show(int i)  //灯闪亮
{
 light = 0;
 delay_1ms(i);
 light = 1;
 delay_1ms(i);
}

void init_t0(void)   //初始化定时时钟
{
   TMOD=0x01; //方式2
   TH0=(65536-65436)/256; 
   TL0=(65536-65436)%256;  
   ET0=1; 
   EA=0; 
}
void init_IO(void)
{
 P1 = 0;
 P2 = 0;
}
void alarm_check(void)  //判断警报,为高电平打开警报
{
 if(alarm == 1)
 { 
  delay_1ms(10);
  if(alarm == 1);
  {
   alarm_flag = 1; //响铃标志
   flag_change = 1; //铃声改变标志
   t0_set = 5; //调响铃节奏
  }
 } 
}

void  alarm_close(void)   //低电平,解除警报
{
 if(alarm == 0)
 { 
  delay_1ms(10);
  if(alarm == 0);
  {
   alarm_flag = 0;
   light = 0;
   loud = 0;
   TR0 = 0;
   EA = 0;
  }
 }  
}
void main()
{
 uint i,j;
 init_t0();
 init_IO();
 while(1)
 {
  alarm_check();
  while(alarm_flag)
  {
   TR0 = 1;
   EA = 1;
   for(j = 0;j < 40;j++)
   {
    alarm_close();
    if(alarm_flag == 0)
    {
     break; //跳出循环
    }
    light_show(100);
   }   
  }

    
 }

}

void t0(void) interrupt 1 using 0 
{
 EA = 0;
 TR0 = 0;
 t0_count--;
 if(t0_count == 0)
 {
  t0_count = t0_set;
  if(flag_change == 1)
  {
   loud =  ~loud;
  }
 }
 if(flag_change == 0)
 {
  loud = 1;
 }
 second++;
 if(second == 30) //调时间长短
 {
  flag_dec = 1;
  second = 0;
  if(t0_set ==1)
  {
   t0_set = 1;
   flag_dec =0;
   flag_change = 0;
  }
  if(flag_dec == 1)
  {
   t0_set--;
  }
 }
 TR0 = 1;
 EA = 1;

}


关键字:89C51  警报系统 引用地址:基于89C51的一个简单的警报系统

上一篇:调试通过的灯闪程序
下一篇:用AT89C2051制作的快速充电器

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved