MCS-51單片機(jī)C語(yǔ)言程序設(shè)計(jì)課件(PPT 48頁(yè))_第1頁(yè)
MCS-51單片機(jī)C語(yǔ)言程序設(shè)計(jì)課件(PPT 48頁(yè))_第2頁(yè)
MCS-51單片機(jī)C語(yǔ)言程序設(shè)計(jì)課件(PPT 48頁(yè))_第3頁(yè)
MCS-51單片機(jī)C語(yǔ)言程序設(shè)計(jì)課件(PPT 48頁(yè))_第4頁(yè)
MCS-51單片機(jī)C語(yǔ)言程序設(shè)計(jì)課件(PPT 48頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、以MCS-51單片機(jī)為例講解通信工程學(xué)院自動(dòng)化系主講人:張志成單片機(jī)原理及應(yīng)用第1頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 2課程安排第一章 MCS-51單片機(jī)概述第二章 MCS-51單片機(jī)的硬件結(jié)構(gòu)第三章 單片機(jī)C語(yǔ)言程序設(shè)計(jì)第四章 MCS-51單片機(jī)的中斷系統(tǒng)第五章 MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器第六章 MCS-51單片機(jī)的串行通信第七章 MCS-51單片機(jī)的外圍器件及擴(kuò)展第2頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 3第三章 單片機(jī)C語(yǔ)言程序設(shè)計(jì)3.1 C語(yǔ)言與MCS-51單片機(jī)3.2 C51的數(shù)據(jù)類型與運(yùn)算3.3 C51流程控制語(yǔ)句3.4 C

2、51構(gòu)造數(shù)據(jù)類型3.5 C51函數(shù)3.6 模塊化程序設(shè)計(jì)第3頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 43.1 C語(yǔ)言與MCS-51單片機(jī)一、MCS-51的編程語(yǔ)言四種語(yǔ)言支持MCS-51單片機(jī):BASIC、PL/M、匯編語(yǔ)言和C語(yǔ)言。匯編語(yǔ)言: 用匯編程序設(shè)計(jì)MCS51系列單片機(jī)應(yīng)用程序時(shí),必須要考慮其存儲(chǔ)器結(jié)構(gòu),尤其必須考慮其片內(nèi)數(shù)據(jù)存儲(chǔ)器與特殊功能寄存器正確、合理的使用以及按實(shí)際地址處理端口數(shù)據(jù)。C語(yǔ)言: C語(yǔ)言是一種源于編寫(xiě)UNIX操作系統(tǒng)的語(yǔ)言,是一種結(jié)構(gòu)化語(yǔ)言,可產(chǎn)生緊湊代碼。第4頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 5與匯編語(yǔ)言相比,C

3、語(yǔ)言有如下優(yōu)點(diǎn):對(duì)單片機(jī)指令系統(tǒng)不要求了解,僅要求對(duì)8051存儲(chǔ)器結(jié)構(gòu)有初步了解;寄存器的分配,不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;程序有規(guī)范的結(jié)構(gòu),分為不同的函數(shù),使程序結(jié)構(gòu)化;更符合人們的思考習(xí)慣;改善了程序的可讀性;編程及程序調(diào)試時(shí)間顯著縮短,從而提高效率;提供的庫(kù)包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)數(shù)據(jù)處理能力;很好的結(jié)構(gòu)性和模塊化更容易閱讀和維護(hù),而且由于有更好的可移植性很多處理器支持C編譯器。第5頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 6二、C51編譯器 用C語(yǔ)言編寫(xiě)的應(yīng)用程序必須經(jīng)單片機(jī)的C語(yǔ)言編譯器(簡(jiǎn)稱C51),轉(zhuǎn)換生成單片機(jī)可執(zhí)行的代碼程序。支持M

4、CS51系列單片機(jī)的C語(yǔ)言編譯器有很多種。如: American Automation IAR Avocet Dunfield Shareware Bso/Tasking KEIL/Franklin第6頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 7三、C51程序結(jié)構(gòu)C51源程序大體上是一個(gè)函數(shù)定義的集合,集合中僅有一個(gè)名為main的主函數(shù)。主函數(shù)是程序的入口,主函數(shù)中所有語(yǔ)句執(zhí)行完畢,則程序執(zhí)行完成。第7頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 8函數(shù)定義由類型,函數(shù)名,參數(shù)表和函數(shù)體組成。 格式如下: 類型 函數(shù)名(參數(shù)表) 參數(shù)說(shuō)明; 數(shù)據(jù)說(shuō)明部分;

5、執(zhí)行語(yǔ)句部分; 第8頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 9 C51程序結(jié)構(gòu)說(shuō)明: 1)C語(yǔ)言是由函數(shù)構(gòu)成的。 一個(gè)C源程序至少包含一個(gè)函數(shù),也可以包含一個(gè)main函數(shù)和若干其他函數(shù)。函數(shù)是C程序的基本單位。 2)函數(shù)分為2大類: 一類是庫(kù)函數(shù),一類是用戶自定義函數(shù)。庫(kù)函數(shù)是C51在庫(kù)文件中已定義的函數(shù),其函數(shù)說(shuō)明在其頭文件中。用戶函數(shù)是用戶自己定義,自己調(diào)用的一類函數(shù)。第9頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 10 3)函數(shù)由2部分組成: 函數(shù)說(shuō)明部分:它包括函數(shù)名,函數(shù)類型,函數(shù)屬性,函數(shù)參數(shù)名和形式參數(shù)類型。一個(gè)函數(shù)名后面必須跟一個(gè)(),函

6、數(shù)參數(shù)可以沒(méi)有。 函數(shù)體部分: 函數(shù)說(shuō)明部分下面的大括號(hào)內(nèi)的內(nèi)容。函數(shù)體一般包括:變量定義和執(zhí)行部分(由若干語(yǔ)句組成)第10頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 11 4) 一個(gè)C51程序總是從main 函數(shù)開(kāi)始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位置如何。 5)每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。 6)C語(yǔ)言本身沒(méi)有輸入/輸出語(yǔ)句,輸入和輸出操作是有庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成的。 7)可以用/*/對(duì)C程序中的任何部分作注釋。第11頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 12C51程序開(kāi)發(fā)過(guò)程 C51源程序是一個(gè)ASCII文

7、件,可以用任何標(biāo)準(zhǔn)的ASCII文件編輯器來(lái)編寫(xiě),如:寫(xiě)字板,記事本等。 C51程序機(jī)構(gòu)與一般C語(yǔ)言沒(méi)有什么差別,程序的書(shū)寫(xiě)格式自由度高,靈活性強(qiáng),有較大的任意性。第12頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 13 要點(diǎn)如下: 1)一般情況下,每個(gè)語(yǔ)句占用一行。 2)不同結(jié)構(gòu)層次的語(yǔ)句,從不同的起始位置開(kāi)始,即在同一結(jié)構(gòu)層次中的語(yǔ)句,縮進(jìn)同樣的字?jǐn)?shù)。 3)表示結(jié)構(gòu)層次的大括號(hào)通常寫(xiě)在該結(jié)構(gòu)語(yǔ)句第一字母的下方,與機(jī)構(gòu)化語(yǔ)句對(duì)齊,并占用一行。第13頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 14系統(tǒng)庫(kù)C51源程序C51編譯器EPROM編程器鏈接列表文件浮動(dòng)目標(biāo)

8、碼模塊絕對(duì)定位目標(biāo)碼文件用戶庫(kù)硬件仿真器映像文件第14頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 15C51與標(biāo)準(zhǔn)C語(yǔ)言的區(qū)別 C51的語(yǔ)法規(guī)定、程序結(jié)構(gòu)及程序設(shè)計(jì)方法都與標(biāo)準(zhǔn)的C語(yǔ)言程序設(shè)計(jì)相同,但C51程序與標(biāo)準(zhǔn)的C程序在以下幾個(gè)方面不一樣: (1)C51中定義的庫(kù)函數(shù)和標(biāo)準(zhǔn)C語(yǔ)言定義的庫(kù)函數(shù)不同。標(biāo)準(zhǔn)的C語(yǔ)言定義的庫(kù)函數(shù)是按通用微型計(jì)算機(jī)來(lái)定義的,而C51中的庫(kù)函數(shù)是按MCS-51單片機(jī)相應(yīng)情況來(lái)定義的; (2)C51中的數(shù)據(jù)類型與標(biāo)準(zhǔn)C的數(shù)據(jù)類型也有一定的區(qū)別,在C51中還增加了幾種針對(duì)MCS-51單片機(jī)特有的數(shù)據(jù)類型;第15頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通

9、信工程學(xué)院Page 16 (3)C51變量的存儲(chǔ)模式與標(biāo)準(zhǔn)C中變量的存儲(chǔ)模式不一樣,C51中變量的存儲(chǔ)模式是與MCS-51單片機(jī)的存儲(chǔ)器緊密相關(guān); (4)C51與標(biāo)準(zhǔn)C的輸入輸出處理不一樣,C51中的輸入輸出是通過(guò)MCS-51串行口來(lái)完成的,輸入輸出指令執(zhí)行前必須要對(duì)串行口進(jìn)行初始化; (5)C51與標(biāo)準(zhǔn)C在函數(shù)使用方面也有一定的區(qū)別,C51中有專門(mén)的中斷函數(shù)。第16頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 173.2 C51的數(shù)據(jù)類型與運(yùn)算一、數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù):具有一定各式的數(shù)字或數(shù)值叫做數(shù)據(jù)。數(shù)據(jù)時(shí)計(jì)算機(jī)操作的對(duì)象。數(shù)據(jù)類型:數(shù)據(jù)的不同各式叫做數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)

10、按一定的數(shù)據(jù)類型進(jìn)行的排列、組合及架構(gòu)稱為數(shù)據(jù)結(jié)構(gòu)。第17頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 18C51數(shù)據(jù)類型分類數(shù)據(jù)類型 基本類型構(gòu)造類型指針類型空類型位型(bit)字符型(char)整型(int)長(zhǎng)整型(long)浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)數(shù)組類型(array)結(jié)構(gòu)體類型(struct)共用體(union)枚舉(enum)第18頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 19KEIL C51的數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度(bit)長(zhǎng)度(byte)值域bit110,1unsigned char810255signed char811

11、28127unsigned int 162065535signed int 1623276832767unsigned long32404294967295signed long 32421474836482147483647float 3241.176E383.40E+38(6位數(shù)字)double6481.176E383.40E+38(10位數(shù)字)一般指針243存儲(chǔ)空間065535第19頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 20二、常量與變量常量:在程序運(yùn)行的過(guò)程中,其值不能改變的量稱為常量。變量:在程序運(yùn)行的過(guò)程中,其值可以改變的量稱為變量。一個(gè)變量主要由兩部分構(gòu)成

12、一個(gè)是變量名,一個(gè)是變量值。每個(gè)變量都有一個(gè)變量名,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元(地址),并在該內(nèi)存單元中存放該變量的值。第20頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 21C51數(shù)據(jù)在MCS-51中的存儲(chǔ)方式(1)位變量(bit):變量的類型是位,位變量的值可以是1(true)或0(false)。與MCS-51硬件特性操作有關(guān)的可以定義成位變量必須定位在MCS-51單片機(jī)片內(nèi)RAM的位尋址空間中。(2)字符變量(char): 字符變量的長(zhǎng)度為1 byte即8位。這很合適MCS-51單片機(jī),因?yàn)镸CS-51單片機(jī)每次可處理8位數(shù)據(jù)。對(duì)于無(wú)符號(hào)變量(unsigned char)

13、的值域范圍是0255。 對(duì)于有符號(hào)字符變量(signed char),最具有重要意義的位是最高位上的符號(hào)標(biāo)志位(msb)。此位為1代表“負(fù)”,為0代表“正”。有符號(hào)字符變量和無(wú)符號(hào)字符變量在表示0127的數(shù)值時(shí),其含義是一樣的,都是00 x7F。負(fù)數(shù)一般用補(bǔ)碼表示。第21頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 22(3)整型變量(int):整型變量的長(zhǎng)度為16位。 MCS-51系列單片機(jī)將int型變量的高位字節(jié)數(shù)存放在低地址字節(jié)中,低位字節(jié)數(shù)存放在高地址字節(jié)中。可直接使用幾種專用的機(jī)器指令來(lái)完成多字節(jié)的加、減、乘、除運(yùn)算。整型變量值0 x1234以下圖所示的方式存放在內(nèi)存

14、中。地址 +0 +1 第22頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 23(4)長(zhǎng)整型變量(long):長(zhǎng)整型變量的長(zhǎng)度是32位,占用4字節(jié)(Byte),其它方面與整型變量(int)相似。長(zhǎng)整型變量值0 x12345678以下圖所示的方式存放在內(nèi)存中。+0+1+2+3地址 第23頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 24(5)浮點(diǎn)型變量(float): 浮點(diǎn)型變量為32位,占4個(gè)字節(jié),許多復(fù)雜的數(shù)學(xué)表達(dá)式都采用浮點(diǎn)變量數(shù)據(jù)類型。應(yīng)用符號(hào)位表示數(shù)的符號(hào),用階碼和尾數(shù)表示數(shù)的大小。在編程時(shí),如果只強(qiáng)調(diào)運(yùn)算速度而不進(jìn)行負(fù)數(shù)運(yùn)算時(shí),最好采用無(wú)符號(hào)(unsig

15、ned)格式。無(wú)符號(hào)字符類型的使用:無(wú)論何時(shí),應(yīng)盡可能使用無(wú)符號(hào)字符變量,因?yàn)樗苤苯颖籑CS-51所接受?;谕瑯拥脑?,也應(yīng)盡量使用位變量。有符號(hào)字符變量雖然也只占用一個(gè)字節(jié),但需要進(jìn)行額外的操作來(lái)進(jìn)行測(cè)試代碼的符號(hào)位。這無(wú)疑會(huì)降低代碼效率。第24頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 25在編程時(shí),為了書(shū)寫(xiě)方便,經(jīng)常用簡(jiǎn)化的縮寫(xiě)形式來(lái)定義數(shù)據(jù)類型。其方法是在源程序開(kāi)頭使用#define語(yǔ)句自定義簡(jiǎn)化的類型標(biāo)識(shí)符。 例如: #define uchar unsigned char #define uint unsigned int 這樣,在編程中,就可以用uchar代替

16、unsigned char,用uint代替unsigned int來(lái)定義變量。第25頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 26三、C51數(shù)據(jù)的存儲(chǔ)類型與MCS-51存儲(chǔ)器結(jié)構(gòu) KEIL C51完全支持MCS-51單片機(jī)的硬件結(jié)構(gòu),可以完全訪問(wèn)MCS-51硬件系統(tǒng)的所有部分。該編譯器通過(guò)將變量、常量定義成不同的存儲(chǔ)類型(data,bdata,idata,pdata,xdata,code)的方法,將他們定義在不同的存儲(chǔ)區(qū)中。 第26頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 27第27頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 28C51

17、存儲(chǔ)類型與MCS-51存儲(chǔ)空間的對(duì)應(yīng)關(guān)系存儲(chǔ)類型 與存儲(chǔ)空間的對(duì)應(yīng)關(guān)系 data 直接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問(wèn)速度快(128字節(jié)) bdata 可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),允許位與字節(jié)混合訪問(wèn)(16字節(jié)) idata 間接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),可訪問(wèn)片內(nèi)全部RAM地址空間(256字節(jié)) pdata 分頁(yè)尋址片外數(shù)據(jù)存儲(chǔ)區(qū)(256字節(jié))由MOV Ri訪問(wèn)(i=0,1) xdata 片外數(shù)據(jù)存儲(chǔ)區(qū)(64 KB)由MOVX DPTR訪問(wèn) code 程序存儲(chǔ)器64 KB空間,由MOVC DPTR訪問(wèn)第28頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 29C51存儲(chǔ)類型及其數(shù)據(jù)長(zhǎng)度和值域存儲(chǔ)類

18、型長(zhǎng)度(bit)長(zhǎng)度(byte)值域范圍data810255idata810255pdata810255xdata162065 535code162065 535第29頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 30帶存儲(chǔ)類型的變量的定義的一般格式為 數(shù)據(jù)類型 存儲(chǔ)類型 變量名帶存儲(chǔ)類型的變量定義舉例: char data var1; bit bdata flags; float idata x,y,z; unsigned int pdata var2; unsigned char vector34;第30頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 31存儲(chǔ)

19、模式 存儲(chǔ)模式?jīng)Q定了變量的默認(rèn)存儲(chǔ)類型、參數(shù)傳遞區(qū)和無(wú)明確存儲(chǔ)類型說(shuō)明變量的存儲(chǔ)類型。 如果在變量定義時(shí)略去存儲(chǔ)類型標(biāo)識(shí)符,則編譯器會(huì)自動(dòng)選擇默認(rèn)的存儲(chǔ)類型。默認(rèn)的存儲(chǔ)類型進(jìn)一步由SMALL、COMPACT和LARGE存儲(chǔ)模式指令限制。第31頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 32存儲(chǔ)模式及說(shuō)明存儲(chǔ)模式說(shuō) 明SMALL默認(rèn)的存儲(chǔ)類型是data,參數(shù)及局部變量放入可直接尋址片內(nèi)RAM的用戶區(qū)中(最大128字節(jié))。另外所有對(duì)象(包括堆棧),都必須嵌入片內(nèi)RAM。棧長(zhǎng)很關(guān)鍵,因?yàn)閷?shí)際棧長(zhǎng)依賴于函數(shù)嵌套調(diào)用層數(shù)COMPACT默認(rèn)的存儲(chǔ)類型是pdata,參數(shù)及局部變量放入分頁(yè)的

20、外部數(shù)據(jù)存儲(chǔ)區(qū),通過(guò)R0或R1間接訪問(wèn),??臻g位于片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中LARGE默認(rèn)的存儲(chǔ)類型是xdata,參數(shù)及局部變量直接放入片外數(shù)據(jù)存儲(chǔ)區(qū),使用數(shù)據(jù)指針DPTR來(lái)進(jìn)行尋址。用此數(shù)據(jù)指針進(jìn)行訪問(wèn)效率較低,尤其對(duì)兩個(gè)或多個(gè)字節(jié)的變量,這種數(shù)據(jù)類型的訪問(wèn)機(jī)制直接影響代碼的長(zhǎng)度第32頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 33四、MCS-51特殊功能寄存器(SFR)的C51定義 MCS-51單片機(jī)中,除了程序計(jì)數(shù)器PC和4組工作寄存器組外,其它所有的寄存器均為特殊功能寄存器(SFR),分散在片內(nèi)RAM區(qū)的高128字節(jié)中,地址范圍為80H0FFH。SFR中有11個(gè)寄存器具有位尋址

21、能力,它們的字節(jié)地址都能被8整除,即字節(jié)地址是以8或0為尾數(shù)的。 為了能直接訪問(wèn)這些SFR,KEIL C51提供了一種自主形式的定義方法,這種定義方法與標(biāo)準(zhǔn)C語(yǔ)言不兼容,只適用于對(duì)MCS-51系列單片機(jī)進(jìn)行C語(yǔ)言編程。特殊功能寄存器C51定義的一般語(yǔ)法格式如下: sfr sfr-name = int constant;第33頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 34sfr是定義語(yǔ)句的關(guān)鍵字,其后必須跟一個(gè)MSC-51單片機(jī)真實(shí)存在的特殊功能寄存器名,=后面必須是一個(gè)整型常數(shù),不允許帶有運(yùn)算符的表達(dá)式,是特殊功能寄存器sfr-name的字節(jié)地址,這個(gè)常數(shù)值的范圍必須在SF

22、R地址范圍內(nèi),位于0 x800 xFF。例如: sfr SCON=0 x98; /* 串口控制寄存器地址98H */ sfr TMOD=0 x89; /* 定時(shí)器/計(jì)數(shù)器方式控制寄存器地址89H */第34頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 35在新的MCS-51系列產(chǎn)品中,SFR在功能上經(jīng)常組合為16位值,當(dāng)SFR的高字節(jié)地址直接位于低字節(jié)之后時(shí),對(duì)16位SFR的值可以直接進(jìn)行訪問(wèn)。例如52子系列的定時(shí)器/計(jì)數(shù)器2就是這種情況。為了有效地訪問(wèn)這類SFR,可使用關(guān)鍵字sfr16來(lái)定義,其定義語(yǔ)句的語(yǔ)法格式與8位SFR相同,只是=后面的地址必須用16位SFR的低字節(jié)地址

23、,即低字節(jié)地址作為sfr16的定義地址。例如: sfr16 T2 = 0 xCC /*定時(shí)器/計(jì)數(shù)器2:T2低8位地址為0CCH,T2高8位地址為0CDH*/這種定義適用于所有新的16位SFR,但不能用于定時(shí)器/計(jì)數(shù)器0和1第35頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 36對(duì)于位尋址的SFR中的位,C51支持特殊位的定義。第一種格式:sbit bit-name = sfr-nameint constant sbit是定義語(yǔ)句的關(guān)鍵字,后跟一個(gè)尋址位符號(hào)名(該位符號(hào)名必須是MCS-51單片機(jī)中規(guī)定的位名稱),=后的sfr-name必須是已定義過(guò)的SFR的名字,后的整常數(shù)是尋

24、址位在特殊功能寄存器sfr-name中的位號(hào),必須是07范圍中的數(shù)。例如: sfr PSW=0 xD0 ; /* 定義PSW寄存器地址為D0H */ sbit OV=PSW2 ; /* 定義OV位為PSW.2,地址為D2H */ sbit CY=PSW7 ; /* 定義CY位為PSW.7,地址為D7H */第36頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 37第二種格式:sbit bit-name = constantint constant =后的char constant為尋址地址位所在的特殊功能寄存器的字節(jié)地址,符號(hào)后的int constant為尋址位在特殊功能寄存器中

25、的位號(hào)。例如: sbit OV=0 xD02 ;/* 定義OV位地址是D0H字節(jié) 中的第2位 */ sbit CY=0 xD07 ;/* 定義CY位地址是D0H字節(jié)中 的第7位 */第37頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 38第三種格式:sbit bit-name = char constant; =后的char constant為尋址位的絕對(duì)位地址。例如: sbit OV=0 xD2 ;/* 定義OV位地址為D2H */ sbit CY=0 xD7 ;/* 定義CY位地址為D7H */ 特殊功能位代表了一個(gè)獨(dú)立的定義類,不能與其它位定義和位域互換。第38頁(yè),共48

26、頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 39五、位變量(BIT)的C51定義1、位變量C51定義。使用C51編程時(shí),定義了位變量后,就可以用定義了的變量來(lái)表示MCS-51的位尋址單元。 位變量的C51定義的一般語(yǔ)法格式如下: 位類型標(biāo)識(shí)符(bit) 位變量名 例如: bit direction_bit ;/* 把direction_bit定 義為位變量 */ bit look_pointer ;/* 把look_pointer定義 為位變量 */第39頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 402、關(guān)于為變量的說(shuō)明: (1)函數(shù)可包含類型為bit的參數(shù),也可以

27、將其作為返回值。 (2)對(duì)位變量定義的限制。位變量不能定義成一個(gè)指針,如不能定義:bit * bit_pointer。不存在位數(shù)組,如不能定義:bit b_array 。 (3)在位定義中,允許定義存儲(chǔ)類型,位變量都被放入一個(gè)位段,此段總位于MCS-51片內(nèi)的RAM區(qū)中。因此,存儲(chǔ)類型限制為data和idata,如果將位變量的存儲(chǔ)類型定義成其它存儲(chǔ)類型都將編譯出錯(cuò)。第40頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 41六、C51運(yùn)算符、表達(dá)式及其規(guī)則 1、算術(shù)運(yùn)算符及其表達(dá)式 基本的5種算術(shù)運(yùn)算符: + 加法運(yùn)算符或正值運(yùn)算符 - 減法運(yùn)算符或負(fù)值運(yùn)算符 * 乘法運(yùn)算符 / 除法運(yùn)算符 % 模運(yùn)算符或稱求余運(yùn)算符第41頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 422、關(guān)系運(yùn)算符及其表達(dá)式 1)六種關(guān)系運(yùn)算符 小于 = 大于或等于 = 測(cè)試等于 != 測(cè)試不等于 2)優(yōu)先級(jí) , = 優(yōu)先級(jí)相同(高) =, != 優(yōu)先級(jí)相同(低)第42頁(yè),共48頁(yè)。2022/7/20吉林大學(xué)通信工程學(xué)院Page 433、邏輯運(yùn)算符及其表達(dá)式 1)邏輯運(yùn)算符 & 邏輯“與”(AND) | 邏輯“或”(OR) ! 邏輯“非”(NOT) 2)優(yōu)先級(jí) !優(yōu)先級(jí)最高算術(shù)運(yùn)算關(guān)系運(yùn)算再次之&和 |賦值運(yùn)算優(yōu)先級(jí)最低第43頁(yè),共4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論