初學C51者應注意的地方

2021-08-29 03:37:58 字數 2054 閱讀 2811

這裡講述一些初學者學習c51的一些誤區和注意事項。高手的特別應用不包括在內。

1)c忌諱絕對定位。

常看見初學者要求使用_at_,這是一種謬誤,把c當作asm看待了。在c中變數的定位是編譯器的事情,初學者只要定義變數和變數的作

用域,編譯器就把乙個固定位址給這個變數。怎麼取得這個變數的位址?要用指標。比如unsigned char data x;後,x的位址就是&x,

2)設定sp的問題。

原因和1差不對,編譯器在把所有變數和緩衝區賦予位址後,自動把最後乙個位元組開始的地方,作為sp的開始位置,所以初學者是不必

要去理會的。這體現c的優越性,很多事情c編譯時候做了。

3)用c的主程式結構:

#include

void main(void)

這是個最小的成功的c程式,包括頭部檔案和程式主體。

頭部檔案的名詞解釋:引用的外部資源檔案,這個檔案包括了硬體資訊和外部模組提供的可使用的函式和變數的說明。可以用文字方

式開啟reg52.h,仔細研究下,會有一些寫程式的體會。

4)這樣構成乙個c專案

在c中,常用專案來管理。專案一般分為兩大塊:c檔案塊和頭部檔案塊。

我們常把不同功能寫在不同的c檔案中,依靠專案的管理,最後把所有檔案連線起來,這樣就可以得到可以燒錄的hex檔案或bin檔案。

這些c檔案中,有且只有唯一乙個包括main()函式,和3)中一樣的c檔案。

用頭部檔案把各個不同的c互相連線起來。乙個c檔案基本上要對應有乙個h頭部檔案,這個h檔案就包含本c檔案中可以提供給外面使

用的變數和函式,沒有在h檔案中列出的檔案,可以算是該c檔案的內部函式和變數,外部c不能使用。

例子:a.c:

unsigned char i;

unsigned char mwork;

void test1(void)

void test2(void)

a.h檔案中:

extern unsigned char i;

extern void test1(void);

這樣主程式m.c中:

#include /*c編譯器內部自帶的h檔案,使用<>*/

#include "a.h"    /*自定義的h檔案,一般用""*/

void main(void)

}5)51家族

核心都是基於8031的,有很多在此核心上進行擴充套件,有的把程式儲存器放在內部:89c(s)51..,有的增加了ram:89c(s)52..,有的增加了一些專用硬體80c552...,有的改變時鐘時序w77e58...。市面上現在常用的主要有atmel公司的at89x系列,philips的p87(89)x,台灣winbond的w77(78)x系列,cygnal的c8051fx系列。

6)51微控制器結構的c描述

這裡不講51的具體結構,只是引導初學者快速理解51微控制器的物理結構。暫存器和io及其它硬體裝置的位址名稱,在相應的c頭部檔案中可以找到。51為reg51.h,52為reg52.h,以次類推,比如winbond的78e58就為w78e58.h這些h檔案中的描述:

srf,定義乙個8位的裝置。

srf16,定義乙個16位的裝置。

sbit,定義乙個位的裝置。

用這些語句定義後,就可以在c中象彙編一樣使用這些硬體裝置,這是微控制器應用比標準c特殊的地方,其它差別很少。

7)在51系列中data,idata,xdata,pdata的區別

data:固定指前面0x00-0x7f的128個ram,可以用acc直接讀寫的,速度最快,生成的**也最小。

idata:固定指前面0x00-0xff的256個ram,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似c中的指標方式 訪問的。彙編中的語句為:mox acc,@rx.(不重要的補充:c中idata做指標式的訪問效果很好)

xdata:外部擴充套件ram,一般指外部0x0000-0xffff空間,用dptr訪問。

pdata:外部擴充套件ram的低256個位元組,位址出現在a0-a7的上時讀寫,用movx acc,@rx讀寫。這個比較特殊,而且c51好象有對此bug,

建議少用。但也有他的優點,具體用法屬於中級問題,這裡不提。

C51儲存的優化

我們知道51微控制器只有128byte的ram,有的增強型有xram,此時程式設計時就要注意,否則就有可能超出空間 1 對於各模組的全域性變數 靜態變數 全域性列舉型常量,靜態列舉型常量 個別操作儲存 如外部spi flash 的區域性變數都要修飾成xdata型別,從而節省空間。2 對於bit型變數...

C51下彙編的嵌入

1 c51語言中呼叫組合語言程式 c51語言呼叫組合語言程式要注意以下幾點 1 在檔案欄選中 file group 和c51 程式原檔案,在配置檔案選項中啟用 產生彙編 src 檔案,編譯 src 檔案 和 建立工程 目標 時包含 三個選項。2 根據選擇的編譯模式,把相應的庫檔案 如 small 模...

ACCESS中使用SQL語句應注意的地方及幾點技巧

access中使用sql語句應注意的地方及幾點技巧 以下sql語句在access xp的查詢中測試通過 建表 create table tab1 id counter,name string,age integer,date datetime 技巧 自增字段用 counter 宣告.欄位名為關鍵字的...