/* ch03-3-1.c - 蜂鳴器實驗程序 */
//==聲明區(qū)====================================
#include <reg51.h> // 定義8051暫存器的標頭檔,P2-17~19
sbit buzzer = P3^7 ; // 聲明蜂鳴器的位置為Port 3之bit 7
void delay(int); // 聲明延遲函數(shù)
void pulse_BZ(int,int,int); // 聲明蜂鳴器發(fā)聲函數(shù)
//==主程序====================================
main() // 主程序開始
{ while(1) // 無窮循環(huán),程序一直跑
{ pulse_BZ(100,1,1);
// 蜂鳴器發(fā)聲100 (0.5m+0.5m)=0.1s
delay(1000); // 延遲1000 0.5m=0.5秒
} // while循環(huán)結(jié)束
} // 主程序結(jié)束
//==子程序=====================================
/* 延遲函數(shù)開始,延遲x 0.5ms */
void delay(int x) // 延遲函數(shù)開始
{ int i,j; // 聲明整數(shù)變量i,j
for (i=0;i<x;i++) // 計數(shù)x次,延遲約x 0.5ms
for (j=0;j<60;j++); // 計數(shù)60次,延遲約0.5ms
} // 延遲函數(shù)結(jié)束
/* 蜂鳴器發(fā)聲函數(shù),count=計數(shù)次數(shù),TH=高態(tài)時間,TL=低態(tài)時間 */
void pulse_BZ(int count,int TH,int TL) // 蜂鳴器發(fā)聲函數(shù)開始
{ int i; // 聲明整數(shù)變數(shù)i
for(i=0;i<count;i++) // 計數(shù)count次
{ buzzer=1; // 輸出高態(tài)
delay(TH); // 延遲TH 0.5ms
buzzer=0; // 輸出低態(tài)
delay(TL); // 延遲TL 0.5ms
} // for循環(huán)結(jié)束
} // 蜂鳴器發(fā)聲函數(shù)結(jié)束
|