欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)聲光報(bào)警器代碼 [打印本頁(yè)]

作者: 如圖一人頭呀    時(shí)間: 2018-11-21 21:48
標(biāo)題: 單片機(jī)聲光報(bào)警器代碼


/* 本程序是一個(gè)以89C51為核心的聲光報(bào)警器控制程序
系統(tǒng)的晶振頻率12MHz,外界報(bào)警觸發(fā)脈沖接至INT0,報(bào)警復(fù)位按鈕接P1.2,喇叭接P1.1
當(dāng)外界報(bào)警脈沖觸發(fā)報(bào)警后,LED(接P1.0)以1Hz的頻率閃動(dòng),同時(shí)喇叭種發(fā)出"Wu,Wa......"的警笛聲
該聲音由1kHz和500Hz方波以0.5秒為間隔交替發(fā)聲
值班人員按動(dòng)報(bào)警復(fù)位鈕后聲光報(bào)警停止。*/

#include "AT89X51.h"

bit hisound;     /* 高音標(biāo)志 */
sbit led=P1^0;         /* 報(bào)警燈接口 */
sbit speak=P1^1; /* 喇叭接口 */
sbit stop=P1^2;         /* 復(fù)位按鈕 */
unsigned char data i; /* 50ms中斷次數(shù)計(jì)數(shù)單元 */
void delayms(unsigned int x);  /* 延時(shí)1ms倍數(shù)的延時(shí)子程序 */

void main(void)
{
IT0=1; /* 設(shè)置INT0為邊沿中斷 */
ET0=1; /* 允許T0中斷 */
ET1=1; /* 允許T1中斷 */
EX0=1; /* 允許INT0中斷 */
PT0=1; /* T0設(shè)為高級(jí)中斷 */
EA=1;  /* 開中斷 */
hisound=1; /* 高音標(biāo)志置1,先發(fā)高音 */
led=1;  /* 熄滅報(bào)警燈 */
speak=0; /* 喇叭斷電 */
TMOD=0x11; /* 設(shè)T0、T1為定時(shí)器,方式1 */
TH0=0xfe; /* 0.5ms定時(shí)初值 */
TL0=0x0c;
TH1=0x3c;  /* 50ms定時(shí)初值 */
TL1=0xb0;
i=10;   /* 50ms中斷10次為0.5秒 */
stop=1; /* 允許報(bào)警復(fù)位按鈕輸入 */
while (1)
{
   if (stop==0) /* 如果按下停止報(bào)警按鈕 */
    {
     delayms(20);  /* 延時(shí)20ms消除開關(guān)抖動(dòng) */
      }
   if (stop==0)
    {
      TR0=0;  /* 停止T0定時(shí) */
      TR1=0;  /* 停止T1定時(shí) */
      led=1;  /* 熄滅報(bào)警燈 */
      speak=0; /* 關(guān)閉喇叭 */      
      }
   }
}

/* INT0 中斷服務(wù)程序 */
void int0(void) interrupt 0
{
TR0=1; /* 啟動(dòng)T0定時(shí) */
TR1=1; /* 啟動(dòng)T1定時(shí) */
}

/* T0中斷服務(wù)程序 */
/* 用來產(chǎn)生救護(hù)車的警笛聲 */
void timer0(void) interrupt 1
{
  if (hisound==1)  /* 如果產(chǎn)生高音 */
    {
     TH0=0xfe;   /* 0.5ms定時(shí)初值 */
     TL0=0x0c;
      }
   else
    {
     TH0=0xfc;   /* 1ms定時(shí)初值 */
     TL0=0x18;      
      }
   speak=!speak; /* 驅(qū)動(dòng)喇叭的輸出取反 */
}

/* T1中斷服務(wù)程序 */
/* 用來產(chǎn)生0.5秒的定時(shí) */
void timer1(void) interrupt 3
{
  TH1=0x3c; /* 50ms定時(shí)初值 */
  TL1=0xb0;
  i=i-1;
  if (i==0) /* 如果到0.5秒 */
    {
      i=10;
      hisound=!hisound;  /* 高音標(biāo)志取反,變音 */
      led=!led;   /* 報(bào)警燈改變亮滅 */
      }
}

/* 延時(shí)子程序,延時(shí)1ms的倍數(shù) */
void delayms(unsigned int x)
{
  unsigned char j;
  while(x--)
    {
      for(j=0;j<123;j++){;}
    }
}


作者: dabige    時(shí)間: 2018-12-18 10:47
為什么復(fù)位開關(guān)不行啊




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1