這里將涉及到單片機中斷的應用,在cpu的一步步按照指令運行的過程中(主程序),可能會有其它的更緊急的需要做的事情(中斷服務程序),需要cpu暫時停止當前的程序(主程序),做完了(中斷服務程序)之后,又可以繼續去運行先前的程序(主程序)。就像你正在吃飯,一邊又在給水桶里放水,吃著吃著,水滿了,你就得趕快去把水龍頭關掉或者換一個空的水桶,再回來吃飯。 單片機的定時器就像是一個水桶,你讓它啟動了,也就是水龍頭打開了;開始裝水了;定時在每個機器周期不斷自動加1,最后溢出了;水桶的水不斷增加,最也就滿出來了;定時器溢出時,你就要去做處理了;水桶的水滿了,你也應該處理一下了;處理完后,單片機又可以回到剛剛開停止的地方繼續運行;水桶處理了,先前你在做什么也可以繼續去做什么了。 單片機的主程序是從0x0000開始運行的,單片機服務程序從哪里開始運行呢?在51里,有多個中斷服務程序入口,0號入口是外中斷0,地址在0x0003;1號入口是定時器0,在 0x000B
定時器常見的有兩種: 1、比較定時,此類定時器內部有一個標準計時器,當時間到達設定時間時,定時器接通或斷開電路。2、倒計數定時器,這類定時器可以不用標準計時器,只要有一個計數用的時鐘脈沖計數器就可以了。當計數脈沖到達敲定值時控制輸出電路。
您好 很高興回答你的問題 :定時器常見的有兩種: 1、比較定時,此類定時器內部有一個標準計時器,當時間到達設定時間時,定時器接通或斷開電路。 2、倒計數定時器,這類定時器可以不用標準計時器,只要有一個計數用的時鐘脈沖計數器就可以了。希望回答能對你有所幫助 謝謝。
單片機定時器中斷原理和C語言代碼詳解(轉)我之前都是用ARM7,單片機基本不會。但一個項目要用到51,所以克了一下51還是有點模糊,今天調了這個代碼之后,對51定時器中斷
單片機的定時器就像是一個水桶,你讓它啟動了,也就是水龍頭打開了;開始裝水了;定時在每個機器周期不斷自動加1,最后溢出了;水桶的水不斷增加,最也就滿出來了;定時器溢出時,你就要去做處理了;水桶的水滿了,你也應該處理一下了;處理完后,單片機又可以回到剛剛開停止的地方繼續運行;水桶處理了,先前你在做什么也可以繼續去做什么了。
單片機的主程序是從0x0000開始運行的,單片機服務程序從哪里開始運行呢?在51里,有多個中斷服務程序入口,0號入口是外中斷0,地址在0x0003;1號入口是定時器0,在 0x000B;2號入口是外中斷1;地址在0x0013,3號入口是定時器2;地址在0x001B,等等。當中斷發生時,程序就記下當前運行的位置,跳到對應的中斷入口去運行中斷服務程序,運行完之后,又跳回到原來的位置繼續運行。
在C51中,你不用理會中斷服務程序放在哪里,會怎么跳轉。你只要把某個函數標識為幾號中斷服務函數就可以了。在發生了對應的中斷時,就會自動的運行這個函數。