MSP430單片機(jī)指令周期小談
時(shí)鐘周期也稱為振蕩周期:定義為時(shí)鐘脈沖的倒數(shù)(時(shí)鐘周期便是直接供內(nèi)部CPU使用的晶振的倒數(shù) , 例如12M的晶振 , 它的時(shí)鐘周期便是1/12us) , 是電腦中的最基本的、最小的時(shí)間單位 。 在一個(gè)時(shí)鐘周期內(nèi) , CPU僅完成一個(gè)最基本的動(dòng)作 。 時(shí)鐘脈沖是電腦的基本工作脈沖 , 控制著電腦的工作節(jié)奏 。 時(shí)鐘頻率越高 , 工作速度就越快 。
本文引用地址:http://m.butianyuan.cn/article/201611/316429.htm機(jī)器周期:在電腦中 , 常把一條指令的執(zhí)行過程劃分為若干個(gè)階段 , 每一個(gè)階段完成一項(xiàng)工作 。 每一項(xiàng)工作稱為一個(gè)基本操作 , 完成一個(gè)基本操作所需要的時(shí)間稱為機(jī)器周期 。 8051系列單片機(jī)的一個(gè)機(jī)器周期由6個(gè)S周期(狀態(tài)周期)組成 。 一個(gè)S周期=2個(gè)時(shí)鐘周期 , 所以8051單片機(jī)的一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期 。
指令周期:執(zhí)行一條指令所需要的時(shí)間 , 基本由若干個(gè)機(jī)器周期組成 。 指令不同 , 所需的機(jī)器周期也不同 。
專用知識(shí):
在430中 , 一個(gè)時(shí)鐘周期 = MCLK晶振的倒數(shù) 。 假如MCLK是8M , 則一個(gè)時(shí)鐘周期為1/8us;
一個(gè)機(jī)器周期 = 一個(gè)時(shí)鐘周期 , 即430每個(gè)動(dòng)作都能完成一個(gè)基本操作;
一個(gè)指令周期 = 1~6個(gè)機(jī)器周期 , 詳細(xì)依據(jù)詳細(xì)指令而定 。
另:指令長度 , 只是一個(gè)存儲(chǔ)單位與時(shí)間沒有必然關(guān)系 。
MSP430依據(jù)型號(hào)的不同最多可以選擇使用3個(gè)振蕩器 。 我們可以依據(jù)需要選擇合適的振蕩頻率并可以在不需要時(shí)隨時(shí)關(guān)閉振蕩器以節(jié)省功耗 。 這3個(gè)振蕩器分別為:
(1)DCO 數(shù)控RC振蕩器 。 它在芯片內(nèi)部不用時(shí)可以關(guān)閉 。 DCO的振蕩頻率會(huì)受周圍環(huán)境溫度和MSP430工作電壓的影響且同一型號(hào)的芯片所產(chǎn)生的頻率也不相同 。 但DCO的調(diào)節(jié)功能可以改善它的性能他的調(diào)節(jié)分為以下3步:a:選擇BCSCTL1.RSELx斷定時(shí)鐘的標(biāo)稱頻率;b:選擇DCOCTL.DCOx在標(biāo)稱頻率基礎(chǔ)上分段粗調(diào);c:選擇DCOCTL.MODx的值進(jìn)行細(xì)調(diào) 。
(2)LFXT1 接低頻振蕩器 。 典型為接32768HZ的時(shí)鐘振蕩器此時(shí)振蕩器不需要接負(fù)載電容 。 也可以接450KHZ~8MHZ的標(biāo)準(zhǔn)晶體振蕩器此時(shí)需要接負(fù)載電容 。
(3)XT2 接450KHZ~8MHZ的標(biāo)準(zhǔn)晶體振蕩器 。 此時(shí)需要接負(fù)載電容不用時(shí)可以關(guān)閉 。
低頻振蕩器主要用來降低能量消耗如使用電池供電的系統(tǒng)高頻振蕩器用來對(duì)事件做出快速反應(yīng)或者供CPU進(jìn)行大量運(yùn)算 。 當(dāng)然高端430還有鎖頻環(huán)(FLL)及FLL+等模塊 , 但是初步不用考慮那么多 。
MSP430的3種時(shí)鐘信號(hào):MCLK系統(tǒng)主時(shí)鐘;SMCLK系統(tǒng)子時(shí)鐘;ACLK輔助時(shí)鐘 。
(1)MCLK系統(tǒng)主時(shí)鐘 。 除了CPU運(yùn)算使用此時(shí)鐘以外外圍模塊也可以使用 。 MCLK可以選擇任何一個(gè)振蕩器所產(chǎn)生的時(shí)鐘信號(hào)并進(jìn)行1、2、4、8分頻作為其信號(hào)源 。
(2)SMCLK系統(tǒng)子時(shí)鐘 。 供外圍模塊使用 。 并在使用前可以通過各模塊的寄存器實(shí)現(xiàn)分頻 。 SMCLK可以選擇任何一個(gè)振蕩器所產(chǎn)生的時(shí)鐘信號(hào)并進(jìn)行1、2、4、8分頻作為其信號(hào)源 。
(3)ACLK輔助時(shí)鐘 。 供外圍模塊使用 。 并在使用前可以通過各模塊的寄存器實(shí)現(xiàn)分頻 。 但ACLK只能由LFXT1進(jìn)行1、2、4、8分頻作為信號(hào)源 。
PUC復(fù)位后MCLK和SMCLK的信號(hào)源為DCODCO的振蕩頻率默認(rèn)為800KHZ 。 ACLK的信號(hào)源為LFXT1 。
MSP430內(nèi)部含有晶體振蕩器失效監(jiān)測(cè)電路監(jiān)測(cè)LFXT1(工作在高頻模式)和XT2輸出的時(shí)鐘信號(hào) 。 當(dāng)時(shí)鐘信號(hào)丟失50us時(shí)監(jiān)測(cè)電路捕獲到振蕩器失效 。 假如MCLK信號(hào)來源LFXT1或者XT2那么MSP430自動(dòng)把MCLK的信號(hào)切換為DCO這樣可以確保程序繼續(xù)運(yùn)行 。 但MSP430不對(duì)工作在低頻模式的LFXT1進(jìn)行監(jiān)測(cè) 。
為了實(shí)現(xiàn)詳細(xì)的時(shí)鐘可以設(shè)置跟時(shí)鐘相關(guān)的寄存器 , 在低端430中是DCOCTL、BCSCTL1和BCSCTL2三個(gè)寄存器 。 而對(duì)于高端的430 , 則要考慮SCFI0、SCFQCTL、FLL_CTL0、FLL_CTL1和BTCTL等幾個(gè)寄存器 。 詳細(xì)設(shè)置 , 參看DataSheet 。
單片機(jī)上電后 , 假如不對(duì)時(shí)鐘系統(tǒng)進(jìn)行設(shè)置 , 默認(rèn)800 kHz的DCOCLK為MCLK和SMCLK的時(shí)鐘源 , LFXTl接32768 Hz晶體 , 工作在低頻模式(XTS=O)作為ACLK的時(shí)鐘源 。 CPU的指令周期由MCLK決定 , 所以默認(rèn)的指令周期便是1/800 kHz="1".25μs 。 要得到lμs的指令周期需要調(diào)整DCO頻率 , 即MCLK=1 MHz , 只需進(jìn)行如下設(shè)置:BCSCTLl=XT20FF+RSEL2;
//關(guān)閉XT2振蕩器 , 設(shè)定DCO頻率為1 MHz
DCOCTL=DCO2
評(píng)論