freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學]單片機應用技術第九章-預覽頁

2024-11-09 18:27 上一頁面

下一頁面
 

【正文】 常量“ A”與字符常量 ‘ A’是不同的。 C51對變量的定義格式如下: ? [存儲種類 ] 數(shù)據(jù)類型 [存儲器類型 ] 變量名表; ? 下面分別介紹變量定義格式中的各項。 ? 自動變量( auto)指定被說明的對象放在內(nèi)存的堆棧中。只要一個外部變量被定義后,它就被分配了固定的內(nèi)存空間,即使函數(shù)調(diào)用結束返回,其存儲空間也不被釋放。 ? 寄存器變量( register)指定將變量放在 CPU的寄存器中,程序執(zhí)行效率最高。 Keil Cx51編譯器完全支持 51系列單片機的硬件結構和存儲器組織,對每個變量可以定義 表 94中的存儲器類型。 /* 在 data區(qū)定義字符型 變量 var */ 上一頁 下一頁 返回 C51的數(shù)據(jù)結構 ? int a=5。 /*在 idata區(qū)定義外 部浮點型變量 x,y,z */ ? char xdata *px。 /*在 bdata區(qū)定義了一個整型 變量 x */ ? sbit x0=x^0。重新定義的方法如下: ? typedef 已有的數(shù)據(jù)類型 新的數(shù)據(jù)類型 ? “ typedef”的作用只是將 C51中原有的數(shù)據(jù)類型用新的名稱做了置換,并沒有創(chuàng)造出新的數(shù)據(jù)類型。 /* 定義x,y為 BYTE型,即 char型變量 */ ? 上例中,用 BYTE置換了 char,在后面的程序中就可以用BYTE定義變量的數(shù)據(jù)類型了。 上一頁 下一頁 返回 C51的數(shù)據(jù)結構 在匯編語言中,對同一個外部數(shù)據(jù)存儲器,既有 Ri分頁尋址,又有 DPTR尋址,其中 Ri與 DPTR本身的地址范圍是不同的。 /* 指針px指向 char型 xdata區(qū),指針 px自身在默認 ? 存儲區(qū),指針長度為 2字節(jié) */ 上一頁 下一頁 返回 C51的數(shù)據(jù)結構 ? char pdata * data py。 上一頁 返回 C51的運算符 ? C語言對數(shù)據(jù)有很強的表達能力,具有十分豐富的運算符。 /* 將常數(shù) 0x1000同時賦值給變量 a,b */ ? 2. 算術運算符 下一頁 返回 C51的運算符 ? C51的算術運算符有以下 5種: ? + 加或取正運算符 ? ? 減或取負運算符 ? * 乘運算符 ? / 除運算符 ? % 取余運算符 ? 算術表達式的格式為: ? 表達式 1 算術運算符 表達式 2 ? 例如: ? a+b/ x*5+y 上一頁 下一頁 返回 C51的運算符 ? 算術運算符的優(yōu)先級由高到低依次為:取負 ? → 乘 *、除 /、取余 % → 加 +、減 ? 。 /* 在使用 j之后,再使 j值減 1 */ 上一頁 下一頁 返回 C51的運算符 ? 4. 關系運算符 ? C51的有以下 6種: ? 大于運算符 ? 小于運算符 ? = 大于等于運算符 ? = 小于等于運算符 ? = = 等于運算符 ? != 不等于運算符 ? 前四種關系運算符的優(yōu)先級相同,后兩種關系運算符的優(yōu)先級也相同但比前四種低。amp。 y、 ! c ? 6. 位運算符 ? C51的位運算符有以下 6種: ? ~ 按位取反 ? 左移 ? 右移 ? amp。匯編語言中的移位是循環(huán)移位,而 C51中的移位會將移出的位值丟棄,補位時補入 0(若是有符號數(shù)的負數(shù)右移,則補入符號位 1)。如: +=、 ?=、 *=、 /=、 %=、 =、=、 amp。 ? 8. 條件運算符 上一頁 下一頁 返回 C51的運算符 ? 條件運算符的格式為: ? 邏輯表達式 ? 表達式 1:表達式 2 ? 其功能是首先計算邏輯表達式,當值為真(非 0)時,將表達式 1的值作為整個條件表達式的值;當值為假( 0)時,將表達式 2的值作為整個條件表達式的值。目標變量 /*將目標變量的地址賦給左邊的變量 */ ? 例如: ? px = amp。 上一頁 返回 C51的函數(shù) ? 函數(shù)的分類及定義 ? 從用戶使用的角度劃分, C51的函數(shù)分為兩種:標準庫函數(shù)和用戶自定義函數(shù)。函數(shù)定義的一般形式為: ? 函數(shù)類型 函數(shù)名(形式參數(shù)表) 下一頁 返回 C51的函數(shù) ? 形式參數(shù)說明 ? { ? 局部變量定義 ? 函數(shù)體語句 ? } ? 其中, “ 函數(shù)類型 ” 說明了自定義函數(shù)返回值的類型,可以是 、字符型、浮點型及無值型( void),也可以是指針。如果定義的是無參函數(shù),則可以無形式參數(shù)表,但必須有圓括號。 ? char fun1(x, y) /*定義一個 char型函數(shù) */ ? int x。 /*函數(shù)體語句 */ ? return(z)。對于不需要有返回值的函數(shù),可將該函數(shù)類型定義為 void類型(空類型)。調(diào)用的一般形式為: ? 函數(shù)名 (實際參數(shù)表) ? 其中, “ 函數(shù)名 ” 就是被調(diào)用的函數(shù)。在 C51中必須采用一個擴展關鍵字 reentrant,作為定義函數(shù)時的選項,將該函數(shù)定義為再入函數(shù),此時該函數(shù)才可被遞歸調(diào)用。 上一頁 下一頁 返回 C51的函數(shù) ? 2. 中斷服務函數(shù) ? C51編譯器支持用戶在 C51源程序中直接編寫高效的中斷服務程序。如果不用該選項,則編譯器會自動選擇一個寄存器組使用。中斷函數(shù)最好寫在文件的尾部,并且禁止使用 extern存儲種類說明。這些命令都是以 “ ”開頭,以與源程序中的一般語句行和說明行相區(qū)別。 ? ( 2)宏定義不是 C51的語句,所以在宏定義行末尾不需要加分號。如果要終止宏的作用域,可使用 undef命令。在 include ,就是將 C51編譯器中的庫函數(shù)。這樣就可以便于修改,減少重復勞動。 ? define CPU 8051 ? ifdef CPU ? define FREQ 6 ? else ? define FREQ 12 ? endif 上一頁 下一頁 返回 C51的編譯預處理 ? 2. 格式二 ? ifndef 標識符 ? 程序段 1 ? else ? 程序段 2 ? endif ? 該命令格式與格式一相反,如果指定的標識符未被定義,則程序段 1參加編譯,否則程序 2參加編譯。對三種基本結構采用的流程控制語句也與 C語言相同,這里就不一一介紹了。為了能在 C51程序中直接對任意指定的存儲器地址進行操作,可以采用指針變量實現(xiàn),也可用 。 ? xp=0x1000。 ? include ? void main( void) ? { ? DBYTE[0x30]=XBYE[0x1000]。 ? p=0x20。 ? void main( void) ? { ? char x,*p,*y。 ? if(x0) *y = 1。 ? 程序一:用 do… while實現(xiàn)。 ? } ? while(i=100)。i=100。 ? 說明:定時器 T0采用方式 1,產(chǎn)生周期為 200ms脈沖,使 100ms取反一次,將 時器 T1的計數(shù)脈沖, T1對下降沿計數(shù),采用方式 2。 上一頁 下一頁 返回 C51應用舉例 ? include ? sbit P10=P1^0。 /*保證第一次反相便開始計數(shù) */ ? TMOD=0x61。 上一頁 下一頁 返回 C51應用舉例 ? TL1= ? 5。ET1=1。){} /*等待中斷 */ ? } ? void timer0(void) interrupt 1 using1 /*T0中斷服務程序 */ ? { P11=! P11。 ? } ? C51和匯編語言的混合編程 ? 為了發(fā)揮 C51語言和匯編語言各自的優(yōu)點,常需要將兩者進行混合編程。 ? 為了實現(xiàn) C51與匯編語言的混合編程,可以采用兩種方法: ? 第一種方法就是在 C51中可以通過直接插入 “ pragma asm/ endasm”關鍵字,實現(xiàn)匯編語言程序的內(nèi)嵌。 ? void main(void) { P10=1。 上一頁 下一頁 返回 C51應用舉例 ? 在把匯編語言加入到 C51程序之前,必須使匯編程序與 C51程序一樣,有參數(shù)、返回值和局部變量。 上一頁 下一頁 返回 C51應用舉例 ? 第 3個參數(shù) R3R2(高字節(jié) ), R3(低字節(jié) )無例如: fun(int a,int b,int *c)其中, a在 R R7中傳遞, b在 R4, R5中傳遞, *c在 R R R3中傳遞。存儲器空間取決于采用的編譯模式: 上一頁 下一頁 返回 C51應用舉例 ? SMALL模式 參數(shù)放在 data區(qū) ? COMPACT模式 參數(shù)放在 pdata區(qū) ? LARGE模式 參數(shù)放在 xdata區(qū) ? 如果函數(shù)有返回值,則必須在 RET指令之前將返回值放入 51單片機的工作寄存器內(nèi),這樣返回值才能正常被傳遞。 上一頁 下一頁 返回 C51應用舉例 ? 例 7 此例中,用匯編語言編寫的一段延時程序,由 C51主程序調(diào)用。 /* 在程序存儲區(qū)中定義段 */ 上一頁 下一頁 返回 C51應用舉例 PUBLIC DELAY100。 ”表示程序是在程序存儲區(qū) code中定義段,“ DELAY100”為段名, “ ?PR?”表示段位于程序存儲區(qū)內(nèi);“ PUBLIC DELAY100。 ? 例 8 在匯編程序中比較兩數(shù)大小,由 C51主程序調(diào)用將大數(shù)存入 d中。 ? max (a,b)。 /*該函數(shù)可被連接器放置在任何地方 */ ? _MAX: MOV A,R7 ;通過 R7取參數(shù) a ? MOV 30H,R5 ;通過 R5取參數(shù) b ? CJNE A,30H,TAG1 ;比較大小 ? TAG1: JC EXIT ? MOV 30H,R7 ;大數(shù)存 30H單元 ? EXIT: RET ? END 上一頁 返回 本章小結 ? C51的程序結構及數(shù)據(jù)類型與 C語言類似,根據(jù) 89C51單片機的存儲特點,增加了幾種新的數(shù)據(jù)類型: sfr、 sfr1bit、 sbit。與 C語言基本相同。表示取地址運算符, *為取內(nèi)容
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1