『壹』 mcs-51單片機的時鍾周期、機器周期、指令周期時序是如何分配的
mcs-51單片機的時鍾周期=1/fosc。
機器周期=12 個時鍾周期=12/fosc。
指令周期=1、2、3 個機器周期。
別忘了採納。
『貳』 單片機的時序圖問題
PCH是程序計數器的高八位,存放當前代碼所在程序存儲器的高八位地址。你知道,PC里放的是程序存儲器的地址。
DPTR既可以指向程序存儲器,也可以指向數據存儲器。如:
MOVC A,A+@DPRT ;指向程序存儲器,此時DPH里存放程序存儲器高八位,但不一定是當前語句的程序地址,你可以事先給DPTR賦值,使它指向你賦值的程序存儲器地址。
MOVX A,A@DPTR ;指向數據存儲器,此時DPH指向數據存儲器高八位,同樣事先可以給DPTR賦值。
『叄』 單片機指令周期的計算
計算方法:PIC單片機的每四個時鍾周期為一個內部指令周期,例如:8MHz的晶振,則內部指令周期為1/(8/4)= 0.5 uS
實例一:35us, 8MHz的晶振, 8位定時器, 分頻比1/2 , 初值 E4
實例二:156.25us , 32768Hz的晶振, 8位定時器, 分頻比1/32 , 初值 FC
計算方法一: 35 = =(256-初值)*分頻*4/晶振 + 14/分頻 =(256-初值)+14/2
計算方法二:0.015625 =(256-初值)*分頻*4/晶振 = (256-初值)*32*4/32768
特別注意:分頻比1-8 需要加上一個14/分頻
指令周期是指令周期執行某一條指令所消耗的時間,它等於機器周期的整數倍。傳統的80C51單片機的指令周期大多數是單周期指令,也就是指令周期=機器周期,少部分是雙周期指令。
(3)單片機指令時序擴展閱讀
在MCS-51系統中,有單周期指令,雙周期指令。四周期指令只有乘,除兩條指令。指令的運算速度和它的機器周期直接相關,機器周期數較小則執行速度快。
在編程時要注意選用具有同樣功能而機器周期數小的指令。每一條指令的執行都可以包括取指和執行兩個階段。在取指階段,CPU從內部或者外部ROM中取出指令操作碼及操作數,然後再執行這條指令。
在8051指令系統中,根據各種操作的繁簡程度,其指令可由單位元組,雙位元組和三位元組組成。從機器執行指令的速度看,單位元組和雙位元組指令都可能是單周期或雙周期,
而三位元組指令都是雙周期,只有乘,除指令佔四個周期,一條指令的位元組數表徵這條指令在存儲器中所佔空間大小,而周期數表徵運行這條指令所花時間長短,即運行速度。
『肆』 51單片機的IO口寫指令的時序
什麼。
同時要明白 片外的數據存儲器、程序存儲器讀寫的原理、過程、時序關系,才能徹底搞明白這個問題。
你看看單片機教科書里關於數據存儲器、程序存儲器擴展的部分,就知道p0口的作用是傳送地址和數據,有時候還要做其它的IO口用。那麼,這些復雜的數據傳遞豈不亂套?這些就要鎖存器把它們隔離開了。
一般來說,P0口進行數據存儲器、程序存儲器擴展,必須加鎖存器。
p0口做IO口時,如果各個IO口在時序上不發生沖突,可以不加鎖存器。如果有沖突,就要加。
參考答案:
用8255擴展IO,書上用了373鎖存,但是我想可不可以這樣:P0不鎖存,而是用P2口的隨便兩個引腳直接連8255的地址引腳。這樣P0口送出的數據就不需要鎖存了,直接接8255的數據口了。小弟初學單片機,還望各位能不吝賜教。
完全可以。CS是片選,這個也要接在p2的一個引腳的,或者接地。看你電路設計了。
8255的D0--D7是數據線啊!這個接P0口。
這樣可以的話,低八位地址(P0口)應該是?是不是隨便給個0到255之間的數可以? DPTR包括了P0和P2的地址,既然8255地址可以由P2給出,那P0地址如何處理?
從你的這個問話來看,你對單片機的概念很模糊。片外的地址是16位,p2p0共同決定,缺一不可的。我剛才說的方法是把8255當做IO口擴展的,不是當片外數據存儲器用的。p0口接8255的D0--D7。所以這個根本用不到DPTR。
假如你按照片外數據存儲器擴展,就必須用74LS373了。8255的A1A0可以由74LS373接P0,在p0送地址第八位時選通A1A0.這時p2反而不重要了,因為不連在8255上也是可以的。