版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言對比匯編的好處簡單來說,c語言對匯編語言進(jìn)行了抽象,具有如下優(yōu)點:?更符合人類思維習(xí)慣,開發(fā)效率高、時間短。?模塊化??梢浦残院谩?提供數(shù)學(xué)函數(shù)并支持浮點運(yùn)算。程序可讀性和可維護(hù)性強(qiáng)。C語言當(dāng)然也有缺點,比如實時性通常要比匯編差。在編寫匯編的時候可以清楚的知道每一條指令究竟要多少個機(jī)器周期,但是在C中掌控準(zhǔn)確的時間稍微困難一些。C51包含ANSIC關(guān)鍵字的同時,也有針對51單片機(jī)擴(kuò)展的一些關(guān)鍵字。C51的擴(kuò)展關(guān)鍵字從某種程度上體現(xiàn)了C51語言與標(biāo)準(zhǔn)C語言的不同。例如可重入函數(shù)、存儲模式等等都是標(biāo)準(zhǔn)C中不存在的問題。ANSIC關(guān)鍵字auto:自動變量double:雙精度類型int:聲明整型類型struct:聲明結(jié)構(gòu)體類型break:跳出當(dāng)前循環(huán)else:條件語句否定分支(與if連用)long:聲明長整型類型switch:用于開關(guān)語句?case:開關(guān)語句分支??enum:聲明枚舉類型register:聲明寄存器變量typedef:用以給數(shù)據(jù)類型取別名(當(dāng)然還有其他作用)char:聲明字符型類型extern:聲明變量是在其他文件正聲明(也可以看做是引用變量)??return:子程序返回語句(可以帶參數(shù),也看不帶參數(shù))??union:聲明聯(lián)合數(shù)據(jù)類型const:聲明只讀變量float:聲明浮點型類型short:聲明短整型類型unsigned:聲明無符號類型類型continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)?for:一種循環(huán)語句(可意會不可言傳)signed:生命有符號類型類型void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針(基本上就這三個作用)
default:開關(guān)語句中的“其他”分支?goto:無條件跳轉(zhuǎn)語句????sizeof:計算數(shù)據(jù)類型長度??volatile:說明變量在程序執(zhí)行中可被隱含地改變?do:循環(huán)語句的循環(huán)體while:循環(huán)語句的循環(huán)條件static:聲明靜態(tài)變量if:條件語句C51擴(kuò)展關(guān)鍵字_at_為變量定義存儲空間絕對地址alien聲明與PL/M51兼容的函數(shù)bdata可位尋址的內(nèi)部RAMbit位類型codeROMcompact使用外部分頁RAM的存儲模式data直接尋址的內(nèi)部RAMidata間接尋址的內(nèi)部RAMinterrupt中斷服務(wù)函數(shù)large使用外部RAM的存儲模式pdata分頁尋址的外部RAM_priority_RTX51的任務(wù)優(yōu)先級reentrant可重入函數(shù)sbit聲明可位尋址的特殊功能位sfr8位的特殊功能寄存器sfr1616位的特殊功能寄存器small內(nèi)部RAM的存儲模式_task_實時任務(wù)函數(shù)using選擇工作寄存器組xdata外部RAMC51的運(yùn)算符與C語言幾乎無異(至今沒有發(fā)現(xiàn)區(qū)別)。算術(shù)運(yùn)算符+ 力口,?兀取正?
-減,?元取負(fù)?*乘?/除%取模?--自減1?++自加1邏輯運(yùn)算符&&邏輯與邏輯或!邏輯非關(guān)系運(yùn)算符>大于>=大于等于<小于<=小于等于==等于!二不等于?位運(yùn)算符號&按位與按位或"按位異或-按位取反>>右移<<左移復(fù)合運(yùn)算符算術(shù)運(yùn)算符與位運(yùn)算符可以組成符合運(yùn)算符,例如:+二、-二等等。其它運(yùn)算符?expr1?expr2:expr3sizeof計算字節(jié)數(shù)*指針操作&求址口下表運(yùn)算符->成員訪問運(yùn)算符.成員訪問運(yùn)算符運(yùn)算符在C51中與標(biāo)準(zhǔn)的C語言并沒有什么差異,但是變量卻有一些比較關(guān)鍵的區(qū)別。變量的數(shù)據(jù)類型基本變量類型與標(biāo)準(zhǔn)C語言,C51的基本數(shù)據(jù)類型有char、int、short、long和float。除float外均可以使用signed和unsigned指定有符號型和無符號型,默認(rèn)情況下都是signed。char占用一個字節(jié),int和short都占2個字節(jié),long占4個字節(jié),float占4個字節(jié)。其它數(shù)據(jù)類型指針類型:指針與標(biāo)準(zhǔn)C中的指針概念相同,指向一個特定的地址(地址存放的可以是變量也可以是函數(shù))。例如:intfunc(inta,intb);int(*pointer)(int,int)=func;其它數(shù)據(jù)類型:enum、struct、union以及數(shù)組。C51專有數(shù)據(jù)類型:bit、sfr、sfr16以及sbit。bit變量存儲在可位尋址區(qū),保存一位二進(jìn)制數(shù)。注:不能用指針指向位變量。sfr和sfr16指的是特殊寄存器變量。sbit聲明的是可位尋址變量的一個位??晌粚ぶ返淖兞烤褪谴鎯υ赽data的變量,以及部分sfr。例如:intbdatabitTest;sbitbit0=bitTest”0;例子中的bit0就是bitTest的第0位。變量的作用域C51的變量分為局部變量和全局變量。變量的存儲種類auto:默認(rèn)register:編譯器盡量將變量放在寄存器中。extern:全局變量,可以在多個文件中使用。static:使得局部變量的壽命與程序相同;使得全局變量只在文件內(nèi)有效。變量的存儲區(qū)域這個是C51與標(biāo)準(zhǔn)C語言區(qū)別很明顯的地方°C51中可以指定變量存儲在具體的存儲器區(qū)域內(nèi):例如片內(nèi)RAM、片外RAM、或者是ROM里。例如:chardatatest='c';定義test變量存儲在直接尋址的內(nèi)部RAM區(qū)。具體的存儲區(qū)域如下表:存儲類型存儲區(qū)域data片內(nèi)直接尋址RAMidata片內(nèi)間接尋址RAMpdata分頁尋址的片外RAMxdata片外數(shù)據(jù)存儲(64K)code片內(nèi)統(tǒng)一編址ROM(64K)bdata片內(nèi)可位尋址的RAM(128位)指針與存儲區(qū)域與變量相同,我們也可以指定指針的存儲區(qū)域,以及指針?biāo)赶虻淖兞康拇鎯^(qū)域。指明了所指向變量的具體存儲區(qū)域的指針效率要更高一些,占用的存儲區(qū)也少一些(三字節(jié)一字節(jié))。例如:TOC\o"1-5"\h\zI II I■ char data *str1;//指針指向data存儲區(qū)的字符變量 ,I II I! char data * data str2;//指針本身也在data區(qū)域 !I II I絕對地址的變量在C51中,可以另變量存儲在存儲器中的特定地址。這是通過“_at_”關(guān)鍵字實現(xiàn)的。例如:■chardatatest_at_0x100;不過需要注意的是,絕對地址的變量具有如下要求:?不能初始化?bit類型不能用絕對地址?只有全局變量才可以使用絕對地址順序結(jié)構(gòu)、選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)僅僅是簡單的一個語句一個語句的執(zhí)行。選擇結(jié)構(gòu)的語句有:ifelse,switch循環(huán)結(jié)構(gòu)的語句有:for,while,dowhile與標(biāo)準(zhǔn)C語言一樣,循環(huán)結(jié)構(gòu)中可以使用break和continue,switch中可以使用break。函數(shù)在C51中,函數(shù)的聲明,定義和調(diào)用的方式基本一致,這里僅僅記錄一些主要的不同之處:可重入函數(shù)C51中的函數(shù)在默認(rèn)情況下是不可以被多個進(jìn)程共享的,而可重入函數(shù)則沒有這個限制。讓函數(shù)可重用的方法如下:!inttestFunc(inta,intb)reentrant;III- 指定寄存器組在C51中,我們可以指定函數(shù)指定特定的寄存器組。如果為中斷函數(shù)指定寄存器組,那么所有被該中斷函數(shù)調(diào)用的函數(shù)都必須使用這個寄存器組。指定函數(shù)使用的寄存器組的方法是在函數(shù)原型后面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人網(wǎng)絡(luò)服務(wù)欠款合同樣本3篇
- 2025年度新能源電池技術(shù)總監(jiān)招聘及知識產(chǎn)權(quán)保護(hù)合同4篇
- 二零二五版木工班組承包工程結(jié)算合同4篇
- 二零二五年度抹灰班組施工環(huán)境監(jiān)測與保護(hù)合同
- 二零二五版木工手工藝傳承與發(fā)展合同2篇
- 2025年度水利工程安全監(jiān)測承包合同
- 2025年房地產(chǎn)買賣代理合同爭議解決途徑4篇
- 2025年度影視后期制作合同模板4篇
- 二零二五年度輕傷害事故和解協(xié)議及保險理賠服務(wù)合同
- 2025年度洗浴技師客戶服務(wù)標(biāo)準(zhǔn)合同
- 2025-2030年中國陶瓷電容器行業(yè)運(yùn)營狀況與發(fā)展前景分析報告
- 2025年山西國際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點提升(共500題)附帶答案詳解
- 二零二五年倉儲配送中心物業(yè)管理與優(yōu)化升級合同3篇
- 2025屆廈門高三1月質(zhì)檢期末聯(lián)考數(shù)學(xué)答案
- 音樂作品錄制許可
- 江蘇省無錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測試語文試題(解析版)
- 拉薩市2025屆高三第一次聯(lián)考(一模)英語試卷(含答案解析)
- 開題報告:AIGC背景下大學(xué)英語教學(xué)設(shè)計重構(gòu)研究
- 師德標(biāo)兵先進(jìn)事跡材料師德標(biāo)兵個人主要事跡
- 連鎖商務(wù)酒店述職報告
- 2024年山東省煙臺市初中學(xué)業(yè)水平考試地理試卷含答案
評論
0/150
提交評論