51單片機(jī)C語(yǔ)言編程一學(xué)就會(huì) 第2版 課件 汪小林 第1-3章 學(xué)習(xí)單片機(jī)的基礎(chǔ)-單片機(jī)指令器件的應(yīng)用_第1頁(yè)
51單片機(jī)C語(yǔ)言編程一學(xué)就會(huì) 第2版 課件 汪小林 第1-3章 學(xué)習(xí)單片機(jī)的基礎(chǔ)-單片機(jī)指令器件的應(yīng)用_第2頁(yè)
51單片機(jī)C語(yǔ)言編程一學(xué)就會(huì) 第2版 課件 汪小林 第1-3章 學(xué)習(xí)單片機(jī)的基礎(chǔ)-單片機(jī)指令器件的應(yīng)用_第3頁(yè)
51單片機(jī)C語(yǔ)言編程一學(xué)就會(huì) 第2版 課件 汪小林 第1-3章 學(xué)習(xí)單片機(jī)的基礎(chǔ)-單片機(jī)指令器件的應(yīng)用_第4頁(yè)
51單片機(jī)C語(yǔ)言編程一學(xué)就會(huì) 第2版 課件 汪小林 第1-3章 學(xué)習(xí)單片機(jī)的基礎(chǔ)-單片機(jī)指令器件的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

51單片機(jī)C語(yǔ)言編程一學(xué)就會(huì)學(xué)習(xí)導(dǎo)航第1章學(xué)習(xí)單片機(jī)的必備基礎(chǔ)第2章入門關(guān)鍵—通過實(shí)現(xiàn)流水燈掌握單片機(jī)C語(yǔ)言基礎(chǔ)知識(shí)第3章單片機(jī)指令器件的應(yīng)用第4章單片機(jī)常用顯示器件的驅(qū)動(dòng)第5章單片機(jī)內(nèi)部資源——中斷及應(yīng)用示例第6章單片機(jī)內(nèi)部資源——串口及應(yīng)用第7章.A/D與D/A的應(yīng)用第8章步進(jìn)電機(jī)的控制第9章DS18B20溫度傳感器及智能換氣扇第10章電子密碼鎖模擬第1章學(xué)習(xí)單片機(jī)的必備基礎(chǔ)【學(xué)習(xí)目標(biāo)】(1)了解單片機(jī)的基本結(jié)構(gòu)和單片機(jī)控制系統(tǒng)的基本結(jié)構(gòu)。(2)熟悉STC89C52(AT89S52)單片機(jī)的4組I/O口,了解端口的第二功能。(3)理解STC89C52(AT89S52)單片機(jī)的最小系統(tǒng)。(4)理解二進(jìn)制、十六進(jìn)制和十進(jìn)制數(shù),掌握用計(jì)算器對(duì)二進(jìn)制、十六進(jìn)制、十進(jìn)制數(shù)之間進(jìn)行轉(zhuǎn)換方法。(5)了解單片機(jī)控制系統(tǒng)的硬件搭建方法。(6)掌握KeilμVision軟件的安裝方法。(7)掌握單片機(jī)編程環(huán)境的建立方法。第1章學(xué)習(xí)單片機(jī)的必備基礎(chǔ)1.1單片機(jī)的基本知識(shí)1.1.1單片機(jī)的作用1.1.2單片機(jī)的結(jié)構(gòu)1.1.3單片機(jī)封裝示例1.1.4單片機(jī)的應(yīng)用場(chǎng)合1.1.5單片機(jī)控制系統(tǒng)的基本結(jié)構(gòu)1.1.6單片機(jī)控制系統(tǒng)的開發(fā)過程1.2單片機(jī)的引腳功能1.2.1單片機(jī)的引腳功能1.2.2TTL電平和COMS電平的概念1.3單片機(jī)的最小系統(tǒng)1.3.1供電1.3.2時(shí)鐘電路1.3.3復(fù)位電路1.4數(shù)制及相互轉(zhuǎn)換簡(jiǎn)介1.4.1十進(jìn)制數(shù)1.4.2二進(jìn)制數(shù)1.4.3十六進(jìn)制數(shù)1.4.4八進(jìn)制數(shù)1.4.5各種數(shù)制之間相互轉(zhuǎn)換的方法1.5搭建單片機(jī)開發(fā)環(huán)境1.5.1搭建硬件系統(tǒng)1.5.2搭建軟件開發(fā)環(huán)境1.5.3Keil

μVision4的最基本應(yīng)用1.1單片機(jī)的基本知識(shí)1.1.1單片機(jī)的作用1.1.2單片機(jī)的結(jié)構(gòu)1.1.3單片機(jī)封裝示例1.1.4單片機(jī)的應(yīng)用場(chǎng)合1.1.5單片機(jī)控制系統(tǒng)的基本結(jié)構(gòu)1.1.6單片機(jī)控制系統(tǒng)的開發(fā)過程1.1.1單片機(jī)的作用單片機(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)稱,它用于智能控制領(lǐng)域,所以通常將其稱為微電腦或微型控制器(英文縮寫為MCU)。設(shè)計(jì)人員根據(jù)人們生產(chǎn)和生活的需求,可以選用一些元器件,將這些元器件和單片機(jī)通過導(dǎo)線連接成一個(gè)完整的電路。要使該電路按我們的思路去工作,我們要用專用的語(yǔ)言將我們的思路編寫成一定的程序,燒入單片機(jī)內(nèi),這樣上電后,單片機(jī)就會(huì)根據(jù)我們的思路去控制外圍元器件去工作,滿足我們的需求。1.1.2單片機(jī)的結(jié)構(gòu)單片機(jī)和普通微型計(jì)算機(jī)一樣都由中央處理器(CPU)、存儲(chǔ)器(包含隨機(jī)存儲(chǔ)器RAM和程序存儲(chǔ)器ROM,)和輸入/輸出接口(稱為I/O口)等組成。微型計(jì)算機(jī)單片機(jī)1.1.3單片機(jī)封裝示例單片機(jī)的外形(封裝)有直插式和表面安裝式兩種雙列直插式(DIP、PDIP封裝)表面安裝式(SOP封裝)PLCC封裝LQFP封裝1.1.4單片機(jī)的應(yīng)用場(chǎng)合在家電領(lǐng)域,如彩電、電冰箱、空調(diào)器、洗衣機(jī)的控制系統(tǒng),以及中高檔微波爐、電風(fēng)扇、電飯煲等;在通信領(lǐng)域,如移動(dòng)電話、傳真機(jī)、調(diào)制解調(diào)器、程控交換機(jī)、智能線路檢測(cè)儀等;在商業(yè)領(lǐng)域,如自動(dòng)售貨機(jī)、防盜報(bào)警系統(tǒng)、IC卡等;在工業(yè)領(lǐng)域,如無人操作系統(tǒng)、機(jī)械手、工業(yè)生產(chǎn)過程控制、生產(chǎn)自動(dòng)化、數(shù)控機(jī)床、設(shè)備管理、遠(yuǎn)程監(jiān)控、智能儀表等;在汽車領(lǐng)域,如汽車智能化檢測(cè)系統(tǒng)、汽車自動(dòng)診斷系統(tǒng)、交通信息的接收系統(tǒng)、汽車衛(wèi)星定位系統(tǒng)、汽車音響等;在航空、航天和軍事領(lǐng)域也有廣泛的應(yīng)用。1.1.5單片機(jī)控制系統(tǒng)的基本結(jié)構(gòu)1.1.6單片機(jī)控制系統(tǒng)的開發(fā)過程①根據(jù)控制系統(tǒng)要完成的工作任務(wù)選取元器件。②根據(jù)元器件的特性和電路原理將其連接成完整的電路。③根據(jù)工作任務(wù)編寫程序。④調(diào)試、修改程序,下載(燒入)單片機(jī),使之滿足工作任務(wù)的需要。⑤制作單片機(jī)控制系統(tǒng)成品,批量生產(chǎn)。1.2單片機(jī)的引腳功能1.2.1單片機(jī)的引腳功能1.2.2TTL電平和COMS電平的概念1.2.1STC89C52單片機(jī)的引腳功能1.2.2TTL電平TTL電平

用+5V等價(jià)于邏輯“1”,0V等價(jià)于邏輯“0”,這被稱作TTL(晶體管-晶體管邏輯電平)信號(hào)系統(tǒng),這是計(jì)算機(jī)處理器控制的設(shè)備內(nèi)部各部分之間通信的標(biāo)準(zhǔn)技術(shù)。TTL電路的電平就叫作TTL電平(在其他數(shù)字電路中,TTL電平就是由TTL電子元器件組成的電路使用的電平。電平是一個(gè)電壓范圍,規(guī)定輸出高電平>2.4V,輸出低電平<0.4V。在室溫下,一般輸出的高電平是3.5V,輸出的低電平是0.2V)。1.2.2COMS電平的概念COMS電平CMOS集成電路使用場(chǎng)效應(yīng)管(MOS管),功耗小,工作電壓范圍很大,速度相對(duì)于TTL電路來說較低。但隨著技術(shù)的發(fā)展,其速度在不斷提高。CMOS電路的電平就叫作CMOS電平。具體而言,COMS電平就是,高電平(1邏輯電平)電壓接近于電源電壓,低電平(0邏輯電平)電壓接近于0V。TTL電路和COMS電路相連接時(shí),由于電平的數(shù)值不同,TTL的電平不能觸發(fā)CMOS電路,COMS的電平可能會(huì)損壞TTL電路,因此不能互相兼容匹配,這就需要設(shè)置電平轉(zhuǎn)換電路。1.3單片機(jī)的最小系統(tǒng)1.3.1供電1.3.2時(shí)鐘電路1.3.3復(fù)位電路單片機(jī)的最小系統(tǒng)包括直流供電、時(shí)鐘電路、復(fù)位電路。這些電路處于正常狀態(tài)是單片機(jī)正常工作的必需條件。1.3.1供電AT89S52單片機(jī)的工作電壓為4-5.5V,推薦電壓為5V。通常將220V交流電降壓、整流,再用三端穩(wěn)壓器7805穩(wěn)壓后得到5V直流電壓,或者由開關(guān)電源獲得,也可以由專用的5V直流電源提供。1.3.2時(shí)鐘電路時(shí)鐘電路的作用是產(chǎn)生時(shí)鐘信號(hào)(為脈沖信號(hào))。時(shí)鐘信號(hào)的作用是使單片機(jī)按一定的時(shí)間規(guī)律一步一步地進(jìn)行工作(執(zhí)行指令)。時(shí)鐘電路由圖1-3中單片機(jī)18、19、20腳外接的兩個(gè)瓷片或貼片電容(C2、C3)、一個(gè)晶振和單片機(jī)的部分內(nèi)部電路組成。常用的晶振頻率6MHz,11.0592MHz,12MHz,24MHz。晶振的頻率越高,時(shí)鐘信號(hào)的頻率也就越高,單片機(jī)運(yùn)行越快。瓷片電容的值為10~30pF。1.3.3復(fù)位電路①上電復(fù)位:由9腳外接的電解電容器C1(注:容量可取1~20μF)和電阻R1(阻值可取1~10k)組成。②手動(dòng)復(fù)位:由按鍵K、電阻R2、R1組成。系統(tǒng)上電后,手動(dòng)按一下按鍵K,可使單片機(jī)復(fù)位腳得到高電平而重新復(fù)位,松開按鍵后復(fù)位腳變?yōu)榈碗娖健?.4數(shù)制及相互轉(zhuǎn)換簡(jiǎn)介1.4.1十進(jìn)制數(shù)1.4.2二進(jìn)制數(shù)1.4.3十六進(jìn)制數(shù)1.4.4八進(jìn)制數(shù)1.4.5各種數(shù)制之間相互轉(zhuǎn)換的方法1.4.1十進(jìn)制數(shù)十進(jìn)制數(shù)用0,1,2,3,4,5,6,7,8,9十個(gè)基本數(shù)字符號(hào)的不同組合來表示,計(jì)數(shù)的基數(shù)是10。當(dāng)任何一個(gè)數(shù)比9大1時(shí),則向相鄰高位進(jìn)1,本位置為0,其計(jì)數(shù)規(guī)律是“逢十進(jìn)一”。為了區(qū)分不同的數(shù)制,十進(jìn)制數(shù)用下標(biāo)“D”來表示,但通常其下標(biāo)可省略。一個(gè)十進(jìn)制數(shù)有個(gè)位、十位、百位等。任何一個(gè)十進(jìn)制數(shù)都可以用該數(shù)的各位數(shù)碼乘以該位的加權(quán)系數(shù)來表示。例如,對(duì)一個(gè)十進(jìn)制2138的表示方法如下所示。各位的數(shù)碼: 2(千位) 1(百位) 3(十位) 8(個(gè)位)數(shù)位的加權(quán)系數(shù): 103 102 101 1002136D=(2×103+1×102+3×101+ 8×100)D1.4.2二進(jìn)制數(shù)類別

不同數(shù)制的數(shù)碼的等值對(duì)應(yīng)關(guān)系(每一列的兩個(gè)數(shù)是等值的)十進(jìn)制數(shù)1234567891011二進(jìn)制數(shù)1101110010111011110001001101010111.4.3十六進(jìn)制數(shù)類別不同數(shù)制的數(shù)碼的等值對(duì)應(yīng)關(guān)系

十進(jìn)制數(shù)1234567891011121314151617181920……十六進(jìn)制數(shù)123456789ABCDEF1011121314……1.4.4八進(jìn)制數(shù)八進(jìn)制數(shù)共有0,1,2,3,4,5,6,7共8個(gè)數(shù)碼,其計(jì)算規(guī)律是“逢八進(jìn)一”1.4.5各種數(shù)制之間相互轉(zhuǎn)換的方法1.5搭建單片機(jī)開發(fā)環(huán)境1.5.1搭建硬件系統(tǒng)1.5.2搭建軟件開發(fā)環(huán)境1.5.3Keil

μVision4的最基本應(yīng)用1.5.1搭建硬件系統(tǒng)自行搭建單片機(jī)硬件系統(tǒng)單片機(jī)開發(fā)實(shí)驗(yàn)板1.5.2搭建軟件開發(fā)環(huán)境KeilμVision軟件是最為經(jīng)典的單片機(jī)集成開發(fā)環(huán)境,支持匯編語(yǔ)言、C語(yǔ)言以及C語(yǔ)言和匯編語(yǔ)言的混合編程,能將用匯編語(yǔ)言或C語(yǔ)言編寫的程序代碼編譯、轉(zhuǎn)化為“.hex”格式的文件,然后用專用的下載工具下載到單片機(jī)的存儲(chǔ)器內(nèi)。KeilμVision適用于51全系列、ARM7、ARM9、Cortex-M、Cortex-R等芯片。1.5.3KeilμVision4的最基本應(yīng)用KeilμVision4的菜單認(rèn)識(shí)、建工程、輸入代碼、編譯、下載(燒寫)的方法詳見本書所附視頻教程。第2章入門關(guān)鍵—通過實(shí)現(xiàn)流水燈掌握單片機(jī)C語(yǔ)言基礎(chǔ)知識(shí)【學(xué)習(xí)目標(biāo)】(1)理解單片機(jī)控制花樣流水燈的工作原理。(2)理解單片機(jī)C語(yǔ)言常用的基本概念。(3)掌握有參數(shù)函數(shù)和無參函數(shù)的結(jié)構(gòu)和用法。(4)理解C語(yǔ)言程序的基本結(jié)構(gòu)。(5)通過實(shí)現(xiàn)流水燈掌握操作I/O口的基本方法(位操作和總線操作)。(6)通過實(shí)現(xiàn)流水燈掌握部分運(yùn)算符和庫(kù)函數(shù)的用法。(7)通過實(shí)現(xiàn)流水燈掌握循環(huán)語(yǔ)句和條件語(yǔ)句的用法(8)通過實(shí)現(xiàn)流水燈掌握一維數(shù)組的用法。(9)通過實(shí)現(xiàn)流水燈掌握指針的基本知識(shí)。第2章入門關(guān)鍵—通過實(shí)現(xiàn)流水燈掌握單片機(jī)C語(yǔ)言基礎(chǔ)知識(shí)2.1花樣流水燈電路原理和硬件搭建2.1.1花樣流水燈原理圖2.1.2單片機(jī)控制花樣流水燈的工作原理2.2本章相關(guān)的單片機(jī)C語(yǔ)言知識(shí)精講2.2.1函數(shù)2.2.2數(shù)據(jù)類型2.2.3常量2.2.4變量2.2.5標(biāo)識(shí)符和關(guān)鍵字2.2.6單片機(jī)C語(yǔ)言程序的基本結(jié)構(gòu)2.2.7算術(shù)運(yùn)算符算術(shù)表達(dá)式2.2.8關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.2.9邏輯運(yùn)算符和邏輯表達(dá)式2.2.10位操作運(yùn)算符及其表達(dá)式2.2.11賦值運(yùn)算符和復(fù)合賦值運(yùn)算符2.2.12時(shí)鐘周期、機(jī)器周期和指令周期2.2.13

while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句2.2.14不帶參數(shù)和帶參數(shù)函數(shù)的聲明、定義和調(diào)用2.2.15良好的編程規(guī)范2.3使用“位操作”控制流水燈2.3.1編程思路2.3.2參考程序及解釋2.1花樣流水燈電路原理和硬件搭建2.1.1花樣流水燈原理圖2.1.2單片機(jī)控制花樣流水燈的工作原理2.1.1花樣流水燈原理圖原理圖實(shí)物圖2.1.2單片機(jī)控制花樣流水燈的工作原理發(fā)光二極管的外形及極性LED點(diǎn)亮的條件LED閃爍的原理花樣流水燈的原理2.2本章相關(guān)的單片機(jī)C語(yǔ)言知識(shí)精講2.2.1函數(shù)2.2.2數(shù)據(jù)類型2.2.3常量2.2.4變量2.2.5標(biāo)識(shí)符和關(guān)鍵字2.2.6單片機(jī)C語(yǔ)言程序的基本結(jié)構(gòu)2.2.7算術(shù)運(yùn)算符算術(shù)表達(dá)式2.2.8關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.2.9邏輯運(yùn)算符和邏輯表達(dá)式2.2.10位操作運(yùn)算符及其表達(dá)式2.2.11賦值運(yùn)算符和復(fù)合賦值運(yùn)算符2.2.12時(shí)鐘周期、機(jī)器周期和指令周期2.2.13

while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句2.2.14不帶參數(shù)和帶參數(shù)函數(shù)的聲明、定義和調(diào)用2.2.15良好的編程規(guī)范2.2.1函數(shù)函數(shù)的特點(diǎn):庫(kù)函數(shù)和自定義函數(shù)主函數(shù)和子函數(shù)函數(shù)的調(diào)用規(guī)律(1)在一個(gè)函數(shù)體的內(nèi)部,不能再定義另一個(gè)函數(shù),即不能嵌套定義;(2)函數(shù)可以自己調(diào)用自己,稱為遞歸調(diào)用;(3)函數(shù)之間允許嵌套調(diào)用;(4)同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意調(diào)用。2.2.2數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)類型51單片機(jī)C語(yǔ)言的數(shù)據(jù)類型C51語(yǔ)言的數(shù)據(jù)類型字符型整型實(shí)型針類型數(shù)組類型2.2.3常量常量數(shù)值型常量整型常量實(shí)型常量字符型常量字符常量字符串常量符號(hào)型常量2.2.4變量變量局部變量在函數(shù)內(nèi)部定義的變量叫做局部變量,它只在本函數(shù)范圍內(nèi)有效,只有在調(diào)用該函數(shù)時(shí)才給該變量分配內(nèi)存(就是前面所說的RAM)單元,調(diào)用完畢則將內(nèi)存單元收回。全局變量一個(gè)C程序文件里有若干個(gè)函數(shù)。在所有函數(shù)之外定義的變量稱為全局變量。全局變量在該C程序文件內(nèi)可供所有的函數(shù)使用。2.2.5標(biāo)識(shí)符和關(guān)鍵字標(biāo)識(shí)符在編程時(shí),標(biāo)識(shí)符用來表示自定義對(duì)象名稱,所謂自定義對(duì)象就是常量、變量、數(shù)組、函數(shù)、語(yǔ)句標(biāo)號(hào)等。關(guān)鍵字關(guān)鍵字是C51編譯器保留的一些特殊標(biāo)識(shí)符,具有特定的定義和用法。C51語(yǔ)言繼承了標(biāo)準(zhǔn)C語(yǔ)言定義的32個(gè)關(guān)鍵字,同時(shí)又結(jié)合自身的特點(diǎn)擴(kuò)展了一些,如char,P0,P1,unsigned,bit等。2.2.6單片機(jī)C語(yǔ)言程序的基本結(jié)構(gòu)名

稱內(nèi)

容備

注第一部分包含頭文件其目的是為了編程時(shí)直接使用編譯器系統(tǒng)內(nèi)相關(guān)的函數(shù)第二部分使用宏定義這是為了在編程過程中書寫簡(jiǎn)潔、修改方便第三部分定義變量變量必須定義后才能使用。如果不定義,則不能被編譯器識(shí)別第四部分聲明子函數(shù)如果子函數(shù)出現(xiàn)在前,調(diào)用在后(即子函數(shù)的定義位于調(diào)用它的函數(shù)之前),則不需另行聲明,反之,若子函數(shù)被調(diào)用在前,出現(xiàn)在后(即子函數(shù)的定義出現(xiàn)在調(diào)用它的函數(shù)后面),則需要在前面進(jìn)行聲明。為了使程序結(jié)構(gòu)邏輯結(jié)構(gòu)清晰,一般可以在程序的起始位置進(jìn)行聲明,這樣起到羅列子函數(shù)目錄的作用,詳見2.2.12節(jié)第五部分寫主函數(shù)將程序要執(zhí)行的所有任務(wù)都寫在主函數(shù)內(nèi)。一般可以將各個(gè)任務(wù)寫成獨(dú)立的子函數(shù),在主函數(shù)里根據(jù)需要可調(diào)用相應(yīng)的子函數(shù)第六部分寫各個(gè)子函數(shù)(即定義各個(gè)子函數(shù))每一個(gè)子函數(shù)都是一個(gè)獨(dú)立的功能模塊,它包含若干條有特定意義的語(yǔ)句及調(diào)用其他子函數(shù)的語(yǔ)句2.2.7算術(shù)運(yùn)算符算術(shù)表達(dá)式名

稱符

號(hào)說

明加法運(yùn)算符或正值運(yùn)算符+如3+2,a+b,+5減法運(yùn)算符或負(fù)值運(yùn)算符-如6-3,a-b,-2乘法運(yùn)算符*如5*8,a*b除法(取模)運(yùn)算符/如10/3。注意:除法運(yùn)算的結(jié)果只取整數(shù),如10/3的結(jié)果為3,而不是3.333,這和數(shù)學(xué)中的除法運(yùn)算不同取余運(yùn)算符%兩側(cè)均應(yīng)為整型數(shù)據(jù),運(yùn)算結(jié)果為兩數(shù)相除的余數(shù),如10%3的結(jié)果為1自增運(yùn)算符++i使i的值先加1,再使用i的值例如:設(shè)i的值為8,對(duì)于語(yǔ)句j=++i,執(zhí)行過程是:先執(zhí)行i+1,使i的值變?yōu)?,再將該值賦給j,結(jié)果是i、j的值均為9;對(duì)于語(yǔ)句j=i++,執(zhí)行過程是:先將i的值賦給j,使j=8,再執(zhí)行i的值加1,結(jié)果是j=8,i=9注意:“=”是賦值運(yùn)算符,后面有詳細(xì)介紹i++使用完i的值后再使i的值加1自減運(yùn)算符-

-i使i的值先減1,再使用i的值i-

-

使用完i的值后再使i的值減12.2.8關(guān)系運(yùn)算符和關(guān)系表達(dá)式符

號(hào)名

稱優(yōu)

級(jí)優(yōu)先級(jí)說明<

小于優(yōu)先級(jí)別相同(高)①關(guān)系運(yùn)算符優(yōu)先級(jí)低于所有的算術(shù)運(yùn)算符,如c>a+b等效于c>(a+b)②關(guān)系運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,如a==b<c等效于a==(b<c),即先執(zhí)行語(yǔ)句b<c<=小于或等于>

大于>=大于或等于==測(cè)試等于(可理解為:經(jīng)過判斷,是相等的)優(yōu)先級(jí)別相同(低)!=測(cè)試不等于(可理解為:經(jīng)過判斷,是不相等的)2.2.9邏輯運(yùn)算符和邏輯表達(dá)式操作數(shù)(參與運(yùn)算的數(shù))邏輯與運(yùn)算的結(jié)果邏輯或運(yùn)算的結(jié)果對(duì)A進(jìn)行邏輯非運(yùn)算的結(jié)果ABA&&BA||B!A000010101110010111102.2.10位操作運(yùn)算符及其表達(dá)式符號(hào)名

稱運(yùn)算說明&逐位與(按位與)首先將兩個(gè)操作數(shù)轉(zhuǎn)化為二進(jìn)制,然后將對(duì)應(yīng)的每一位進(jìn)行邏輯與的運(yùn)算|逐位或(按位或)首先將兩個(gè)操作數(shù)轉(zhuǎn)化為二進(jìn)制,然后將對(duì)應(yīng)的每一位進(jìn)行邏輯或的運(yùn)算^逐位異或(按位異或)

將兩個(gè)操作數(shù)轉(zhuǎn)化為二進(jìn)制,然后將對(duì)應(yīng)的每一位進(jìn)行邏輯異或的運(yùn)算。參與運(yùn)算的兩個(gè)“位”不同,則邏輯異或的結(jié)果為1;相同則為0~逐位取反

(按位取反)首先將操作數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),然后將每一位取反>>

右移書寫格式為:變量名>>右移的位數(shù);首先將一個(gè)變量的值轉(zhuǎn)換為二進(jìn)制,然后逐位右移設(shè)定的位數(shù)。移出的數(shù)丟掉,對(duì)于正數(shù),左端的空位全部補(bǔ)0,若為負(fù)數(shù)(即符號(hào)位為1),則左端最高位補(bǔ)1<<

左移書寫格式為:變量名<<左移的位數(shù);不管是正數(shù)還是負(fù)數(shù),移出的數(shù)丟掉,右端補(bǔ)02.2.11賦值運(yùn)算符和復(fù)合賦值運(yùn)算符基本的賦值運(yùn)算符是“=”,作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量,含有“=”的式子叫賦值表達(dá)式。例如“a=8;”就是賦值表達(dá)式,其作用是將常數(shù)8賦給變量a。另外,二目運(yùn)算符可以與“=”組成復(fù)合賦值運(yùn)算符。C語(yǔ)言提供了十種復(fù)合運(yùn)算符,即:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=。其作用是可以提高程序的執(zhí)行效率,也可以簡(jiǎn)化書寫。復(fù)合賦值運(yùn)算符的含義如下:a+=b;相當(dāng)于a=a+b;a-=b;相當(dāng)于a=a-b;……2.2.12時(shí)鐘周期、機(jī)器周期和指令周期名

稱解

釋時(shí)鐘周期(也叫振蕩周期)為時(shí)鐘頻率的倒數(shù)。例如,單片機(jī)系統(tǒng)若用的是12MHz的晶振,時(shí)鐘周期就是1/12微秒(ms)。它是單片機(jī)中最基本、最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi)單片機(jī)僅完成一個(gè)最基本的動(dòng)作。時(shí)鐘脈沖控制著單片機(jī)的工作節(jié)奏,時(shí)鐘頻率越高,單片機(jī)工作速度就越快由于不同單片機(jī)的內(nèi)部硬件結(jié)構(gòu)和電路有所不同,所以時(shí)鐘頻率也不一定相同機(jī)器周期是單片機(jī)的基本操作周期,為時(shí)鐘周期的12倍。在一個(gè)機(jī)器周期內(nèi),單片機(jī)完成一個(gè)基本的操作,如取指令、存儲(chǔ)器的讀或?qū)懙戎噶钪芷谥竼纹瑱C(jī)完成一條指令所需的時(shí)間。一般1個(gè)指令周期包含1~4個(gè)機(jī)器周期2.2.13while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句while循環(huán)語(yǔ)句while循環(huán)語(yǔ)句的基本形式是:

while(條件表達(dá)式){

語(yǔ)句1;

……;

語(yǔ)句n;}for循環(huán)語(yǔ)句for循環(huán)語(yǔ)句的一般結(jié)構(gòu)是:for(給變量賦初值;條件表達(dá)式;變量增或減){

語(yǔ)句1;

語(yǔ)句2;

……

語(yǔ)句n;}2.2.14不帶參數(shù)和帶參數(shù)函數(shù)的聲明、定義和調(diào)用不帶參數(shù)函數(shù)的聲明、定義和調(diào)用如果在編程中多次用到某些語(yǔ)句且語(yǔ)句的內(nèi)容完全相同,則可以把這些語(yǔ)句寫成一個(gè)不帶參數(shù)的子函數(shù),當(dāng)在其它函數(shù)中需要用到這些語(yǔ)句時(shí),直接調(diào)用這個(gè)子函數(shù)就可以了。帶參數(shù)函數(shù)的聲明、定義和調(diào)用如果在一個(gè)程序里需要不同的延時(shí)時(shí)間,如果用上述不帶參數(shù)的子函數(shù),就需要寫多個(gè)不同的延時(shí)子函數(shù),就很不方便了。這時(shí)宜采用帶參數(shù)的子函數(shù)。2.2.15良好的編程規(guī)范良好的編程規(guī)范有利于開發(fā)人員理清思路、整理代碼,同時(shí)也便于他人閱讀、交流。在進(jìn)行編程時(shí),總的原則是要做到格式清晰

、注釋簡(jiǎn)明扼要

、命名規(guī)范易懂

、函數(shù)模塊化

、

程序易讀易維護(hù)

、功能準(zhǔn)確實(shí)現(xiàn)

、代碼空間效率和時(shí)間效率高

、適度的可擴(kuò)展性等。2.3使用“位操作”控制流水燈2.3.1編程思路2.3.2參考程序及解釋2.3.1編程思路“位操作”就是通過編程來操作單片機(jī)的單個(gè)I/O口,使它輸出低電平或者高電平,來驅(qū)動(dòng)與該I/O口相連的元器件發(fā)生相應(yīng)的動(dòng)作。通過8個(gè)I/O口的“位操作”,可以使8個(gè)LED依次點(diǎn)亮片刻,然后熄滅,這樣循環(huán),就可形成流水燈。2.3.2參考程序及解釋01 #include<reg52.h> //包含頭文件<reg52.h>02 #defineuintunsignedint//宏定義03sbitLED0=P1^0;/*聲明端口。第03行到第10行均為聲明端口,sbit是位定義的關(guān)鍵詞*/04 sbitLED1=P1^1; 05 sbitLED2=P1^2; 06 sbitLED3=P1^3; 07 sbitLED4=P1^4; 08 sbitLED5=P1^5; 09 sbitLED6=P1^6; 10 sbitLED7=P1^7; 11 uinti,j;//聲明無符號(hào)整形變量i和j12 voiddelay(uintz); //聲明帶參數(shù)的延時(shí)函數(shù)。"z"為形參13 voidmain()//主函數(shù)14 {/*這個(gè)括號(hào)和27行回括號(hào)是配對(duì)的,書寫要豎直對(duì)齊,以便閱讀。

括號(hào)內(nèi)是主函數(shù)的執(zhí)行語(yǔ)句,描述了程序要實(shí)現(xiàn)的功能*/LED0=LED1=LED2=LED3=LED4=LED5=LED6=LED7=1;//P0的各端口均輸出高電平,所有LED熄滅。注:寫成連等式,是為了節(jié)省篇幅。15 while(1) //使{}內(nèi)的語(yǔ)句循環(huán)執(zhí)行。死循環(huán)16 { //該括號(hào)和26行回括號(hào)是配對(duì)的,是一個(gè)層級(jí)17 LED0=0; //此時(shí)P0.0腳輸出低電平,點(diǎn)亮發(fā)光二極管VD018 delay(100);/*延時(shí)100毫秒。這里調(diào)用延時(shí)子函數(shù)。將實(shí)參100傳遞給子函數(shù)delay()的形式參數(shù)z*/19 LED0=1;//P0.0腳輸出高電平,熄滅發(fā)光二極管VD020 LED1=0;//P0.1腳輸出低電平點(diǎn),亮發(fā)光管VD121 delay(100);22 LED1=1;//熄滅發(fā)光二極管VD1 23 LED2=0;delay(100);LED2=1;LED3=0;delay(100);LED3=1;24 LED4=0;delay(100);LED4=1;LED5=0;delay(100);LED5=1;25 LED6=0;delay(100);LED6=1;LED7=0;delay(100);LED7=1;26 }27 }

/*第22~24行為多個(gè)語(yǔ)句,可以寫在一行,這是符合語(yǔ)法的,是為了節(jié)省篇幅。但編程時(shí)提倡每個(gè)語(yǔ)句占一行,有利于閱讀。后同*/

28 //不同的功能模塊之間可以空一行,這樣有利于閱讀29 voiddelay(uintz)30 {31 uintx,y;32 for(x=z;x>0;x--)33 for(y=110;y>0;y--);34 }第2章入門關(guān)鍵—通過實(shí)現(xiàn)流水燈掌握單片機(jī)C語(yǔ)言基礎(chǔ)知識(shí)2.4使用總線操作控制流水燈2.4.1編程思路2.4.2參考程序及解釋2.5使用移位運(yùn)算符控制流水燈2.5.1編程思路2.5.2參考程序及解釋2.6使用庫(kù)函數(shù)實(shí)現(xiàn)流水燈2.6.1循環(huán)移位庫(kù)函數(shù)2.6.2使用循環(huán)移位函數(shù)實(shí)現(xiàn)流水燈的參考程序及解釋2.7使用條件語(yǔ)句實(shí)現(xiàn)流水燈2.7.1條件語(yǔ)句2.7.2使用條件語(yǔ)句實(shí)現(xiàn)流水燈

2.4使用總線操作控制流水燈2.4.1編程思路2.4.2參考程序及解釋2.4.1編程思路51系列單片機(jī)是8位單片機(jī),每一組端口共有8個(gè)引腳。每個(gè)引腳可輸出一個(gè)電平(0或1),一組端口可同時(shí)輸出8個(gè)電平,這8個(gè)電平正好構(gòu)成了一個(gè)字節(jié)。用字節(jié)操作來控制同時(shí)點(diǎn)亮幾個(gè)LED的流動(dòng),要比位操作簡(jiǎn)單得多。例如,在圖2-1所示的流水燈電路中,若要點(diǎn)亮VD1,VD3,VD5,VD7,只需P0端口從高位P1.7到低位P1.0輸出01010101。將這8位二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)為55,編程語(yǔ)句可寫成P0=0x55。因此,用字節(jié)控制可以輕易地實(shí)現(xiàn)三個(gè)燈的流動(dòng)。2.4.2參考程序及解釋#include“reg52.h”voiddelay(unsignedinti){while(--i);}/*定義延時(shí)函數(shù)。該子函數(shù)在主函數(shù)的前面,不需要聲明*/#defineLEDP0 /*宏定義。用LED表示P0。程序在執(zhí)行過程,凡是執(zhí)行到LED,會(huì)自動(dòng)替換成P0*/voidmain(){ while(1) { LED=0x1f;delay(30000); //0x1f=00011111,點(diǎn)亮VD7、VD6、VD5,并延時(shí)

LED=0x8f;delay(30000); //0x8f=10001111,點(diǎn)亮VD6、VD5、VD4,并延時(shí)

LED=0xc7;delay(30000); //0xc7=11000111,點(diǎn)亮VD5、VD4、VD3,并延時(shí)

LED=0xe3;delay(30000); //0xe3=11100011,點(diǎn)亮VD4、VD3、VD2,并延時(shí)

LED=0xf1;delay(30000); //0xf1=11110001,點(diǎn)亮VD3、VD2、VD1,并延時(shí)

LED=0xf8;delay(30000); //0xf8=11111000,點(diǎn)亮VD2、VD1、VD0,并延時(shí)

LED=0x7c;delay(30000); //0x7c=01111100,點(diǎn)亮VD7、VD1、VD0,并延時(shí)

LED=0x3e;delay(30000); //0x3e=00111110,點(diǎn)亮VD7、VD6、VD0,并延時(shí)

}}2.5使用移位運(yùn)算符控制流水燈2.5.1編程思路2.5.2參考程序及解釋2.5.1編程思路使用2.2.10節(jié)介紹的移位運(yùn)算符可以實(shí)現(xiàn)流水燈。單片機(jī)的一組端口(如P0)從高位到低位依次輸出00011111,即P0=00011111B=0x1f(說明:B表示二進(jìn)制數(shù))則能滿足上電時(shí)VD7、VD6、VD5點(diǎn)亮。通過右移、左移若干位,再按位或可以實(shí)現(xiàn)8位數(shù)據(jù)高位與低位的交換,實(shí)現(xiàn)任務(wù)書的要求,詳見程序及相應(yīng)解釋2.5.2參考程序及解釋01行#include"reg51.h"02行constunsignedcharD=0x1f;/*const是一個(gè)C語(yǔ)言的關(guān)鍵字,它限定一個(gè)變量不允許被改變*/03行voiddelay(unsignedinti){while(--i);}voidmain() { while(1)06行{ P0=(D>>0)|(D<<8);delay(30000);/*D右移0位,結(jié)果為0x1f,左移8位,值全為0,按位或后仍為0x1f,這樣寫是為了和下面的代碼統(tǒng)一。也可直接寫成P1=D。這一行的作用是點(diǎn)亮VD7、VD6、VD5*/07行 P0=(D>>1)|(D<<7);delay(30000); 08行 P0=(D>>2)|(D<<6);delay(30000);09行 P0=(D>>3)|(D<<5);delay(30000);10行 P0=(D>>4)|(D<<4);delay(30000);11行 P0=(D>>5)|(D<<3);delay(30000);12行 P0=(D>>6)|(D<<2);delay(30000);13行 P0=(D>>7)|(D<<1);delay(30000); } }2.6使用庫(kù)函數(shù)實(shí)現(xiàn)流水燈2.6.1循環(huán)移位庫(kù)函數(shù)2.6.2使用循環(huán)移位函數(shù)實(shí)現(xiàn)流水燈的參考程序及解釋2.6.1循環(huán)移位庫(kù)函數(shù)循環(huán)左移函數(shù)_crol函數(shù)的原形是:unsignedchar_crol_(unsignedcharc,unsignedcharb)。其中c和b都是一個(gè)變量。這是一個(gè)有返回值(前面不加void)、帶參數(shù)的函數(shù)。它的意思是將變量c的二進(jìn)制數(shù)值循環(huán)左移b位。該函數(shù)返回的是移位后所得到的值。循環(huán)右移函數(shù)_cror函數(shù)的原形是:unsignedchar_cror_(unsignedcharc,unsignedcharb)。每執(zhí)行一次,c的二進(jìn)制值會(huì)被循環(huán)右移b位,右移后所得到的值返回給該函數(shù)。2.6.2使用循環(huán)移位函數(shù)實(shí)現(xiàn)流水燈的參考程序及解釋#include<reg52.h>#include<intrins.h>/*編譯器內(nèi)的循環(huán)移位庫(kù)函數(shù)對(duì)應(yīng)的頭文件為intrins.h。包含該頭文件后,在后續(xù)程序中才能使用循環(huán)移位函數(shù)。因?yàn)閹?kù)函數(shù)內(nèi)需要的相關(guān)聲明及一些定義存在于相應(yīng)的頭文件里*/#defineuintunsignedint#defineucharunsignedcharsbitbell=P1^3;uchartemp;voiddelay(uintz);voidmain(){ temp=0xfe; //給變量temp賦初值0xfe,即二進(jìn)制11111110 while(1) {

P0=temp; //將temp的值賦給P0。第一次執(zhí)行到這里時(shí),是將temp的初值0xfe賦給P0,于是點(diǎn)亮發(fā)光二極管VD0bell=0; //P1^3輸出低電平,驅(qū)動(dòng)蜂鳴器發(fā)聲

delay(500); //延時(shí)500ms P0=0xff; //P0的8個(gè)端口均輸出高電平,VD0熄滅

bell=1; //P1^3輸出高電平,蜂鳴器停止鳴響

delay(500);

temp=_crol_(temp,1); } }voiddelay(uintz) //帶參數(shù)的延時(shí)子函數(shù){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}2.7使用條件語(yǔ)句實(shí)現(xiàn)流水燈2.7.1條件語(yǔ)句2.7.2使用條件語(yǔ)句實(shí)現(xiàn)流水燈2.7.1條件語(yǔ)句單分支if語(yǔ)句單分支if語(yǔ)句的一般形式是:if(條件表達(dá)式){語(yǔ)句1;語(yǔ)句2;語(yǔ)句3;……;}雙分支語(yǔ)句雙分支語(yǔ)句的一般格式是:

if(條件表達(dá)式){語(yǔ)句1;}//也可以是多條語(yǔ)句else{語(yǔ)句2;} //也可以是多條語(yǔ)句2.7.2使用條件語(yǔ)句實(shí)現(xiàn)流水燈voiddisplay() //定義LED的顯示函數(shù),供主函數(shù)調(diào)用{ if(i==1)P0=0xfe; //如果i==1(測(cè)試等于)就亮第一個(gè)燈 if(i==2)P0=0xfd; //如果i==2就亮第二個(gè)燈 if(i==3)P0=0xfb; //如果i==3就亮第三個(gè)燈 if(i==4)P0=0xf7; //如果i==4就亮第四個(gè)燈 if(i==5)P0=0xef; //如果i==5就亮第五個(gè)燈 if(i==6)P0=0xdf; //如果i==6就亮第六個(gè)燈 if(i==7)P0=0xbf; //如果i==7就亮第七個(gè)燈 if(i==8)P0=0x7f; //如果i==8就亮第八個(gè)燈第2章入門關(guān)鍵—通過實(shí)現(xiàn)流水燈掌握單片機(jī)C語(yǔ)言基礎(chǔ)知識(shí)2.8使用多分支選擇(switch)語(yǔ)句控制流水燈2.8.1

switch語(yǔ)句介紹2.8.2使用switch語(yǔ)句控制流水燈的參考程序及解釋2.9使用數(shù)組控制流水燈2.9.1數(shù)組2.9.2使用數(shù)組控制流水燈的參考程序及解釋2.10使用指針實(shí)現(xiàn)流水燈2.10.1指針的概念和用法2.10.2使用指針實(shí)現(xiàn)流水燈的參考程序及解釋知識(shí)鏈接一、存儲(chǔ)器ROM、RAM和FLASH的基本特點(diǎn)知識(shí)鏈接二、C語(yǔ)言運(yùn)算符優(yōu)先級(jí)2.8使用多分支選擇(switch)語(yǔ)句控制流水燈2.8.1

switch語(yǔ)句介紹2.8.2使用switch語(yǔ)句控制流水燈的參考程序及解釋2.8.1

switch語(yǔ)句介紹if語(yǔ)句一般用來處理兩個(gè)分支。當(dāng)處理多個(gè)分支情況時(shí)需使用if-else-if結(jié)構(gòu)。但如果分支較多,嵌套的if語(yǔ)句層就越多,程序不但龐大而且不易理解。因此C語(yǔ)言提供了一個(gè)專門處理多分支結(jié)構(gòu)的條件選擇語(yǔ)句,即swtich語(yǔ)句(又稱開關(guān)語(yǔ)句)。2.8.2使用switch語(yǔ)句控制流水燈的參考程序及解釋voiddisplay(){ switch(i) { case1:P0=0xfe;//點(diǎn)亮第一個(gè)燈 case2:P0=0xfd; //點(diǎn)亮第二個(gè)燈 case3:P0=0xfb; //點(diǎn)亮第三個(gè)燈 case4:P0=0xf7; //點(diǎn)亮第四個(gè)燈 case5:P0=0xef; //點(diǎn)亮第五個(gè)燈 case6:P0=0xdf; //點(diǎn)亮第六個(gè)燈 case7:P0=0xbf; //點(diǎn)亮第七個(gè)燈 case8:P0=0x7f; //點(diǎn)亮第八個(gè)燈 }}2.9使用數(shù)組控制流水燈2.9.1數(shù)組2.9.2使用數(shù)組控制流水燈的參考程序及解釋2.9.1數(shù)組一維數(shù)組的聲明一維數(shù)組的初始化一維數(shù)組的引用2.9.2使用數(shù)組控制流水燈的參考程序及解釋14行 for(i=0;i<9;i++)15行 {16行

if(i==8)i=0;17行 P0=table[i];18行 delay(500);19行 }第14~19行:變量i的初值默認(rèn)為0,當(dāng)i=0時(shí),進(jìn)入for循環(huán)語(yǔ)句后,由于i<9為真,而直接執(zhí)行第16行,再執(zhí)行第17行:P0=table[0];,即P0=0xfe;(注:因?yàn)閕=0),點(diǎn)亮了第一個(gè)燈。延時(shí)500ms后,再執(zhí)行i++,i的值變?yōu)?,再判斷i<9是否為真,結(jié)果為真,因此執(zhí)行第16行,再執(zhí)行第17行:P0=table[1];,即P0=0xfd;,點(diǎn)亮了第二個(gè)燈,……依次點(diǎn)亮8個(gè)燈。當(dāng)i等于8時(shí),經(jīng)判斷,i<9仍為真,于是執(zhí)行第16行,將i置為0,開始下一輪的循環(huán)。2.10使用指針實(shí)現(xiàn)流水燈2.10.1指針的概念和用法2.10.2使用指針實(shí)現(xiàn)流水燈的參考程序及解釋知識(shí)鏈接一、存儲(chǔ)器ROM、RAM和FLASH的基本特點(diǎn)知識(shí)鏈接二、C語(yǔ)言運(yùn)算符優(yōu)先級(jí)2.10.1指針的概念和用法指針的定義指針運(yùn)算符&和*指針指向數(shù)組的操作2.10.2使用指針實(shí)現(xiàn)流水燈的參考程序及解釋unsignedchar*pa; //定義指針padelay(unsignedinti){while(--i);}voidmain(){ pa=&a[0]; //最初,讓指針pa指向數(shù)組第1個(gè)元素的地址 while(1) { LED=*pa; //將指針?biāo)赶虻牡刂匪鎯?chǔ)的數(shù)據(jù)送給LED delay(30000); pa++; //指針加1,指向下一個(gè)位置 if(pa>&a[7])pa=&a[0]; //如果指針超出了數(shù)組范圍,則回指第1個(gè)元素第3章單片機(jī)指令器件的應(yīng)用【學(xué)習(xí)目標(biāo)】(1)掌握獨(dú)立按鍵、薄膜按鍵的使用方法。(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論