




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 六 講 51單片機(jī)言程序設(shè)計(jì)1微機(jī)原理及應(yīng)用Principle and Applications of Micro-Computers教學(xué)目的:掌握MCS-51單片機(jī)匯編程序設(shè)計(jì)方法要求: 掌握MCS-51單片機(jī)匯編程序設(shè)計(jì)結(jié)構(gòu)和設(shè)計(jì)方法掌握程序設(shè)計(jì)的模塊化思路和分層設(shè)計(jì)思路;掌握如何使用高級(jí)語(yǔ)言訪(fǎng)問(wèn)MCU的片上資源難點(diǎn): 掌握程序設(shè)計(jì)的模塊化思路和分層設(shè)計(jì)思路 MCS-51單片機(jī)匯編程序的結(jié)構(gòu)單片機(jī)匯編程序的結(jié)構(gòu) MCS-51單片機(jī)匯編程序設(shè)計(jì)方法單片機(jī)匯編程序設(shè)計(jì)方法 例例1, 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 包含的主要指令包含的主要指令: DJNZ 包含的主要包含的主要C語(yǔ)言:語(yǔ)言:for
2、 ;whiledo內(nèi)容匯編語(yǔ)言程序 定義定義匯編語(yǔ)言程序是多條指令陳述語(yǔ)句的有序組合匯編語(yǔ)言程序是多條指令陳述語(yǔ)句的有序組合, 并且是為并且是為了實(shí)現(xiàn)某個(gè)特定的控制目標(biāo)和算法目的了實(shí)現(xiàn)某個(gè)特定的控制目標(biāo)和算法目的特點(diǎn)指令的有序組合指令的有序組合為了特定的控制目標(biāo)或算法目的為了特定的控制目標(biāo)或算法目的從功能上看, 由下面幾部分組成啟動(dòng)和初始化程序啟動(dòng)和初始化程序(僅執(zhí)行一次僅執(zhí)行一次)主程序主程序(一個(gè)一個(gè)“死循環(huán)死循環(huán)”)子程序子程序(某些特定子功能的陳述單元某些特定子功能的陳述單元)和中斷程序和中斷程序一個(gè)簡(jiǎn)單的匯編語(yǔ)言程序源碼(見(jiàn)p.60) 功能 定時(shí)定時(shí)(周期性地周期性地)將一個(gè)變量從將
3、一個(gè)變量從05H增加到增加到FFH, 之后再重復(fù)之后再重復(fù)該過(guò)程該過(guò)程 代碼見(jiàn)教材p.60的3.3.1節(jié)0100H 75815F MOV SP, #5FH ; 堆棧底部位于堆棧底部位于60H 存放指令碼存放指令碼的首地址的首地址指令碼指令碼指令指令(指令助記符和操指令助記符和操作碼作碼)指令注釋指令注釋2021-10-155定時(shí)(周期性地)將一個(gè)變量從05H增加到FFH, 之后再重復(fù)該過(guò)程O(píng)RG 0000HLJMP main_entry ; 啟動(dòng)程序入口啟動(dòng)程序入口ORG 0003HLJMP INT0_svr ; 外部中斷外部中斷0程序入口程序入口 ; 其它中斷程序入口其它中斷程序入口ORG
4、0100Hmain_entry: ; 啟動(dòng)程序和主程序啟動(dòng)程序和主程序MOV SP, #57HMOV PSW, #00HLCALL init_8051 ; 初始化程序初始化程序main_loop:LCALL Task1 ; 子程序或子任務(wù)子程序或子任務(wù)LJMP main_loopTask1: END以一個(gè)跳轉(zhuǎn)語(yǔ)句開(kāi)始以一個(gè)跳轉(zhuǎn)語(yǔ)句開(kāi)始中斷程序的入口地址是固定的中斷程序的入口地址是固定的(簡(jiǎn)單解釋中斷的響應(yīng)簡(jiǎn)單解釋中斷的響應(yīng))討論幾個(gè)問(wèn)題討論幾個(gè)問(wèn)題:(1) 為什么首句是一個(gè)跳轉(zhuǎn)語(yǔ)句為什么首句是一個(gè)跳轉(zhuǎn)語(yǔ)句?(2) 幾個(gè)幾個(gè)ORG偽指令的作用是什么偽指令的作用是什么?(3) 如果沒(méi)有任何中斷程序
5、如果沒(méi)有任何中斷程序, 必須采必須采用這樣的程序結(jié)構(gòu)用這樣的程序結(jié)構(gòu)?2021-10-156定時(shí)(周期性地)將一個(gè)變量從05H增加到FFH, 之后再重復(fù)該過(guò)程counter DATA 30HInitValue EQU 5 ORG 000H LJMP main ORG 100Hmain: MOV sp,#5FH MOV PSW,#00H MOV A,#0AH LCALL delay MOV couner,#InitValueForeverRun: ORG 0200Hdelay: #define InitValue 5unsigned char Counter;void delay(unsigne
6、d char times) unsigned char i,j; for (i=time;i0;i- -) for(j=100;j0;j+);main(void) delay(10); Counter=InitValue; while(1) delay(100);Counter+; if (Counter=0 xFF) Counet=InitValue; 程序存儲(chǔ)器中的代碼形態(tài)見(jiàn)教材見(jiàn)教材p.62圖圖3-1內(nèi)容 MCS-51單片機(jī)匯編程序的結(jié)構(gòu)單片機(jī)匯編程序的結(jié)構(gòu) MCS-51單片機(jī)匯編程序設(shè)計(jì)方法單片機(jī)匯編程序設(shè)計(jì)方法 例例1, 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 包含的主要指令包含的主要指令: DJ
7、NZ 包含的主要包含的主要C語(yǔ)言:語(yǔ)言:for ;whiledo匯編語(yǔ)言程序設(shè)計(jì)方法軟件功能分析, 根據(jù)功能合理劃分成若干模塊分別編寫(xiě)下面程序模塊 根據(jù)資源根據(jù)資源, 確定堆棧確定堆棧, 寄存器組等初始位置寄存器組等初始位置, 編寫(xiě)啟動(dòng)程序編寫(xiě)啟動(dòng)程序 根據(jù)需要配置相關(guān)功能單元以及變量的初始狀態(tài)根據(jù)需要配置相關(guān)功能單元以及變量的初始狀態(tài), 編寫(xiě)初始化程序編寫(xiě)初始化程序 編寫(xiě)硬件相關(guān)的驅(qū)動(dòng)程序編寫(xiě)硬件相關(guān)的驅(qū)動(dòng)程序 編寫(xiě)中斷程序編寫(xiě)中斷程序 編寫(xiě)功能模塊對(duì)應(yīng)的子程序編寫(xiě)功能模塊對(duì)應(yīng)的子程序 根據(jù)各子功能模塊根據(jù)各子功能模塊(和任務(wù)和任務(wù))之間關(guān)系之間關(guān)系, 編寫(xiě)主程序編寫(xiě)主程序重點(diǎn)和難點(diǎn): 編寫(xiě)
8、功能模塊對(duì)應(yīng)的子程序2021-10-1510模塊化程序設(shè)計(jì)基本思想:將一個(gè)大的程序按功能分割成一些小模塊特點(diǎn):各模塊相對(duì)獨(dú)立、功能單一、結(jié)構(gòu)清晰、接口簡(jiǎn)單控制了程序設(shè)計(jì)的復(fù)雜性提高元件的可靠性縮短開(kāi)發(fā)周期避免程序開(kāi)發(fā)的重復(fù)勞動(dòng)易于維護(hù)和功能擴(kuò)充開(kāi)發(fā)方法: 自上向下,逐步分解,分而治之2021-10-1511模塊設(shè)計(jì)原則 模塊獨(dú)立 每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的特定功能。模塊之間的關(guān)系力求簡(jiǎn)單。例如:模塊之間最好只通過(guò)數(shù)據(jù)傳遞發(fā)生聯(lián)系,而不發(fā)生控制關(guān)系。使用與模塊獨(dú)立的變量。模塊內(nèi)的數(shù)據(jù),對(duì)于不需要這些數(shù)據(jù)的其他模塊來(lái)說(shuō),應(yīng)該不允許使用;對(duì)一個(gè)模塊內(nèi)的變量的修改不會(huì)影響其他模塊的數(shù)據(jù),即模塊的私有數(shù)
9、據(jù)只屬于這個(gè)模塊。 模塊規(guī)模適當(dāng) 分解模塊要注意層次要多層次的分解任務(wù),注意對(duì)問(wèn)題的抽象化,開(kāi)始不要過(guò)于注意細(xì)節(jié),以后再細(xì)化求精。2021-10-1512源程序文件1預(yù)編譯命令說(shuō)明部分執(zhí)行部分函數(shù)1函數(shù)n源程序文件i源程序文件nC程序C程序結(jié)構(gòu)模塊化程序設(shè)計(jì)內(nèi)容 MCS-51單片機(jī)匯編程序的結(jié)構(gòu)單片機(jī)匯編程序的結(jié)構(gòu) MCS-51單片機(jī)匯編程序設(shè)計(jì)方法單片機(jī)匯編程序設(shè)計(jì)方法 例例1, 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 包含的主要指令包含的主要指令: DJNZ 包含的主要包含的主要C語(yǔ)言:語(yǔ)言:for ;whiledo2021-10-1514程序設(shè)計(jì) 示例1功能 計(jì)算n個(gè)無(wú)符號(hào)整型數(shù)之和要求寫(xiě)成子程序形式
10、子程序的輸入和輸出參數(shù)輸入: 數(shù)據(jù)個(gè)數(shù)存放在R4中, 數(shù)據(jù)的起始地址在R0中輸出: 和存放在R4(高8位)和R5(低8位)中2021-10-1515程序設(shè)計(jì) 示例1的源碼Sum: PUSH Acc ; 保存保存A的內(nèi)容在堆棧區(qū)的內(nèi)容在堆棧區(qū)PUSH B ; 保存保存B的內(nèi)容在堆棧區(qū)的內(nèi)容在堆棧區(qū)PUSH PSW ; 保存保存PSW的內(nèi)容在堆棧區(qū)的內(nèi)容在堆棧區(qū)MOV A, #00H ; 首先將和的低首先將和的低8位清零位清零MOV B, #00H ; 首先將和的高首先將和的高8位清零位清零CLR C ; 將進(jìn)位位清零將進(jìn)位位清零MOV R5, #00H ; R5寄存器清零寄存器清零Sum1:AD
11、DC A, R0 ; 將一個(gè)字節(jié)的數(shù)據(jù)加到和的低字節(jié)中將一個(gè)字節(jié)的數(shù)據(jù)加到和的低字節(jié)中MOV R5, A ; 保存和的低字節(jié)到保存和的低字節(jié)到R5中中CLR A ; 累加器累加器A清零清零ADDC A, B ; 將進(jìn)位位加到和的高將進(jìn)位位加到和的高8位中位中 MOV B, A ; 將和的高將和的高8位仍保存在位仍保存在B中中MOV A, R5 ; 將臨時(shí)保存在將臨時(shí)保存在R5中的和的低中的和的低8位位傳送到傳送到A中中INC R0 ; 數(shù)據(jù)緩沖區(qū)指針加數(shù)據(jù)緩沖區(qū)指針加1, 指向下一個(gè)字節(jié)指向下一個(gè)字節(jié)DJNZ R4, Sum1 ; 累加是否繼續(xù)累加是否繼續(xù)? ; 累加完成,和存放在累加完成,和
12、存放在B(高高8位位)和和A(低低8位位)中中MOV R4, B ; 將和的高將和的高8位傳送到位傳送到R4中中POP PSW ; 從堆棧區(qū)恢復(fù)從堆棧區(qū)恢復(fù)PSW的內(nèi)容的內(nèi)容POP B ; 從堆棧區(qū)恢復(fù)從堆棧區(qū)恢復(fù)B的內(nèi)容的內(nèi)容POP Acc ; 從堆棧區(qū)恢復(fù)從堆棧區(qū)恢復(fù)A的內(nèi)容的內(nèi)容RET#define xDataPt (unsighned char*)0 x00)#define pR4 = (char *)0 x03;unsigned int DataSum(void) unsigned int i,result; CY=0; for (i=0;i*pR4;i+) result+=*(xD
13、ataPt+i); *pR4 = result;2021-10-1516程序設(shè)計(jì) 課內(nèi)練習(xí)1功能 將片外擴(kuò)展的數(shù)據(jù)存儲(chǔ)器中的10個(gè)無(wú)符號(hào)整型數(shù)轉(zhuǎn)移到片內(nèi)數(shù)據(jù)存儲(chǔ)器中要求寫(xiě)成子程序形式子程序的輸入和輸出參數(shù)輸入: 保存原數(shù)據(jù)的起始地址為8000H輸出: 片內(nèi)數(shù)據(jù)存儲(chǔ)器的起始地址為80H2021-10-1517程序設(shè)計(jì) 課內(nèi)練練習(xí)1續(xù)續(xù) MOV R6,#20;LOOP: MOV DPTR, #8000H; MOV R0,#80H; MOVX A, DPTR; MOV R0, A; INC DPTR INC R0 DJNZ R6, LOOP RET void DataMove(void) unsigned int i,result; char idata *DTo = (char *)0 x80; char xdata *DFrom; *DFrom= (char *)0 x8000; for (i=0;i20;i+) *(DTo+i)=*(DFrom+i); MCS-51單片機(jī)匯編程序仿真和編譯器一個(gè)簡(jiǎn)單易用的MCS-51單片機(jī)匯編程序編輯, 仿真和編譯器Proview 32 (from Frinklin Software Inc.)Version 3.3.4Build number 8.63獲取方法網(wǎng)絡(luò)上搜索網(wǎng)絡(luò)上搜索總結(jié)MC
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024湖北恩施州恩施市福牛物業(yè)有限公司招聘勞務(wù)派遣人員1人筆試參考題庫(kù)附帶答案詳解
- 2024年蚌埠禹投集團(tuán)有限公司招聘9人筆試參考題庫(kù)附帶答案詳解
- 2025屆高考生物備考教學(xué)設(shè)計(jì):第五章 基因的傳遞規(guī)律之基因分離定律的特例分析
- 東獅牌DSL脫硫催化劑
- 3.2《過(guò)秦論》教案-【中職專(zhuān)用】高二語(yǔ)文同步教學(xué)(高教版2023·拓展模塊下冊(cè))
- 第三課 夢(mèng)想始于當(dāng)下 教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 2024年12月惠州市紀(jì)檢監(jiān)察綜合事務(wù)中心35人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年湖北科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)一套
- 第三章第四節(jié) 《沉淀溶解平衡》-2023-2024學(xué)年高二化學(xué)選擇性必修1教學(xué)設(shè)計(jì)
- 2025年非金屬礦物制品:耐火合作協(xié)議書(shū)
- 綏芬河市2025年上半年招考事業(yè)單位專(zhuān)業(yè)人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 小學(xué)數(shù)學(xué)新課程標(biāo)準(zhǔn)(教育部2024年制訂)
- 2025年二級(jí)建造師聘用合同范文(三篇)
- 湖北省2025屆高三T8聯(lián)盟模擬考數(shù)學(xué)試卷(解析版)
- 2025年北京電子科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024年叉車(chē)司機(jī)車(chē)輛基本操作知識(shí)考試題庫(kù)及答案(共70題)
- 工業(yè)統(tǒng)計(jì)知識(shí)培訓(xùn)
- 2025年蘇州高鐵新城國(guó)有資產(chǎn)控股(集團(tuán))有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 鄭州市2025年高中畢業(yè)年級(jí)第一次質(zhì)量預(yù)測(cè)(一模) 化學(xué)試卷(含標(biāo)準(zhǔn)答案)
- 2025年臨床醫(yī)師定期考核必考復(fù)習(xí)題庫(kù)及答案(1080題)
評(píng)論
0/150
提交評(píng)論