<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        51單片機中斷定時器淺談

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年04月19日   【字體:

        中斷處理函數原型

         void    timer1()  interrupt    using 0 

        timer1()  函數名  

        interrupt  表示是中斷處理函數

        表示是第幾個中斷源的處理函數 

        using  表示是使用第幾組工作寄存器一般在C語言里面編譯器屏蔽了會自動分配程序員一般不用關心。

         

        注意:如果在中斷處理函數中進行處理數據不能處理的數據量太大,因為定時器時間已到它就會又進入下一個中斷處理函數,也就是這個中斷處理函數還沒有處理完下一個中斷又來了。這樣會造成結果錯誤或異常。

         

        定時器:

            定時器又2個寄存器控制,一個是TMOD  用于選擇定時器、計數器 T0,T1的工作模式和工作方式。另一個是TCON 用于控制TO,T1的啟動和停止,同時包含了T0,T1的狀態,這2個寄存器在單片機復位時候所有位都被清0.

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

             在一般情況下都是定時器與中斷一起使用的,如:定時器時間到發生中斷,一般都是IE  TMOD TCON 三個寄存器聯合使用 TCON 控制TR0 TR1 運行與停止  TMOD 控制工作模式   IE 控制總中斷 與 對應的那個中斷的開關如 IE =1  ET0 =1 .

         

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

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

        還有就是全局變量名與局部變量名不能相同如果相同,局部變量會改變全局變量的值。到時候結果不是期望值。 

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮