1. 單片機中斷程序中為什麼要重新賦值
在工作方式2時是自動重裝初值的,不需要給TH0/TL0重新賦值;在其他工作方式下需要。定時器工作時其TH/TL的值是一直加,直到溢出得到中斷。工作方式2是8位定時/計數器,其高8位被用來保存初值,來中斷後就自動把保存在其中的初值付給定時計數器,而方式0方式1是13位、16位定時/計數器,2個寄存器都使用掉了,硬體不能保存初值,需要軟體每次在中斷中賦初值。
2. 在主程序中設置定時器的初值後為什麼還要在中斷子程序中重新設置初值
初值在運行過程中計數器的不斷加1,直到溢出時產生中斷。因為這種定時方式(有的方式可以自動重置的),單片機不能重置初值,所以進入中斷後必須人工重置初值,為下一次中斷作準備。
主函數里的是初始化的初值。因為有的定時方式,定時器溢出時,單片機沒有重裝初值的功能。所以定時函數里要重裝初值。可以設置不同的值,但定時時間主要是以重裝的來計了。
3. 51單片機TMOD定時器中,模式2的八位自動重裝是什麼意思最好舉個例子
在模式2中定時器只有八位參與計數,當定時器低八位(如TL1)計數溢出時,單片機自動把存在TH1中的值裝進TL1,繼續進行定時計數,這就完成了八位自動重裝。與模式1相比,不需要在中斷程序中對TL1再賦值,只需在初始化時,對TL1和TH1賦相同的值就行了。一般在單片機串列通信編程時才用到模式2.
4. 單片機中定時器有一種是8位自動重裝定時,不知是啥意思
8位自動重裝是定時器工作模式的一種,最大可以技術2的8次冪(也就是256),這種模式不需要反復的往TH0和TL0里寫值,只需要初始化的時候寫一次即可,溢出之後,自動將TH0裡面的值存入TL0里。
5. 51單片機為什麼在於主程序中給TH1裝初值,又要在中斷函數中TH1的重裝初值這個代碼讀了很久還是不懂
首先你要知道51定時器的原理 ,
定時器 類似於一個盒子裡面能裝 65535個球 ,每裝一個球 是1us(12MHZ晶振) ,這樣如果開始是空的 裝滿就是65535us 。
那麼我想定時50ms 怎麼辦呢 那麼我就預先在盒子中放65535-50000=15535個球 不求好了嗎
這樣就只能再往裡面放50000個球了
TH1 TL1就相當於這個盒子 對吧
15535就相當於第一次放入初值
但是我不能只定時一次 50ms 吧 可是現在盒子已經滿了 怎麼辦呢 ?由於盒子滿了會發出報警 !
也就是中斷請求 這時候我們需要把盒子中的求清空在放15535個球 也就是在中斷中再次裝入初值
這樣應該能理解吧 我語文不好見諒
6. 在主程序中設置定時器的初值後為什麼還要在中斷子程序中重新設置初值
初值在運行過程中計數器的不斷加1,直到溢出時產生中斷。因為這種定時方式(有的方式可以自動重置的),單片機不能重置初值,所以進入中斷後必須人工重置初值,為下一次中斷作準備。
主函數里的是初始化的初值。因為有的定時方式,定時器溢出時,單片機沒有重裝初值的功能。所以定時函數里要重裝初值。可以設置不同的值,但定時時間主要是以重裝的來計了。
7. 單片機定時器自動重裝,可在中斷內重裝初值嗎
可以的。即使自動重載,也可以在進入中斷後手動修正初值。
軟體PWM的時候就是這么搞的。
8. 單片機 定時器自動重裝相比不自動重裝的優點在哪裡
自動重裝載就是在定時器溢出後自動裝入設定的初值,這樣的好處當然是顯而易見的,不需要在中斷伺服器裏手動賦值了,所以可以精確的定時,比如T1和T2做波特率發生器時都需要設置成自動重裝載模式就是如此。