![單片機(jī)C51語句-教案_第1頁](http://file4.renrendoc.com/view15/M00/1E/2C/wKhkGWeORtSANK8OAAFmzo24uRY373.jpg)
![單片機(jī)C51語句-教案_第2頁](http://file4.renrendoc.com/view15/M00/1E/2C/wKhkGWeORtSANK8OAAFmzo24uRY3732.jpg)
![單片機(jī)C51語句-教案_第3頁](http://file4.renrendoc.com/view15/M00/1E/2C/wKhkGWeORtSANK8OAAFmzo24uRY3733.jpg)
![單片機(jī)C51語句-教案_第4頁](http://file4.renrendoc.com/view15/M00/1E/2C/wKhkGWeORtSANK8OAAFmzo24uRY3734.jpg)
![單片機(jī)C51語句-教案_第5頁](http://file4.renrendoc.com/view15/M00/1E/2C/wKhkGWeORtSANK8OAAFmzo24uRY3735.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE9教案紙第1頁學(xué)科單片機(jī)C51語句匯總檢查授課班級2授課時數(shù)6教具授課時間教學(xué)方法演示、講解、教學(xué)目的掌握C51語句格式和使用方法和范圍教學(xué)重點和難點C51語句格式和使用方法和范圍復(fù)習(xí)提問教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記一、if語句if語句是用來判定所給定的條件是否滿足根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。C語言提供了三種形式的if語句1.if(表達(dá)式)語句如果表達(dá)式的結(jié)果為真,則執(zhí)行語句,否則不執(zhí)行2.if(表達(dá)式)語句1else語句2如果表達(dá)式的結(jié)果為真,則執(zhí)行語句1,否則執(zhí)行語句23.if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3…elseif(表達(dá)式m)語句melse語句n這條語句執(zhí)行如圖2所示。上述程序中的如下語句:if((KeyV|0xc3)==0xff)//無鍵按下return(0);教案紙附頁第2頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記一種if語句的應(yīng)用:該語句中“|”符號是C語言中的位運(yùn)算符,按位相或的意思,相當(dāng)于匯編語言中“ORL”指令,將讀取的P3口的值KeyV與0xc3(即11000011B)按位或,如果結(jié)果為0xff(即11111111B)說明沒有鍵被按下,因為中間4位接有按鍵,如果有鍵按下,那么P3口值的中間4位中必然有一位或更多位是“0”。該語句中的“return(0)”是返回之意,相當(dāng)于匯編語言中的“ret”指令,通過該語句可以帶返回值,即該號中的數(shù)值,返回值就是這個函數(shù)的值,在這個函數(shù)被調(diào)用時,用了如下的形式:KValue=Key();因此,返回的結(jié)果是該值被賦給Kvalue這個變量。因此,如果沒有鍵被按下,則直接返回,并且Kvalue的值將變?yōu)?。如果有鍵被按下,那么return(0)將不會被執(zhí)行。程序其他地方還有這樣的用法,請注意觀察與分析。程序中:if(Start){…燈流動顯示的代碼}elseP1=0xff;//否則燈全滅是if語句的第二種用法,其中Start是一個位變量,該變量在main函數(shù)的中被定義,并賦以初值0,該變量在按鍵K1被按下后置為1,而K2按下后被清為0,用來控制燈流動是否開始。這里就是判斷該變量并決定燈流動是否開始的代碼,觀察if后面括號中的寫法,與其他語言中寫法很不一樣,并沒有一個關(guān)系表達(dá)式,而僅僅只有一個變量名,C根據(jù)這個量是0還是1來決定程序的走向,如果為1則執(zhí)行燈流動顯示的代碼,如果為0,則執(zhí)行P1=0xff;語句??梢?,在C語言中,數(shù)據(jù)類型的概念比其他很多的編程語言要“弱化”,或者說C更著重從本質(zhì)的角度去考慮問題,if后面的括號中不僅可以是關(guān)系表達(dá)式,也可以是算術(shù)表達(dá)式,還可以就是一個變量,甚至是一個常量,不管怎樣,C總是根據(jù)這個表達(dá)式的值是零還是非零來決定程序的走向,這個特點是其他中所沒有的,請注意理解。if語句的第三種用法在本程序中沒有出現(xiàn),下面我們舉一例說明。在上述的鍵盤處理函數(shù)Key中,如果沒鍵被按下,返回值是0,如果有鍵被按下,經(jīng)過去鍵抖的處理,將返回鍵值,程序中的“return(KeyV);”即返回鍵值。當(dāng)K1被按下(P3.2接地)時,返回值是0xfb(11111011B),而K2被按下(P3.3接地)時,返回值是0xf7(11110111B),K3被按下(P3.4接地)時,返回值是0xef(11101111B),K4被按下(P3.5接地)時,返回值是0xdf(11011111B),該值將被賦給主程序中調(diào)用鍵盤程序的變量KValue。程序用了另一種選擇結(jié)構(gòu)switch進(jìn)行處理,關(guān)于switch將在稍后介紹。下面用if語句來改寫:教案紙附頁第3頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記if(KValue==0xfb){Start=1;}elseif(KValue==0xf7){Start=0;}elseif(KValue==0xef){UpDown=1;}elseif(KValue==0xdf){UpDown=0;}else{//意外處理}……if(KValue==0xfb){Start=1;}elseif(KValue==0xf7){Start=0;}elseif(KValue==0xef){UpDown=1;}elseif(KValue==0xdf){UpDown=0;}else{//意外處理}……程序中第一條語句判斷Kvalue是否等于0xfb,如果是就執(zhí)行Start=1;執(zhí)行完畢即退出if語句,執(zhí)行if語句下面的程序,如果Kvalue不等于0xfb就轉(zhuǎn)去下一個elseif即判斷Kvalue是否等于0xf7,如果等于則執(zhí)行Start=0;,并退出if語句…這樣一直到最后一個elseif后面的條件判斷完畢為止,如果所有的條件都不滿足,那么就去執(zhí)行else后面的語句(通常這意味著出現(xiàn)了異常,在這里來統(tǒng)一處理這種異常情況)。二、if語句的嵌套在if語句中又包含一個或多個語句稱為if語句的嵌套。一般形式如下if()if()語句1else語句2elseif()語句3教案紙附頁第4頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記else語句4應(yīng)當(dāng)注意if與else的配對關(guān)系,else總是與它上面的最近的if配對。如果寫成if()if()語句1else語句2編程者的本意是外層的if與else配對,縮進(jìn)的if語句為內(nèi)嵌的if語句,但實際上else將與縮進(jìn)的那個if配對,因為兩者最近,從而造邁岐義。為避免這種情況,建議編程時使用大括號將內(nèi)嵌的if語句括起來,這樣可以避免出現(xiàn)這樣的問題。三、swich語句當(dāng)程序中有多個分支時,可以使用if嵌套實現(xiàn),但是當(dāng)分支較多時,則嵌套的if語層數(shù)多,程序冗長而且可讀性降低。C語言提供了switch語句直接處理多分支選擇。Switch的一般形式如下:switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2……case常量表達(dá)式n:語句ndefault:語句n+1}說明:switch后面括號內(nèi)的“表達(dá)式”,ANSI標(biāo)準(zhǔn)允許它為任何類型;當(dāng)表達(dá)式的值與某一個case后面的常量表達(dá)式相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式值匹配的,就執(zhí)行default后面的語句;每一個case的常量表達(dá)式的值必須不相同;各個case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。另外特別需要說明的是,執(zhí)行完一個case后面的語句后,并不會自動跳出switch,轉(zhuǎn)而去執(zhí)行其后面的語句,如上述例子中如果這么寫switch(KValue){case0xfb:Start=1;case0xf7:Start=0;case0xef:UpDown=1;case0xdf:UpDown=0;}if(Start){……}假如KValue的值是0xfb,則在轉(zhuǎn)到此處執(zhí)行“Start=1;”后,并不是轉(zhuǎn)去執(zhí)行switch語句下面的if語句,而是將從這一行開始,依次執(zhí)行下面的語句即“Start=0;”、“UpDown=1;”“UpDown=0;”,顯然,這樣不能滿足要求,因此,通常在每一段case的結(jié)束加入“break;”語句,使流程序退出switch結(jié)構(gòu),即終止switch語句的執(zhí)行。教案紙附頁第5頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記四、while語句While語句用到實現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu),其一般形式如下:while(表達(dá)式)語句當(dāng)表達(dá)式為非0值(真)時,執(zhí)行while語句中的內(nèi)嵌語句。其特點是:先判斷表達(dá)式,后執(zhí)行語句。在上述例子中,表達(dá)式使用了一個常數(shù)“1”,這是一個非零值,即“真”,條件總是滿足,語句總是會被執(zhí)行,構(gòu)成了無限循環(huán)。下面再舉一例說明:例4-2:當(dāng)K1鍵被按下時,流水燈工作,否則燈全部熄滅。#include"reg51.h"#include"intrins.h"http://該文件包含有_crol_(…)函數(shù)的說明voidmDelay(unsignedintDelayTime){unsignedintj=0;for(;DelayTime>0;DelayTime--){for(j=0;j<125;j++){;}}}voidmain(){unsignedcharOutData=0xfe;while(1){P3|=0x3c;while((P3|0xfb)!=0xff){P1=OutData;OutData=_crol_(OutData,1);//循環(huán)左移mDelay(1000);/*延時1000毫秒*/}P1=0xff;}}程序分析:這個程序中的第二個while語句中的表達(dá)式用來判斷K1鍵是否被按下,如被按下,則執(zhí)行循環(huán)體內(nèi)的程序,否則執(zhí)行P1=0xff;程序行。雖然整個程序是在一個無限循環(huán)過程中,但是由于外界條件的變化使得程序執(zhí)行的過程發(fā)生了變化。五、do-while語句do-while語句用來實現(xiàn)“直到型”循環(huán),特點是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。其一般形式如下:do循環(huán)體語句while(表達(dá)式)對同一個問題,既可以用while語句處理,也可以用do-while語句處理。但是這兩個語句是有區(qū)別的,下面我們用do-while語句改寫例2。教案紙附頁第6頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記例:用do-while語句實現(xiàn)如下功能:K1按下,流水燈工作,K2松開,燈全熄滅。#include"reg51.h"#include"intrins.h"http://該文件包含有_crol_(…)函數(shù)的說明voidmDelay(unsignedintDelayTime){unsignedintj=0;for(;DelayTime>0;DelayTime--){for(j=0;j<125;j++){;}}}voidmain(){unsignedcharOutData=0xfe;while(1){P3|=0x3c;do{P1=OutData;OutData=_crol_(OutData,1);//循環(huán)左移mDelay(1000);/*延時1000毫秒*/}while((P3|0xfb)!=0xff)P1=0xff;}}程序分析:這個程序除主程序中將while用do-while替代外,沒有其他的變化,初步設(shè)想,如果while()括號中的表達(dá)式為“真”即K1鍵被按下,應(yīng)該執(zhí)行程序體,否則不執(zhí)行,效果與例4-2相同。但是事實上,實際做這個練習(xí)就會發(fā)現(xiàn),不論K1是否被按下,流水燈都在工作。為何會有這么樣的結(jié)果呢?單步運(yùn)行程序可以發(fā)現(xiàn),如果K1鍵被按下,的確是在執(zhí)行循環(huán)體內(nèi)的程序,與設(shè)想相同。而當(dāng)K1沒有被按下時,按設(shè)想,循環(huán)體內(nèi)的程序不應(yīng)該被執(zhí)行,但事實上,do后面的語句至少要被執(zhí)行一次才去判斷條件是否成立,所以程序依然會去執(zhí)行do后的循環(huán)體部分,只是在判斷條件不成立(K1沒有被按下)后,轉(zhuǎn)去執(zhí)行P1=0xff;然后又繼續(xù)循環(huán),而下一次循環(huán)中又會先執(zhí)行一次循環(huán)體部分,因此,K1是否被按下的區(qū)別僅在于“P1=0xff;”這一程序行是否會被執(zhí)行到。六、for語句C語言中的for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。for語句的一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句教案紙附頁第7頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記它的執(zhí)行過程是:(1)先求解表達(dá)式1(2)求解表達(dá)式2,其值為真,則執(zhí)行for語句中指定的內(nèi)嵌語句(循環(huán)體),然后執(zhí)行第(3)步,如果為假,則結(jié)束循環(huán)。(3)求解表達(dá)式3(4)轉(zhuǎn)回上面的第(2)步繼續(xù)執(zhí)行。for語句典型的應(yīng)用是這樣一種形式:for(循環(huán)變量初值;循環(huán)條件;循環(huán)變量增值)語句例如上述例子中的延時程序有這樣的程序行:“for(j=0;j<125;j++){;}”,執(zhí)行這行程序時,首先執(zhí)行j=0,然后判斷j是否小于125,如果小于125則去執(zhí)行循環(huán)體(這里循環(huán)體沒有做任何工作),然后執(zhí)行j++,執(zhí)行完后再去判斷j是否小于125……如此不斷循環(huán),直到條件不滿足(j>=125)為止。如果用while語句來改寫,應(yīng)該這么寫j=0;while(j<125){j++;}可見,用for語句更簡單、方便。如果變量初值在for語句前面賦值,則for語句中的表達(dá)式1應(yīng)省略,但其后的分號不能省略。上述程序中有:“for(;DelayTime>0;DelayTime--){…}”的寫法,省略掉了表達(dá)式1,因為這里的變量DelayTime是由參數(shù)傳入的一個值,不能在這個式子里賦初值。表達(dá)式2也可以省略,但是同樣不能省略其后的分號,如果省略該式,將不判斷循環(huán)條件,循環(huán)無終止地進(jìn)行下去,也就是認(rèn)為表達(dá)式始終為真。表達(dá)式3也可以省略,但此時編程者應(yīng)該另外設(shè)法保證循環(huán)能正常結(jié)束。表達(dá)式1、2和3都可以省略,即形成如for(;;)的形式,它的作用相當(dāng)于是while(1),即構(gòu)一個無限循環(huán)的過程。循環(huán)可以嵌套,如上述延時程序中就是兩個for語句嵌套使用構(gòu)成二重循環(huán),C語言中的三種循環(huán)語句可以相互嵌套。七、break語句在一個循環(huán)程序中,可以通過循環(huán)語句中的表達(dá)式來控制循環(huán)程序是否結(jié)束,除此之外,還可以通過break語句強(qiáng)行退出循環(huán)結(jié)構(gòu)。例:開機(jī)后,全部LED不亮,按下K1則從LED1開始依次點亮,至LED8后停止并全部熄滅,等待再次按下K1鍵,重復(fù)上述過程。如果中間K2鍵被按下,LED立即全部熄滅,返回起始狀態(tài)。
教案紙附頁第8頁教學(xué)內(nèi)容、方法、過程和板書設(shè)計教學(xué)追記#include"reg51.h"#include"intrins.h"http://該文件包含有_crol_(?)函數(shù)的說明voidmDelay(unsignedintDelayTime){unsignedintj=0;for(;DelayTime>0;DelayTime--){for(j=0;j<125;j++){;}}}voidmain(){unsignedcharOutData=0xfe;unsignedchari;while(1){P3|=0x3c;if((P3|0xfb)!=0xff)//K1鍵被按下{OutData=0xfe;for(i=0;i<8;i++){mDelay(1000);/*延時1000毫秒*/tmp=0xfe;if((P3|0xf7)!=0xff)//K2鍵被按下break;OutData=_crol_(OutData,i);P1&=OutData;}}P1=0xff;}}注意,K2按下的時間必須足夠長,因為這里每1s才會檢測一次K2是否被按下。程序分析:開機(jī)后,當(dāng)檢測到K1鍵被按下,執(zhí)行一個:for(i=0;i<8;i++){…}的循
溫馨提示
- 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年度國際專利申請代理合同模板
- 2025年度工業(yè)產(chǎn)品售后服務(wù)合同規(guī)范
- 2025年度酒店后廚員工培訓(xùn)與管理綜合服務(wù)合同
- 2025年度石材展會組織與服務(wù)合同模板
- 赤峰2025年內(nèi)蒙古喀喇沁旗錦山中學(xué)引進(jìn)教師9人筆試歷年參考題庫附帶答案詳解
- 茂名2025年廣東茂名市公安局招聘警務(wù)輔助人員50人筆試歷年參考題庫附帶答案詳解
- 苯噻草胺項目融資計劃書
- 潮州2024年廣東潮州市科學(xué)技術(shù)局屬下事業(yè)單位招聘10人(第二輪)筆試歷年參考題庫附帶答案詳解
- 普洱2025年云南普洱市商務(wù)局招聘城鎮(zhèn)公益性崗位工作人員筆試歷年參考題庫附帶答案詳解
- 文山云南文山硯山縣住房和城鄉(xiāng)建設(shè)局招聘公益性崗位人員筆試歷年參考題庫附帶答案詳解
- 中國人口研究專題報告-中國2025-2100年人口預(yù)測與政策建議-西南財經(jīng)大學(xué)x清華大學(xué)-202501
- 建筑工程安全與管理
- 幼兒園開學(xué)教師安全知識培訓(xùn)
- 2024年山東水利職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 遼寧省名校聯(lián)盟2025年高三1月份聯(lián)合考試 語文試卷(含答案詳解)
- 25版六年級寒假特色作業(yè)
- 浙江省杭州市9+1高中聯(lián)盟2025屆高三一診考試英語試卷含解析
- 2025教科版一年級科學(xué)下冊教學(xué)計劃
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 中華人民共和國學(xué)前教育法-知識培訓(xùn)
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
評論
0/150
提交評論