微控制器程式設計

2022-07-23 11:51:15 字數 1694 閱讀 7412

1、data、idata、pdata和xdata的區別

2、微控制器中的位(bit)、位元組(byte)、字(word)

stc89c52 共有 512 位元組的 ram

,是用來儲存資料的,比如我們定義的變數都是直接存在 ram 裡邊的。但是微控制器的這 512 位元組的 ram在地位上並不都是平等的,而是分塊的,塊與塊之間在物理結構和用法上都是有區別的,因此我們在使用的時候,也要注意一些問題。

51 微控制器的 ram 分為兩個部分,一塊是片內 ram,一塊是片外 ram。標準 51 的片內 ram 位址從 0x00h~0x7f 共 128 個位元組,而現在我們用的 51 系列的微控制器都是帶擴充套件片內 ram 的,即 ram 是從 0x00~0xff 共 256 個位元組。片外 ram 最大可以擴充套件到 0x0000~0xffff 共 64k 位元組。這裡有一點大家要明白,片內 ram 和片外 ram 的位址不是連起來的,片內是從 0x00 開始,片外也是從 0x0000 開始的。還有一點,片內和片外這兩個名詞來自於早期的 51 微控制器,分別指在晶元內部和晶元外部,但現在幾乎所有的 51 微控制器晶元內部都是整合了片外 ram 的,而真正的晶元外擴充套件則很少用到了,雖然它還叫片外 ram,但實際上它現在也是在微控制器晶元內部的,我們的 stc89c52 就是這樣。以下是幾個 keil

c51 語言中的關鍵字,代表了 ram 不同區域的劃分,大家先記一下。

data:片內 ram 從 0x00~0x7f

idata:片內 ram 從 0x00~0xff

pdata:片外 ram 從 0x00~0xff

xdata:片外 ram 從 0x0000~0xffff

大家可以看出來,data 是 idata 的一部分,pdata 是 xdata 的一部分。為什麼還這樣去區分呢?因為 ram 分塊的訪問方式主要和彙編指令有關,因此這塊內容大家了解一下即可,只需要記住如何訪問速度更快就行了。

我們定義乙個變數 a,可以這樣:unsigned char data a=0,而我們前邊定義變數時都沒有加 data 這個關鍵字,是因為在 keil 預設設定下,data 是可以省略的,即什麼都不加的時候變數就是定義到 data 區域中的。data 區域 ram 的訪問在組合語言中用的是直接定址,執行速度是最快的。如果你定義成 idata,不僅僅可以訪問 data 區域,還可以訪問 0x80h~0xff 的範圍,但加了 idata 關鍵字後,訪問的時候 51 微控制器用的是通用暫存器

間接定址,速度較 data會慢一些,而且我們平時大多數情況下不太希望訪問到 0x80h~0xff,因為這塊通常用於中斷與函式呼叫的堆疊,所以在絕大多數情況下,我們使用內部 ram 的時候,只用 data 就可以了。

對於外部 ram 來說,使用 pdata 定義的變數存到了外部 ram 的 0x00~0xff 的位址範圍內,這塊位址的訪問和 idata 類似,都是用通用暫存器間接定址,而如果你定義成 xdata,可以訪問的範圍更廣泛,從 0 到 64k 的位址都可以訪問到,但是它需要使用 2 個位元組暫存器dptrh 和 dptrl 來進行間接定址,速度是最慢的。

參考**:

乙個字等於多少個位元組,與系統硬體(匯流排、cpu命令字位數等)有關,不應該毫無前提地說乙個字等於多少位。

正確的說法:

①:1位元組(byte) = 8位(bit)

②:在16位的系統中(比如8086微機) 1字 (word)= 2位元組(byte)= 16(bit)

在32位的系統中(比如win32) 1字(word)= 4位元組(byte)=32(bit)

微控制器 鍵盤程式設計

花了幾天時間整了下微控制器的鍵盤.我用的微控制器板子是用的p2的8個io埠對16個鍵達到控制的目的.那怎樣來使用8個埠控制16個鍵呢?其實很簡單,先必須要掌握她的原理圖,img upload attachment 89572 8ed2c5c8 088a 3ed2 84f2 75aa84fac52e....

單片微控制器

微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...

單片微控制器

微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...