新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用51單片機定時器的應用

        用51單片機定時器的應用

        作者: 時間:2016-11-18 來源:網(wǎng)絡 收藏
        用51單片機定時器產(chǎn)生周期的8種不同頻率的方波;其中定時器1控制頻率時間,即每個波形4s;定時器0控制波形的頻率;

        #include
        #define uint unsigned int
        #define uchar unsigned char
        sbit p23=P2^3;
        uint frq,flag;
        void main()
        {
        TMOD=0x11;
        frq=50000;
        flag=0;
        TH0=(65536-frq)/256;
        TL0=(65536-frq)%256; //開始定時為50Ms
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256; //定時50ms
        EA=1;ET0=1;ET1=1;
        TR0=1;TR1=1;
        while(1);
        }
        void timer0() interrupt 1
        {
        uchar varfor1hz;
        TR0=0;
        TH0=(65536-frq)/256;
        TL0=(65536-frq)%256;
        varfor1hz++;
        if(flag<=80 )
        {
        if( varfor1hz==10)
        {
        frq=50000;
        p23=!p23;
        varfor1hz=0;
        } //4s1HZ方波
        }
        if(flag>80 && flag <=160)
        {
        frq=50000;
        varfor1hz=0;
        p23=!p23;
        } //4s 10HZ
        if(flag>160 && flag <=240)
        {
        frq=10000;
        varfor1hz=0;
        p23=!p23;
        } //4s 50HZ
        if(flag>240 && flag <=320)
        {
        frq=5000;
        varfor1hz=0;
        p23=!p23;
        }//4s 100HZ
        if(flag>320 && flag <=360)
        {
        frq=2500;
        varfor1hz=0;
        p23=!p23;
        } //4s 200HZ
        if(flag>360 && flag <=480)
        {
        frq=1250;
        varfor1hz=0;
        p23=!p23;
        }
        if(flag>480 && flag <=560)
        {
        frq=625;
        varfor1hz=0;
        p23=!p23;
        }
        if(flag>560 && flag <=640)
        {
        frq=500;
        varfor1hz=0;
        p23=!p23;
        }
        TR0=1;

        }
        void timer1() interrupt 3
        {
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        flag++;
        if(flag==640)
        {
        flag=0;
        frq=50000;
        }
        }

        本文引用地址:http://www.104case.com/article/201611/315664.htm

        上面程序應注意的是: 進定時器中斷0后先把定時器0中斷關閉,防止內(nèi)部程序過多而造成中斷丟失;因為這樣是中斷控制中斷,容易出錯誤;所以要進入中斷0后,關中斷;



        關鍵詞: 51單片機定時

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 乡宁县| 永吉县| 田林县| 荃湾区| 安乡县| 邳州市| 通渭县| 深水埗区| 湘阴县| 丽水市| 孟津县| 桃源县| 府谷县| 永靖县| 昌吉市| 尼玛县| 湖南省| 洱源县| 那坡县| 桐城市| 涞水县| 石嘴山市| 威信县| 山东省| 葵青区| 全州县| 南陵县| 定边县| 姜堰市| 日土县| 上杭县| 防城港市| 通州区| 沈丘县| 台中市| 女性| 保德县| 绍兴市| 桐柏县| 巨野县| 马关县|