單片機實驗一單片機開發(fā)系統(tǒng)的使用
1會計學單片機實驗一單片機開發(fā)系統(tǒng)的使用單片機實驗一單片機開發(fā)系統(tǒng)的使用三、實驗原理三、實驗原理:51單片機開發(fā)系統(tǒng)的結(jié)構(gòu)單片機開發(fā)系統(tǒng)的結(jié)構(gòu) 4 0 芯 扁芯 扁平電纜平電纜RS232PC機機仿真器仿真器C51實驗開發(fā)板實驗開發(fā)板(目標板)(目標板)電電 源源幾個幾個SFR的地址:的地址: A:0E0H B:0F0H PSW:0D0HCYACF0RS1RS0OVPPSW各位的意義:各位的意義:1、認識、認識51單片機開發(fā)系統(tǒng)的結(jié)構(gòu)。單片機開發(fā)系統(tǒng)的結(jié)構(gòu)。 2、初步認識仿真器軟件和、初步認識仿真器軟件和Keil C51軟件界面軟件界面 。3、簡單程序調(diào)試、簡單程序調(diào)試 。(1)傳送指令:傳送指令: 設(shè)置內(nèi)部設(shè)置內(nèi)部RAM的值,的值,(30H)=40H, (40H)=10H,單步執(zhí)行下列程序,檢查,單步執(zhí)行下列程序,檢查結(jié)果。結(jié)果。MOV R0,#30HMOV A,R0MOV R1, AMOV B, R1 SJMP $ 執(zhí)行后:執(zhí)行后:(R0)= ,(R1)= , (A)= ,(B)= , (30H)= ,(40H)= 。四、實驗內(nèi)容四、實驗內(nèi)容: (2) 運算指令運算指令 單步執(zhí)行:單步執(zhí)行:MOV A, #0BFHMOV 20H, #85HSETB CADD A, 20H SJMP $檢查:檢查:A= ,CY= ,AC= ,OV= ,P= 。單步執(zhí)行:單步執(zhí)行: 前面程序段,把第四句改為:前面程序段,把第四句改為:ADDC A,20H檢查:檢查:A= ,CY= ,AC= ,OV= ,P= 。單步執(zhí)行:單步執(zhí)行: 前面程序段,把第四句改為:前面程序段,把第四句改為: SUBB A,20H 檢查:檢查:A= ,CY= ,AC= ,OV= ,P= 。單步執(zhí)行:單步執(zhí)行: 前面程序段,把第四句改為:前面程序段,把第四句改為:CJNE A,20H,Q1 檢查:檢查:A= ,CY= ,AC= ,OV= ,P= 。單步執(zhí)行:單步執(zhí)行:MOV A, #0BFHMOV B, #85HMUL ABSJMP $ 檢查:檢查:A= ,B= ,CY= ,AC= ,OV= ,P= 。單步執(zhí)行:單步執(zhí)行:MOV A, #0BFHMOV B, #85HDIV ABSJMP $ 檢查:檢查:A= ,B= ,CY= ,AC= ,OV= ,P= 。 (3) 十進制調(diào)整指令十進制調(diào)整指令 MOV A, #37HMOV 20H, #85HCLR CADD A, 20HDA A SJMP $DA A指令前后分別檢查:指令前后分別檢查:A= ,CY= ,AC= ,OV= ,P= 。MOV SP,#30HMOV A, #0FHMOV B, #80HPUSH ACCPUSH BPOP ACCPOP BSJMP $ 運行后檢查:運行后檢查:A= ,B= ,30H= ,31H= 。 (4) 堆棧操作指令堆棧操作指令 4、多字節(jié)十進制數(shù)加法程序調(diào)試:、多字節(jié)十進制數(shù)加法程序調(diào)試: 兩個兩個4字節(jié)十進制數(shù)字節(jié)十進制數(shù)1234567和和89987265相加,將其相加,將其8421BCD碼按低位到高位存碼按低位到高位存放在地址為放在地址為20-23H、30-33H的的RAM中,運算結(jié)果存放在中,運算結(jié)果存放在20-23H的地址中。的地址中。 分別按分別按“跟蹤跟蹤”、“單步單步”和和“全速全速”方式調(diào)試程序。檢查運算結(jié)果,區(qū)別方式調(diào)試程序。檢查運算結(jié)果,區(qū)別“跟跟蹤蹤”、“單步單步”調(diào)試方式的不同。在調(diào)試方式的不同。在“ADD_BCD子程序子程序”的指令的指令“DA A”處設(shè)置斷處設(shè)置斷點,再用點,再用“全速全速”方式運行,到達方式運行,到達斷點后,觀察斷點后,觀察“A”的值,的值,然后用然后用“單步單步”運行,運行,觀觀察察指令指令“DA A”的功能。同時理解的功能。同時理解“斷點斷點” 方式調(diào)試程序的特點。方式調(diào)試程序的特點。 主程序主程序 MOV R0, #20H ;置被加數(shù)首地址置被加數(shù)首地址MOV R1, #30H ;置加數(shù)首地址置加數(shù)首地址MOV R2, #04H ;置被加數(shù)和加數(shù)的長度置被加數(shù)和加數(shù)的長度(字節(jié)數(shù)字節(jié)數(shù))ACALL ADD_BCD ;調(diào)用多字節(jié)十進制數(shù)加法子程序;調(diào)用多字節(jié)十進制數(shù)加法子程序ADD_BCDSJMP $ ;停止;停止多字節(jié)十進制數(shù)加法子程序多字節(jié)十進制數(shù)加法子程序入口入口: R0、R1為為被加數(shù)和加數(shù)的首地址,按低位到高位存放被加數(shù)和加數(shù)的首地址,按低位到高位存放出口出口: R0為運算結(jié)果為運算結(jié)果的首地址,也按低位到高位存放的首地址,也按低位到高位存放ADD_BCD:CLR C ;進位清零進位清零LOOP: MOV A, R0 ;一字節(jié)的被加數(shù)一字節(jié)的被加數(shù)AADDC A, R1 ;一字節(jié)加一字節(jié)加DA A ;十進制數(shù)調(diào)整;十進制數(shù)調(diào)整MOV R0, A ;存;存一字節(jié)的運算結(jié)果一字節(jié)的運算結(jié)果INC R0 ;被加數(shù)指向下一字節(jié)被加數(shù)指向下一字節(jié)INC R1 ;加數(shù)指向下一字節(jié)加數(shù)指向下一字節(jié)DJNZ R2, LOOP ;循環(huán)控制;循環(huán)控制RET ;子程序返回;子程序返回END