找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)T0定時(shí)器毫秒級(jí)精確定時(shí)程序源碼及分析2

[復(fù)制鏈接]
ID:423556 發(fā)表于 2018-11-29 12:02 | 顯示全部樓層 |閱讀模式
接上篇:http://www.torrancerestoration.com/bbs/dpj-143668-1.html
使用16位計(jì)數(shù)器,減少計(jì)數(shù)中斷的機(jī)率。

程序:


//全局變量聲明
sbit lcd_sid=P3^7; //定義12864數(shù)據(jù)端口
sbit lcd_sclk=P3^6; //定義12864時(shí)鐘脈沖端口
sbit pwm=P1^3;//

unsigned char t0_1ms; //T0計(jì)數(shù)器

//子函數(shù)聲明
void init(); //初始化子函數(shù)
void lcd(); //lcd子函數(shù)

//主函數(shù)開(kāi)始/////////////////////////////////////////////////////////////////////
void main()
{
        init(); //初始化
        while(1) //循環(huán)下面的程序
        {
                if(t0_1ms==5) //如果計(jì)數(shù)5次,5*0.2ms=1ms,執(zhí)行下面的程序
                {
                        t0_1ms=0; //計(jì)數(shù)器復(fù)位
               
                        lcd(); //lcd顯示
                }
        }
}

//主函數(shù)結(jié)束/////////////////////////////////////////////////////////////////////

//子函數(shù)程序
void t0_ms()interrupt 1 //T0中斷函數(shù),每次中斷都需要重裝初值,實(shí)際的中斷時(shí)間還需要加上中斷處理程序的時(shí)間。
{
        t0_1ms++; //每xms加一次
        TL0=0x18; //自動(dòng)重裝
        TH0=0xfc; //自動(dòng)重裝值
        pwm=~pwm; //
}

void init() //初始化子函數(shù)
{
        //T0初始化
        AUXR&=0x7f; //B7=0,T0設(shè)置為12倍速,其它設(shè)置不變
        TMOD&=0xf0; //xxxx 0000,T0設(shè)置置零
        TMOD|=0x01; //xxxx 0001,T0設(shè)置為16位手動(dòng)重裝
        TR0=1; //T0運(yùn)行
        EA=1; //
        ET0=1; //
}

void lcd(); //lcd子函數(shù)

IMG_20181129_114123R.jpg



可以看到時(shí)間比計(jì)算的要多,通過(guò)增加初裝值減少時(shí)間。
void t0_ms()interrupt 1 //T0中斷函數(shù)
{
        t0_1ms++; //每xms加一次
        TL0=0x19; //自動(dòng)重裝值,比初值加1
        TH0=0xfc; //自動(dòng)重裝值
        pwm=~pwm; //
}


IMG_20181129_104249R.jpg


示波器已經(jīng)測(cè)不出差別,在刪除不相關(guān)的程序后,沒(méi)有發(fā)現(xiàn)時(shí)間有變換。
基本達(dá)到要求。下面嘗試增加LCD的程序看看。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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