版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)專(zhuān)題實(shí)訓(xùn)程序調(diào)試方法第1頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二單片機(jī)專(zhuān)題實(shí)訓(xùn)內(nèi)容 鍵盤(pán)和數(shù)碼管顯示 主要是相關(guān)芯片ZLG7289的內(nèi)容。 液晶顯示 主要是相關(guān)液晶顯示模塊LCM12864的內(nèi)容。 實(shí)時(shí)時(shí)鐘 主要是相關(guān)實(shí)時(shí)時(shí)鐘/日歷芯片PCF8563的內(nèi)容。第2頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二單片機(jī)專(zhuān)題實(shí)訓(xùn)報(bào)告要求 硬件電路圖 電路結(jié)構(gòu)和原理簡(jiǎn)介 軟件流程圖 每個(gè)模塊畫(huà)一個(gè)流程圖和模塊說(shuō)明 電路圖中主要芯片說(shuō)明和操作說(shuō)明 芯片引腳、操作時(shí)序、芯片寄存器功能介紹第3頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二一、程序調(diào)試方法1.1 單片機(jī)
2、AT89S52 ATMEL公司出品的兼容MCS-51系列單片機(jī)的一款產(chǎn)品。 其最主要的特點(diǎn)是內(nèi)置Flash存儲(chǔ)器,并提供對(duì)其編程的 方法。 AT89S52內(nèi)置了8KByte的可在線(xiàn)編程的Flash存儲(chǔ)器。 具有靈活的ISP編程模式。 并行和串行編程方式第4頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二并行編程接線(xiàn)圖第5頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二串行編程接線(xiàn)圖第6頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二1.2 使用Keil軟件編程并調(diào)試程序1.2.1 使用Keil軟件編程 步驟一:使用keil軟件Project菜單項(xiàng)中的New Projec
3、t 建立一個(gè)新工程。 步驟二:為新工程選擇芯片,添加源程序文件(.c 或是.asm)。 步驟三:對(duì)工程做相關(guān)配置。 Option for Target1配置頁(yè)面窗口中選中 Output頁(yè)面中的Create HEX選項(xiàng)。 步驟四:編寫(xiě)程序并使用Project菜單項(xiàng)中的Build All 子菜單為應(yīng)用創(chuàng)建可執(zhí)行文件(.HEX)。第7頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二調(diào)試程序是發(fā)現(xiàn)查找程序的邏輯錯(cuò)誤的過(guò)程。1.2.2 調(diào)試程序 步驟一:連接AT89S52單片機(jī)下載線(xiàn),打開(kāi)實(shí)驗(yàn) 箱電源。 步驟二:打開(kāi)電腦桌面上的雙龍電子軟件SLISP。 步驟三:在SLISP軟件界面中,器件選擇A
4、T89S52, FLASH存儲(chǔ)器選擇由Keil軟件生成的*.Hex 文件,之后點(diǎn)擊軟件界面最下方的編程按鈕, 下載程序,下載完成,單片機(jī)會(huì)自己執(zhí)行程序。 步驟四:觀(guān)察程序執(zhí)行結(jié)果,程序運(yùn)行結(jié)果與預(yù)期不 一致,則返回Keil編程界面,檢查程序邏輯。第8頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二二、用C51編寫(xiě)應(yīng)用程序2.1 C語(yǔ)言的優(yōu)點(diǎn) 只要求對(duì)單片機(jī)的存儲(chǔ)結(jié)構(gòu)有了解,不需了解指令系統(tǒng)。相對(duì)于匯編語(yǔ)言,C語(yǔ)言有如下的優(yōu)點(diǎn): 提供專(zhuān)門(mén)針對(duì)8051單片機(jī)的data、idata、pdata、xdata、code等存儲(chǔ)類(lèi)型,自動(dòng)為變量合理分配地址 。 C語(yǔ)言提供復(fù)雜的數(shù)據(jù)類(lèi)型(數(shù)組、結(jié)構(gòu)、
5、聯(lián)合、枚舉、指針等),極大地增強(qiáng)了程序處理能力和靈活性。 提供常用的標(biāo)準(zhǔn)函數(shù)庫(kù),以供用戶(hù)直接使用 。 程序可有多個(gè)函數(shù)組成模塊,可讀性好,便于修改 。 移植性好,可以移植到不同的單片機(jī),而匯編移植困難 。第9頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二 C51程序結(jié)構(gòu)和一般的C語(yǔ)言程序結(jié)構(gòu)沒(méi)有什么差別。 C51程序是函數(shù)的集合體。程序也是從main()函數(shù)開(kāi)始執(zhí) 行,主函數(shù)是程序的入口,主函數(shù)中的語(yǔ)句執(zhí)行結(jié)束,程 序也 就結(jié)束了。2.2 C51程序結(jié)構(gòu) C51的函數(shù)是有類(lèi)型、函數(shù)名、參數(shù)表、函數(shù)體組成。 函數(shù)名是一個(gè)標(biāo)識(shí)符,是大小寫(xiě)可以區(qū)別的,最長(zhǎng)可為 255 個(gè)字符。 參數(shù)表是用
6、圓括號(hào)()括起來(lái)的若干參數(shù),每項(xiàng)之間用逗號(hào)隔開(kāi) 函數(shù)體是用大括號(hào)括起來(lái)的若干C語(yǔ)句,語(yǔ)句之間用分號(hào)隔 開(kāi),最后一個(gè)語(yǔ)句是return (主函數(shù)可以省略) ,返回函數(shù) 類(lèi)型。函數(shù)類(lèi)型就是返回值的類(lèi)型,除整型外,都需要在函數(shù)名前加以指定。第10頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二extern unsigned char LED;extern char func1(char z);/主函數(shù)void main(void)LED= 0;char a= func1(c);int b= func2(d,e);while(1);Int func2(int x,int y)return x+
7、y;外部變量聲明外部函數(shù)聲明注釋函數(shù)類(lèi)型 函數(shù)名(參數(shù)表)函數(shù)體開(kāi)始 函數(shù)體結(jié)束數(shù)據(jù)說(shuō)明;執(zhí)行語(yǔ)句;本文件內(nèi)的函數(shù)定義第11頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二2.3 C51與ANSI標(biāo)準(zhǔn)C的差別2.3.1 關(guān)鍵字 C51包含ANSI C關(guān)鍵字的同時(shí),也針對(duì)51單片機(jī)擴(kuò)展了一些關(guān)鍵字。ANSI 關(guān)鍵字:auto double int struct break else long switchcase enum register typedef char extern returnunion float short unsigned continue for signedvo
8、id default goto sizeof volatile do while ifstaticC51 擴(kuò)展關(guān)鍵字:_at_ alien bdata bit code compact data idatainterrupt large pdata _priority_ reentrant sbitsfr sfr16 small _task_ using xdata第12頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二 C51的運(yùn)算符與ANSI C的運(yùn)算符無(wú)差別。主要包括以下幾類(lèi):2.3.2 C51的運(yùn)算符 算術(shù)運(yùn)算符 邏輯運(yùn)算符 關(guān)系運(yùn)算符 位運(yùn)算符 復(fù)合運(yùn)算符 其他運(yùn)算符 ? :,
9、 sizeof, *, &, , -, . 2.3.3 C51的變量C51的變量和ANSI C的變量有些比較關(guān)鍵的區(qū)別。第13頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二 變量的數(shù)據(jù)類(lèi)型1、基本類(lèi)型 與ANSI C一樣,C51的基本數(shù)據(jù)類(lèi)型有char、int、short、long和float。除float類(lèi)型外均可用signed和unsigned修飾,默認(rèn)是signed型。char占1個(gè)字節(jié),int和short占2個(gè)字節(jié),long占4個(gè)字節(jié),float占4個(gè)字節(jié)。2、其他類(lèi)型 C51的指針類(lèi)型與ANSI C的指針概念相同,指向一個(gè)特定的地址。該地址即可以變量地址也可以是函數(shù)地址。例
10、如:int funcA(int a, int b); int (*pointer)(int, int)= funcA;定義了一個(gè)指向函數(shù)funcA的指針pointer; 其他的如enum、struct、union以及數(shù)組和ANSI C的都相同。第14頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二 變量的作用域C51的變量分為局部變量和全局變量。在編程是要盡量使用局部變量,少用全局變量。3、C51專(zhuān)有的數(shù)據(jù)類(lèi)型 bit:變量存儲(chǔ)在可位尋址區(qū),保存1位二進(jìn)制數(shù)。(不能用指針)。 sfr和sfr16:定義特殊寄存器變量。 sbit:可位尋址變量的一個(gè)位??晌粚ぶ返淖兞渴莃data變量或是部
11、分的sfr變量。 變量的存儲(chǔ)種類(lèi)auto:變量默認(rèn)的存儲(chǔ)類(lèi)型。register:使用寄存器的變量。extern:全局變量,可以在多個(gè)文件中使用。static:使局部變量與程序的壽命相同;使全局變量只在本文件內(nèi)有效。第15頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二1、具體的存儲(chǔ)區(qū)域類(lèi)型有: idata: 片內(nèi)間接尋址的RAM xdata: 片外數(shù)據(jù)存儲(chǔ)(64K) pdata: 分頁(yè)尋址的片外RAM data: 片內(nèi)直接尋址的RAM code: 統(tǒng)一編制的ROM(64K) bdata: 片內(nèi)可位尋址的RAM(128位) 變量的存儲(chǔ)區(qū)域這部分是C51與ANSI C區(qū)別最明顯的地方。C5
12、1中可以指定變量存儲(chǔ)在具體的存儲(chǔ)器區(qū)域內(nèi)。片內(nèi)RAM、片外RAM或是ROM)例如:char data ch= c;定義變量ch存儲(chǔ)在直接尋址的內(nèi)部RAM區(qū)。第16頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二2、指針與存儲(chǔ)區(qū)域與變量相同,對(duì)于指針也可以指定存儲(chǔ)區(qū)域,以及指針?biāo)赶蜃兞康拇鎯?chǔ)區(qū)域。指明了所指向變量的具體存儲(chǔ)區(qū)域的指針的效率要更高,占用的存儲(chǔ)區(qū)也少一些。例如:char data *str1; /指針指向data存儲(chǔ)區(qū)的字符變量。char data * data str2; /指針本身也在data區(qū)域3、絕對(duì)地址的變量C51中,可以通過(guò)使用_at_關(guān)鍵字來(lái)指定變量存儲(chǔ)在存儲(chǔ)
13、器中的特定地址上。例如:char data ch _at_ 0 x100;對(duì)這類(lèi)變量的要求: 不能初始化; bit類(lèi)型不能使用絕對(duì)地址; 只有全局變量才能使用絕對(duì)地址;第17頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二同ANSI C一樣,C51的程序語(yǔ)句主要是三種類(lèi)型。2.3.4 程序語(yǔ)句2.3.5 函數(shù)C51中,函數(shù)的聲明、定義和調(diào)用的方法與ANSI C一樣,不同之處主要有: 可重入函數(shù):C51中的函數(shù)默認(rèn)情況是不能由多個(gè)進(jìn)程共 享,而可重入函數(shù)可以不受此限制??捎胷eentrant關(guān)鍵字 聲明函數(shù)為可重入函數(shù)。例如: int funcTest(int x, int y) ree
14、ntrant; 順序語(yǔ)句:就是語(yǔ)句,按順序一句一句執(zhí)行。 分支語(yǔ)句:if else, switch 循環(huán)語(yǔ)句:for, while, do while第18頁(yè),共20頁(yè),2022年,5月20日,2點(diǎn)31分,星期二 指定使用寄存器組:C51中的函數(shù)可以指定使用特定的寄 存器組。若為中斷函數(shù)指定寄存器組,則所有被該中斷函 數(shù)調(diào)用的函數(shù)都必須使用該寄存器組。使用using關(guān)鍵字 聲明函數(shù)使用第幾組寄存器組。例如: int funcTest(int x, int y) using 0; 表示函數(shù)funcTest使用第0組工作寄存器組。 中斷服務(wù)子程序:C51中使用interrupt關(guān)鍵字指定函數(shù)為 中斷服務(wù)子程序。例如: void funcTes
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)工業(yè)衡器行業(yè)市場(chǎng)供需格局及投資規(guī)劃建議報(bào)告
- 2019-2025年中國(guó)國(guó)學(xué)培訓(xùn)行業(yè)發(fā)展趨勢(shì)預(yù)測(cè)及投資戰(zhàn)略咨詢(xún)報(bào)告
- 2025年度金蝶企業(yè)內(nèi)部培訓(xùn)與認(rèn)證合同
- 2025年度家居裝修設(shè)計(jì)與施工一體化服務(wù)合同
- 升職申請(qǐng)書(shū)英文
- 2025年兒童玩具花燈行業(yè)深度研究分析報(bào)告
- 辣椒制品項(xiàng)目可行性研究報(bào)告-范文
- 2025年度假山園林景觀(guān)設(shè)計(jì)專(zhuān)利授權(quán)使用合同
- 2025年度國(guó)際體育賽事獨(dú)家運(yùn)營(yíng)管理合同范本
- 2025年度大數(shù)據(jù)分析服務(wù)介紹費(fèi)合同范本
- 2025中國(guó)移動(dòng)安徽分公司春季社會(huì)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 七年級(jí)英語(yǔ)下學(xué)期開(kāi)學(xué)考試(深圳專(zhuān)用)-2022-2023學(xué)年七年級(jí)英語(yǔ)下冊(cè)單元重難點(diǎn)易錯(cuò)題精練(牛津深圳版)
- 2025江蘇省全日制勞動(dòng)合同書(shū)范本
- 地方融資平臺(tái)債務(wù)和政府中長(zhǎng)期支出事項(xiàng)監(jiān)測(cè)平臺(tái)操作手冊(cè)-單位
- 放射科護(hù)理常規(guī)
- 儒釋道文化秒解
- 新時(shí)代中小學(xué)教師職業(yè)行為十項(xiàng)準(zhǔn)則
- 人教版八年級(jí)上冊(cè)英語(yǔ)1-4單元測(cè)試卷(含答案)
- 初中數(shù)學(xué)教學(xué)經(jīng)驗(yàn)分享
- 2024年銀行考試-興業(yè)銀行考試近5年真題附答案
- 2024年公開(kāi)招聘人員報(bào)名資格審查表
評(píng)論
0/150
提交評(píng)論