51單片機(jī)的時(shí)鐘及總線時(shí)序和總線擴(kuò)展
說到51單片機(jī)的時(shí)鐘首先想到51時(shí)怎么工作的呢?微型控制器要想工作必須要有一個(gè)“動(dòng)力”,對(duì)于51單片機(jī)來說,這個(gè)“動(dòng)力”就是時(shí)鐘源。一般應(yīng)用上會(huì)外接一個(gè)12MHz的晶振作為時(shí)鐘源。
一般第一種接法用的比較多。選擇內(nèi)部震蕩方式時(shí)晶振旁邊有兩個(gè)小電容。這兩個(gè)電容叫晶振的負(fù)載電容,分別接在晶振的兩個(gè)腳上和對(duì)地的電容,一般在幾十皮發(fā)。它會(huì)影響到晶振的諧振頻率和輸出幅度。晶振的負(fù)載電容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C式中Cd,Cg為分別接在晶振的兩個(gè)腳上和對(duì)地的電容,Cic(集成電路內(nèi)部電容)+△C(PCB上電容)經(jīng)驗(yàn)值為3至5pf。
各種邏輯芯片的晶振引腳可以等效為電容三點(diǎn)式振蕩器。晶振引腳的內(nèi)部通常是一個(gè)反相器, 或者是奇數(shù)個(gè)反相器串聯(lián)。在晶振輸出引腳 XO 和晶振輸入引腳 XI 之間用一個(gè)電阻連接, 對(duì)于 CMOS 芯片通常是數(shù) M 到數(shù)十M 歐之間。 很多芯片的引腳內(nèi)部已經(jīng)包含了這個(gè)電阻, 引腳外部就不用接了。這個(gè)電阻是為了使反相器在振蕩初始時(shí)處與線性狀態(tài), 反相器就如同一個(gè)有很大增益的放大器, 以便于起振。
為什么要選擇12MHz的晶振作為時(shí)鐘源呢?
這就要說51單片機(jī)內(nèi)部的幾個(gè)周期了:指令周期、機(jī)器周期、時(shí)鐘周期、振蕩周期。
振蕩周期是指為單片機(jī)提供定時(shí)信號(hào)的振蕩源的周期或外部輸入時(shí)鐘的周期。
時(shí)鐘周期又稱作狀態(tài)周期或狀態(tài)時(shí)間S,它是振蕩周期的兩倍,分為P1節(jié)拍和P2節(jié)拍,通常在P1節(jié)拍完成算術(shù)邏輯操作,在P2節(jié)拍完成內(nèi)部寄存器之間的數(shù)據(jù)傳送操作。(注意P1 和P2的相位關(guān)系 )
一個(gè)機(jī)器周期由6個(gè)狀態(tài)組成,如果把一條指令的執(zhí)行過程分作幾個(gè)基本操作,則將完成一個(gè)基本操作所需的時(shí)間稱作機(jī)器周期。單片機(jī)的單周期指令執(zhí)行時(shí)間就為一個(gè)機(jī)器周期。
指令周期是執(zhí)行一條指令所需的全部時(shí)間。MCS-51單片機(jī)的指令周期通常由1、2、4個(gè)機(jī)器周期組成。
對(duì)于12MHz的晶振,提供了12M的振蕩周期,6M的時(shí)鐘周期,1M的機(jī)器周期。所以此時(shí)51單片機(jī)的單指令周期為(1/1M)s=1us.這個(gè)1us有什么好處呢?后面大家會(huì)知道單片機(jī)應(yīng)用中會(huì)有各種各樣的時(shí)序,很多時(shí)候需要用一小段程序延時(shí)來達(dá)到時(shí)序要求,而1us的單指令周期比較方便計(jì)算延時(shí)時(shí)間以及確定每條語句的執(zhí)行時(shí)間。應(yīng)該明確的是單片機(jī)執(zhí)行每條語句用的時(shí)間是非常確定的,是1us就是1us不會(huì)多一點(diǎn)也不會(huì)少一點(diǎn)。
下面說說51單片機(jī)的總線擴(kuò)展:
這種結(jié)構(gòu)就是上一篇說到的三總線結(jié)構(gòu),如圖所示
1、數(shù)據(jù)總線
51 單片機(jī)的數(shù)據(jù)總線為P0 口,CPU 從P0 口送出和讀回?cái)?shù)據(jù)。
2、地址總線
51 系列單片機(jī)的地址總線為16 位。
為了節(jié)約芯片引腳,采用P0 口復(fù)用方式,除了作為數(shù)據(jù)總線外,在ALE 信號(hào)時(shí)序匹配下,通過外置的數(shù)據(jù)鎖存器,在總線訪問前半周期從P0口送出低8位地址,后半周期從P0 口送出8 位數(shù)據(jù)。
高8位地址則通過P2 口送出。
3、控制總線
51 系列單片機(jī)的控制總線包括(RD)讀控制信號(hào)P3.7 和(WR)寫控制信號(hào)P3.6 等,二者分別作為總線模式下數(shù)據(jù)讀和數(shù)據(jù)寫的使能信號(hào)。
51 單片機(jī)總線時(shí)序如圖 所示。
從圖2 中可以看出,完成一次總線( 讀寫) 操作周期為T,P0 口分時(shí)復(fù)用,在T0 期間,P0 口送出低8 位地址,在ALE 的下降沿完成數(shù)據(jù)鎖存,送出低8位地址信號(hào)。在T1 期間,P0 口作為數(shù)據(jù)總線使用,送出或讀入數(shù)據(jù),數(shù)據(jù)的讀寫操作在讀、寫控制信號(hào)的低電平期間完成。
需要注意的是,在控制信號(hào)( 讀、寫信號(hào)) 有效期間,P2 口送出高8位地址,配合數(shù)據(jù)鎖存器輸出的低8 位地址,實(shí)現(xiàn)16 位地址總線,即64kB 范圍的內(nèi)的尋址。
由于CPU不可能同時(shí)執(zhí)行讀和寫操作,所以讀、寫信號(hào)不可能同時(shí)有效。
采用這種總線結(jié)構(gòu)按照規(guī)定的時(shí)序能夠最大程度的利用單片機(jī)的全部地址線。這就是單片機(jī)的編址。編址分為線選法和譯碼法,譯碼法分為全譯碼、部分譯碼。線選法的優(yōu)點(diǎn)是簡單但是非常浪費(fèi)地址線;全譯碼法能夠最大程度的利用全部地址線,但是電路很復(fù)雜需要一些與非門的配合才行。一般用部分譯碼法性價(jià)比最高,尤其是在外接了存儲(chǔ)芯片時(shí)部分譯碼法很方便。
編輯:admin 最后修改時(shí)間:2019-09-17