微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 闪光报警器编程

闪光报警器编程

时间:10-02 整理:3721RD 点击:
我用单片机用C语言编程闪光报警器消音总是消音键松开声音又响起是咋回事程序如下:望高手指点
#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit test=P2^0;
sbit rest=P2^1;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
sbit s4=P3^7;
sbit beep=P2^3;
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
  for(k=125;k>0;k--);
}
  void flash(void)
{
   
     while(!test)
{
    P1=0xff;
    delay(200);
    P1=0xf0;
    delay(200);
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
   }
   
}
  void xiaoshan(void)
{
    while(rest!=0xfe)
{   
P1=0xff;
  if(s1==0)   
  led1=0;
  beep=1;  
if(s2==0)     
  led2=0;
beep=1;
    if(s3==0)   
  led3=0;
beep=1;  
if(s4==0)  
  led4=0;     
beep=1;
}   
}
  void baojing(void)
{     
    P1=0xff;
  if(s1==0)   
    beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
   
if(s2==0)     
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
    if(s3==0)      
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
   
if(s4==0)      
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
   if(test==0)   
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
}
void main()
{      
        if(!test)   //实验按钮
                   flash();      
                  if(~rest) //消音         
            xiaoshan();            
                                                         
              if(s1==1)
     led1=1;   
      if(s1==0)     
                 led1=~led1; //没隔一段时间即对输出取反。
          delay(200); //闪烁间隔
    if(s1==0)
    baojing();
                                             
             if(s2==1)
    led2=1;   
      if(s2==0)   
                 led2=~led2; //没隔一段时间即对输出取反。
          delay(200); //闪烁间隔。
       if(s2==0)
      baojing();
         
    if(s3==1)
    led3=1;   
    if(s3==0)     
                 led3=~led3; //没隔一段时间即对输出取反。
          delay(200); //闪烁间隔。
       if(s3==0)
     baojing();
             if(s4==1)
    led4=1;     
    if(s4==0)     
                 led4=~led4; //没隔一段时间即对输出取反。
          delay(200); //闪烁间隔。
       if(s4==0)
    baojing();

                    帮你顶上去

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top