專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)中斷定時(shí)器淺談

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月19日   【字體:

中斷處理函數(shù)原型

 void    timer1()  interrupt    using 0 

timer1()  函數(shù)名  

interrupt  表示是中斷處理函數(shù)

表示是第幾個(gè)中斷源的處理函數(shù) 

using  表示是使用第幾組工作寄存器一般在C語言里面編譯器屏蔽了會(huì)自動(dòng)分配程序員一般不用關(guān)心。

 

注意:如果在中斷處理函數(shù)中進(jìn)行處理數(shù)據(jù)不能處理的數(shù)據(jù)量太大,因?yàn)槎〞r(shí)器時(shí)間已到它就會(huì)又進(jìn)入下一個(gè)中斷處理函數(shù),也就是這個(gè)中斷處理函數(shù)還沒有處理完下一個(gè)中斷又來了。這樣會(huì)造成結(jié)果錯(cuò)誤或異常。

 

定時(shí)器:

    定時(shí)器又2個(gè)寄存器控制,一個(gè)是TMOD  用于選擇定時(shí)器、計(jì)數(shù)器 T0,T1的工作模式和工作方式。另一個(gè)是TCON 用于控制TO,T1的啟動(dòng)和停止,同時(shí)包含了T0,T1的狀態(tài),這2個(gè)寄存器在單片機(jī)復(fù)位時(shí)候所有位都被清0.

TMOD 是不能位尋址的,因?yàn)樗牡刂肥?9H不能被8整除。只能賦值或者  進(jìn)行  與  或 運(yùn)算進(jìn)行賦值 ,其中有位是C/T 是把它配置成定時(shí)器還是計(jì)數(shù)器 0 表示是定時(shí)器 M0,M1 這2位進(jìn)行是定時(shí)器的模式幾共4種模式其中方式1為16  高8位  TH0,低8位在 TL0   (65536-50000)/256  這就是高8位   (65536-50000)%6 放入低8位  是大約50毫秒  前提是晶振為12兆赫。凡是用11.0592 的晶振是因?yàn)閱纹瑱C(jī)要進(jìn)行 串口通訊因?yàn)閷?shí)現(xiàn)標(biāo)準(zhǔn)的波特率  4800  2400  115200 好計(jì)算。才選用11.0592的晶振。單片機(jī)的晶振可以選12兆一下的晶振都可以。12兆算是最快的速度了。當(dāng)然不排除其他高速的單片級(jí),可能達(dá)到更高運(yùn)算速度。定時(shí)器最高一次定時(shí)為65535的數(shù)字,也就是大概65毫秒,因?yàn)槭?6位  高8位低8位。所以如果用定時(shí)器長時(shí)間定時(shí)可以  設(shè)置多次定時(shí)然后在main里面判斷。實(shí)現(xiàn)長時(shí)間定時(shí)。定時(shí)器是一個(gè)加1的寄存器。初值最小為0 。最大65535 ,單片機(jī)做延時(shí)不占用MCU的資源比用 while  或 for循環(huán)好,能提高效率,當(dāng)時(shí)浪費(fèi)一個(gè)I/O口,所以用時(shí)綜合考慮。

     在一般情況下都是定時(shí)器與中斷一起使用的,如:定時(shí)器時(shí)間到發(fā)生中斷,一般都是IE  TMOD TCON 三個(gè)寄存器聯(lián)合使用 TCON 控制TR0 TR1 運(yùn)行與停止  TMOD 控制工作模式   IE 控制總中斷 與 對(duì)應(yīng)的那個(gè)中斷的開關(guān)如 IE =1  ET0 =1 .

 

最重要的是定時(shí)器的啟動(dòng)與停止 直接控制 TR0 TR1這2位 置1 置0就可以了。

也就是是說中斷里可以  把它置為0   置為1   ,或者有初值自加的也清0.

還有就是全局變量名與局部變量名不能相同如果相同,局部變量會(huì)改變?nèi)肿兞康闹。到時(shí)候結(jié)果不是期望值。 

關(guān)閉窗口

相關(guān)文章