欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
想讓蜂鳴器只響5秒,怎樣改?
[打印本頁]
作者:
楊風feeling
時間:
2016-6-3 17:25
標題:
想讓蜂鳴器只響5秒,怎樣改?
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit beep=P3^5;
bit flag;
uint x,y;
void init() //初始化,開定時器0
{
TMOD=0x01;
TCON=0x10;
TH0=(65536-x)/256;
TL0=(65536-y)%256;
IE=0x82;
}
void main()
{
init();
while(1)
{
while(flag);
flag=0;
if(x<50000)
{
y+=500;
// x+=50;
}
else x=y=100;
}
}
void timer0() interrupt 1 //定時器中斷
{
flag=0;
beep=!beep;
TH0=(65536-x)/256;
TL0=(65536-y)%256;
}
作者:
yzwzfyz
時間:
2016-6-3 19:31
本帖最后由 yzwzfyz 于 2016-6-3 19:33 編輯
1、做一個時間中斷并計時。
2、在時間中斷程序中做一個蜂鳴計時器K。
3、設置一個標記BEEL,當BEEL=1時就起動蜂鳴器,=0時就關閉蜂鳴器。
4、當BEEL=1時(由你在需要蜂鳴的時候置1),時間中斷程序進行一次K+1,并判斷K是否>=5秒。是:則關閉蜂鳴器,并清BELL=0,K=0。不是:則不處理,即保持現狀。
5、主程序MAIN中不需要做什么,只(由你在需要蜂鳴的時候置1)。
作者:
yzwzfyz
時間:
2016-6-3 19:33
你的程序問題是:中斷程序中缺少一個計時器,對蜂鳴器進行計時。
作者:
楊風feeling
時間:
2016-6-3 20:26
yzwzfyz 發表于 2016-6-3 19:31
1、做一個時間中斷并計時。
2、在時間中斷程序中做一個蜂鳴計時器K。
3、設置一個標記BEEL,當BEEL=1時就 ...
可以幫忙修改一下嗎?
作者:
yzwzfyz
時間:
2016-6-3 21:09
說到這個份上了,你應當自己做了。
作者:
jimslin
時間:
2016-6-3 21:47
最簡單的方法,寫個delay_ms的函數,放在while里,在增加個計數變量,計數5000次退出while,這樣比你直接在while計數,定時準確度要高一點,就行了!
作者:
盧森
時間:
2016-6-4 10:34
做一個delay延遲函數
5秒就是5000ms
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;--);
}
定義蜂鳴器為fmq=
void fmq0()
{
fmq=0;
delay(5000);
fmq=1;
}
作者:
TIMEKILLER
時間:
2016-6-4 11:04
本帖最后由 TIMEKILLER 于 2016-6-4 11:20 編輯
因為定時器0的定時時間是不斷變化的,所以就簡單考慮,你需要再用一個定時器1,來對定時器0的中斷開關進行控制。為了增強實時性,可以不用定時器1中斷,在定時器0中斷里對定時器1的TH1/TL1寄存器當前值進行判斷。int i ;
if(((TH1<<8+TL1)>=50000)&&i<10)
{
i++;
TH1=0;
TL=0;
}
else
{
ET0=0;/*時間到,關掉定時器0中斷,蜂鳴器停止*/
i=0;
TH1=0;
TL1=0;
}
作者:
letu
時間:
2016-6-4 19:03
延時5s
作者:
lisiyuvv
時間:
2016-6-4 20:34
用計時器計數時間5s后條件循環停止
作者:
xixixixixixi
時間:
2016-6-5 00:21
需要計時器
作者:
fangchunwei
時間:
2016-6-5 02:33
停timer0
作者:
liuyimao485812
時間:
2016-6-5 10:20
做個定時5S的定時器,啟動定時器時,讓蜂鳴器響,定時到時讓蜂鳴器停,同時停定時器。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1