1. 怎麼計算單片機中的下列的延遲函數(12M)
首先你要知道一個指令周期是幾秒
演算法是1/(晶振頻率除以12)
然後你要知道循環究竟執行了幾個指令周期
你可以用keil里在線反匯編命令看看你的循環編譯成機器語言後到底是幾個指令周期
這樣就知道了延遲時間
當然你取近似值也可以的
比如
for(i=0,i<255,i++){x=2}
這里x=2是一個指令周期
而執行了255次
假如你的晶振是12mhz的
則你執行一個指令周期是1us
255次是0.255ms
2. 單片機中,12M的晶振是什麼意思
就是機器周期的頻率,單片機每個動作的最小周期就是12M倒數。指令周期和時鍾周期(機器周期)是不同的,這要看指令類型和處理器架構。老的51一般的最小指令周期是12個機器周期,很多指令要多個指令周期。現在的高速單片機就快很多。要編定時程序最好用單片機的內部定時器,需要了解你用的單片機的定時器工作情況,程序很簡單。
3. STC89C52單片機為什麼選用12M的晶振
個人以為,選用12M晶振主要有兩個理由,一是運行速度快,二是51單片機內部是12分頻,採用12M晶振可以得到1μS的的時鍾周期,這樣定時計算會比較方便。
4. 單片機上的晶振為什麼有時是12MHZ,有時是11.0592MHZ有什麼區別么
標準的51單片機晶振是1.2M-12M,一般由於一個機器周期是12個時鍾周期,所以先12M時,一個機器周期是1US,好計算,而且速度相對是最高的(當然現在也有更高頻率的單片機)。
11.0592M是因為在進行通信時,12M頻率進行串列通信不容易實現標準的波特率,比如9600,4800,而11.0592M計算時正好可以得到,因此在有通信介面的單片機中,一般選11.0592M
5. 單片機中晶振頻率為12MHZ的機器周期怎麼算
1、系統晶振頻率是12M,則機器周期=12/12=1us;
2、定時1ms=1*1000=1000us;
3、工作在方式0下:最大計數值是2^13=8192;
4、定時初值=8192-(1*1000)=7192;
5、換算成十六進制數為:定時初值=1C18H。
定時器中斷是由單片機中的定時器溢出引起的中斷,51單片機中有兩個定時器t0和t1。
定時/計數器t0和t1由兩個8位專用寄存器組成,即定時/計數器t0由th0和tl0組成,t1由th1和tl1組成。
此外,還有兩個8位特殊功能寄存器tmod和tcon。tmod負責控制和確定t0和t1的功能和工作模式。tcon用於控制t0和t1的開始或停止計數,以及定時/計數器的狀態。
(5)單片機中的12m擴展閱讀:
計時器工作流簡介:
定時器的工作過程可以按此順序進行(以51為例,使用定時器0模式生成一個50ms的定時器)
一、確定使用哪個計時器和使用哪種方式。在此步驟中,使用tmod進行設置。tmod的低位4位用於設置定時器0,高位4位用於設置定時器1。
其中,m0和m1用於設置計時器的工作方式。澆口一般不需要設置。C/T選擇計數模式或計時模式,如TMOD=0x01,這意味著定時器0在模式1下工作。
二、接下來,我們需要設定時間。50毫秒的定時器,th0=65535-50000/256和tl0=65535-50000%256可以這樣使用。
可以理解為:因為這是定時器的初始值,也就是說,計數脈沖在這個數字的基礎上向上增加,當它達到65535時,就會溢出並中斷。
三、第三步是打開中斷,並使用ie寄存器打開總中斷ea=1。此步驟對於所有中斷都是必需的,然後打開定時器0中斷和ET0=1。
四、此時,准備工作完成,定時器啟動,使用tcon寄存器tr0=1實現50ms的定時器。
文獻:《單片機原理及應用》,曹巧媛主編,電子工業出版社,第四章單片機定時功能的應用——第一節定時器/計數器的結構和工作原理