也算是用過一段時間的微控制器,但是當初也就是熟悉了一些模組的使用,對於微控制器的工作原理並不是很了解。
而在程式設計過程中,最重要的就是時序!無論是進行儲存器的讀寫,還是進行通訊,只有時序匹配了,才可以寫出
高效的少bug的**。而這些恰恰是需要掌握最基礎的東西才能達到的。於是重新學了下mcs51,有了一些新的理解。
指令的屬性:指令長度和執行時間。
指令長度就是儲存在rom中所佔的rom空間,編譯器把程式彙編後,會給出這個程式的大小,這個值就是儲存
這個程式要占用的rom空間(當然是以二進位制的形式儲存的)。 而與rom關係密切的暫存器就是pc,
pc的增量是與指令長度有關的。首先看下3位元組指令mov 30h,#20h 在rom中儲存的。
顯然,這條指令佔3位元組的空間,而執行下條指令時pc為pc+3。
要注意的是,最小指令週期是等於乙個機器週期的,而不是乙個時鐘週期,單週期指令nop執行時間為乙個機器週期。
當然,每條指令的週期是確定的。讀指令操作和ale訊號有關,在ale有效時才執行一次讀指令操作。
ale(address locked enable)訊號在不是用來所存外部ram位址時,它的週期是振盪時鐘的6分頻。
(如果是單指令雙週期指令,那麼4次取值操作只有第一次是有效的)
暫存器(指標)sp、dptr和pc
pc的作用就是rom的位址計數器。
sp總是指向堆疊(應該是棧吧,堆和棧是兩個不同概念的ram)的棧頂的,而堆疊在內部ram中,所以sp是ram的位址計數器。
dptr可以指向外部ram(寫操作),也可以指向rom(查表指令)。
在寫微控制器控制單個模組的**時,並不困難。難的是如何把多個模組架構在一起,可以協同工作,而無模組當機現象。
其實,當做乙個微控制器控制系統時,寫**就要從作業系統的層次來設計程式的框架,即裸奔時的程式框架。
另外,經常用到延時程式。但是,c**是很難做到精確延時的,因為對於不同的延時**寫法,編譯器的反彙編**總會不同。
這時就要犧牲定時器或者嵌入彙編來做到精確延時。但是對於不懂彙編又不想犧牲資源的來說,
還是可以用c51來寫出逼近精確的延時**的。
新系列 51微控制器
考慮到部落格內容的太單調,我就新開了乙個系列 51微控制器系列 微控制器的控制方法還是使用c語言來控制所以在c語言這裡新開乙個系列 和c語言的程式相比,51微控制器的執行更加趨向於過程而非結果,也就是說微控制器輸出結果的方法使用執行程式的過程,也就是說一次一次的執行這個程式,來體現所需要的結果 和只...
微控制器large模式 對微控制器儲存分配新的認識
51微控制器儲存器採用的是哈佛結構,即是程式儲存器空間和資料儲存器空間分開,程式儲存器和資料儲存器各自有自己的定址方式 定址空間和控制系統。51儲存器可以分為 內部資料儲存器ram 51子系列有128位元組ram,52子系列有256位元組ram 外部資料暫存器ram 片外的ram,最大定址空間2 1...
單片微控制器
微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...