資料介紹
本文檔的主要內(nèi)容詳細(xì)介紹的是C51的一些誤區(qū)和注意事項(xiàng)和51單片機(jī)的尋址方式10 個你可能沒用過的Linux命令等資料免費(fèi)下載。
C51的一些誤區(qū)和注意事項(xiàng):
1) C 忌諱絕對定位。??匆姵鯇W(xué)者要求使用_at_,這是一種謬誤,把C 當(dāng)作ASM 看待了。在C 中變量的定位是編譯器的事情,初學(xué)者只要定義變量和變量的作用域,編譯器就把一個固定地址給這個變量。怎么取得這個變量的地址?要用指針。比如unsigned char data x;后,x 的地址就是&x, 你只要查看這個參數(shù),就可以在程序中知道具體的地址了。所以俺一看見要使用絕對定位的人,第一印象就是:這大概是個初學(xué)者。
2) 設(shè)置SP 的問題。原因和1差不對,編譯器在把所有變量和緩沖區(qū)賦予地址后,自動把最后一個字節(jié)開始的地方,作為SP 的開始位置,所以初學(xué)者是不必要去理會的。這體現(xiàn)C 的優(yōu)越性,很多事情C 編譯時候做了。
3) 用C 的主程序結(jié)構(gòu):#include void main(void) { while(1); } 這是個最小的成功的C 程序,包括頭部文件和程序主體。頭部文件的名詞解釋:引用的外部資源文件,這個文件包括了硬件信息和外部模塊提供的可使用的函數(shù)和變量的說明??梢杂梦谋痉绞酱蜷_reg52.h,仔細(xì)研究下,會有一些寫程序的體會。
4) 這樣構(gòu)成一個C 項(xiàng)目在C 中,常用項(xiàng)目來管理。項(xiàng)目一般分為兩大塊:C 文件塊和頭部文件塊。我們常把不同功能寫在不同的C 文件中,依*項(xiàng)目的管理,最后把所有文件連接起來,這樣就可以得到可以燒錄的HEX 文件或BIN 文件。這些C 文件中,有且只有唯一一個包括main()函數(shù),和3)中一樣的C 文件。用頭部文件把各個不同的C 互相連接起來。一個C 文件基本上要對應(yīng)有一個H 頭部文件,這個H 文件就包含本C 文件中可以提供給外面使用的變量和函數(shù),沒有在H 文件中列出的募??梢運(yùn)閌歉肅文件的內(nèi)部函數(shù)和變量,外部C 不能使用。例子: a.C: unsigned char i; unsigned char mWork; void Test1(void) { mWork++; } voidTest2(void) { i++; } a.h 文件中: extern unsigned char i; extern void Test1(void); 這樣主程序M.c 中: #include /*C 編譯器內(nèi)部自帶的H 文件,使用《》*/ #i nclude “a.h” /*自定義的H 文件,一般用“”*/ void main(void) { Test1(); /*使用a.c 模塊文件中的函數(shù)*/ while(1){ i++; /*使用a.c 模塊文件中的變量*/ } }
5) 51家族核心都是基于8031的,有很多在此核心上進(jìn)行擴(kuò)展,有的把程序存儲器放在內(nèi)部:89c(S)51.。,有的增加了RAM:89c(S)52.。,有的增加了一些專用硬件80C552.。.,有的改變時鐘時序W77E58.。.。市面上現(xiàn)在常用的主要有ATMEL 公司的AT89X 系列,PHILIPS 的P87(89)x,臺灣WINBOND 的w77(78)x 系列,Cygnal 的C8051Fx 系列。
6) 51單片機(jī)結(jié)構(gòu)的C 描述這里不講51的具體結(jié)構(gòu),只是引導(dǎo)初學(xué)者快速理解51單片機(jī)的物理結(jié)構(gòu)。寄存器和IO 及其它硬件設(shè)備的地址名稱,在相應(yīng)的C 頭部文件中可以找到。51為reg51.h,52為reg52.h,以次類推,比如winbond 的78E58就為w78e58.h 這些H 文件中的描述:srf,定義一個8位的設(shè)備。srf16,定義一個16位的設(shè)備。sbit,定義一個位的設(shè)備。用這些語句定義后,就可以在C 中象匯編一樣使用這些硬件設(shè)備,這是單片機(jī)應(yīng)用比標(biāo)準(zhǔn)C 特殊的地方,其它差別很少。
7) 在51系列中data,idata,xdata,pdata 的區(qū)別data:固定指前面0x00-0x7f 的128個RAM,可以用acc 直接讀寫的,速度最快,生成的代碼也最小。idata:固定指前面0x00-0xff 的256個RAM,其中前128和data 的128完全相同,只是因?yàn)樵L問的方式不同。idata 是用類似C 中的指針方式訪問的。匯編中的語句為:mox ACC,@Rx.(不重要的補(bǔ)充:c 中idata 做指針式的訪問效果很好) xdata:外部擴(kuò)展RAM,一般指外部0x0000-0xffff 空間,用DPTR 訪問。pdata:外部擴(kuò)展RAM的低256個字節(jié),地址出現(xiàn)在A0-A7的上時讀寫,用movx ACC,@Rx 讀寫。這個比較特殊,而且C51好象有對此BUG, 建議少用。但也有他的優(yōu)點(diǎn),具體用法屬于中級問題,這里不提。
8) startup.a51的作用和匯編一樣,在C 中定義的那些變量和數(shù)組的初始化就在startup.a51中進(jìn)行,如果你在定義全局變量時帶有數(shù)值,如unsigned char data xxx=100;,那startup.a51中就會有相關(guān)的賦值。如果沒有=100,startup.a51就會把他清0。(startup.a51==變量的初始化)。這些初始化完畢后,還會設(shè)置SP 指針。對非變量區(qū)域,如堆棧區(qū),將不會有賦值或清零動作。有人喜歡改startup.a51,為了滿足自己一些想當(dāng)然的愛好,這是不必要的,有可能錯誤的。比如掉電保護(hù)的時候想保存一些變量, 但改startup.a51來實(shí)現(xiàn)是很笨的方法,實(shí)際只要利用非變量區(qū)域的特性,定義一個指針變量指向堆棧低部:0xff 處就可實(shí)現(xiàn)。為什么還要去改? 可以這么說:任何時候都可以不需要改startup.a51,如果你明白它的特性。
- C51單片機(jī)與C52單片機(jī)內(nèi)部的資源區(qū)別
- Keil C51與單片機(jī)開發(fā)入門(第一個程序)
- 51單片機(jī)(一)—— 51單片機(jī)簡介
- C51單片機(jī)流水燈C代碼
- 8051單片機(jī)C51編程電子版書籍 0次下載
- 單片機(jī)C51程序設(shè)計(jì)的學(xué)習(xí)課件免費(fèi)下載 64次下載
- 使用51單片機(jī)進(jìn)行尋址的方式詳細(xì)說明
- 單片機(jī)C51編程的警告提示說明
- 51單片機(jī)的一些特殊寄存器資料說明
- 51單片機(jī)匯編語言的尋址方式詳細(xì)資料說明
- 51單片機(jī)如何讀寫AT29C040?51單片機(jī)讀寫AT29C040的c51程序免費(fèi)下載 27次下載
- 51單片機(jī)c51語言入門教程C語言入門教程 32次下載
- 51單片機(jī)匯編語言教程_單片機(jī)尋址方式與指令系統(tǒng) 0次下載
- 單片機(jī)C51語言設(shè)計(jì)視頻演示
- 學(xué)51單片機(jī)之C51基礎(chǔ)知識
- C51單片機(jī)的IO口介紹(下) 2906次閱讀
- 51單片機(jī)讀寫AT29C040的C51程序 4990次閱讀
- HD44780讀寫單片機(jī)C51程序免費(fèi)下載 4383次閱讀
- 使用HD44780讀寫單片機(jī)的C51程序詳細(xì)概述 3304次閱讀
- 80C51單片機(jī)實(shí)現(xiàn)專用寄存器位尋址的設(shè)計(jì)方案 3408次閱讀
- 初次學(xué)習(xí)C51的一些誤區(qū)和注意事項(xiàng)詳細(xì)概述 2650次閱讀
- 單片機(jī)C語言有哪些優(yōu)越性?如何建立一個Keil C51項(xiàng)目 1.2w次閱讀
- 基于 C51單片機(jī)控制GSM模塊實(shí)現(xiàn)短信收發(fā)、打電話的功能 1.5w次閱讀
- 51、stm32單片機(jī)入門的一些經(jīng)驗(yàn) 3321次閱讀
- 51單片機(jī)編程環(huán)境的搭建及代碼編寫的方法 2.3w次閱讀
- 探討單片機(jī)的尋址方式 8372次閱讀
- Keil C51單片機(jī)變量的使用方法詳細(xì)介紹 4737次閱讀
- 基于80C51單片機(jī)位尋址編程 3504次閱讀
- ADC0834模塊的C51源程序 4200次閱讀
- C51單片機(jī)矩陣鍵盤掃描去抖程序 1.3w次閱讀
下載排行
本周
- 1相關(guān)協(xié)議信號總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
- 2DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 3常用電子元器件介紹
- 3.21 MB | 1次下載 | 免費(fèi)
- 4運(yùn)算放大器基本電路中文資料
- 1.30 MB | 1次下載 | 免費(fèi)
- 5ZP-WTU-PNMD02規(guī)格書
- 637.49 KB | 次下載 | 免費(fèi)
- 6multisim的基本界面與操作方法
- 9.12 MB | 次下載 | 免費(fèi)
- 7FS312A USB的PD快充協(xié)議電壓誘騙控制器中文手冊
- 1.51 MB | 次下載 | 免費(fèi)
- 8FVT-2SVCTCXO電氣規(guī)格與應(yīng)用:10~52MHz剪切正弦波在GPS、物聯(lián)網(wǎng)和移動設(shè)備中的使用
- 394.16 KB | 次下載 | 免費(fèi)
本月
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 3錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 4PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 5HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 6蘋果iphone 11電路原理圖
- 4.98 MB | 7次下載 | 2 積分
- 7基礎(chǔ)模擬電子電路
- 3.80 MB | 5次下載 | 1 積分
- 8STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
- 3.32 MB | 5次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論