找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2941|回復(fù): 7
收起左側(cè)

報警產(chǎn)生器單片機程序問題

[復(fù)制鏈接]
ID:237797 發(fā)表于 2018-7-19 18:51 | 顯示全部樓層 |閱讀模式
1. 實驗任務(wù)
用P1.0 輸出1KHz 和500Hz 的音頻信號驅(qū)動揚聲器,作報警信號,要求1KHz
信號響100ms,500Hz 信號響200ms,交替進行,P1.7 接一開關(guān)進行控制,當(dāng)
開關(guān)合上響報警信號,當(dāng)開關(guān)斷開告警信號停止,編出程序。
2.電路圖
QQ圖片20180719184418.png

3.C 語言源程序
#include <AT89X51.H>
#include <INTRINS.H>
bit flag;             //此定義有啥作用?
unsigned char count;
void dely500(void)
{
unsigned char a,b;
    for(b=71;b>0;b--)
        for(a=2;a>0;a--);
}
void main(void)
{
while(1)
{
if(P1_7==0)
{
for(count=200;count>0;count--)  //此語句的作用?
{
P1_0=~P1_0;
dely500();
}
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
dely500();
}
}
}
}
4.問題見上面程序紅色字注解,由于才開始學(xué),看不明白。希望有知道的幫忙解釋一下。

回復(fù)

使用道具 舉報

ID:245937 發(fā)表于 2018-7-19 19:39 | 顯示全部樓層
bit flag;  定義一個標(biāo)志位,用來記錄狀態(tài)的。
or(count=200;count>0;count--)  //此語句的作用?
{
P1_0=~P1_0;
dely500();
}
燈閃爍程序
回復(fù)

使用道具 舉報

ID:237797 發(fā)表于 2018-7-19 19:43 | 顯示全部樓層
akclwq 發(fā)表于 2018-7-19 19:39
bit flag;  定義一個標(biāo)志位,用來記錄狀態(tài)的。
or(count=200;count>0;count--)  //此語句的作用?
{

謝謝你的回復(fù)!for(count=200;count>0;count--)這句如何理解呢?沒有bit flag;這個定義會有啥問題?
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2018-7-19 22:28 | 顯示全部樓層
找有注釋、看得懂的程序看!
回復(fù)

使用道具 舉報

ID:308437 發(fā)表于 2018-7-20 09:29 | 顯示全部樓層
for(count=200;count>0;count--)這個就是for循環(huán)。!
bit flag;   這個程序沒用到,可以刪了
回復(fù)

使用道具 舉報

ID:373388 發(fā)表于 2018-7-20 11:13 | 顯示全部樓層
從你的程序看,bit flag 是定義了一bit做為標(biāo)志,但在程序中沒有用;其次dely500()函數(shù)應(yīng)該是延時500us左右,調(diào)用1次500us,P1.0電平變化一次,正好輸出1kHz頻率, for(count=200;count>0;count--)這個循環(huán)執(zhí)行200次,每次調(diào)用1次延時500us,調(diào)用200次執(zhí)行100ms退出; 調(diào)用2次就大約1ms,P1.0電平反轉(zhuǎn)1次,就輸出500Hz頻率,for循環(huán)執(zhí)行200次,P1.0輸出500Hz頻率  200ms退出。
回復(fù)

使用道具 舉報

ID:237797 發(fā)表于 2018-7-23 08:04 | 顯示全部樓層
yousunny 發(fā)表于 2018-7-20 09:29
for(count=200;count>0;count--)這個就是for循環(huán)。!
bit flag;   這個程序沒用到,可以刪了

謝謝你的解答!
回復(fù)

使用道具 舉報

ID:237797 發(fā)表于 2018-7-23 08:04 | 顯示全部樓層
xhaity 發(fā)表于 2018-7-20 11:13
從你的程序看,bit flag 是定義了一bit做為標(biāo)志,但在程序中沒有用;其次dely500()函數(shù)應(yīng)該是延時500us左右 ...

謝謝你的詳細解釋,現(xiàn)在很明白了!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表