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