?? didi.c
字號:
/********************************************************************
* 主 頁 : HTTP://WWW.QLMCU.COM
*
* 程序功能 : “嘀、嘀、…”報警聲的產生
*
* 應用軟件 : KEIL C
*
* 版 本 : KEIL 7.06
*
* 硬 件 : WS803、WS804、WS806
*
* 創建時間 : 2005-07-28
*
* 注:為了有更多實用的實驗程序供大家學習,部分程序參考網上的資源,
* 在此謝謝這些無私奉獻的朋友!!!
*
********************************************************************/
/* 程序詳細功能介紹:
* 用AT89S51單片機產生“嘀、嘀、…”報警聲從P3.2端口輸出,產生頻率為1KHz,
* 1KHZ方波從P3.2輸出0.2秒,接著0.2秒從P3.2輸出電平信號,如此循環下去,就形成我們所需的報警聲了。
*
* 程序設計方法
*(1.生活中我們常常到各種各樣的報警聲,例如“嘀、嘀、…”就是常見的一種聲音報警聲,
* 但對于這種報警聲,嘀0.2秒鐘,然后斷0.2秒鐘,如此循環下去,假設嘀聲的頻率為1KHz,
* 由于要產生上面的信號,我們把上面的信號分成兩部分,一部分為1KHZ方波,
* 占用時間為0.2秒;另一部分為電平,也是占用0.2秒;因此,我們利用單片機的定時/計數器T0作為定時,
* 可以定時0.2秒;同時,也要用單片機產生1KHZ的方波,對于1KHZ的方波信號周期為1ms,
* 高電平占用0.5ms,低電平占用0.5ms,因此也采用定時器T0來完成0.5ms的定時;
* 最后,可以選定定時/計數器T0的定時時間為0.5ms,而要定時0.2秒則是0.5ms的400倍,
* 也就是說以0.5ms定時400次就達到0.2秒的定時時間了。
*/
#include <AT89X51.H>
unsigned int t02s;
unsigned char t05ms;
bit flag;
void main(void)
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
t02s++;
if(t02s==400)
{
t02s=0;
flag=~flag;
}
if(flag==0)
{
P3_2=~P3_2;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -