国产精品2022不卡在线观看|青草国产福利视频免费观看|亚洲天堂日韩在线|日日摸夜夜添夜夜添97|亚洲伊人久久大香线蕉av|午夜性爽快免费视频播放

聯(lián)系我們

銷(xiāo)售直撥
     025-85550202;
     025-85550520;


master@csch.com.cn

技術(shù)咨詢(xún):
     025-85550520

duan@csch.com.cn

售后服務(wù)專(zhuān)線(xiàn):

     15251851604    

wu_yuyang@csch.com.cn

傳 真:025-85550303


深圳市中霍電子技術(shù)有限公司
地址:深圳市龍華新區龍華街道牛地埔村美滿(mǎn)圓小區
聯(lián)系人:顏安軍/副總
Mobile:18038070895
E-mail: szyanaj@csch.com.cn  
 

初學(xué)者學(xué)習C51的一些誤區和注意事項

這里講述一些初學(xué)者學(xué)習C51的一些誤區和注意事項。高手的特別應用不包括在內。

1)C忌諱絕 對定位。

??匆?jiàn)初學(xué)者要求使用_at_,這是一種謬誤,把C當作ASM看待了。在C中變量的定位是編譯器的事情,初學(xué)者只要定義變量和變量的作

用域,編譯器就把一個(gè)固定地址給這個(gè)變量。怎么取得這個(gè)變量的地址?要用指針。比如unsigned char data x;后,x的地址就是&x,

你只要查看這個(gè)參數,就可以在程序中知道具體的地址了。所以俺一看見(jiàn)要使用絕 對定位的人,第 一印象就是:這大概是個(gè)初學(xué)者。

2)設置SP的問(wèn)題。

原因和1差不對,編譯器在把所有變量和緩沖區賦予地址后,自動(dòng)把zui后一個(gè)字節開(kāi)始的地方,作為SP的開(kāi)始位置,所以初學(xué)者是不必

要去理會(huì )的。這體現C的優(yōu)越性,很多事情C編譯時(shí)候做了。

3)用C的主程序結構:

#include >reg52.h<

void main(void)

{

while(1);

}

這是個(gè)zui小的成功的C程序,包括頭部文件和程序主體。

頭部文件的名詞解釋?zhuān)阂玫耐獠抠Y源文件,這個(gè)文件包括了硬件信息和外部模塊提供的可使用的函數和變量的說(shuō)明??梢杂梦谋痉?

式打開(kāi)reg52.h,仔細研究下,會(huì )有一些寫(xiě)程序的體會(huì )。

4)這樣構成一個(gè)C項目

在C中,常用項目來(lái)管理。項目一般分為兩大塊:C文件塊和頭部文件塊。

我們常把不同功能寫(xiě)在不同的C文件中,依靠項目的管理,zui后把所有文件連接起來(lái),這樣就可以得到可以燒錄的HEX文件或BIN文件。

這些C文件中,有且只有唯 一一個(gè)包括main()函數,和3)中一樣的C文件。

用頭部文件把各個(gè)不同的C互相連接起來(lái)。一個(gè)C文件基本上要對應有一個(gè)H頭部文件,這個(gè)H 文件就包含本C文件中可以提供給外面使

用的變量和函數,沒(méi)有在H 文件中列出的文件,可以算是該C文件的內部函數和變量,外部C不能使用。

例子:a.C:

unsigned char i;

unsigned char mWork;

void Test1(void)

{

mWork++;

}

void Test2(void)

{

i++;

}

a.h 文件中:

extern unsigned char i;

extern void Test1(void);

這樣主程序M.c中:

#include >reg52.h< /*C編譯器內部自帶的H 文件,使用><*/

#include "a.h" /*自定義的H 文件,一般用""*/

void main(void)

{

Test1(); /*使用a.c模塊文件中的函數*/

while(1){

i++; /*使用a.c模塊文件中的變量*/

}

}

5)51家族

核心都是基于8031的,有很多在此核心上進(jìn)行擴展,有的把程序存儲器放在內部:89c(S)51..,有的增加了RAM:89c(S)52..,有的增加

了一些專(zhuān)用硬件80C552...,有的改變時(shí)鐘時(shí)序W77E58...。市面上現在常用的主要有ATMEL公司的AT89X系列,PHILIPS的P87(89)x,臺

灣WINBOND的w77(78)x系列,Cygnal的C8051Fx系列。

6)51單片機結構的C描述

這里不講51的具體結構,只是引導初學(xué)者快速理解51單片機的物理結構。寄存器和IO及其它硬件設備的地址名稱(chēng),在相應的C頭部文件

中可以找到。51為reg51.h,52為reg52.h,以次類(lèi)推,比如winbond的78E58就為w78e58.h這些H 文件中的描述:

srf,定義一個(gè)8位的設備。

srf16,定義一個(gè)16位的設備。

sbit,定義一個(gè)位的設備。

用這些語(yǔ)句定義后,就可以在C中象匯編一樣使用這些硬件設備,這是單片機應用比標準C特殊的地方,其它差別很少。

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

data:固定指前面0x00-0x7f的128個(gè)RAM,可以用acc直接讀寫(xiě)的,速度zui快,生成的代碼也zui小。

idata:固定指前面0x00-0xff的256個(gè)RAM,其中前128和data的128完全相同,只是因為訪(fǎng)問(wèn)的方式不同。idata是用類(lèi)似C中的指針?lè )绞?

訪(fǎng)問(wèn)的。匯編中的語(yǔ)句為:mox ACC,@Rx.(不重要的補充:c中idata做指針式的訪(fǎng)問(wèn)效果很好)

xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪(fǎng)問(wèn)。

pdata:外部擴展RAM的低256個(gè)字節,地址出現在A(yíng)0-A7的上時(shí)讀寫(xiě),用movx ACC,@Rx讀寫(xiě)。這個(gè)比較特殊,而且C51好象有對此BUG,

建議少用。但也有他的優(yōu)點(diǎn),具體用法屬于中級問(wèn)題,這里不提。

8)startup.a51的作用

和匯編一樣,在C中定義的那些變量和數組的初始化就在startup.a51中進(jìn)行,如果你在定義全局變量時(shí)帶有數值,如unsigned char

data xxx=100;,那startup.a51中就會(huì )有相關(guān)的賦值。如果沒(méi)有=100,startup.a51就會(huì )把他清0。(startup.a51==變量的初始化)。

這些初始化完畢后,還會(huì )設置SP指針。對非變量區域,如堆棧區,將不會(huì )有賦值或清零動(dòng)作。

有人喜歡改startup.a51,為了滿(mǎn)足自己一些想當然的愛(ài)好,這是不必要的,有可能錯誤的。比如掉電保護的時(shí)候想保存一些變量,

但改startup.a51來(lái)實(shí)現是很笨的方法,實(shí)際只要利用非變量區域的特性,定義一個(gè)指針變量指向堆棧低部:0xff處就可實(shí)現。,

為什么還要去改?

可以這么說(shuō):任何時(shí)候都可以不需要改startup.a51,如果你明白它的特性。

Copyright@ 2003-2025  南京信瑞譜傳感技術(shù)有限公司版權所有     

熱門(mén)導航電壓傳感器  霍爾電流傳感器  互感器  高精度電流傳感器  直流漏電流傳感器  直流電流變送器  霍爾傳感器工作原理 傳感器資料下載

           

        在線(xiàn)購買(mǎi)-直達淘寶店

     具體購買(mǎi)產(chǎn)品請聯(lián)系淘寶客服

(淘寶店拍買(mǎi)請聯(lián)系淘寶在線(xiàn)服務(wù),告知型號或在線(xiàn)經(jīng)理的姓名即可)

国产精品2022不卡在线观看|青草国产福利视频免费观看|亚洲天堂日韩在线|日日摸夜夜添夜夜添97|亚洲伊人久久大香线蕉av|午夜性爽快免费视频播放