版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六講51單片機(jī)言程序設(shè)計(jì)1微機(jī)原理及應(yīng)用
PrincipleandApplicationsofMicro-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)MCS-51單片機(jī)匯編程序設(shè)計(jì)方法例1,循環(huán)程序設(shè)計(jì)包含的主要指令:DJNZ包含的主要C語(yǔ)言:for;while…do內(nèi)容匯編語(yǔ)言程序定義定義匯編語(yǔ)言程序是多條指令陳述語(yǔ)句的有序組合,并且是為了實(shí)現(xiàn)某個(gè)特定的控制目標(biāo)和算法目的特點(diǎn)指令的有序組合為了特定的控制目標(biāo)或算法目的從功能上看,由下面幾部分組成啟動(dòng)和初始化程序(僅執(zhí)行一次)主程序(一個(gè)“死循環(huán)”)子程序(某些特定子功能的陳述單元)和中斷程序一個(gè)簡(jiǎn)單的匯編語(yǔ)言程序源碼(見(jiàn)p.60)功能
定時(shí)(周期性地)將一個(gè)變量從05H增加到FFH,之后再重復(fù)該過(guò)程代碼見(jiàn)教材p.60的3.3.1節(jié)0100H75815FMOVSP,#5FH;堆棧底部位于60H存放指令碼的首地址指令碼指令(指令助記符和操作碼)指令注釋2023/10/115定時(shí)(周期性地)將一個(gè)變量從05H增加到FFH,之后再重復(fù)該過(guò)程O(píng)RG0000HLJMPmain_entry;啟動(dòng)程序入口ORG0003HLJMPINT0_svr;外部中斷0程序入口…;其它中斷程序入口ORG0100Hmain_entry:;啟動(dòng)程序和主程序 MOVSP,#57H MOVPSW,#00H LCALLinit_8051;初始化程序main_loop: … LCALLTask1;子程序或子任務(wù)
… LJMPmain_loopTask1:…END以一個(gè)跳轉(zhuǎn)語(yǔ)句開(kāi)始中斷程序的入口地址是固定的(簡(jiǎn)單解釋中斷的響應(yīng))討論幾個(gè)問(wèn)題:(1)為什么首句是一個(gè)跳轉(zhuǎn)語(yǔ)句?(2)幾個(gè)ORG偽指令的作用是什么?(3)如果沒(méi)有任何中斷程序,必須采用這樣的程序結(jié)構(gòu)?2023/10/116定時(shí)(周期性地)將一個(gè)變量從05H增加到FFH,之后再重復(fù)該過(guò)程counter DATA30HInitValueEQU5 ORG000HLJMPmain
ORG100Hmain:MOVsp,#5FHMOVPSW,#00HMOVA,#0AHLCALLdelayMOVcouner,#InitValueForeverRun:……
ORG0200Hdelay:……#defineInitValue5unsignedcharCounter;voiddelay(unsignedchartimes){unsignedchari,j;for(i=time;i>0;i--)for(j=100;j>0;j++);}main(void){delay(10);Counter=InitValue;while(1){delay(100);Counter++;if(Counter==0xFF)Counet=InitValue;}}程序存儲(chǔ)器中的代碼形態(tài)見(jiàn)教材p.62圖3-1內(nèi)容MCS-51單片機(jī)匯編程序的結(jié)構(gòu)MCS-51單片機(jī)匯編程序設(shè)計(jì)方法例1,循環(huán)程序設(shè)計(jì)包含的主要指令:DJNZ包含的主要C語(yǔ)言:for;while…do匯編語(yǔ)言程序設(shè)計(jì)方法軟件功能分析,根據(jù)功能合理劃分成若干模塊分別編寫(xiě)下面程序模塊根據(jù)資源,確定堆棧,寄存器組等初始位置,編寫(xiě)啟動(dòng)程序根據(jù)需要配置相關(guān)功能單元以及變量的初始狀態(tài),編寫(xiě)初始化程序編寫(xiě)硬件相關(guān)的驅(qū)動(dòng)程序編寫(xiě)中斷程序編寫(xiě)功能模塊對(duì)應(yīng)的子程序根據(jù)各子功能模塊(和任務(wù))之間關(guān)系,編寫(xiě)主程序重點(diǎn)和難點(diǎn):編寫(xiě)功能模塊對(duì)應(yīng)的子程序2023/10/1110模塊化程序設(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ā)方法:自上向下,逐步分解,分而治之2023/10/1111模塊設(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ù)據(jù)只屬于這個(gè)模塊。模塊規(guī)模適當(dāng)分解模塊要注意層次要多層次的分解任務(wù),注意對(duì)問(wèn)題的抽象化,開(kāi)始不要過(guò)于注意細(xì)節(jié),以后再細(xì)化求精。2023/10/1112C程序結(jié)構(gòu)模塊化程序設(shè)計(jì)內(nèi)容MCS-51單片機(jī)匯編程序的結(jié)構(gòu)MCS-51單片機(jī)匯編程序設(shè)計(jì)方法例1,循環(huán)程序設(shè)計(jì)包含的主要指令:DJNZ包含的主要C語(yǔ)言:for;while…do2023/10/1114程序設(shè)計(jì)示例1功能
計(jì)算n個(gè)無(wú)符號(hào)整型數(shù)之和要求寫(xiě)成子程序形式子程序的輸入和輸出參數(shù)輸入:數(shù)據(jù)個(gè)數(shù)存放在R4中,數(shù)據(jù)的起始地址在R0中輸出:和存放在R4(高8位)和R5(低8位)中2023/10/1115程序設(shè)計(jì)示例1的源碼Sum:
PUSHAcc
;保存A的內(nèi)容在堆棧區(qū)
PUSHB
;保存B的內(nèi)容在堆棧區(qū)
PUSHPSW
;保存PSW的內(nèi)容在堆棧區(qū) MOVA,#00H;首先將和的低8位清零 MOVB,#00H;首先將和的高8位清零 CLRC;將進(jìn)位位清零 MOVR5,#00H;R5寄存器清零Sum1: ADDCA,@R0
;將一個(gè)字節(jié)的數(shù)據(jù)加到和的低字節(jié)中 MOVR5,A;保存和的低字節(jié)到R5中 CLRA;累加器A清零 ADDCA,B;將進(jìn)位位加到和的高8位中MOVB,A;將和的高8位仍保存在B中 MOVA,R5;將臨時(shí)保存在R5中的和的低8位傳送到A中 INCR0;數(shù)據(jù)緩沖區(qū)指針加1,指向下一個(gè)字節(jié)
DJNZR4,Sum1
;累加是否繼續(xù)?
;累加完成,和存放在B(高8位)和A(低8位)中 MOVR4,B;將和的高8位傳送到R4中
POPPSW
;從堆棧區(qū)恢復(fù)PSW的內(nèi)容
POPB
;從堆棧區(qū)恢復(fù)B的內(nèi)容
POPAcc
;從堆棧區(qū)恢復(fù)A的內(nèi)容
RET#definexDataPt((unsighnedchar*)0x00 )#definepR4=(char*)0x03;unsignedintDataSum(void){unsignedinti,result;CY=0;for(i=0;i<*pR4;i++)result+=*(xDataPt+i);*pR4=result;}2023/10/1116程序設(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ǔ)器的起始地址為80H2023/10/1117程序設(shè)計(jì)課內(nèi)練習(xí)1續(xù)MOVR6,#20;LOOP:MOVDPTR,#8000H;MOVR0,#80H;MOVXA,@DPTR;MOV@R0,A;INCDPTRINCR0DJNZR6,LOOPRET
voidDataMove(void){unsignedinti,result;charidata*DTo=(char*)0x80;charxdata*DFrom;*DFrom=(char*)0x8000;for(i=0;i<20;i++)*(DTo+i)=*(DFrom+i);}MCS-51單片機(jī)匯編程序仿真和編譯器一個(gè)簡(jiǎn)單易用的MCS-51單片機(jī)匯編程序編輯,仿真和編譯器Proview32(fromFrinklinSoftwareInc.)Version3.3.4Buildnumber8.63獲取方法網(wǎng)絡(luò)上搜索總結(jié)MCS-51單片機(jī)匯編程序的結(jié)構(gòu)MCS-51單片機(jī)匯編程序設(shè)計(jì)方法例1,循環(huán)程序設(shè)計(jì)包含的主要指令:DJNZ包含的主要C語(yǔ)言:for;while…do問(wèn)題和討論子程序的調(diào)用和返回過(guò)程都涉及堆棧的操作
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度解析(2026)《GBT 25703-2010溢流型球磨機(jī) 能耗指標(biāo)》(2026年)深度解析
- 深度解析(2026)GBT 25660.2-2010《數(shù)控小型蝸桿銑床 第2部分:技術(shù)條件》
- 深度解析(2026)《GBT 25620-2010土方機(jī)械 操作和維修 可維修性指南》(2026年)深度解析
- 2025廣東佛山市順德區(qū)北滘鎮(zhèn)莘村初級(jí)中學(xué)招聘臨聘教師參考考試題庫(kù)及答案解析
- 2025中意寧波生態(tài)園控股集團(tuán)有限公司第三次招聘1人(浙江)考試備考題庫(kù)及答案解析
- 2026年中國(guó)科協(xié)所屬單位面向社會(huì)招聘工作人員考試備考題庫(kù)及答案解析
- 安全培訓(xùn)教學(xué)課件
- 2025浙江KT2025122301ZP0000寧波能源集團(tuán)股份有限公司招聘1人參考筆試題庫(kù)附答案解析
- 《函數(shù)》數(shù)學(xué)課件教案
- 2025泉州市醫(yī)學(xué)會(huì)招聘工作人員2人參考考試試題及答案解析
- 江蘇省徐州市2026屆九年級(jí)上學(xué)期期末模擬數(shù)學(xué)試卷
- 癲癇常見(jiàn)癥狀及護(hù)理培訓(xùn)課程
- 2025年南陽(yáng)市公安機(jī)關(guān)招聘看護(hù)隊(duì)員200名筆試考試參考試題及答案解析
- 產(chǎn)后康復(fù)健康促進(jìn)干預(yù)方案
- 2024年人民法院聘用書(shū)記員考試試題及答案
- 2025年高三英語(yǔ)口語(yǔ)模擬(附答案)
- 大明湖課件教學(xué)課件
- 2025年新出臺(tái)貝殼出租合同模板
- 離婚財(cái)產(chǎn)分割培訓(xùn)課件
- 口腔科種植牙預(yù)防感染要點(diǎn)培訓(xùn)指南
- 小學(xué)語(yǔ)文板書(shū)基本功培訓(xùn)
評(píng)論
0/150
提交評(píng)論