欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機消防車、救護車聲音模擬源程序
[打印本頁]
作者:
1231654阿三
時間:
2019-6-1 23:09
標題:
51單片機消防車、救護車聲音模擬源程序
#include<reg52.h> //包含特殊功能寄存器的定義
sbit SPK=P1^0; //定義喇叭端口
sbit K1=P1^4; //報警聲按鍵
sbit K2=P1^5; //消防聲按鍵
sbit K3=P1^6; //救護聲按鍵
sbit K4=P1^7; //停止按鍵
unsigned char frq; //頻率變量
unsigned char sel=0; //功能變量
void DelayUs(unsigned char t) //us延時函數
{
while(--t); //大致延時tus
}
void DelayMs(unsigned char t) //ms延時函數
{
while(t--) //大致延時tms
{
DelayUs(245);
DelayUs(245);
}
}
void Keyscan() //鍵盤掃描
{
if(K1==0)sel=1; //報警聲
if(K2==0)sel=2; //消防聲
if(K3==0)sel=3; //救護聲
if(K4==0)sel=0; //停止
}
void Init_Timer0(void)
{
TMOD|=0x01; //方式1,使用"|"可使用多個定時器時互不影響
EA=1; //開總中斷
ET0=1; //開定時器中斷
TR0=0; //關閉定時器
}
void main() //主程序
{
unsigned char i; //循環變量定義
Init_Timer0(); //初始化定時器
while(1)
{
Keyscan();
if(sel==0)TR0=0;
else TR0=1;
if(sel==1) //模擬報警聲
{
DelayMs(1); //延時1ms,累加頻率值
frq++;
}
if(sel==2) //模擬消防車聲
{
for(i=0;i<200;i++)
{
DelayMs(10); //延時10ms,累加頻率值
frq=i;
}
for(i=200;i>0;i--)
{
DelayMs(10); //延時10ms,累減頻率值
frq=i;
}
}
if(sel==3)
{
frq=0;
for(i=0;i<60;i++)DelayMs(10);//播放1s左右一種頻率
frq=100;
for(i=0;i<60;i++)DelayMs(10);//播放1s左右另外一種頻率
}
}
}
void Timer0_isr(void) interrupt 1
{
TH0=0xfe; //重新賦值
TL0=frq; //低8位值在主程序中不斷累加
SPK=!SPK; //端口電平取反
}
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1