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

正文內(nèi)容

單片機(jī)c語(yǔ)言簡(jiǎn)介ppt課件(參考版)

2025-05-15 07:02本頁(yè)面
  

【正文】 用戶必須保證按要求使用相同的。 C51編譯器的數(shù)學(xué)函數(shù)庫(kù) , 提供了保存浮點(diǎn)寄存器狀態(tài)的庫(kù)函數(shù) fpsave和恢復(fù)浮點(diǎn)寄存器狀態(tài)的庫(kù)函數(shù) fprestore。 如果在沒(méi)有實(shí)際中斷請(qǐng)求的情況下直接調(diào)用中斷函數(shù) , RETI指令的操作結(jié)果會(huì)產(chǎn)生一個(gè)致命的錯(cuò)誤 。 3. 在任何情況下都不能直接調(diào)用中斷函數(shù) , 否則會(huì)產(chǎn)生編譯錯(cuò)誤 。 2. 中斷函數(shù)沒(méi)有返回值 , 如果企圖定義一個(gè)返回值將得到不正確的結(jié)果 。 并且關(guān)鍵字 using不允許用于外部函數(shù)關(guān)鍵字 interrupt也不允許用于外部函數(shù) , 它對(duì)中斷函數(shù)目標(biāo)代碼的影響如下: 在進(jìn)入中斷函數(shù)時(shí) , 特殊功能寄存器 ACC、 B、 DPH、 DPL、PSW將被保存入棧;如果不使用寄存組切換 , 則將中斷函數(shù)中所用到的全部工作寄存器都人棧;函數(shù)返回之前 , 所有的寄存器內(nèi)容出棧; 中斷函數(shù)由 8051單片機(jī)指令 RETI結(jié)束 。 使用關(guān)鍵字 using在函數(shù)中確定一個(gè)工作寄存器組時(shí)必須十分小心 ,要保證任何寄存器組的切換都只在仔細(xì)控制的區(qū)域內(nèi)發(fā)生 ,如果不做到這一點(diǎn)將產(chǎn)生不正確的函數(shù)結(jié)果 。 在定義一個(gè)函數(shù)時(shí)using是一個(gè)選項(xiàng) , 如果不用該選項(xiàng) , 則由編譯器選擇一個(gè)寄存器組作絕對(duì)寄存器組訪問(wèn) 。C51編譯器 擴(kuò)展了一個(gè)關(guān)鍵字 using, 專門用來(lái)選擇 8051單片機(jī)中不同的工作寄存器組 。 編譯器 從 8*n+ 3處產(chǎn)生中斷向量 , 具體的中斷號(hào) n和中斷向量取決于不同的 8051系列單片機(jī)芯片 。 關(guān)鍵字 interrupt是函數(shù)定義時(shí)的一個(gè)選項(xiàng) , 加上這個(gè)選項(xiàng)即可以將一個(gè)函數(shù)定義成中斷服務(wù)函數(shù) 。 中斷服務(wù)函數(shù)與寄存器組定義 C51編譯器支持在 C語(yǔ)言源程序中 直接編寫 8051單片機(jī)的中斷服務(wù)函數(shù)程序 , 從而減輕了采用匯編語(yǔ)言編寫中斷服務(wù)程序的繁瑣程度 。 (3) 指針類型的實(shí)際參數(shù)傳遞 當(dāng)函數(shù)的參數(shù)是指針類型的變量時(shí) , 主調(diào)函數(shù) 將實(shí)際參數(shù)的地址傳遞給被調(diào)函數(shù)中形式參數(shù)的臨時(shí)存儲(chǔ)單元 , 因此也屬于 地址傳遞 。地址傳遞方式在執(zhí)行被調(diào)函數(shù)時(shí),形式參數(shù)通過(guò)實(shí)際參數(shù)傳來(lái)的地址,直接到主調(diào)函數(shù)中去存取相應(yīng)的數(shù)組元素,故 形式參數(shù)的變化會(huì)改變實(shí)際參數(shù)的值 。 因此 值傳遞是一種單向傳遞 。 值傳遞方式是將實(shí)際參數(shù)的值傳遞到為被調(diào)函數(shù)中形式參數(shù)分配的臨時(shí)存儲(chǔ)單元中 , 函數(shù)調(diào)用結(jié)束后 , 臨時(shí)存儲(chǔ)單元被釋放 , 形式參數(shù)的值也就不復(fù)存在 , 但實(shí)際參數(shù)所占用的存儲(chǔ)單元保持原來(lái)的值不變 。前面講過(guò),函數(shù)中的 形式參數(shù)在未發(fā)生數(shù)調(diào)用之前是不占用內(nèi)存單元的,只有在進(jìn)行函數(shù)調(diào)用時(shí)才為其分配臨時(shí)存儲(chǔ)單元 。 3. 實(shí)際參數(shù)的傳遞方式 在進(jìn)行函數(shù)調(diào)用時(shí) , 必須用主調(diào)函數(shù)中的實(shí)際參數(shù)來(lái)替換被調(diào)函數(shù)中的形式參數(shù) , 這就是所謂的參數(shù)傳遞 。 進(jìn)行函數(shù)調(diào)用時(shí) , 主調(diào)用函數(shù)將實(shí)際參數(shù)的值傳遞給被調(diào)用函數(shù)中的形式參數(shù) 。 函數(shù)調(diào)用結(jié)束后 , 它所占用的內(nèi)存單元也被釋放 。 在定義一個(gè)函數(shù)時(shí) , 位于函數(shù)名后圓括號(hào)中的變量名稱為 “ 形式參數(shù) ” , 而在調(diào)用函數(shù)時(shí) , 函數(shù)名后面括號(hào)中的表達(dá)式稱為 “ 實(shí)際參數(shù) ” 。 2. 函數(shù)的參數(shù)和函數(shù)的返回值 函數(shù)通常在進(jìn)行函數(shù)調(diào)用時(shí) , 主調(diào)用函數(shù)與被調(diào)用函數(shù)之間具有據(jù)傳遞關(guān)系 。 ( 3) 函數(shù)參數(shù) 。 ( 2) 函數(shù)表達(dá)式 。 在 C語(yǔ)言中可以采用三種方式完成函數(shù)的調(diào)用: ( 1) 函數(shù)語(yǔ)句 。 否則在函數(shù)調(diào)用時(shí)會(huì)產(chǎn)生意想不到的結(jié)果 。 實(shí)際參數(shù)的作用是將它的值傳遞給被調(diào)用函數(shù)中的形式參數(shù) 。 主調(diào)用函數(shù)調(diào)用被調(diào)用函數(shù)的一般形式為: 函數(shù)名 ( 實(shí)際參數(shù)表 ) ; 其中 , “ 函數(shù)名 ” 指出被調(diào)用的函數(shù) 。 函數(shù)的調(diào)用形式 1. 調(diào)用形式 C語(yǔ)言程序中函數(shù)是可以互相調(diào)用的 。 開(kāi)始時(shí)只設(shè)計(jì)最基本的模塊 , 其它作為擴(kuò)充功能在以后需要時(shí)再加上 。 如果定義函數(shù)時(shí)只給出一對(duì)花括號(hào) {}而不給出其局部變量和函數(shù)體語(yǔ)句 , 則該函數(shù)為所謂 “ 空函數(shù) ” , 這種空函數(shù)也是合法的 。 “ 局部變量定義 ” 是對(duì)在函數(shù)內(nèi)部使用的局部變量進(jìn)行定義 。 ANSI C標(biāo)準(zhǔn)允許在形式參數(shù)表中對(duì)形式參數(shù)的類型進(jìn)行說(shuō)明 。 “ 函數(shù)名 ” 是自定義函數(shù)的名字 。 用戶自定義函數(shù)是用戶根據(jù)自己的需要編寫的能實(shí)現(xiàn)特定功能的函數(shù) , 它必須先進(jìn)行定義之后才能調(diào)用 。 函數(shù)的定義 從用戶的角度來(lái)看 , 有兩種函數(shù):標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶自定義函數(shù) 。 此外 , C51編譯器還 提供了豐富的運(yùn)行庫(kù)函數(shù) , 用戶可以根據(jù)需要隨時(shí)調(diào)用 。 在C語(yǔ)言中 , 子程序是用函數(shù)來(lái)實(shí)現(xiàn)的 。 前面我們已經(jīng)看到 ,C語(yǔ)言程序總是由主函數(shù) main( ) 開(kāi)始 , main( ) 函數(shù)是一個(gè)控制程序流程的特殊函數(shù) , 它是程序的起點(diǎn) 。一個(gè)函數(shù)的內(nèi)部也可以沒(méi)有 return語(yǔ)句,在這種情況下,當(dāng)程序執(zhí)行到最后一個(gè)界限符 “ }” 處時(shí),就自動(dòng)返回主調(diào)用函數(shù)。若使用不帶表達(dá)式的第 2種形式,則被調(diào)用函數(shù)返回主調(diào)用函數(shù)時(shí),函數(shù)值不確定。 continue語(yǔ)句的一般形式為: continue; continue語(yǔ)句通常和條件語(yǔ)句一起用在由 while、 do—while和 for語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)中,它也是一種具有特殊功能的無(wú)條件轉(zhuǎn)移語(yǔ)句,但它與 break語(yǔ)句不同, continue語(yǔ)句并不跳出循環(huán)體,而只是根據(jù)循環(huán)控制條件確定是否繼續(xù)執(zhí)行循環(huán)語(yǔ)句 ③ 返回語(yǔ)句 返回語(yǔ)句用于終止函數(shù)的執(zhí)行,并控制程序返回到調(diào)用該函數(shù)時(shí)所處的位置。另外還要注意,在進(jìn)行實(shí)際程序設(shè)計(jì)時(shí),為了保證程序具有良好的結(jié)構(gòu),應(yīng)當(dāng)盡可能地少采用 goto語(yǔ)句,以使程序結(jié)構(gòu)清晰易讀。由此可見(jiàn),要退出多重循環(huán)時(shí),采用 goto語(yǔ)句比較方便。 但更常見(jiàn)的是在 C語(yǔ)言程序中采用 goto語(yǔ)句來(lái)跳出多重循環(huán) , 需要注意的是只能用 goto語(yǔ)句從內(nèi)層循環(huán)跳到外層循環(huán) , 而不允許從外層循環(huán)跳到內(nèi)層循環(huán) 。 例 用 for 語(yǔ)句計(jì)算自然數(shù) 1 ~ 100的累積和 include main( ) { int i = 1, s = 0; for( ; i = 100; ) { s = s+i; i++; } printf (“ s = %d \n” , s); } 圖 for語(yǔ)句的執(zhí)行過(guò)程 3 . 非結(jié)構(gòu)化語(yǔ)句 ① goto語(yǔ)句 goto語(yǔ)句是一個(gè)無(wú)條件轉(zhuǎn)向語(yǔ)句 , 它的一般形式為: goto 語(yǔ)句標(biāo)號(hào); 其中語(yǔ)句標(biāo)號(hào)是一個(gè)帶冒號(hào) “ : ” 的標(biāo)識(shí)符 。并且 for語(yǔ)句中的三個(gè)表達(dá)式都可能缺省,但無(wú)論缺省哪一個(gè)表達(dá)式,其中的兩個(gè)分號(hào)都不能缺省。 在 C語(yǔ)言程序的循環(huán)結(jié)構(gòu)中, for語(yǔ)句的使用最為靈活,它不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。 圖 while語(yǔ)句的執(zhí)行過(guò)程 圖 do— while循環(huán)結(jié)構(gòu)的流 例: while語(yǔ)句計(jì)算 1100的累加和 include main( ) { int i = 1, s = 0; while (i = 100) { s = s+i; i++; } printf (“ s = %d/n” , s); } 例 dowhile語(yǔ)句計(jì)算 1100的累加和 include main( ) { int i = 1, s = 0; do {s = s+i; i++; } while ( i = 100) printf (“ s = %d/n” ,s); } ③ for語(yǔ)句 采用 for語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu)的一般形式如下: for([ 初值設(shè)定表達(dá)式 ] ; [ 循環(huán)條件表達(dá)式 ] ;[ 更新表達(dá)式 ]) 語(yǔ)句 for語(yǔ)句的執(zhí)行過(guò)程是:先計(jì)算出初值設(shè)定表達(dá)式的值作為循環(huán)控制變量的初值 , 再檢查循環(huán)條件表達(dá)式的結(jié)果 ,當(dāng)滿足循環(huán)條件時(shí)就執(zhí)行循環(huán)體語(yǔ)句并計(jì)算更新表達(dá)式 ,然后再根據(jù)更新表達(dá)式的計(jì)算結(jié)果來(lái)判斷循環(huán)條件是否滿足 …… 一直進(jìn)行到循環(huán)條件表達(dá)式的結(jié)果為假 ( 0值 ) 時(shí) ,退出循環(huán)體 。 因此 , 用如 do一 while語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)在任何條件下 , 循環(huán)體語(yǔ)句至少會(huì)被執(zhí)行一次 。 ② do- while語(yǔ)句 采用 do一 while語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu)的一般形式如下: do 語(yǔ)句 while( 條件表達(dá)式 ) ; 這種循環(huán)結(jié)構(gòu)的特點(diǎn)是先執(zhí)行給定的循環(huán)體語(yǔ)句 ,然后再檢查條件表達(dá)式的結(jié)果 。 這里的語(yǔ)句可以是復(fù)合語(yǔ)句 。 這種循環(huán)結(jié)構(gòu)是先檢查條件表達(dá)式所給出的條件 , 再根據(jù)檢查的結(jié)果決定是否執(zhí)行后面的語(yǔ)句 。開(kāi)關(guān)語(yǔ)句可直接處理多分支選擇,使程序結(jié)構(gòu)清晰,使用方便。 例 利用條件語(yǔ)句求一元二次方程的根 include include main( ) { float a, b, c, x1, x2; float r, s; a = ; b = ; c = ; r = b*b- *a*c; if ( r ) { s = sqrt (r); x1 = (- b+ s)/ (*a); x2 = (- b- s)/ (*a); printf(“ real: x1 = %, x2 = %\n” , x1,x2); } else if (r = = ) printf(“ double: x1,x2 = %\n” ,- b/ (*a)); else { x1 = - b/ (*a); x2 = sqrt(- r)/ (*a); printf(“ plex: re = %, im = %\n” , x1, x2); } } 程序執(zhí)行結(jié)果: plex: re = - , im = 這種條件語(yǔ)句常用來(lái)實(shí)現(xiàn)多方向條件分支 , 其執(zhí)行過(guò)程如圖 。這種條件語(yǔ)句的執(zhí)過(guò)程如圖 ( b)所示。 ( 2) 雙分支選擇語(yǔ)句 if( 條件表達(dá)式 ) 語(yǔ)句 1; else 語(yǔ)句 2; 其含義為:若條件表達(dá)式的結(jié)果為真(非 0值),就執(zhí)行語(yǔ)句 1;反之,若條件表達(dá)式的結(jié)果為假( 0值),就執(zhí)行語(yǔ)句2。 這里的語(yǔ)句也可以是復(fù)合語(yǔ)句 。 流程控制語(yǔ)句 1 . 選擇結(jié)構(gòu) ① if語(yǔ)句 if語(yǔ)句有三種形式:?jiǎn)畏种нx擇 if語(yǔ)句 、 雙分支選擇 if語(yǔ)句和多分支選擇 if語(yǔ)句 。 用復(fù)合語(yǔ)句內(nèi)部變量定義語(yǔ)句所定義的變量 ,稱為該復(fù)合語(yǔ)句中的局部變量 , 它僅在當(dāng)前這個(gè)復(fù)合語(yǔ)句中有效 。 通常復(fù)合語(yǔ)句都出現(xiàn)在函數(shù)中 , 實(shí)際上 , 函數(shù)的執(zhí)行部分( 即函數(shù)體 ) 就是一個(gè)復(fù)合語(yǔ)句 。整個(gè)復(fù)合語(yǔ)句在語(yǔ)法上等價(jià)于一條單語(yǔ)句,因此在 C語(yǔ)言程序中可以將復(fù)合語(yǔ)句視為一條單語(yǔ)句。 復(fù)合語(yǔ)句的一般形式為: { 局部變量定義; 語(yǔ)句 1; 語(yǔ)句 2; 。 復(fù)合語(yǔ)句 復(fù)合語(yǔ)句是由若干條語(yǔ)句組合而成的一種語(yǔ)句 , 它是用一個(gè)大括號(hào) “ {}” 將若干條語(yǔ)句組合在一起而形成的一種功能塊 ??照Z(yǔ)句通常有兩種用法: 1. 在程序中為有關(guān)語(yǔ)句提供標(biāo)號(hào) , 用以標(biāo)記程序執(zhí)行的位置 。 空語(yǔ)句是表達(dá)式語(yǔ)句的一個(gè)特例 。 在表達(dá)式的后邊加一個(gè)分號(hào) “ ; ” 就構(gòu)成了表達(dá)式語(yǔ)句 。 C51 程序設(shè)計(jì) 表達(dá)式語(yǔ)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1