❶ 關於51單片機的數值計算問題
U,是多少位二進制數字?
-------------------------
MOV A, U
MOV B, #209
MUL AB ;乘以209,可以方便以後的計算.
;乘積為16位。再除以256,右移8位即可.
;商就是剩下在B中的8位數了.
MOV A, B
MOV B, #10
DIV AB ;除以10,余數就是"一位小數"
MOV R2, B ;保存小數.
MOV B, #10
DIV AB ;再除以10,余數就是"個位數"
MOV R1, B ;保存個位數.
MOV R0, A ;保存十位數.
;完
結果的兩位整數,一位小數:分別存在 R0, R1, R2 中。
❷ 單片機計數值問題,注意不是計數初值。已知晶振頻率為12MHz,問1ms的計數值應該如何計算,如果換成
1ms對應的1000的計數值,公式就是計數值=定時時間/機器周期。這是51單片機工作在方式1
❸ 52單片機T2定時計數器裝載計數值是如何計算
跟T1、T0完全一樣的。T2也是16位的定時器,你要定時1S,那就是20個50ms循環,也就是定時50mS,T0T1你應該會算吧,一模一樣,2^16-(定時時間/機器周期),50ms的常數還是3CB0(當然是16進制的)。
下面是我以前程序中的一段。
(以下是初始化中的)
TH2=0x3C;/**T2定時初值,50ms**/
TL2=0xB0;
T2CON=0x00;/**T2工作模式,16位定時器**/
RCAP2H=0x3C;/**T2自動重裝值,每次溢出後,自動將設置數值重新裝入**/
RCAP2L=0xB0;
ET2=1;/**T2中斷允許**/
EA=1;
TR2=1;/**T2啟動**/
(以下是中斷程序的一部分)
void Timer2(void) interrupt 5/**T2中斷響應程序**/
{
TR2=0;/**停止T2計數器**/
TF2=0;/**清除T2中斷標志,必須**/
con1s++;/**秒計數器加1**/
if(con1s==20)/**當秒計數器計到20,代表1秒,50ms*20=1秒**/
{
con1s=0;
second++;
。。。。。。
TR2=1;
}
T2最有意思的地方是,可以自動重裝載,不過它的中斷標志必須人工清除,與T0T1不同。
後兩者是初值必須人工裝載,但中斷標志可以自動清除,剛好相反。
❹ 單片機如何計算初值
一般最直接的想法就是,指定一個計時值x,然後從0開始累加計數,計數到x表示時間到,可以處理事務了。這種處理方法,需要一個數值比較器,每計一次數,就比較一下。這對單片機或者說硬體電路來講,一個8位計數器就需要包含一個8位數值比較器,實在不夠簡便。
第二種想法,是指定一個計時值x,然後進行減計數,減計數到0表示時間到。這也要一個比較器,只不過是個0值比較器,硬體電路上比上一種要簡單一些,但減計數器還是不常用。我們知道累加器才是最簡便的硬體電路之一。
上面兩種方法,都是軟體實現的定時器的合理想法。那麼硬體電路實現定時最簡便的方法是什麼呢?
那就是用累加器來實現。比如一個8位的累加器,可以從0累加計數,計數到256時溢出,產生溢出信號,就可以觸發事務處理了。
要是我們只需要計數10次就夠了,則可以將計數初值定義為246。那樣,計數10次後就可以達到256,產生溢出信號了。
所以就有了(2^n-x)。n是計數器的位數;2^n就是最大計數值;x是計數初值。整個這段,表示我們需要的計時次數。
計數器每次計數的時間間隔是t,及計數周期。那麼總的計時時長m=計數周期×計數次數=t×(2^n-x),也就是m=(2^n-x)×t。
計數位數n由選用的單片機確定,通常等於8,12,16或32等等,即8位、12位等計數器。計數周期t由定時器基礎時鍾確定,可通過設置定時器時鍾源和選擇時鍾分頻數確定。這兩項靈活性不大,一般在程序初始化時就應設定。
初值x可以在應用時,根據定時需求進行修改確定。
協調好n,t和x三者的設定,就可以完美實現定時功能了。
❺ 51單片機用定時器計時應該如何計算求大神支招
這個其實很簡單的,你只需要知道一個條件即可:晶振頻率。
因為51單片機的機器周期計算公式是12/晶振頻率MHz,若晶振為12MHz,則機器周期就是12/(12×10^6)=1us,也就是說計數器沒1us計數一次。
那麼有了這個條件就好辦多了,一般來說,12MHz晶振下,16位定時器滿計數是65536次,每次1us,最大就能計時65.536ms,則65536減去多少就是定時多少,如(65536-X)/256,就是定時X微秒。
那麼如果晶振不是12MHz,就要把上述的X乘以12/晶振,得到的值就是定時時長。原理相同。
有不懂的地方隨時回復我。
希望我的回答能幫助到你。
❻ 單片機計數初值的計算
呵呵 正確為你解答:
1 可以按定時時間的計算公式, 計算出定時器的時間常數X:
定時時間T=(2的N次方-X)12/單片機晶振頻率
2 N為定時器的工作方式:
方式0時,N=13
方式1時,N=16
方式2時,N=8
3 根據定時時間和工作方式,計算出時間常數X
把X轉換成二進制數,高8位送給TH1,低8位送給TL1,就可以啟動定時器開始定時了。
例如: 工作在方式1,定時時間為1000微秒 晶振頻率=12MHZ
則 定時時間T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H
❼ 【單片機】單片機的定時時間是怎樣計算
單片機的定時時間的計算公式=計數值(定時值)* 機器周期= 計數值(定時值)* 12 / 晶振頻率。
上面的兩個等號是等價的,因為,單片機的機器周期=12秒/晶振頻率,因此兩個公式通用。
完成一個基本操作所需要的時間稱為機器周期。一般,一個機器周期由 若干個S周期(狀態周期)組成。80C51系列單片機一個機器周期由6個S周期組成。一個S周期(狀態周期),由2個時鍾周期組成。
若干個機器周期,組成了指令周期。根據指令不同,所需的機器周期數也不同。
(7)單片機計數值怎麼計算擴展閱讀
幾種典型指令;
1、單位元組周期指令(比如 INC A)
2、雙位元組單周期指令(比如 ADD A,#data)
3、單位元組雙周期指令 (比如 INC DPTR)
4、單位元組雙周期指令 (比如MOVX A @DPTR)
❽ 51單片機各種位數定時器初值計算方法
對12MHz ,1個機器周期 1us ,12/fosc = 1us
。
方式0是13位定時器,最大時間間隔 = 2^13 = 8.192ms
方式1是16位定時器,最大時間間隔 = 2^16 = 65.536ms
方式2是8位定時器,最大時間間隔 = 2^8 = 0.256ms =256 us
方式3 僅適用於T0,此時T0分成兩個8位計數器,T1停止計數
當選用定時器的方式1時,設機器周期為Tcy,定時器產生一次中斷的時間為t,那麼需要計數的個數N=t/Tcy,裝入THX和TLX中的數分別為:
THX = (2^16 - N)/256 TLX = (2^16 -N )%256(此處的X為定時器0或定時器1)
公式為:(2^y - X)*Tcy = t
Tosc= 1/ fosc
一個機器周期 = 12個時鍾周期 = 12/fosc
溢出速率 = 1 / 溢出時間
故:初值X = 2^y – t/Tcy
THX = 高八位
TLX = 低八位
註:
X:定時器初值
N:計數值
y:定時器工作方式
fosc:晶振頻率
Tcy:機器周期,Tosc:時鍾周期
Tcy = 1/Tosc
❾ 單片機中定時計數器的TH0和TL0的值如何計算
單片機在不同的工作方式下,計數器的位數不同,因而最大計數值也不同。現在設最大計數值為M,那麼在各方式下的M值如下;
方式0:M=2^13=8192
方式1:M=2^16=65536
方式2:M=2^8=256
方式3:定時器0分為兩個8為定時器,所以兩個M均為256.
因為定時器是做加1計數,並在計滿溢出時產生中斷,因此初值X可以這樣計算:
X=M-計數值
現在舉例說明定時處置的計算方法,若80C51主頻為6MHz,要求產生1ms的定時,計算初值。
在6MHz的主頻下,計數器每加1所需的時間是2uS。若果要產生1ms的計時就需要「加1」
500次。那麼500即為計數值,如果要求在方式1下工作,則計數初值X=M-計數值=65536-500=65036=FE0CH
❿ NEC單片機的計數初值的計較
定時或計數法子下計數初值若何確定,定時器決議不同的事變法子,不同的把持情勢其計數值均不類似。若設最大計數值為m,各把持情勢下的m值為:
情勢0:m=213=8192
情勢1:m=216=65536
情勢2:m=28=256
情勢3:m=256,定時器t0分成2個自力的8位計數器,所以th0、tl0的m均為256。
因為mcs-51的兩個定時器均為加1計數器,當初到最大值(00h或0000h)時產生溢出,將tf職位地方1,可發出溢出間斷,因此計數器初值x的計較式為:x=m-計數值式中的m由把持情勢確定,不同的把持情勢計數器的長不類似,故m值也不類似。而式中的計數值與定時器的事變法子有關。
1、計數事變法子時
計數事變法子時,計數脈沖由外部引入,是對外部沖進行計數,因此計數值依照哀求確定。其計數初值:x=m-計數值
例如:某工序哀求對外部脈沖旗幟暗號計100次,x=m-100
2、定時事變法子時
定時事變法子時,因為計數脈沖由內部供給,是對板滯周期進行計數,故計數脈沖頻率為fcont=fosc×1/12、計數周期t=1/fcont=12/fosc定時事變法子的計數初值x便是:
x=m-計數值=m-t/t=m-(fosc×t)/12
式中:fosc為振盪器的振盪頻率,t為哀求定時的時間。
定時器有兩種事變法子:即定時和計數事變法子。由tmod的d6位和d2位決議,其中d6位決議t1的事變法子,d2位決議t0的事變法子。=0事變在定時法子,=1事變在計數法子。並有四種把持情勢:
1、情勢0:13位計數器,tli只用低5位。
2、情勢1:16位計數器。
3、情勢2:8位自動重裝計數器,thi的值在計數中不變,tli溢出時,thi中的值自動裝入tli中。
4、情勢3:t0分成2個自力的8位計數器,t1停止計數。
mcs-51有5個間斷源,可分為2個間斷優先順序,即高優先順序和低優先順序,間斷自然優先順序:
外部間斷0;定時器0間斷;外部間斷1;定時器1間斷;
串列口間斷;定時器2間斷
(1)同級或高優先順序的間斷在進行中;
(2)現在的板滯周期還不是履行指令的末端一上板滯周期,即在履行的指令還沒完成前不響應任何間斷;
(3)在履行的是間斷返回指令ret1或是訪謁專用寄存器ie或ip的指令,換而言之,在reti大要讀寫ie或ip今後,不會登時響應間斷請求,起碼要在履行此外一要指令之扣才會響應。
(一)間斷響應條件
cpu響應間斷的條件有:
(1)有間斷源發出間斷請求;
(2)間斷總允許位ea=1,即cpu開間斷;
(3)哀求間斷的間斷源的間斷允許位為1,即沒有被屏蔽。
八、串列口事變法子及幀格局
mcs-51單片機串列口可以經過進程軟體設置三種辦法:
法1:與常見的微型計較機的串列口不同,它又叫同步移位寄存器輸出法子。在這種法子下,數據從rxd端串列輸出或輸入,同步旗幟暗號從txd端輸出,波特率安穩不變,為振盪率的1/12。該法是以8位數據為一幀,沒有肇端起誓位和停止位,先發送或接管最低位。
法2:可接管或發送11位數據,以11位為一幀,比方式1增加了一個數據位,此外類似。第9個數據即d8位具有特別的用場,可以經過進程軟體摟控制它,再加特別成果寄存器scon中的sm2位的配合,可使mcs-51單片機串列口適用於多機通信。法子2的波特率安穩,只需兩種決議,為振盪率的1/64或1/32,可由pcon的最高位決議。
法3:法3與法2類似,唯一的區別是法3的小組特率是可變的。而幀格局與法2-樣為11位一幀。所以子3也適當於多機通信。