時鐘電路用于產(chǎn)生AT89S51單片機工作時所必需的控制信號。AT89S51單片機的內(nèi)部電路正是在時鐘信號的控制下,嚴格地按時序執(zhí)行指令進行工作。
在執(zhí)行指令時,CPU首先到程序存儲器中取出需要執(zhí)行的指令操作碼,然后譯碼,并由時序電路產(chǎn)生一系列控制信號完成指令所規(guī)定的操作。CPU發(fā)出的時序信號有兩類,一類用于對片內(nèi)各個功能部件的控制,用戶無需了解;另一類用于對片外存儲器或I/O口的控制,這部分時序?qū)τ诜治?、設(shè)計硬件接口電路至關(guān)重要,這也是單片機應(yīng)用系統(tǒng)設(shè)計者普遍關(guān)心和重視的問題。
時鐘電路設(shè)計
AT89S51單片機各功能部件的運行都以時鐘控制信號為基準,有條不紊、一拍一拍地工作。
因此,時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路有兩種方式,一種是內(nèi)部時鐘方式,另一種是外部時鐘方式。
1.內(nèi)部時鐘方式
AT89S51內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體和微調(diào)電容,構(gòu)成一個穩(wěn)定的自激振蕩器,圖2-13是AT89S51內(nèi)部時鐘方式的電路。
電路中的電容C1和C2的典型值通常選擇為30 pF。該電容的大小會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶體振蕩頻率的范圍通常是在1.2~12 MHz。晶體的頻率越高,系統(tǒng)的時鐘頻率越高,單片機的運行速度也就越快。但反過來,運行速度快對存儲器的速度要求就高,對印制電路板的工藝要求也高,即要求線間的寄生電容要小。晶體和電容應(yīng)盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作。為了提高溫度穩(wěn)定性,應(yīng)采用溫度穩(wěn)定性能好的電容。
AT89S51常選擇振蕩頻率6 MHz或12 MHz的石英晶體。隨著集成電路制造工藝技術(shù)的發(fā)展,單片機的時鐘頻率也在逐步提高,AT89S51和AT89S52芯片的時鐘最高頻率已達33MHz。
2.外部時鐘方式
外部時鐘方式使用現(xiàn)成的外部振蕩器產(chǎn)生脈沖信號,常用于多片AT89S51單片機同時工作,以便于多片AT89S51單片機之間的同步,一般為低于12 MHz的方波。
外部時鐘源直接接到XTAL1端,XTAL2端懸空,其電路如圖2-14所示。
3.時鐘信號的輸出
當使用片內(nèi)振蕩器時,XTAL1、XTAL2引腳還能為應(yīng)用系統(tǒng)中的其他芯片提供時鐘,但需增加驅(qū)動能力。其引出的方式有兩種,如圖2-15所示。
機器周期、指令周期與指令時序
單片機執(zhí)行的指令均是在CPU控制器的時序控制電路的控制下進行的,各種時序均與時鐘周期有關(guān)。
1.時鐘周期
時鐘周期是單片機時鐘控制信號的基本時間單位。若時鐘晶體的振蕩頻率為fosc,則時鐘周期Tosc= l/fosc如fosc=6 MHz,Tosc=166.7 ns。
2.機器周期
CPU完成一個基本操作所需要的時間稱為機器周期。單片機中常把執(zhí)行一條指令的過程分為幾個機器周期。每個機器周期完成一個基本操作,如取指令、讀或?qū)憯?shù)據(jù)等。AT89S51單片機的每12個時鐘周期為一個機器周期,即Tcy=12/fosc。若fosc=6 MHz,Tcy=2 μs; fosc=12 MHz,Tcy=1μs。
AT89S51的一個機器周期包括12個時鐘周期,分為6個狀態(tài):Sl~S6。每個狀態(tài)又分為兩拍:Pl和P2。因此,一個機器周期中的12個時鐘周期表示為SIP1、SIP2、S2Pl、S2P2、…、S6P2,如圖2-16所示。
3.指令周期
指令周期是執(zhí)行一條指令所需的時間。AT89S51單片機中指令按字節(jié)來分,可分為單字節(jié)、雙字節(jié)、三字節(jié)指令,因此執(zhí)行一條指令的時間也不同。對于簡單的單字節(jié)指令,取出指令立即執(zhí)行,只需一個機器周期的時間。而有些復雜的指令,如轉(zhuǎn)移、乘、除指令則需兩個或多個機器周期。
從指令的執(zhí)行時間看,單字節(jié)和雙字節(jié)指令一般為單機器周期和雙機器周期,三字節(jié)指令都是雙機器周期,只有乘、除指令占用4個機器周期。