另外我請問一下那個高低電平初始值的計算和51單片機是一樣的嗎,我在網上看見好幾種算法,以4MHZ晶振頻率,1:8預分配為例子。
第一種是:時鐘周期為0.25us,指令周期為0.25*4=1us,經過預分頻1:8后,指令周期變為8us,TMR1IF溢出為1時需要通過低八位8us*256=2048us,通過高八位2048us*256=524288us,定時器需要524288us溢出,設定0.5s溢出:524288-500000=24288us,指令周期x預分頻比=預分頻器溢出的周期:1usX8=8us,初始值的時間/預分頻器溢出的周期=初始值 :24288us/8us=3036,將其轉換為十六進制為0x0BDC;
第二種是:從0加滿需要65536個機器周期,每個機器周期等于12個時鐘周期,4M晶振每個機器周期為0.25us,每加一個數的機器周期為12*0.25=3us,中斷一次耗時50ms,中斷20次為1s,50ms的初值計算為:中斷值 =(65536-初值)*機器周期,初值=(65536-(50000/3);
不知道哪種算法是對的,第一個的初值網上很少是524288,幾乎都是65536;第二個的機器周期等于12個時鐘周期不知道這個是以什么為例子,pic單片機是不是機器周期都是等于4個時鐘周期?而且第二種1:8分頻好像也沒有用到。希望大佬能解惑!!! |