久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27232|回復: 12
收起左側

想讓蜂鳴器只響5秒,怎樣改?

  [復制鏈接]
ID:113369 發表于 2016-6-3 17:25 | 顯示全部樓層 |閱讀模式

#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;
}
回復

使用道具 舉報

ID:123289 發表于 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)。
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 19:33 | 顯示全部樓層
你的程序問題是:中斷程序中缺少一個計時器,對蜂鳴器進行計時。
回復

使用道具 舉報

ID:113369 發表于 2016-6-3 20:26 | 顯示全部樓層
yzwzfyz 發表于 2016-6-3 19:31
1、做一個時間中斷并計時。
2、在時間中斷程序中做一個蜂鳴計時器K。
3、設置一個標記BEEL,當BEEL=1時就 ...

可以幫忙修改一下嗎?
回復

使用道具 舉報

ID:123289 發表于 2016-6-3 21:09 | 顯示全部樓層
說到這個份上了,你應當自己做了。
回復

使用道具 舉報

ID:124970 發表于 2016-6-3 21:47 | 顯示全部樓層
最簡單的方法,寫個delay_ms的函數,放在while里,在增加個計數變量,計數5000次退出while,這樣比你直接在while計數,定時準確度要高一點,就行了!
回復

使用道具 舉報

ID:125016 發表于 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;
}
回復

使用道具 舉報

ID:125038 發表于 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;
}
回復

使用道具 舉報

ID:125115 發表于 2016-6-4 19:03 | 顯示全部樓層
延時5s
回復

使用道具 舉報

10#
無效樓層,該帖已經被刪除
11#
無效樓層,該帖已經被刪除
ID:125128 發表于 2016-6-4 20:34 | 顯示全部樓層
用計時器計數時間5s后條件循環停止
回復

使用道具 舉報

ID:125162 發表于 2016-6-5 00:21 | 顯示全部樓層
需要計時器
回復

使用道具 舉報

ID:125168 發表于 2016-6-5 02:33 | 顯示全部樓層
停timer0
回復

使用道具 舉報

ID:110895 發表于 2016-6-5 10:20 | 顯示全部樓層
做個定時5S的定時器,啟動定時器時,讓蜂鳴器響,定時到時讓蜂鳴器停,同時停定時器。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清在线观看 | 免费一区 | 久在线 | av在线天堂网 | 国产成人短视频在线观看 | 久久精品国产久精国产 | 午夜一级黄色片 | 一区二区三区亚洲 | 精品国产一区二区三区久久影院 | 国产美女一区二区 | 天天干天天插天天 | www.青娱乐| 欧美不卡在线 | 日韩毛片视频 | 高清视频一区 | 国产一级毛片精品完整视频版 | 日韩欧美综合在线视频 | 欧美色综合一区二区三区 | 看黄在线| 精品九九九| 日韩欧美国产精品综合嫩v 一区中文字幕 | 日韩欧美中文在线 | 日韩精品一区二区三区中文字幕 | 九九一级片 | 亚洲欧美成人影院 | 国产精品久久久久久久久污网站 | 国产在线视频在线观看 | 欧美日韩中文字幕在线播放 | 开操网 | 国产成人免费视频网站视频社区 | 日韩成人在线观看 | 欧美黑人狂野猛交老妇 | 免费在线色 | 国产农村妇女精品一区 | 午夜亚洲 | 日本中文字幕一区 | 日韩一区二区福利视频 | 中文字幕第一页在线 | 91久久久久 | www国产成人免费观看视频,深夜成人网 | 黄色免费三级 |