51單片機(jī)的指令周期
8051芯片內(nèi)部有一高增益反相放大器,用于構(gòu)成振蕩器,反向放大器輸入端為XTAL1,輸出端XTAL2。在XTAL1和XTAL2兩端跨接一個(gè)石英晶體及兩個(gè)電容就構(gòu)成了穩(wěn)定自激振蕩器,電容器C1和C2通常都取30pF左右,對(duì)振蕩頻率有微調(diào)作用。振蕩頻率范圍是1.2-12MHz。
8051也使用外部震蕩脈沖信號(hào),由XTAL2端引腳輸入,XTAL1端接地,外部震蕩脈沖源方式常用于多塊8051同時(shí)工作,以便于同步。晶體振蕩器的振蕩信號(hào)從XTAL2端輸出到片內(nèi)的時(shí)鐘發(fā)生器上,時(shí)鐘發(fā)生器是一個(gè)二分頻觸發(fā)電路,它將振蕩器的信號(hào)頻率fosc除以2,向CPU提供兩相時(shí)鐘信號(hào)P1和P2。
時(shí)鐘信號(hào)的周期稱為機(jī)器狀態(tài)時(shí)間S,CPU就以兩相時(shí)鐘P1和P2為基本節(jié)拍指揮8051單片機(jī)各個(gè)部件協(xié)調(diào)地工作。
除時(shí)鐘周期外,還有兩個(gè)與時(shí)間有關(guān)的概念叫機(jī)器周期和指令周期。計(jì)算機(jī)的一條指令由若干個(gè)字節(jié)組成。執(zhí)行一條指令需要多少時(shí)間則以機(jī)器周期為單位。所謂一個(gè)機(jī)器周期就是指CPU訪問(wèn)存儲(chǔ)器一次所需要的時(shí)間。例如取指令,讀存儲(chǔ)器,寫(xiě)存儲(chǔ)器等等。MCS-51的一個(gè)機(jī)器周期為12個(gè)振蕩周期,分為六個(gè)S狀態(tài),S1-S6.而每個(gè)狀態(tài)又分為兩拍,稱為P1和P2。因此,一個(gè)機(jī)器周期中的12個(gè)振蕩周期表示為S1P1,S1P2,S2P1等直到S6P2.若采用6MHZ晶體振蕩器,則每個(gè)機(jī)器周期恰為2us。每條指令都由一個(gè)或幾個(gè)機(jī)器周期組成。
在MCS-51系統(tǒng)中,有單周期指令,雙周期指令。四周期指令只有乘,除兩條指令。指令的運(yùn)算速度和它的機(jī)器周期直接相關(guān),機(jī)器周期數(shù)較小則執(zhí)行速度快。在編程時(shí)要注意選用具有同樣功能而機(jī)器周期數(shù)小的指令。每一條指令的執(zhí)行都可以包括取指和執(zhí)行兩個(gè)階段。在取指階段,CPU從內(nèi)部或者外部ROM中取出指令操作碼及操作數(shù),然后再執(zhí)行這條指令。
在8051指令系統(tǒng)中,根據(jù)各種操作的繁簡(jiǎn)程度,其指令可由單字節(jié),雙字節(jié)和三字節(jié)組成。從機(jī)器執(zhí)行指令的速度看,單字節(jié)和雙字節(jié)指令都可能是單周期或雙周期,而三字節(jié)指令都是雙周期,只有乘,除指令占四個(gè)周期,一條指令的字節(jié)數(shù)表征這條指令在存儲(chǔ)器中所占空間大小,而周期數(shù)表征運(yùn)行這條指令所花時(shí)間長(zhǎng)短,即運(yùn)行速度。