




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、會計學1 C編程基礎編程基礎 第1頁/共128頁 第2頁/共128頁 “C51”概念:概念:為了與為了與ANSI C 區別,區別,把把“單片機單片機C語言語言”稱為稱為 “C51”,也稱為,也稱為“Keil C”。 第3頁/共128頁 第4頁/共128頁 譯器不能正確地映射定位。譯器不能正確地映射定位。 第5頁/共128頁 第6頁/共128頁 sfr16usingvolatile xdata 這些關鍵字在后面會陸續接這些關鍵字在后面會陸續接 觸到,此處先不給出它們的含義。觸到,此處先不給出它們的含義。 第7頁/共128頁 第8頁/共128頁 表表4-1 C51數據類型、長度和數值范圍數據類型、
2、長度和數值范圍 數據類型數據類型表示方法表示方法長長 度度數數 值值 范范 圍圍 無符號字符型無符號字符型 unsigned char 1字節字節 0255 有符號字符型有符號字符型 signed char1字節字節 - -128127 無符號整型無符號整型unsigned int2字節字節 065535 有符號整型有符號整型signed int2字節字節 - -3276832767 無符號長整型無符號長整型 unsigned long 4字節字節 04294967295 有符號長整型有符號長整型 signed long4字節字節 - -21474836482147483647 浮點型浮點型f
3、loat4字節字節 1.1755E-383.40E+38 特殊功能寄特殊功能寄 存器型存器型 sfr sfr16 1字節字節 2字節字節 0255 065535 位類型位類型bit、sbit1位位0或或1 第9頁/共128頁 floatc; b=(int)c; 第10頁/共128頁 RAM的位尋址空間,包括低的位尋址空間,包括低128 位和特殊功能寄存器位。位和特殊功能寄存器位。 第11頁/共128頁 示。示。需要額外的操作需要額外的操作來測試、處來測試、處 理符號位,使用的是兩種庫函數,理符號位,使用的是兩種庫函數, 代碼量大,運算速度降低。代碼量大,運算速度降低。 第12頁/共128頁 例
4、如,整型變量的值為0 x1234,在內 存中的存放如右圖所示。 signed int數據用補碼表示。 地址 低 高 : : 12 34 : : 第13頁/共128頁 如長整型變量的值為0 x12345678,在 內存中的存放方法如右圖所示。不管是 unsigned long數據還是signed long數據。 地址 低 高 : : 12 34 56 78 : : 第14頁/共128頁 字節地址字節地址0123 浮點數浮點數 內容內容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 符號和階碼符號和階碼 尾數高位尾數高位尾數低位尾數低位 第15頁/共128頁 第1
5、6頁/共128頁 地址 低 高 : : C1 48 00 00 : : 說明:教材中存儲結構是錯的 。 第17頁/共128頁 4.3.5 C51變量的存變量的存 儲模式儲模式 4.3.6 C51變量的絕變量的絕 對定位對定位 第18頁/共128頁 時,指定變量時,指定變量4種屬性。種屬性。 數據類型:數據類型:在前面的在前面的4.2中已中已 經敘述過,對于變量名也無須多經敘述過,對于變量名也無須多 說,說,下面主要解釋下面主要解釋“存儲類型存儲類型” 和和“存儲區存儲區”等概念等概念。 第19頁/共128頁 第20頁/共128頁 則認為是動態變量。則認為是動態變量。動態變量一動態變量一 般分配
6、使用寄存器或堆棧般分配使用寄存器或堆棧。 第21頁/共128頁 部定義的為外部靜態變量部定義的為外部靜態變量。在定。在定 義的文件內可以任意使用和修改,義的文件內可以任意使用和修改, 外部靜態變量會一直存在,但在外部靜態變量會一直存在,但在 文件外不可見,即在文件外得到文件外不可見,即在文件外得到 保護。保護。 第22頁/共128頁 第23頁/共128頁 其其安排為寄存器變量安排為寄存器變量,用戶不用,用戶不用 專門聲明。專門聲明。 第24頁/共128頁 所以所以 區域區域。在定義變量時,必在定義變量時,必 須明確指出是存放在哪個區域須明確指出是存放在哪個區域。 第25頁/共128頁 表表4-
7、2 C51存儲區與存儲空間的對應關系存儲區與存儲空間的對應關系 關鍵字關鍵字對應的存儲空間及范圍對應的存儲空間及范圍 codeROM空間,空間,64KB全空間全空間 data片內片內RAM,直接尋址,低,直接尋址,低128字節字節 bdata片內片內RAM,位尋址區,位尋址區0 x200 x2f,可字節訪問,可字節訪問 idata 片內片內RAM,間接尋址,間接尋址,256字節,與字節,與 Ri 對應對應 pdata 片外片外RAM,分頁尋址的,分頁尋址的256字節字節(P2不變不變), P2 改變可尋址改變可尋址64KB全空間,與全空間,與MOVX Ri 對應對應 xdata片外片外RAM,
8、64KB全空間全空間 bit片內片內RAM位尋找區位尋找區,位地址位地址0 x000 x7f,128 位位 第26頁/共128頁 第27頁/共128頁 int pdata send_data30; /定義存放發送數據的數組定義存放發送數據的數組 第28頁/共128頁 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /定義共陰極數碼定義共陰極數碼 管段碼數組管段碼數組 第29頁/共128頁 存儲模式(編譯模式)決定存儲模式(編譯模式)決定 了變量的默認存儲區域和參數的了變量的默認存儲區域和參數的 傳遞方法傳遞方法。 第30頁/共128頁 第31頁/共128頁 在在compact模式
9、下參數的傳遞:模式下參數的傳遞: 通過片外數據區的一個固定頁完通過片外數據區的一個固定頁完 成的。成的。 第32頁/共128頁 儲器完成的。儲器完成的。 第33頁/共128頁 compact、 large)”應放在文件的開始。應放在文件的開始。 第34頁/共128頁 區區 1 _at_ 地址常數地址常數,變量名,變量名2 第35頁/共128頁 unsigned char xdata printer_port _at_ 0 x7fff; 第36頁/共128頁 3)位變量不能使用)位變量不能使用_at_絕對絕對 定位。定位。 第37頁/共128頁 第38頁/共128頁 bitflag_run,re
10、ceiv_bit=0; static bit send_bit; 第39頁/共128頁 第40頁/共128頁 第41頁/共128頁 字節地址帶位號字節地址帶位號 第42頁/共128頁 sbitRS0=0 xd3; /定義定義 PSW的第的第3位位 sbitET0=0 xa9; /定義定義 IE的第的第1位位 第43頁/共128頁 PSW的第的第2位位 sbitES=IE 4; /定義定義 IE的第的第4位位 第44頁/共128頁 sbitAC=0 xd0 6; /定義定義 PSW的第的第6位位 sbitEA=0 xa8 7;/定義定義 IE的第的第7位位 第45頁/共128頁 第46頁/共12
11、8頁 名名 位號常數位號常數 第47頁/共128頁 sbit flag_dis=operate 1; / 顯示標志位顯示標志位 sbit flag_mus=operate 2; / 音樂標志位音樂標志位 sbit flag_run=operate 3; / 運行標志位運行標志位 第48頁/共128頁 第49頁/共128頁 sfrPSW=0 xd0;/定義定義 PSW sfrIE=0 xa8;/定義定義 IE 第50頁/共128頁 RCAP2L/和和RCAP2H, 0 xca為為RCAP2L的地址的地址 第51頁/共128頁 能像一般變量那樣隨便使用。能像一般變量那樣隨便使用。 第52頁/共12
12、8頁 第53頁/共128頁 第54頁/共128頁 第三個字節:為指針第三個字節:為指針地址的低地址的低 字節字節 第55頁/共128頁 通用指針的特點 : 定義簡單 訪問所有空間 訪問速度慢 第56頁/共128頁 *指針存儲區指針存儲區 指針名指針名1 ,*指針存儲區指針存儲區 指針指針 名名2, 第57頁/共128頁 下不會是同一個區域。下不會是同一個區域。 第58頁/共128頁 身都存儲在默認的存儲區域身都存儲在默認的存儲區域。 第59頁/共128頁 綠色關鍵字綠色關鍵字為指針所指向的存為指針所指向的存 儲區儲區 藍色關鍵字藍色關鍵字為指針本身所存儲為指針本身所存儲 的區域的區域 第60頁
13、/共128頁 域,顯得簡單,并且對初學者更域,顯得簡單,并且對初學者更 容易理解。容易理解。 第61頁/共128頁 表表4-6 通用指針存儲區域編碼通用指針存儲區域編碼 存儲區存儲區idataxdata pdatadatacode 編編 碼碼12345 第62頁/共128頁 譯器在進行編譯時自動完成。譯器在進行編譯時自動完成。 第63頁/共128頁 存儲區的方法。也可以訪問函存儲區的方法。也可以訪問函 數。數。 第64頁/共128頁 、 不使用不使用bdata存儲區類型。存儲區類型。 第65頁/共128頁 運行中運行中CPU設置的。設置的。 特別說明:特別說明:“volatile”的含的含 義
14、與教材上表述不太一致,此義與教材上表述不太一致,此 處表述直觀更容易理解。處表述直觀更容易理解。 第66頁/共128頁 volatile pdata*)0) #define XBYTE (unsigned char volatile xdata*)0) 第67頁/共128頁 無無idata RAM高高128字節區域(字節區域(0 x80 0 xff),需要時可以自己定義。),需要時可以自己定義。 這些宏定義原型放在這些宏定義原型放在absacc.h 文件中文件中,使用時需要用預處理命,使用時需要用預處理命 令把該頭文件包含到文件中,形令把該頭文件包含到文件中,形 式為:式為:#include
15、。 第68頁/共128頁 RAM XBYTE0 x0002=0 x36; /給片給片 外外RAM送數據送數據 dis_buf0=CBYTETABLE+5; /從從CODE區讀取數據區讀取數據 第69頁/共128頁 、 XWORD0 x0002=0 x5678;/給給4、 5單元送數單元送數 通過指針定義的宏訪問存儲通過指針定義的宏訪問存儲 器這種方法,特別適用于訪問器這種方法,特別適用于訪問 I/O口。口。 第70頁/共128頁 給給0 x2000送數送數 xcpt+;*xcpt=234;/ 給給0 x2001送數送數 第71頁/共128頁 for(i=0;i20;i+) *(dcpt+i)=
16、*(xcpt+i); dcpt和xcpt兩個指針 變量存儲在什么地方? 第72頁/共128頁 unsigned char data *point,i, j,n,d; 第73頁/共128頁 的數的數 return *point;/返回得到的中值返回得到的中值 第74頁/共128頁 第75頁/共128頁 puts,格式輸入,格式輸入/輸出函數輸出函數 printf和和scanf等。等。 第76頁/共128頁 TL1=0 xfd;/設置設置T1低低8位初位初 值值 TH1=0 xfd;/設置設置T1自自 動重裝初值動重裝初值 TR1=1;/開開T1 第77頁/共128頁 唯一的區別:唯一的區別:還要
17、從串行口還要從串行口 返回字符。返回字符。 第78頁/共128頁 第79頁/共128頁 普通字符普通字符 轉義字符。轉義字符。 第80頁/共128頁 況見表況見表4-4。 第81頁/共128頁 表表4-3 printf函數的格式字符函數的格式字符表表4-4 常用的轉義字符常用的轉義字符 格式字符格式字符 數據類型數據類型輸輸 出出 格格 式式轉義字符轉義字符含含 義義ASCII碼碼 dint 有符號十進制數有符號十進制數 0 空字符空字符 0 x00 uint 無符號十進制數無符號十進制數 n 換行符換行符 0 x0a oint 無符號八進制數無符號八進制數 r 回車符回車符 0 x0d x,
18、 Xint 無符號十六進制數無符號十六進制數 t 水平制表水平制表 0 x09 ffloat 十進制浮點數十進制浮點數 b 退格符退格符 0 x08 e, Efloat 科學計數法的十進科學計數法的十進 制浮點數制浮點數 f 換頁符換頁符 0 x0c g, Gfloat 自動選擇自動選擇e或或f格式格式 單引號單引號 0 x27 cchar 單個字符單個字符 ” 雙引號雙引號 0 x22 s指針指針 帶結束符的字符串帶結束符的字符串 反斜杠反斜杠 0 x5c 第82頁/共128頁 , printf(“%sn”,“OK,Send data begin!”) ; /從串行口輸出從串行口輸出OK,
19、Send data begin!和和n 第83頁/共128頁 1)格式說明符:)格式說明符:由百分號由百分號 “%”和格式字符組成,其作用和格式字符組成,其作用 是指明輸入數據的格式,見表是指明輸入數據的格式,見表4- 5。 第84頁/共128頁 第85頁/共128頁 的數據多數是字符型和字符串,的數據多數是字符型和字符串, 以字符串居多,往往把數字型以字符串居多,往往把數字型 數據轉換成字符串傳輸。數據轉換成字符串傳輸。 第86頁/共128頁 第87頁/共128頁 unsigned char data t23;/ 放接收的時間放接收的時間 unsigned char data sec0=61
20、; / 秒備份秒備份 unsigned char data i; 第88頁/共128頁 是否已經改變是否已經改變 putchar(t1i); t2i+=_getkey(); 第89頁/共128頁 顯示函數顯示函數 第90頁/共128頁 C51函數的定義與ANSI C相似,但 有更多的屬性要求。本節先討論函數的 一般定義,然后專門給出中斷函數的定 義,因為中斷函數有其特殊性。 第91頁/共128頁 執行語句執行語句 第92頁/共128頁 在編譯時會為重入函數生成一個堆棧,通過 這個堆棧來完成參數的傳遞和存放局部變量。 重入函數不能使用bit型參數;函數返回值也不 能是bit型。 第93頁/共12
21、8頁 表表4-7 單片機中斷源與中斷號的關系單片機中斷源與中斷號的關系 中斷源中斷源 外中斷外中斷0 T0中斷中斷 外中斷外中斷1 T1中斷中斷 串行中斷串行中斷 T2中斷中斷 中斷號中斷號012345 中斷入中斷入 口地址口地址 0 x00030 x000b0 x0013 0 x001b0 x00230 x002b 第94頁/共128頁 第95頁/共128頁 第96頁/共128頁 第97頁/共128頁 第98頁/共128頁 第99頁/共128頁 第100頁/共128頁 語言,只有少部分是匯編語言。語言,只有少部分是匯編語言。 第101頁/共128頁 語言程序的開始和結束,分別語言程序的開始和
22、結束,分別 放在匯編程序段的前面和后面。放在匯編程序段的前面和后面。 第102頁/共128頁 第103頁/共128頁 第104頁/共128頁 六、在六、在C語言中調用匯編語語言中調用匯編語 言的方法言的方法 第105頁/共128頁 C51函數名還有其它的格式,函數名還有其它的格式, 如通過存儲器傳遞參數的函數如通過存儲器傳遞參數的函數 等,在混合編程中基本不用,等,在混合編程中基本不用, 所以不再介紹。所以不再介紹。 第106頁/共128頁 表表4-8 C51中函數名的轉換規則中函數名的轉換規則 C51函數聲明函數聲明 匯編匯編 函數名函數名 說說 明明 type func1(void)FUN
23、C1 調用時不傳遞參數,但有調用時不傳遞參數,但有 返回值,函數名不變返回值,函數名不變 type func2(args)_FUNC2 通過寄存器傳遞參數,函通過寄存器傳遞參數,函 數名加前綴數名加前綴“_” type func3(args) reentrant _?FUNC3 重入函數,通過堆棧傳遞重入函數,通過堆棧傳遞 參數,函數名加前綴參數,函數名加前綴“_?” 第107頁/共128頁 ?數據段前綴數據段前綴?函數名函數名?數據類數據類 型型 第108頁/共128頁 表表4-9 C51段類型前綴與存儲段類型前綴與存儲 段前綴段前綴 存儲區類型存儲區類型說說 明明 ?PR?code可執行程
24、序段可執行程序段 ?CO?code程序存儲器中的常數數據段程序存儲器中的常數數據段 ?BI?bit內部內部RAM的位類型數據段的位類型數據段 ?BA?bdata內部內部RAM的可位尋址的數據段的可位尋址的數據段 ?DT?data內部內部RAM的數據段的數據段 ?ID?idata內部內部RAM的間接尋址的數據段的間接尋址的數據段 ?PD?pdata外部外部RAM的分頁數據段的分頁數據段 ?XD?xdata外部外部RAM的一般數據段的一般數據段 第109頁/共128頁 存器傳遞參數的規則。存器傳遞參數的規則。 第110頁/共128頁 表表4-10 C51利用寄存器傳遞參數規則利用寄存器傳遞參數規則
25、 參數號參數號 charintlong,float一般指針一般指針 1R7 R6,R7 (低字節低字節) R4R7 R1R2R3(R3為存儲區,為存儲區, R2為高地址為高地址, R1為低地址為低地址) 2R5 R4,R5 (低字節低字節) R4R7 或存儲區或存儲區 R1R2R3或存儲區或存儲區 3R3 R2,R3 (低字節低字節) 存儲區存儲區R1R2R3或存儲區或存儲區 第111頁/共128頁 表表4-11 C51函數返回值傳遞規則函數返回值傳遞規則 返回類型返回類型使用的寄存器使用的寄存器說說 明明 bitC(進位標志進位標志)由進位標志位返回由進位標志位返回 char或或1字節指針字節指針R7由由R7返回返回 int或或2字節指針字節指針R6,R7高字節在高字節在R6,低字節在,低字節在R7 longR4R7高字節在高字節在R4,低字節在,低字節在R7 floatR4R732位位IEEE格式格式 一般指針一般指針R1R3R3為存儲區,為存儲區,R1為低地址為低地址 第112頁/共128頁 例如:例如: NAME EXAMP 第113頁/共128頁 ?PR?_RIGHT?EXAMP SEGMENT CODE ?PR?_?MUSIC?EXAMP SEGMENT COD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年照護測試題庫與答案
- 2025年上海金山區屬國有企業招聘考試筆試試題1(含答案)
- 老年摔傷護理課件
- 老年急救護理課件
- 老年康復護理課件模板
- 老年人文護理課件
- 老干部工作政策課件
- 老師德育課件
- 出租車企業車輛運營維護勞動合同
- 銀行財務風險評估合同書63657
- 哪些地方必須設置噴淋洗眼器
- 國開期末考試《管理英語4》機考試題及答案第4套
- 產后出血的護理-課件
- 2023年春季國開《學前教育科研方法》期末大作業(參考答案)
- 上海科學院事業單位工作人員招考聘用筆試參考題庫+答案解析
- EXCELVBA函數參考手冊
- 成都石室中學初中學校新初一分班(摸底)語文模擬試題(5套帶答案)
- SB/T 10279-2017熏煮香腸
- GB/T 3452.1-2005液壓氣動用O形橡膠密封圈第1部分:尺寸系列及公差
- GB/T 27065-2015合格評定產品、過程和服務認證機構要求
- GB/T 13384-1992機電產品包裝通用技術條件
評論
0/150
提交評論