




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021-7-25單片機(jī)原理及應(yīng)用1 第第1 1章章 Keil單片機(jī)集成開發(fā)環(huán)境及應(yīng)用單片機(jī)集成開發(fā)環(huán)境及應(yīng)用 1.1 1.1 Keil 單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開發(fā)環(huán)境簡介 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 2021-7-25單片機(jī)原理及應(yīng)用2 1.1 Keil1.1 Keil單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開發(fā)環(huán)境簡介 keil Vision3 keil Vision3 是是 集文本編輯、程序編譯、鏈接、調(diào)
2、試以及仿真集文本編輯、程序編譯、鏈接、調(diào)試以及仿真 于一體的單片機(jī)集成開發(fā)環(huán)境(于一體的單片機(jī)集成開發(fā)環(huán)境(IDE),具有如下特點(diǎn):),具有如下特點(diǎn): lWindows Windows 風(fēng)格的操作界面風(fēng)格的操作界面 。 l支持匯編語言、支持匯編語言、C C語言以及混合編程語言以及混合編程 。 l能夠完成能夠完成5151系列兼容類型單片機(jī)的程序設(shè)計(jì)和仿真系列兼容類型單片機(jī)的程序設(shè)計(jì)和仿真 。 l集成了豐富的庫函數(shù),以及完善的編譯鏈接工具。集成了豐富的庫函數(shù),以及完善的編譯鏈接工具。 l提供了并口、串口、提供了并口、串口、A/DA/D、D/AD/A、定時(shí)、定時(shí)/ /計(jì)數(shù)器以及中斷等資源的硬件計(jì)數(shù)器
3、以及中斷等資源的硬件 仿真能力仿真能力 。 l與外部仿真器聯(lián)合使用,提供了強(qiáng)大的在線調(diào)試能力。與外部仿真器聯(lián)合使用,提供了強(qiáng)大的在線調(diào)試能力。 l在一個(gè)開發(fā)界面中支持多個(gè)項(xiàng)目的程序設(shè)計(jì)。在一個(gè)開發(fā)界面中支持多個(gè)項(xiàng)目的程序設(shè)計(jì)。 2021-7-25單片機(jī)原理及應(yīng)用3 1.1 Keil1.1 Keil單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開發(fā)環(huán)境簡介 1 1、Keil Vision3 Keil Vision3 的安裝需求的安裝需求 l內(nèi)存大于內(nèi)存大于16MB16MB; l至少至少50MB50MB的硬盤剩余空間;的硬盤剩余空間; lWindows95Windows95及以上的操作系統(tǒng)支持。及以上的操作系統(tǒng)
4、支持。 2 2、Keil Vision3 Keil Vision3 的運(yùn)行方式的運(yùn)行方式 Keil Vision3 Keil Vision3有兩種進(jìn)入方式:有兩種進(jìn)入方式: l直接雙擊直接雙擊WindowsWindows桌面上的圖標(biāo)。桌面上的圖標(biāo)。 l從從 “開始開始”菜單中,單擊菜單中,單擊“Keil Vision3”Keil Vision3”選項(xiàng)。選項(xiàng)。 Keil Vision3Keil Vision3有兩種工作方式有兩種工作方式 : l構(gòu)建方式:用于程序編輯、編譯和鏈接,最終產(chǎn)生可執(zhí)行程序。構(gòu)建方式:用于程序編輯、編譯和鏈接,最終產(chǎn)生可執(zhí)行程序。 l調(diào)試方式:提供調(diào)試程序的功能,用于對程
5、序進(jìn)行動(dòng)、靜態(tài)跟蹤和調(diào)試方式:提供調(diào)試程序的功能,用于對程序進(jìn)行動(dòng)、靜態(tài)跟蹤和 調(diào)試。調(diào)試。 2021-7-25單片機(jī)原理及應(yīng)用4 第第1 1章章 Keil單片機(jī)集成開發(fā)環(huán)境及應(yīng)用單片機(jī)集成開發(fā)環(huán)境及應(yīng)用 1.1 1.1 Keil 單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開發(fā)環(huán)境簡介 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 2021-7-25單片機(jī)原理及應(yīng)用5 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 1、在、
6、在Keil_c51_v802a文件夾中文件夾中,點(diǎn)擊可執(zhí)行文件,點(diǎn)擊可執(zhí)行文件c51v802a.exe進(jìn)行安裝;進(jìn)行安裝; 2、顯示如下界面、顯示如下界面: 2021-7-25單片機(jī)原理及應(yīng)用6 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 2021-7-25單片機(jī)原理及應(yīng)用7 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 2021-7-25單片機(jī)原理及應(yīng)用8 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 3、安裝完后,在、安裝完后,在C盤的根文件夾下有:盤的根文件夾下有: 2021-7-25單片機(jī)原理及應(yīng)用9 第第1 1章章 Keil單片
7、機(jī)集成開發(fā)環(huán)境及應(yīng)用單片機(jī)集成開發(fā)環(huán)境及應(yīng)用 1.1 1.1 Keil 單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開發(fā)環(huán)境簡介 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 2021-7-25單片機(jī)原理及應(yīng)用10 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 1 1、創(chuàng)建一個(gè)項(xiàng)目及程序編輯、創(chuàng)建一個(gè)項(xiàng)目及程序編輯 l項(xiàng)目:由一個(gè)或多個(gè)文件組成,其中包括程序源文件、頭文件、庫項(xiàng)目:由一個(gè)或多個(gè)文件組成,其中包括程序源文件、頭文
8、件、庫 文件等多種文件。文件等多種文件。 l大項(xiàng)目:可以同時(shí)由多人編輯、調(diào)試、最后再鏈接到一起,形成最大項(xiàng)目:可以同時(shí)由多人編輯、調(diào)試、最后再鏈接到一起,形成最 終的項(xiàng)目可執(zhí)行文件。終的項(xiàng)目可執(zhí)行文件。 創(chuàng)建項(xiàng)目的基本步驟:創(chuàng)建項(xiàng)目的基本步驟: (1 1)啟動(dòng)軟件編輯環(huán)境)啟動(dòng)軟件編輯環(huán)境 2021-7-25單片機(jī)原理及應(yīng)用11 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 標(biāo)題欄:標(biāo)題欄:顯示當(dāng)前正在編輯的文件顯示當(dāng)前正在編輯的文件 名。名。 菜單條:菜單條:共有共有1111種菜單可供使用,種菜單可供使用, 所有的操作命令都可以在相應(yīng)的菜所有的操作命令都可以在相應(yīng)的菜 單中找
9、到。單中找到。 工具欄:工具欄:其中包含常用的工具和快其中包含常用的工具和快 捷按鈕。捷按鈕。 管理窗口:管理窗口:顯示項(xiàng)目結(jié)構(gòu)、顯示項(xiàng)目結(jié)構(gòu)、CPUCPU寄存器的內(nèi)容和狀態(tài)、編程參考資料等。寄存器的內(nèi)容和狀態(tài)、編程參考資料等。 工作窗口:工作窗口:包含所有打開的文檔,編輯工作在此處進(jìn)行。包含所有打開的文檔,編輯工作在此處進(jìn)行。 信息窗口:信息窗口:顯示各種與當(dāng)前操作相關(guān)的信息。顯示各種與當(dāng)前操作相關(guān)的信息。 2021-7-25單片機(jī)原理及應(yīng)用12 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 (2 2)創(chuàng)建項(xiàng)目()創(chuàng)建項(xiàng)目(ProjectProject) 2021-7-25單
10、片機(jī)原理及應(yīng)用13 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 選擇要用的單片機(jī),如選擇要用的單片機(jī),如IntelIntel公司的公司的8051AH8051AH單片機(jī)。單片機(jī)。 2021-7-25單片機(jī)原理及應(yīng)用14 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 至此創(chuàng)建了一個(gè)空項(xiàng)目文件。至此創(chuàng)建了一個(gè)空項(xiàng)目文件。 2021-7-25單片機(jī)原理及應(yīng)用15 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 (3 3)創(chuàng)建文件()創(chuàng)建文件(FileFile) 2021-7-25單片機(jī)原理及應(yīng)用16 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接
11、與調(diào)試 (4 4)向項(xiàng)目中添加文件向項(xiàng)目中添加文件 2021-7-25單片機(jī)原理及應(yīng)用17 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 至此一個(gè)完整的項(xiàng)目創(chuàng)建完畢。至此一個(gè)完整的項(xiàng)目創(chuàng)建完畢。 2021-7-25單片機(jī)原理及應(yīng)用18 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 2 2、編譯、鏈接項(xiàng)目程序、編譯、鏈接項(xiàng)目程序 2021-7-25單片機(jī)原理及應(yīng)用19 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 3 3、調(diào)試項(xiàng)目程序、調(diào)試項(xiàng)目程序 2021-7-25單片機(jī)原理及應(yīng)用20 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試
12、 在信息窗口中打開存儲(chǔ)器顯示窗口。在信息窗口中打開存儲(chǔ)器顯示窗口。 2021-7-25單片機(jī)原理及應(yīng)用21 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 l在在RAMRAM中的中的40H40H和和41H41H兩個(gè)單元分別放入兩個(gè)單元分別放入5 5和和8 8兩個(gè)數(shù)。鼠標(biāo)指向欲放數(shù)單元,兩個(gè)數(shù)。鼠標(biāo)指向欲放數(shù)單元, 然后點(diǎn)擊右鍵,出現(xiàn)彈出菜單,點(diǎn)擊然后點(diǎn)擊右鍵,出現(xiàn)彈出菜單,點(diǎn)擊“Modify Memory at D:0 x40”Modify Memory at D:0 x40”選項(xiàng)。選項(xiàng)。 2021-7-25單片機(jī)原理及應(yīng)用22 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、
13、鏈接與調(diào)試 l通過單步執(zhí)行,觀察程序每執(zhí)行一條語句后的寄存器和存儲(chǔ)器的內(nèi)容變化情通過單步執(zhí)行,觀察程序每執(zhí)行一條語句后的寄存器和存儲(chǔ)器的內(nèi)容變化情 況,充分了解和體會(huì)單片機(jī)在程序運(yùn)行中的指令行為。況,充分了解和體會(huì)單片機(jī)在程序運(yùn)行中的指令行為。 2021-7-25單片機(jī)原理及應(yīng)用23 第第1 1章章 Keil單片機(jī)集成開發(fā)環(huán)境及應(yīng)用單片機(jī)集成開發(fā)環(huán)境及應(yīng)用 1.1 1.1 Keil 單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開發(fā)環(huán)境簡介 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)
14、用 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 2021-7-25單片機(jī)原理及應(yīng)用24 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 1 1、程序設(shè)計(jì)語言、程序設(shè)計(jì)語言 按照語言的結(jié)構(gòu)及其功能可以分為三種:按照語言的結(jié)構(gòu)及其功能可以分為三種: l機(jī)器語言:機(jī)器語言:機(jī)器語言是用二進(jìn)制代碼機(jī)器語言是用二進(jìn)制代碼0 0和和1 1表示指令和數(shù)據(jù)的、最原始的程序表示指令和數(shù)據(jù)的、最原始的程序 設(shè)計(jì)語言。設(shè)計(jì)語言。 l匯編語言:匯編語言:匯編語言是用助記符代替機(jī)器碼表示指令和數(shù)據(jù)的、便于記憶和匯編語言是用助記符代替機(jī)器碼表示指令和數(shù)據(jù)的、便于記憶和 使用的、面向機(jī)器的專用語言。使用的、面向機(jī)器的專用語言。
15、l高級語言:高級語言:高級語言是接近于人的自然語言,面向應(yīng)用、獨(dú)立于機(jī)器的通用高級語言是接近于人的自然語言,面向應(yīng)用、獨(dú)立于機(jī)器的通用 語言。語言。 2021-7-25單片機(jī)原理及應(yīng)用25 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 2 2、匯編語言的語句結(jié)構(gòu)、匯編語言的語句結(jié)構(gòu) (1 1)匯編語言的指令類型)匯編語言的指令類型 MCS-51MCS-51單片機(jī)匯編語言,包含兩類不同性質(zhì)的指令。單片機(jī)匯編語言,包含兩類不同性質(zhì)的指令。 l基本指令:基本指令:是指是指CPUCPU的指令集,它們都是的指令集,它們都是CPUCPU能夠執(zhí)行的指令,每一條指令都能夠執(zhí)行的指令,每一條指令都 有對應(yīng)的機(jī)器
16、碼。有對應(yīng)的機(jī)器碼。 l偽指令:偽指令:是在匯編時(shí),用于指示匯編器如何進(jìn)行匯編的指令。它們都是機(jī)器是在匯編時(shí),用于指示匯編器如何進(jìn)行匯編的指令。它們都是機(jī)器 不可執(zhí)行的指令,無對應(yīng)的機(jī)器碼。不可執(zhí)行的指令,無對應(yīng)的機(jī)器碼。 (2 2)MCS-51MCS-51單片機(jī)指令系統(tǒng)單片機(jī)指令系統(tǒng) 指令分為指令分為6 6類:類: 2021-7-25單片機(jī)原理及應(yīng)用26 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 l數(shù)據(jù)傳遞與交換數(shù)據(jù)傳遞與交換 l算術(shù)運(yùn)算算術(shù)運(yùn)算 l邏輯運(yùn)算邏輯運(yùn)算 l程序轉(zhuǎn)移程序轉(zhuǎn)移 l布爾處理操作(又稱位操作指令)布爾處理操作(又稱位操作指令) lCPUCPU控制控制 指令主要由操作
17、碼和操作數(shù)組成。指令主要由操作碼和操作數(shù)組成。 l操作碼:表明什么性質(zhì)和類型的操作。如:數(shù)的傳送、加、減等。操作碼:表明什么性質(zhì)和類型的操作。如:數(shù)的傳送、加、減等。 l操作數(shù):操作數(shù): a a、表明被操作數(shù)的來源(本身或者是所在的地址)。、表明被操作數(shù)的來源(本身或者是所在的地址)。 b b、表明操作結(jié)果存放的目的地。、表明操作結(jié)果存放的目的地。 2021-7-25單片機(jī)原理及應(yīng)用27 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 尋找操作數(shù)的方式稱為尋址方式:尋找操作數(shù)的方式稱為尋址方式:7 7種種 l立即尋址:立即尋址:操作數(shù)跟隨操作碼,操作數(shù)前面加操作數(shù)跟隨操作碼,操作數(shù)前面加# #號
18、,如:號,如:MOV AMOV A,#70H #70H ;A#70HA#70H。 l直接尋址:直接尋址:指令中給出操作數(shù)地址,可用的存儲(chǔ)空間:指令中給出操作數(shù)地址,可用的存儲(chǔ)空間:SFRSFR和低和低128b128b片內(nèi)片內(nèi)RAMRAM, 如:如:MOV AMOV A,30H 30H ;AA(30H30H)。)。 l寄存器尋址:寄存器尋址:通用寄存器的內(nèi)容為操作數(shù)。通用寄存器指通用寄存器的內(nèi)容為操作數(shù)。通用寄存器指A A、B B 、DPTRDPTR以及以及R0R0R7 R7 , 如:如:ADD R5ADD R5,# 20H # 20H ;R5#20H+R5#20H+(R5R5)。)。 l寄存器
19、間接尋址:寄存器間接尋址:寄存器中內(nèi)容為操作數(shù)的地址??捎玫拇鎯?chǔ)器空間:片內(nèi)寄存器中內(nèi)容為操作數(shù)的地址。可用的存儲(chǔ)器空間:片內(nèi)RAMRAM和外和外 部部RAMRAM??捎玫募拇嫫饔校骸?捎玫募拇嫫饔校篟0R0,R1R1,DPTRDPTR,SPSP。如:。如:MOV R0MOV R0,A A ;(R0)A(R0)A。 l變址尋址:變址尋址:用用DPTRDPTR和和PCPC作為基址,結(jié)合作為基址,結(jié)合A A寄存器進(jìn)行的間接尋址,寄存器進(jìn)行的間接尋址, 如:如:MOVC AMOVC A, A+DPTR A+DPTR ;AA(A+DPTRA+DPTR)。)。 l相對尋址:相對尋址:以當(dāng)前以當(dāng)前PCPC
20、值為基值,加上指令給出的偏移量(補(bǔ)碼),形成新的值為基值,加上指令給出的偏移量(補(bǔ)碼),形成新的PCPC值。值。 如:如:SJMP 08H SJMP 08H ;PCPC+2+08HPCPC+2+08H。 l位尋址:位尋址:是位地址的直接尋址,如:是位地址的直接尋址,如:MOV 32HMOV 32H,C C ;32H32H進(jìn)位位進(jìn)位位CyCy。 2021-7-25單片機(jī)原理及應(yīng)用28 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 (3 3)常用的偽指令)常用的偽指令 lORG(ORG(匯編起始地址匯編起始地址) ):用來說明該指令下面的程序段在存儲(chǔ)器中存放的起始用來說明該指令下面的程序段在存儲(chǔ)器
21、中存放的起始 地址。如:地址。如:ORG 100HORG 100H lEQU(EQU(賦值賦值) ):給變量標(biāo)號賦予一個(gè)確定的數(shù)值。如:給變量標(biāo)號賦予一個(gè)確定的數(shù)值。如:MAX EQU 30HMAX EQU 30H。 lDB(DB(定義數(shù)據(jù)字節(jié)定義數(shù)據(jù)字節(jié)) ):把數(shù)據(jù)以字節(jié)數(shù)的形式存放在存儲(chǔ)器單元中。如:把數(shù)據(jù)以字節(jié)數(shù)的形式存放在存儲(chǔ)器單元中。如: lDW(DW(定義數(shù)據(jù)字定義數(shù)據(jù)字) ):按字的形式把數(shù)據(jù)存放在存儲(chǔ)單元中。如:按字的形式把數(shù)據(jù)存放在存儲(chǔ)單元中。如: lDS(DS(定義存儲(chǔ)區(qū)定義存儲(chǔ)區(qū)) ):從指定的地址單元開始,保留一定數(shù)量存儲(chǔ)單元。如:從指定的地址單元開始,保留一定數(shù)量存
22、儲(chǔ)單元。如: lBIT(BIT(位定義位定義) ):定義字符名為確定的位地址值。如:定義字符名為確定的位地址值。如: lENDEND:匯編結(jié)束。匯編結(jié)束。 (4 4)匯編語言的語句格式)匯編語言的語句格式 標(biāo)號:標(biāo)號:操作碼操作碼操作數(shù)操作數(shù);注釋;注釋 STARTSTART:MOVMOVA A,30H30H;AA(30H30H) 2021-7-25單片機(jī)原理及應(yīng)用29 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 (5 5)匯編語言程序設(shè)計(jì)步驟匯編語言程序設(shè)計(jì)步驟 l分析問題分析問題 l確定算法確定算法 l設(shè)計(jì)程序流程圖設(shè)計(jì)程序流程圖 l分配內(nèi)存單元分配內(nèi)存單元 l編寫匯編語言源程序編寫匯編
23、語言源程序 l調(diào)試程序調(diào)試程序 (6 6)匯編語言程序設(shè)計(jì)實(shí)例)匯編語言程序設(shè)計(jì)實(shí)例 【例例】將將30H30H單元內(nèi)的兩位單元內(nèi)的兩位BCDBCD碼拆開并轉(zhuǎn)換成碼拆開并轉(zhuǎn)換成ASCIIASCII碼,碼, 存入存入RAMRAM兩個(gè)單元中。兩個(gè)單元中。 ORG 0100H ORG 0100H MOV A MOV A,30H 30H ;取值;取值 ANL A ANL A,#0FH #0FH ;取低;取低4 4位位 2021-7-25單片機(jī)原理及應(yīng)用30 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 ADD ADDA A,#30H#30H ;轉(zhuǎn)換成;轉(zhuǎn)換成ASCIIASCII碼碼 MOVMOV32H3
24、2H,A A ;保存結(jié)果;保存結(jié)果 MOVMOVA A,30H30H ;取值;取值 SWAPSWAPA A ;高;高4 4位與低位與低4 4位互換位互換 ANLANLA A,#0FH#0FH ;取低;取低4 4位(原來的高位(原來的高4 4位)位) ADDADDA A,#30H#30H ;轉(zhuǎn)換成;轉(zhuǎn)換成ASCIIASCII碼碼 MOVMOV31H31H,A A ;保存結(jié)果;保存結(jié)果 SJMPSJMP$ $ END END 2021-7-25單片機(jī)原理及應(yīng)用31 第第1 1章章 Keil單片機(jī)集成開發(fā)環(huán)境及應(yīng)用單片機(jī)集成開發(fā)環(huán)境及應(yīng)用 1.1 1.1 Keil 單片機(jī)集成開發(fā)環(huán)境簡介單片機(jī)集成開
25、發(fā)環(huán)境簡介 1.2 1.2 Keil 集成開發(fā)環(huán)境的安裝集成開發(fā)環(huán)境的安裝 1.3 1.3 程序的編輯、鏈接與調(diào)試程序的編輯、鏈接與調(diào)試 1.4 1.4 匯編語言的應(yīng)用匯編語言的應(yīng)用 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 2021-7-25單片機(jī)原理及應(yīng)用32 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 1、C語言概述語言概述 lC C語言是高級語言的一種,它語言是高級語言的一種,它既有匯編語言操作底層硬件的能力,又具有高既有匯編語言操作底層硬件的能力,又具有高 級語言的許多優(yōu)點(diǎn)。在單片機(jī)程序設(shè)計(jì)中,以其功能強(qiáng)大、結(jié)構(gòu)清晰等優(yōu)點(diǎn)級語言的許多優(yōu)點(diǎn)。在單片機(jī)程序設(shè)計(jì)中,以其功能強(qiáng)大、結(jié)構(gòu)清晰等優(yōu)點(diǎn)
26、得到廣泛應(yīng)用。得到廣泛應(yīng)用。 l用于單片機(jī)的用于單片機(jī)的C語言,也稱為語言,也稱為C51語言。它繼承了語言。它繼承了C語言結(jié)構(gòu)上的所有優(yōu)點(diǎn),語言結(jié)構(gòu)上的所有優(yōu)點(diǎn), 便于掌握和使用,同時(shí)又具有針對硬件的特有語言成分,對硬件操作十分方便于掌握和使用,同時(shí)又具有針對硬件的特有語言成分,對硬件操作十分方 便。便。 lC語言與匯編語言對比語言與匯編語言對比 匯編語言:匯編語言:面向機(jī)器,可直接控制硬件,指令執(zhí)行速度快,執(zhí)行時(shí)間固定,面向機(jī)器,可直接控制硬件,指令執(zhí)行速度快,執(zhí)行時(shí)間固定, 因此執(zhí)行效率高。但語言格式簡單、可讀性差、編寫和調(diào)試難度大,不便于因此執(zhí)行效率高。但語言格式簡單、可讀性差、編寫和調(diào)
27、試難度大,不便于 移植,影響程序代碼的共享。移植,影響程序代碼的共享。 C語言:語言:結(jié)構(gòu)上易于理解、可讀性強(qiáng),開發(fā)速度快、可靠性好、便于移植。結(jié)構(gòu)上易于理解、可讀性強(qiáng),開發(fā)速度快、可靠性好、便于移植。 因此,因此,C51語言已成為目前最流行的單片機(jī)開發(fā)語言。語言已成為目前最流行的單片機(jī)開發(fā)語言。 2021-7-25單片機(jī)原理及應(yīng)用33 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 2、C51C51的標(biāo)識(shí)符與關(guān)鍵字概述的標(biāo)識(shí)符與關(guān)鍵字概述 l標(biāo)識(shí)符標(biāo)識(shí)符:用來標(biāo)識(shí)源程序中某個(gè)對象名稱的符號。對象可以是常量、變量、用來標(biāo)識(shí)源程序中某個(gè)對象名稱的符號。對象可以是常量、變量、 語句標(biāo)號、數(shù)據(jù)類型、自定義函
28、數(shù)名以及數(shù)組名等。語句標(biāo)號、數(shù)據(jù)類型、自定義函數(shù)名以及數(shù)組名等。 標(biāo)識(shí)符的定義需要符合標(biāo)識(shí)符的定義需要符合如下規(guī)則:如下規(guī)則: l標(biāo)識(shí)符可以由字母、數(shù)字(標(biāo)識(shí)符可以由字母、數(shù)字(0 09 9)和下劃線)和下劃線“_”_”組成。組成。 l標(biāo)識(shí)符區(qū)分大小寫,如:標(biāo)識(shí)符區(qū)分大小寫,如:“data1”data1”和和“Data1”Data1”代表兩個(gè)不同的標(biāo)識(shí)符。代表兩個(gè)不同的標(biāo)識(shí)符。 l標(biāo)識(shí)符第一個(gè)字符必須是小寫字母(標(biāo)識(shí)符第一個(gè)字符必須是小寫字母(a az z)、大寫字母()、大寫字母(A AZ Z)或者下劃線)或者下劃線 “_”“_”。如。如:“1data”1data”是錯(cuò)誤的標(biāo)識(shí)符。是錯(cuò)誤的標(biāo)
29、識(shí)符。 l標(biāo)識(shí)符定義不能使用標(biāo)識(shí)符定義不能使用C51C51的關(guān)鍵字,也不能和用戶已使用的函數(shù)名或的關(guān)鍵字,也不能和用戶已使用的函數(shù)名或C51C51庫函庫函 數(shù)同名。數(shù)同名。 l標(biāo)識(shí)符最多可支持標(biāo)識(shí)符最多可支持3232個(gè)字符。個(gè)字符。 2021-7-25單片機(jī)原理及應(yīng)用34 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 關(guān)鍵字關(guān)鍵字:是被是被C51C51編譯器已定義保留的專用特殊標(biāo)識(shí)符。如編譯器已定義保留的專用特殊標(biāo)識(shí)符。如:ifif、forfor、dodo、 casecase等。等。C51C51程序語言采用了程序語言采用了ANSI CANSI C標(biāo)準(zhǔn)定義的標(biāo)準(zhǔn)定義的3232個(gè)關(guān)鍵字。個(gè)關(guān)鍵字。 3
30、3、C51C51的數(shù)據(jù)類型的數(shù)據(jù)類型 l數(shù)據(jù)類型:數(shù)據(jù)類型:是是C51C51語言中變量以及常量的類型。每個(gè)變量在使用之前必須定語言中變量以及常量的類型。每個(gè)變量在使用之前必須定 義其數(shù)據(jù)類型。義其數(shù)據(jù)類型。 l基本數(shù)據(jù)類型:字符型(基本數(shù)據(jù)類型:字符型(charchar)、整型()、整型(intint)、浮點(diǎn)型()、浮點(diǎn)型(floatfloat)、無值型)、無值型 (voidvoid)。)。 l聚合類型:數(shù)組、指針、結(jié)構(gòu)、聯(lián)合、枚舉和位域。聚合類型:數(shù)組、指針、結(jié)構(gòu)、聯(lián)合、枚舉和位域。 2021-7-25單片機(jī)原理及應(yīng)用35 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 l常量與變量常量與變量 常量
31、:常量:在程序中是固定不變的數(shù)值,可為任意數(shù)據(jù)類型。在程序中是固定不變的數(shù)值,可為任意數(shù)據(jù)類型。 變量:變量:在程序中是可以被程序改變的數(shù)據(jù)量。完整的變量應(yīng)該有類在程序中是可以被程序改變的數(shù)據(jù)量。完整的變量應(yīng)該有類 型說明符和變量標(biāo)識(shí)符。型說明符和變量標(biāo)識(shí)符。 l字符類型字符類型 字符型變量:字符型變量:兩種類型,有符號字符變量(兩種類型,有符號字符變量(char achar a)和無符號字符)和無符號字符 變量(變量(unsigned char bunsigned char b)。)。 字符型常量:字符型常量:字符型常量是指用一對單引號括起來的一個(gè)字符。字符型常量是指用一對單引號括起來的一個(gè)
32、字符。 如:如:FF,77,!等。單引號中的字符不能是單引號(等。單引號中的字符不能是單引號( )和反斜杠()和反斜杠( )。如果需要使用這兩個(gè)字符,則需要采用轉(zhuǎn)義字符)。如果需要使用這兩個(gè)字符,則需要采用轉(zhuǎn)義字符 。 2021-7-25單片機(jī)原理及應(yīng)用36 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 l整數(shù)類型整數(shù)類型 整型變量:整型變量:格式:類型說明符格式:類型說明符 變量標(biāo)識(shí)符,變量標(biāo)識(shí)符變量標(biāo)識(shí)符,變量標(biāo)識(shí)符 如:如:int a, b;int a, b;/定義定義a a、b b為有符號短整型變量為有符號短整型變量 unsigned longunsigned longc, d;c, d;/
33、定義定義c c、d d為無符號長整型變量為無符號長整型變量 整型常量:整型常量:可以表示十進(jìn)制、八進(jìn)制、十六進(jìn)制的整數(shù)值??梢员硎臼M(jìn)制、八進(jìn)制、十六進(jìn)制的整數(shù)值。 l浮點(diǎn)類型:表示包含小數(shù)點(diǎn)的數(shù)據(jù)類型。浮點(diǎn)類型:表示包含小數(shù)點(diǎn)的數(shù)據(jù)類型。 三種類型:三種類型:floatfloat類型、類型、doubledouble類型、類型、long doublelong double類型。三種具有相同的精類型。三種具有相同的精 度和取值范圍。變量字長為度和取值范圍。變量字長為4 4個(gè)字節(jié)共個(gè)字節(jié)共3232位二進(jìn)制數(shù),取值范圍為位二進(jìn)制數(shù),取值范圍為3.4x10-3.4x10- 383.4x10+38383
34、.4x10+38。數(shù)據(jù)均為有符號浮點(diǎn)數(shù),沒有無符號浮點(diǎn)數(shù)。數(shù)據(jù)均為有符號浮點(diǎn)數(shù),沒有無符號浮點(diǎn)數(shù)。 浮點(diǎn)型變量:浮點(diǎn)型變量:格式:類型說明符格式:類型說明符 變量標(biāo)識(shí)符,變量標(biāo)識(shí)符變量標(biāo)識(shí)符,變量標(biāo)識(shí)符 浮點(diǎn)型常量:浮點(diǎn)型常量:值由整數(shù)部分、尾數(shù)部分和指數(shù)部分組成。值由整數(shù)部分、尾數(shù)部分和指數(shù)部分組成。 如:如:28.5728.57、-57.63-57.63、-7.2e-16-7.2e-16、8.2658.265。 2021-7-25單片機(jī)原理及應(yīng)用37 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 l指針型數(shù)據(jù)類型:指向變量存放的地址。指針型數(shù)據(jù)類型:指向變量存放的地址。 可分為整型指針、浮點(diǎn)型指
35、針、字符型指針、結(jié)構(gòu)型指針和聯(lián)合指針。可分為整型指針、浮點(diǎn)型指針、字符型指針、結(jié)構(gòu)型指針和聯(lián)合指針。 如:如:int int * *i i; / /定義整型指針變量定義整型指針變量 float float * *f f; / /定義浮點(diǎn)型指針變量定義浮點(diǎn)型指針變量 char char * *c c; /定義字符型指針變量定義字符型指針變量 struct struct * *stustu; /定義結(jié)構(gòu)型指針變量定義結(jié)構(gòu)型指針變量 union union * *uniuni; /定義聯(lián)合指針變量定義聯(lián)合指針變量 l無值類型:特殊的數(shù)據(jù)類型,字節(jié)長度為無值類型:特殊的數(shù)據(jù)類型,字節(jié)長度為0 0。 兩
36、個(gè)用途:兩個(gè)用途: (1 1)定義一個(gè)該類型指針,該指針可根據(jù)需要?jiǎng)討B(tài)分配內(nèi)存。)定義一個(gè)該類型指針,該指針可根據(jù)需要?jiǎng)討B(tài)分配內(nèi)存。 如:如: void void * *buf;buf;/buf/buf被定義為無值型指針被定義為無值型指針 (2 2)在定義和使用函數(shù)時(shí),明確地表示這個(gè)函數(shù)不返回任何值。在定義和使用函數(shù)時(shí),明確地表示這個(gè)函數(shù)不返回任何值。 2021-7-25單片機(jī)原理及應(yīng)用38 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 4 4、變量的作用域:程序中變量起作用的范圍。、變量的作用域:程序中變量起作用的范圍。 l在在C51C51語言中規(guī)定,在塊結(jié)構(gòu)中進(jìn)行定義的變量,其有效使用范圍只在該
37、塊結(jié)構(gòu)內(nèi)。語言中規(guī)定,在塊結(jié)構(gòu)中進(jìn)行定義的變量,其有效使用范圍只在該塊結(jié)構(gòu)內(nèi)。 塊結(jié)構(gòu):以花括號塊結(jié)構(gòu):以花括號“”“”和和“”“”括起來的程序段,通常稱為復(fù)合語句。如:括起來的程序段,通常稱為復(fù)合語句。如: #include #include /頭文件頭文件 void main() void main() /主函數(shù)主函數(shù) int i;int i;/定義整型變量定義整型變量 i=23;i=23;/變量賦值變量賦值 if(i%2=0) if(i%2=0) /判斷是否是偶數(shù),如果是執(zhí)行下面的語句判斷是否是偶數(shù),如果是執(zhí)行下面的語句 int j;int j;/定義整型變量定義整型變量 j=2;j=2
38、;/變量賦值變量賦值 printf(i=%d,i);printf(i=%d,i);/輸出變量輸出變量i i,正確,正確 printf(j=%d,j);printf(j=%d,j);/輸出變量輸出變量j j,錯(cuò)誤,錯(cuò)誤 2021-7-25單片機(jī)原理及應(yīng)用39 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 l局部局部變量(自動(dòng)變量):變量(自動(dòng)變量):以關(guān)鍵字以關(guān)鍵字autoauto標(biāo)識(shí)的變量類型。標(biāo)識(shí)的變量類型。 格式:格式:auto auto 類型說明符類型說明符 變量標(biāo)識(shí)符,變量標(biāo)識(shí)符變量標(biāo)識(shí)符,變量標(biāo)識(shí)符 在函數(shù)的內(nèi)部定義,作用域?yàn)樵摵瘮?shù)內(nèi)部,函數(shù)之外無效。在函數(shù)的內(nèi)部定義,作用域?yàn)樵摵瘮?shù)內(nèi)部,
39、函數(shù)之外無效。 或:在程序塊中聲明,作用域?yàn)樵摮绦驂K。或:在程序塊中聲明,作用域?yàn)樵摮绦驂K。 在編譯在編譯C51C51程序時(shí),自動(dòng)型變量根據(jù)變量類型動(dòng)態(tài)分配存儲(chǔ)空間。程序時(shí),自動(dòng)型變量根據(jù)變量類型動(dòng)態(tài)分配存儲(chǔ)空間。 動(dòng)態(tài)分配動(dòng)態(tài)分配:在程序執(zhí)行到函數(shù)時(shí),為:在程序執(zhí)行到函數(shù)時(shí),為變量變量自動(dòng)分配存儲(chǔ)空間,當(dāng)函數(shù)執(zhí)行完自動(dòng)分配存儲(chǔ)空間,當(dāng)函數(shù)執(zhí)行完 畢后,立即清除變量占用的存儲(chǔ)空間,即自動(dòng)型變量消失。畢后,立即清除變量占用的存儲(chǔ)空間,即自動(dòng)型變量消失。 l全局變量(外部變量):定義在所有函數(shù)的外部。全局變量(外部變量):定義在所有函數(shù)的外部。 作用域是整個(gè)程序文件,也可被程序文件中的任何函數(shù)使用
40、。作用域是整個(gè)程序文件,也可被程序文件中的任何函數(shù)使用。 在編譯在編譯C51C51程序時(shí),外部變量根據(jù)變量類型被靜態(tài)地分配適當(dāng)?shù)拇鎯?chǔ)空間。程序時(shí),外部變量根據(jù)變量類型被靜態(tài)地分配適當(dāng)?shù)拇鎯?chǔ)空間。 在整個(gè)程序運(yùn)行過程中,該變量一旦分配空間,便不會(huì)消失。在整個(gè)程序運(yùn)行過程中,該變量一旦分配空間,便不會(huì)消失。 2021-7-25單片機(jī)原理及應(yīng)用40 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 l靜態(tài)變量靜態(tài)變量:以關(guān)鍵字以關(guān)鍵字staticstatic標(biāo)識(shí)的變量類型。標(biāo)識(shí)的變量類型。 格式:格式:static static 類型說明符類型說明符 變量標(biāo)識(shí)符,變量標(biāo)識(shí)符變量標(biāo)識(shí)符,變量標(biāo)識(shí)符 內(nèi)部靜態(tài)變量
41、,在函數(shù)內(nèi)部定義;內(nèi)部靜態(tài)變量,在函數(shù)內(nèi)部定義; 外部靜態(tài)變量,在函數(shù)外部定義。外部靜態(tài)變量,在函數(shù)外部定義。 在編譯在編譯C51C51程序時(shí),根據(jù)數(shù)據(jù)類型靜態(tài)地給靜態(tài)變量分配合適的存儲(chǔ)空間,并在程序程序時(shí),根據(jù)數(shù)據(jù)類型靜態(tài)地給靜態(tài)變量分配合適的存儲(chǔ)空間,并在程序 運(yùn)行過程中始終占有該存儲(chǔ)空間。運(yùn)行過程中始終占有該存儲(chǔ)空間。 C51 C51語言允許將函數(shù)定義為靜態(tài)的。只有同一文件中的其他函數(shù)能夠調(diào)用靜態(tài)型函語言允許將函數(shù)定義為靜態(tài)的。只有同一文件中的其他函數(shù)能夠調(diào)用靜態(tài)型函 數(shù),同一工程項(xiàng)目中的其他文件不能調(diào)用訪問。這樣,可以既有利于程序的模塊化設(shè)數(shù),同一工程項(xiàng)目中的其他文件不能調(diào)用訪問。這樣
42、,可以既有利于程序的模塊化設(shè) 計(jì),又可以防止和其他文件中的函數(shù)有重名的情況。計(jì),又可以防止和其他文件中的函數(shù)有重名的情況。 l寄存器變量:寄存器變量: 以關(guān)鍵字以關(guān)鍵字registerregister標(biāo)識(shí)的變量類型。標(biāo)識(shí)的變量類型。 格式:格式:register register 類型說明符類型說明符 變量標(biāo)識(shí)符,變量標(biāo)識(shí)符變量標(biāo)識(shí)符,變量標(biāo)識(shí)符 常用于變量頻繁使用的情況,可提高系統(tǒng)的運(yùn)算速度。該變量存儲(chǔ)在常用于變量頻繁使用的情況,可提高系統(tǒng)的運(yùn)算速度。該變量存儲(chǔ)在CPUCPU的寄存器中。的寄存器中。 在在C51C51語言中,只允許同時(shí)定義兩個(gè)寄存器變量,如果多于兩個(gè),程序在編譯時(shí)會(huì)自動(dòng)語言中
43、,只允許同時(shí)定義兩個(gè)寄存器變量,如果多于兩個(gè),程序在編譯時(shí)會(huì)自動(dòng) 地將兩個(gè)之外的寄存器變量當(dāng)作非寄存器變量來處理。地將兩個(gè)之外的寄存器變量當(dāng)作非寄存器變量來處理。 2021-7-25單片機(jī)原理及應(yīng)用41 1.5 1.5 C語言的應(yīng)用語言的應(yīng)用 5 5、分隔符與分隔符與constconst修飾符修飾符 l分隔符在分隔符在C51C51程序語言中起輔助標(biāo)識(shí)和分界的作用。分為簡單分隔符和復(fù)合分隔符。程序語言中起輔助標(biāo)識(shí)和分界的作用。分為簡單分隔符和復(fù)合分隔符。 簡單分隔符:簡單分隔符:是除字母、數(shù)字、下劃線以外的單個(gè)是除字母、數(shù)字、下劃線以外的單個(gè)ASCIIASCII字符,如:字符,如:+ +、- -、* *、/ /、! !、 | |、 、= =、. .、, ,、: :、; ;、# #等。等。 復(fù)合分隔符:復(fù)合分隔符:是特定字符的某種組合,如:是特定字符的某種組合,如:=、 、 、 、 、( (、)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專升本藝術(shù)概論考試模擬卷(藝術(shù)鑒賞提升知識(shí)點(diǎn))含答案
- 2025年專升本藝術(shù)概論考試模擬卷:藝術(shù)傳播與媒介營銷傳播試題含答案
- 2025年四川匯坤新型建材有限公司招聘工作人員考試筆試試題(含答案)
- 老王說課課件
- 老年延續(xù)護(hù)理
- 老年健康養(yǎng)生課件
- 老干部政策課件
- 2025年八角種植市場調(diào)研報(bào)告
- 城市地下綜合管廊運(yùn)營維護(hù)合同
- 白酒產(chǎn)業(yè)投資基金設(shè)立與管理合作協(xié)議
- 《建筑施工模板安全技術(shù)規(guī)范》JGJ162-2024解析
- 中年危機(jī)人生規(guī)劃
- 《光伏發(fā)電工程工程量清單計(jì)價(jià)規(guī)范》
- 招商傭金提成專項(xiàng)方案
- 港口企業(yè)財(cái)務(wù)風(fēng)險(xiǎn)分析報(bào)告
- 老年高血壓病例
- 采購協(xié)議與合作框架構(gòu)建
- 2023年第四屆全國郵政行業(yè)職業(yè)技能競賽-全國總決賽理論知識(shí)試題及答案
- 鋼與混凝土組合結(jié)構(gòu)課件
- 店鋪?zhàn)夥砍兄Z書范本
- 二升三數(shù)學(xué)暑假作業(yè)
評論
0/150
提交評論