單片機專題實訓(xùn)程序調(diào)試方法_第1頁
單片機專題實訓(xùn)程序調(diào)試方法_第2頁
單片機專題實訓(xùn)程序調(diào)試方法_第3頁
單片機專題實訓(xùn)程序調(diào)試方法_第4頁
單片機專題實訓(xùn)程序調(diào)試方法_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機專題實訓(xùn)程序調(diào)試方法第1頁,共20頁,2022年,5月20日,2點31分,星期二單片機專題實訓(xùn)內(nèi)容 鍵盤和數(shù)碼管顯示 主要是相關(guān)芯片ZLG7289的內(nèi)容。 液晶顯示 主要是相關(guān)液晶顯示模塊LCM12864的內(nèi)容。 實時時鐘 主要是相關(guān)實時時鐘/日歷芯片PCF8563的內(nèi)容。第2頁,共20頁,2022年,5月20日,2點31分,星期二單片機專題實訓(xùn)報告要求 硬件電路圖 電路結(jié)構(gòu)和原理簡介 軟件流程圖 每個模塊畫一個流程圖和模塊說明 電路圖中主要芯片說明和操作說明 芯片引腳、操作時序、芯片寄存器功能介紹第3頁,共20頁,2022年,5月20日,2點31分,星期二一、程序調(diào)試方法1.1 單片機

2、AT89S52 ATMEL公司出品的兼容MCS-51系列單片機的一款產(chǎn)品。 其最主要的特點是內(nèi)置Flash存儲器,并提供對其編程的 方法。 AT89S52內(nèi)置了8KByte的可在線編程的Flash存儲器。 具有靈活的ISP編程模式。 并行和串行編程方式第4頁,共20頁,2022年,5月20日,2點31分,星期二并行編程接線圖第5頁,共20頁,2022年,5月20日,2點31分,星期二串行編程接線圖第6頁,共20頁,2022年,5月20日,2點31分,星期二1.2 使用Keil軟件編程并調(diào)試程序1.2.1 使用Keil軟件編程 步驟一:使用keil軟件Project菜單項中的New Projec

3、t 建立一個新工程。 步驟二:為新工程選擇芯片,添加源程序文件(.c 或是.asm)。 步驟三:對工程做相關(guān)配置。 Option for Target1配置頁面窗口中選中 Output頁面中的Create HEX選項。 步驟四:編寫程序并使用Project菜單項中的Build All 子菜單為應(yīng)用創(chuàng)建可執(zhí)行文件(.HEX)。第7頁,共20頁,2022年,5月20日,2點31分,星期二調(diào)試程序是發(fā)現(xiàn)查找程序的邏輯錯誤的過程。1.2.2 調(diào)試程序 步驟一:連接AT89S52單片機下載線,打開實驗 箱電源。 步驟二:打開電腦桌面上的雙龍電子軟件SLISP。 步驟三:在SLISP軟件界面中,器件選擇A

4、T89S52, FLASH存儲器選擇由Keil軟件生成的*.Hex 文件,之后點擊軟件界面最下方的編程按鈕, 下載程序,下載完成,單片機會自己執(zhí)行程序。 步驟四:觀察程序執(zhí)行結(jié)果,程序運行結(jié)果與預(yù)期不 一致,則返回Keil編程界面,檢查程序邏輯。第8頁,共20頁,2022年,5月20日,2點31分,星期二二、用C51編寫應(yīng)用程序2.1 C語言的優(yōu)點 只要求對單片機的存儲結(jié)構(gòu)有了解,不需了解指令系統(tǒng)。相對于匯編語言,C語言有如下的優(yōu)點: 提供專門針對8051單片機的data、idata、pdata、xdata、code等存儲類型,自動為變量合理分配地址 。 C語言提供復(fù)雜的數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)、

5、聯(lián)合、枚舉、指針等),極大地增強了程序處理能力和靈活性。 提供常用的標(biāo)準(zhǔn)函數(shù)庫,以供用戶直接使用 。 程序可有多個函數(shù)組成模塊,可讀性好,便于修改 。 移植性好,可以移植到不同的單片機,而匯編移植困難 。第9頁,共20頁,2022年,5月20日,2點31分,星期二 C51程序結(jié)構(gòu)和一般的C語言程序結(jié)構(gòu)沒有什么差別。 C51程序是函數(shù)的集合體。程序也是從main()函數(shù)開始執(zhí) 行,主函數(shù)是程序的入口,主函數(shù)中的語句執(zhí)行結(jié)束,程 序也 就結(jié)束了。2.2 C51程序結(jié)構(gòu) C51的函數(shù)是有類型、函數(shù)名、參數(shù)表、函數(shù)體組成。 函數(shù)名是一個標(biāo)識符,是大小寫可以區(qū)別的,最長可為 255 個字符。 參數(shù)表是用

6、圓括號()括起來的若干參數(shù),每項之間用逗號隔開 函數(shù)體是用大括號括起來的若干C語句,語句之間用分號隔 開,最后一個語句是return (主函數(shù)可以省略) ,返回函數(shù) 類型。函數(shù)類型就是返回值的類型,除整型外,都需要在函數(shù)名前加以指定。第10頁,共20頁,2022年,5月20日,2點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ù)類型 函數(shù)名(參數(shù)表)函數(shù)體開始 函數(shù)體結(jié)束數(shù)據(jù)說明;執(zhí)行語句;本文件內(nèi)的函數(shù)定義第11頁,共20頁,2022年,5月20日,2點31分,星期二2.3 C51與ANSI標(biāo)準(zhǔn)C的差別2.3.1 關(guān)鍵字 C51包含ANSI C關(guān)鍵字的同時,也針對51單片機擴展了一些關(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 擴展關(guān)鍵字:_at_ alien bdata bit code compact data idatainterrupt large pdata _priority_ reentrant sbitsfr sfr16 small _task_ using xdata第12頁,共20頁,2022年,5月20日,2點31分,星期二 C51的運算符與ANSI C的運算符無差別。主要包括以下幾類:2.3.2 C51的運算符 算術(shù)運算符 邏輯運算符 關(guān)系運算符 位運算符 復(fù)合運算符 其他運算符 ? :,

9、 sizeof, *, &, , -, . 2.3.3 C51的變量C51的變量和ANSI C的變量有些比較關(guān)鍵的區(qū)別。第13頁,共20頁,2022年,5月20日,2點31分,星期二 變量的數(shù)據(jù)類型1、基本類型 與ANSI C一樣,C51的基本數(shù)據(jù)類型有char、int、short、long和float。除float類型外均可用signed和unsigned修飾,默認(rèn)是signed型。char占1個字節(jié),int和short占2個字節(jié),long占4個字節(jié),float占4個字節(jié)。2、其他類型 C51的指針類型與ANSI C的指針概念相同,指向一個特定的地址。該地址即可以變量地址也可以是函數(shù)地址。例

10、如:int funcA(int a, int b); int (*pointer)(int, int)= funcA;定義了一個指向函數(shù)funcA的指針pointer; 其他的如enum、struct、union以及數(shù)組和ANSI C的都相同。第14頁,共20頁,2022年,5月20日,2點31分,星期二 變量的作用域C51的變量分為局部變量和全局變量。在編程是要盡量使用局部變量,少用全局變量。3、C51專有的數(shù)據(jù)類型 bit:變量存儲在可位尋址區(qū),保存1位二進制數(shù)。(不能用指針)。 sfr和sfr16:定義特殊寄存器變量。 sbit:可位尋址變量的一個位??晌粚ぶ返淖兞渴莃data變量或是部

11、分的sfr變量。 變量的存儲種類auto:變量默認(rèn)的存儲類型。register:使用寄存器的變量。extern:全局變量,可以在多個文件中使用。static:使局部變量與程序的壽命相同;使全局變量只在本文件內(nèi)有效。第15頁,共20頁,2022年,5月20日,2點31分,星期二1、具體的存儲區(qū)域類型有: idata: 片內(nèi)間接尋址的RAM xdata: 片外數(shù)據(jù)存儲(64K) pdata: 分頁尋址的片外RAM data: 片內(nèi)直接尋址的RAM code: 統(tǒng)一編制的ROM(64K) bdata: 片內(nèi)可位尋址的RAM(128位) 變量的存儲區(qū)域這部分是C51與ANSI C區(qū)別最明顯的地方。C5

12、1中可以指定變量存儲在具體的存儲器區(qū)域內(nèi)。片內(nèi)RAM、片外RAM或是ROM)例如:char data ch= c;定義變量ch存儲在直接尋址的內(nèi)部RAM區(qū)。第16頁,共20頁,2022年,5月20日,2點31分,星期二2、指針與存儲區(qū)域與變量相同,對于指針也可以指定存儲區(qū)域,以及指針?biāo)赶蜃兞康拇鎯^(qū)域。指明了所指向變量的具體存儲區(qū)域的指針的效率要更高,占用的存儲區(qū)也少一些。例如:char data *str1; /指針指向data存儲區(qū)的字符變量。char data * data str2; /指針本身也在data區(qū)域3、絕對地址的變量C51中,可以通過使用_at_關(guān)鍵字來指定變量存儲在存儲

13、器中的特定地址上。例如:char data ch _at_ 0 x100;對這類變量的要求: 不能初始化; bit類型不能使用絕對地址; 只有全局變量才能使用絕對地址;第17頁,共20頁,2022年,5月20日,2點31分,星期二同ANSI C一樣,C51的程序語句主要是三種類型。2.3.4 程序語句2.3.5 函數(shù)C51中,函數(shù)的聲明、定義和調(diào)用的方法與ANSI C一樣,不同之處主要有: 可重入函數(shù):C51中的函數(shù)默認(rèn)情況是不能由多個進程共 享,而可重入函數(shù)可以不受此限制??捎胷eentrant關(guān)鍵字 聲明函數(shù)為可重入函數(shù)。例如: int funcTest(int x, int y) ree

14、ntrant; 順序語句:就是語句,按順序一句一句執(zhí)行。 分支語句:if else, switch 循環(huán)語句:for, while, do while第18頁,共20頁,2022年,5月20日,2點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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論