




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 內(nèi)內(nèi) 容容 提提 要要概述概述偽指令偽指令匯編語言程序設計步驟匯編語言程序設計步驟順序程序設計順序程序設計分支程序設計分支程序設計循環(huán)程序設計循環(huán)程序設計位操作程序設計位操作程序設計子程序子程序小結小結第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 4.1 4.1 概述概述 MCS-51單片機的編程語言可以是單片機的編程語言可以是匯編語言匯編語言也可以也可以是是高級語言高級語言(如(如C語言),語言),高級語言編程快捷,但程高級語言編
2、程快捷,但程序長,占用存儲空間大,執(zhí)行慢;匯編語言產(chǎn)生的目序長,占用存儲空間大,執(zhí)行慢;匯編語言產(chǎn)生的目標程序簡短,占用存儲空間小,執(zhí)行快,能充分發(fā)揮標程序簡短,占用存儲空間小,執(zhí)行快,能充分發(fā)揮計算機的硬件功能計算機的硬件功能。無論是高級語言還是匯編語言,。無論是高級語言還是匯編語言,源程序源程序都要轉換成都要轉換成目標程序目標程序(機器語言)單片機才能(機器語言)單片機才能執(zhí)行。執(zhí)行。 第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 連接連接/定位器定位器L51匯編語言匯編語言源程序源程序匯編器匯編器A51符號轉換程序符號轉換程序OHS51絕對地址絕對地址目標程序目標
3、程序 .BINC語言程序語言程序浮浮動動地地址址目目標標程程序序編譯器編譯器C51 HEX圖圖 4-1 兩種語言源程序轉換成目標程序兩種語言源程序轉換成目標程序第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 目前很多公司將編輯器、匯編器、編譯器、連接目前很多公司將編輯器、匯編器、編譯器、連接/ /定位定位器、符號轉換程序做成集成軟件包,用戶進入該集成環(huán)境,器、符號轉換程序做成集成軟件包,用戶進入該集成環(huán)境,編輯好程序后,只需點擊相應菜單就可以完成上述的各步,編輯好程序后,只需點擊相應菜單就可以完成上述的各步,如如WAVEWAVE、 KEIL KEIL ,WAVEWAVE集
4、成軟件的使用見附錄。集成軟件的使用見附錄。匯編匯編:將匯編語言:將匯編語言源程序源程序轉換成機器語言轉換成機器語言目標目標程序的過程序的過程稱為程稱為匯編匯編。 匯編程序匯編程序:能將匯編語言:能將匯編語言源程序源程序轉換成機器語言轉換成機器語言目標目標程序的系統(tǒng)軟件稱為程序的系統(tǒng)軟件稱為匯編程序匯編程序。第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 源程序源程序 目標程序目標程序 低級語言低級語言機器語言機器語言匯編匯編高級語言高級語言機器語言機器語言編譯編譯反匯編反匯編反編譯反編譯第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 匯編的方法匯編的
5、方法:匯編的方法有兩種:匯編的方法有兩種1.手工匯編手工匯編:之前之前 人工查指令表,查出程序中每條指令對應的機人工查指令表,查出程序中每條指令對應的機器代碼。早期的計算機使用。器代碼。早期的計算機使用。2. .機器匯編機器匯編:現(xiàn)在現(xiàn)在 用計算機中的匯編程序對用戶源程序進行匯編。用計算機中的匯編程序對用戶源程序進行匯編。 用機器匯編要提供給匯編一些信息,遵循匯編程用機器匯編要提供給匯編一些信息,遵循匯編程序的一些約定。這些由偽指令指定。序的一些約定。這些由偽指令指定。第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 1)確定程序中每條匯編語言指令的指令機器碼確定程序中每條
6、匯編語言指令的指令機器碼2)確定每條指令在存儲器中的存放地址確定每條指令在存儲器中的存放地址3)提供錯誤信息提供錯誤信息4)提供目標執(zhí)行文件提供目標執(zhí)行文件(*.OBJ/*.HEX)和列表文件和列表文件(*.LST) 地址地址 機器碼機器碼源程序源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 1. 機器指令機器指令:指令系統(tǒng)中的全部指令。每條機器指令都:指令系統(tǒng)中的全部指令。每條機器指令都有對應的機器代碼,可以被有對應的機器代碼,可以被CPU執(zhí)行。執(zhí)
7、行。2. 偽指令偽指令: 匯編控制指令,沒有指令代碼,只用于匯編匯編控制指令,沒有指令代碼,只用于匯編過程,為匯編程序提供匯編信息。過程,為匯編程序提供匯編信息。一、匯編語言指令類型一、匯編語言指令類型 宏匯編功能:將需要反復多次執(zhí)行的程序段定義成一個宏宏匯編功能:將需要反復多次執(zhí)行的程序段定義成一個宏指令名(宏定義)。編程時,可在程序中使用宏指令名來替指令名(宏定義)。編程時,可在程序中使用宏指令名來替代被定義的程序段(宏調(diào)用)。代被定義的程序段(宏調(diào)用)。4.2 偽指令偽指令第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 宏定義過程宏定義過程:宏調(diào)用過程:宏調(diào)用過程:
8、 宏指令名宏指令名 實際參數(shù)實際參數(shù) 宏指令名宏指令名 實際參數(shù)實際參數(shù)宏指令名宏指令名 MACRO 形式參數(shù)形式參數(shù) ;被定義的程序段;被定義的程序段 ENDM第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 二偽指令二偽指令 常用偽指令及功能:常用偽指令及功能:1.起始指令起始指令 ORG nn功能:定義程序或數(shù)據(jù)塊的起始地址。功能:定義程序或數(shù)據(jù)塊的起始地址。指示此語句后面的程序指示此語句后面的程序或數(shù)據(jù)塊或數(shù)據(jù)塊以以nn為起始地址為起始地址,連續(xù)存放連續(xù)存放在在程序存儲器程序存儲器中。中。 指令地址指令地址 機器碼機器碼源程序源程序 ORG 2000H 2000H
9、78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ORG 3000H 3000H 23 TAB: DB 23H,100,A 3001H 64 3002H 41第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 2.字節(jié)定義字節(jié)定義 標號:標號: DB(字節(jié)常數(shù),(字節(jié)常數(shù),或字符或表達式)或字符或表達式)功能:功能:指示在指示在程序存儲器中程序存儲器中以以標號為起始地標號為起始地址址的單元里的單元里存放的數(shù)為字節(jié)數(shù)據(jù)存放的數(shù)為字節(jié)數(shù)據(jù)(八位二進(八位二進制數(shù))。制數(shù))。例如例如 LN:DB 32,C,25H,-1;LNLN+2 地址單元依次存放
10、地址單元依次存放20H , 43H , 25H ,F(xiàn)FH地址地址 數(shù)據(jù)數(shù)據(jù)LN20LN+143LN+225LN+3FF3. 字定義字定義 標號:標號:DW (字常數(shù)或表達式(字常數(shù)或表達式)作用:作用: 指示指示在程序存儲器中在程序存儲器中以以標號為起始地址標號為起始地址的單元里的單元里存放的數(shù)為字數(shù)據(jù)存放的數(shù)為字數(shù)據(jù)(即(即16位的二進制數(shù)),位的二進制數(shù)),例如:例如:GH :DW 1234H,5678H,08GH1234GH+25678GH+40008第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 5. 等值指令等值指令 標號標號 EQU(數(shù)值表達式)(數(shù)值表達式)
11、 表示表示EQU兩邊的量等值,用于為標號或標識符賦值。兩邊的量等值,用于為標號或標識符賦值。例如:例如: X1 EQU 2000H X2 EQU 0FH MAIN: MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2 ; A=A+0FH4保留字節(jié)保留字節(jié) 標號:標號:DS (數(shù)值表達式)(數(shù)值表達式)作用:作用: 指示指示在程序存儲器中保留以標號為起始地在程序存儲器中保留以標號為起始地址的若干字節(jié)單元,其單元個數(shù)由數(shù)值表達式指定址的若干字節(jié)單元,其單元個數(shù)由數(shù)值表達式指定。例如例如 L1:DS 32 ; 從從L1地址開始保留地址開始保留32個存儲單元。個存儲單元。第第4章章
12、 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 6. 位定義位定義 標號標號 BIT 位地址位地址 作用:作用: 同同EQU指令,不過定義的是位操作地址。指令,不過定義的是位操作地址。例如例如 AIC BIT P1.1。7.匯編結束匯編結束 END作用:作用: 指示源程序段結束。指示源程序段結束。 END指令放在程序的最后。指令放在程序的最后。第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 匯編語言程序設計步驟匯編語言程序設計步驟一一. .確定方案和計算方法確定方案和計算方法二二. .了解應用系統(tǒng)的硬件配置、性能指標了解應用系統(tǒng)的硬件配置、性能指標三三. .建
13、立系統(tǒng)數(shù)學模型,確定控制算法和操作步驟建立系統(tǒng)數(shù)學模型,確定控制算法和操作步驟四四. .合理分配存儲器單元和了解合理分配存儲器單元和了解I/O接口地址接口地址五五. 編制源程序編制源程序1.按功能設計程序,明確各程序之間按功能設計程序,明確各程序之間的相互關系的相互關系2. 用流程圖表示程序結構和功能用流程圖表示程序結構和功能開始開始1 YN?3.程序中用注釋說明指令在程序中的程序中用注釋說明指令在程序中的作用,方便閱讀、調(diào)試和修改作用,方便閱讀、調(diào)試和修改第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 -編寫規(guī)范編寫規(guī)范第第4章章 MCS-51單片機匯編語言程序設計單片
14、機匯編語言程序設計 -源程序匯編源程序匯編第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 4.3 順序程序設計順序程序設計順序程序順序程序( (簡單程序簡單程序) ),程序走向只有一條路徑,程序走向只有一條路徑例例4-2:將:將R4R5雙字節(jié)符號數(shù)求補程序。雙字節(jié)符號數(shù)求補程序。 ORG 0000H MOV A,R5 ;取低字節(jié);取低字節(jié) CPL A ADD A,#1 ;低字節(jié)變補;低字節(jié)變補 MOV R5,A MOV A,R4 ;取高字節(jié);取高字節(jié) CPL A ADDC A,#0 ;高字節(jié)變補;高字節(jié)變補 ORL A, #80H; 恢復負號恢復負號 MOV R4,A E
15、ND第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 例例4-3 分解壓縮式分解壓縮式BCD碼碼,使其成為非壓縮式使其成為非壓縮式BCD碼。碼。ORG 0000HMOV R0,#40H;設指針;設指針MOV A,R0;取一個字節(jié);取一個字節(jié)MOV R2,A;暫存;暫存ANL A,#0FH;清;清0高半字節(jié)高半字節(jié)INC R0MOV R0,A ;保存數(shù)據(jù)個位;保存數(shù)據(jù)個位片內(nèi)片內(nèi)RAM42H41H40H65MOV A,R2SWAP A ;十位換到低半字節(jié);十位換到低半字節(jié)ANL A,#0FHINC R0MOV R0,A;保存數(shù)據(jù)十位;保存數(shù)據(jù)十位END05050606第第4章
16、章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 地址數(shù)據(jù)TAB0TAB+11TAB+24TAB+39TAB+416HTAB+525H例例4-4 設變量放在片內(nèi)設變量放在片內(nèi)RAM的的20H單元單元,其值為其值為00H05H之間之間,要求編查表程序要求編查表程序,查出變量的平方值查出變量的平方值, 并放入片內(nèi)并放入片內(nèi)RAM的的21H單元。單元。 ORG 0000H MOV DPTR,#TAB MOV A,20H MOVC A,A+DPTR ;查表查表 MOV 21H,A SJMP $TAB2: DB 00H,01H,04H,09H,16H,25H END分析分析 :在程序存儲器安
17、排一張平方表,首地址為:在程序存儲器安排一張平方表,首地址為TAB,以以DPTR指向表首址,指向表首址,A存放變量值,利用查表指令存放變量值,利用查表指令MOVC A,A+DPTR,即可求得。,即可求得。表中數(shù)據(jù)用表中數(shù)據(jù)用BCD碼存放合乎人們的習慣碼存放合乎人們的習慣. 如果平方值為兩個字節(jié),程序應如何編。如果平方值為兩個字節(jié),程序應如何編。DPTRA第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 ORG 0000H ORG 0000H MOV A,R2 JNB ACC.7,N ;為正數(shù)?;為正數(shù)? CPL A ;負數(shù)變補;負數(shù)變補 INC A MOV R2,AN: S
18、JMP $ ;結束;結束 4.4 4.4 分支程序的設計分支程序的設計 由條件轉移指令構成程序判斷框部分,形成分支結構由條件轉移指令構成程序判斷框部分,形成分支結構3.5.1 3.5.1 單分支程序單分支程序一個判斷決策框,兩種分支結構圖。一個判斷決策框,兩種分支結構圖。條件滿足條件滿足?N影響條件影響條件Y處理段處理段條件滿足條件滿足?N影響條件影響條件Y處理處理1處理處理2例例1 1 求求8 8位有符號數(shù)的絕對值。位有符號數(shù)的絕對值。方法:正數(shù)不變,負數(shù)變補方法:正數(shù)不變,負數(shù)變補第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 例例2 用單片機加重力傳感器作磅秤,秤出
19、重量后算出行李運費用單片機加重力傳感器作磅秤,秤出重量后算出行李運費價格,其秤出的重量以價格,其秤出的重量以10kg為為1個計價單位個計價單位G , G已存入已存入40H單元。單元。計價方法計價方法為為50kg以內(nèi)按以內(nèi)按3元元, 50kg以上以上分段計價分段計價: 50kg按按3元計價元計價,超過部分按,超過部分按2元計價。元計價。 由此列出算式:由此列出算式: G3 + (G-5)2; 當當G5M=G3 ;當;當G5 3G因重復使用,先暫存在因重復使用,先暫存在R2。流程。流程見左見左, 程序如下:程序如下:第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 ORG 01
20、00HFRT: MOV A,40H;取行李重量計價單位;取行李重量計價單位G MOV R3,A MOV B,#03H;運費;運費M=G3 MUL AB MOV R2,A;暫存;暫存3G MOV A,R3;取回;取回G CJNE A,#05H,L1;G 5 ? SJMP WETCL1: JC WETC;是,轉至;是,轉至WETC SUBB A,#05H;否則;否則 M=3G+2(G-5) RLC A ADD A,R2 MOV R2 ,AWETC:MOV 41H,R2 ;存運費;存運費 M RET第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 多分支散轉程序的設計多分支散轉程
21、序的設計 有一類分支程序有一類分支程序,它根據(jù)不同的輸入條件或不同的運算結果它根據(jù)不同的輸入條件或不同的運算結果,轉向不同的處理程序轉向不同的處理程序,稱之為散轉程序。這類程序通常利用稱之為散轉程序。這類程序通常利用JMPA+DPTR間接轉移指令實現(xiàn)轉移。有如下兩種設計方法:間接轉移指令實現(xiàn)轉移。有如下兩種設計方法: 1. 查轉移地址表查轉移地址表: 將將轉移地址轉移地址列成表格,將表格的內(nèi)容作轉移的目標地址。列成表格,將表格的內(nèi)容作轉移的目標地址。 2. 查轉移指令表查轉移指令表: 將轉移到不同程序的將轉移到不同程序的轉移指令轉移指令列成表格,判斷條件后查表,列成表格,判斷條件后查表,轉到表
22、中指令執(zhí)行轉到表中指令執(zhí)行,下面用兩個例子說明。下面用兩個例子說明。第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 1. 利用轉移地址表實現(xiàn)轉移利用轉移地址表實現(xiàn)轉移 例例4-7 根據(jù)根據(jù)R3的內(nèi)容轉向對應的程序,的內(nèi)容轉向對應的程序,R3的內(nèi)容為的內(nèi)容為0n,處處理程序的入口符號地址分別為理程序的入口符號地址分別為PR0PRn (n128)。分析:將分析:將PR0PRn入口地址列在表格中,每一項占兩個單入口地址列在表格中,每一項占兩個單元,元,PRn在表中的偏移量為在表中的偏移量為2n,因此將,因此將R3的內(nèi)容乘的內(nèi)容乘2即得即得PRn在表中的偏移地址,從偏移地址在表中
23、的偏移地址,從偏移地址2n和和2n+1兩個單元分兩個單元分別取出別取出PRn的高八位地址和低八位地址送的高八位地址和低八位地址送DPTR寄存器,寄存器,用用JMP A+DPTR指令(指令(A先清零)即轉移到先清零)即轉移到PRn入口執(zhí)入口執(zhí)行。行。第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 ORG 0000HMOV A,R3 ;R3AADD A,ACC ;A*2MOV DPTR,#TABPUSH ACCMOVC A,A+DPTR ;取地址表中高字節(jié)取地址表中高字節(jié)MOV B,A ;暫存于暫存于BINC DPLPOP ACCMOVC A,A+DPTR ;取地址表中低字節(jié)
24、取地址表中低字節(jié)MOV DPL,AMOV DPH,B ;DPTR為表中地址為表中地址CLR A ;A=0JMP A+DPTR ;轉移轉移TAB:DW PR0,PR1,PR2,.,PRn ;轉移地址表轉移地址表END01100220.TABTAB+2DPH DPL例如例如 R3=1的操作的操作0220第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 2. 利用轉移指令表實現(xiàn)轉移利用轉移指令表實現(xiàn)轉移 例例4-8 設有五個按鍵設有五個按鍵 0、1、2、3、4其編碼分別為其編碼分別為3AH、47H、65H、70H、8BH,要求根據(jù)按下的鍵轉向不同的處,要求根據(jù)按下的鍵轉向不同的處
25、理程序,分別為理程序,分別為PR0 、PR1 、PR2、PR3、PR4,設按鍵,設按鍵的編碼已在的編碼已在B寄存器中,編出程序。寄存器中,編出程序。分析分析: 將鍵碼排成表,將鍵碼表中的值和將鍵碼排成表,將鍵碼表中的值和B中的鍵編碼比對,中的鍵編碼比對,記下在鍵碼表中和記下在鍵碼表中和B中的鍵編碼相等的序號,另安排一個轉移中的鍵編碼相等的序號,另安排一個轉移表表,安排安排AJMP指令指令(機器碼機器碼),因每條,因每條AJMP指令占二字節(jié),將指令占二字節(jié),將剛才記下的序號乘剛才記下的序號乘2即為轉移表的偏移地址,利用即為轉移表的偏移地址,利用JMP A+DPTR執(zhí)行表內(nèi)的執(zhí)行表內(nèi)的AJMP指令
26、,從而實現(xiàn)多分支轉移,指令,從而實現(xiàn)多分支轉移, 設設JPT的地址為的地址為001AH、PR0入口地址為入口地址為0110H、 ,參考,參考2.4.2節(jié),求節(jié),求AJMP PR0的機器碼的機器碼0000 0001 0001 0000 001 00001 0000 (2110h )a10a9a8a7a6a5a4a3a2a1a0 第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 AJMP PR0的機器碼為的機器碼為2110H, PR1入口地址為入口地址為0220H AJMP PR1的機器碼為的機器碼為4120H, 轉移指令表轉移指令表JPT的內(nèi)容如下所示。的內(nèi)容如下所示。設設B
27、=65H,鍵值為鍵值為2:2041 JPT+42002 JPT+21021 JPTAJMP PR0AJMP PR1AJMP PR2TAB3AHTAB+147HTAB+265HTAB+370H轉移指令表轉移指令表JPT鍵碼表鍵碼表TAB65HAB2AA=1A=2A=065H65H第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 ORG 0000H MOV DPTR,#TAB ;置鍵碼表首址置鍵碼表首址 MOV A,#0 ;表的起始位的偏移量為表的起始位的偏移量為0 NEXT: PUSH ACC MOVC A,A+DPTR ;A=鍵碼表的編碼鍵碼表的編碼 CJNE A,B,AG
28、AN ;將將B中值和鍵碼表的值比較中值和鍵碼表的值比較 POP ACC RL A ;如相等如相等,序號乘序號乘2得分支表內(nèi)偏移量得分支表內(nèi)偏移量 MOV DPTR,#JPT ;置分支表首址置分支表首址 JMP A+DPTR AGAN: POP ACC ;不相等比較下一個不相等比較下一個 INC A ;序號加序號加1 CJNE A,#5,NEXT SJMP $ ;鍵碼查完還沒有鍵碼查完還沒有B中按鍵編碼程序結束中按鍵編碼程序結束 JPT: AJMP PR0 ;分支轉移表分支轉移表 AJMP PR1 AJMP PR2 AJMP PR3 AJMP PR4 TAB: DB 3AH,47H,65H,70
29、H,8BH ;鍵碼表鍵碼表 END第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 當程序中的某些指令需要反復執(zhí)行多次時,采用循環(huán)程當程序中的某些指令需要反復執(zhí)行多次時,采用循環(huán)程序的方式,這樣會序的方式,這樣會使程序縮短,節(jié)省存儲單元(并不節(jié)省使程序縮短,節(jié)省存儲單元(并不節(jié)省執(zhí)行時間)。執(zhí)行時間)。 循環(huán)次數(shù)的控制,有兩種控制方式循環(huán)次數(shù)的控制,有兩種控制方式:第一種方法第一種方法 先判斷再處理即先判斷滿不滿足循環(huán)條件,如不滿足,先判斷再處理即先判斷滿不滿足循環(huán)條件,如不滿足,就不循環(huán),多以循環(huán)條件控制。就不循環(huán),多以循環(huán)條件控制。第二種方法第二種方法 先處理再判斷,即
30、循環(huán)執(zhí)行一遍后,下一輪還需不需要先處理再判斷,即循環(huán)執(zhí)行一遍后,下一輪還需不需要進行,多以計循環(huán)次數(shù)控制。循環(huán)可以有單重循環(huán)和多重進行,多以計循環(huán)次數(shù)控制。循環(huán)可以有單重循環(huán)和多重循環(huán),在多重循環(huán)中,內(nèi)外循環(huán)不能交叉,也不允許外循循環(huán),在多重循環(huán)中,內(nèi)外循環(huán)不能交叉,也不允許外循環(huán)跳入內(nèi)循環(huán)。下面通過幾個實例說明循環(huán)程序的設計方環(huán)跳入內(nèi)循環(huán)。下面通過幾個實例說明循環(huán)程序的設計方法。法。4.5 循循 環(huán)環(huán) 程程 序序 設設 計計第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 例例 4-9 設計一個延時設計一個延時10ms的延時子程序,已知單片機使用的的延時子程序,已知單片機
31、使用的晶振為晶振為12MHz。分析分析 : 延時時間與兩個因素有關延時時間與兩個因素有關:晶振頻率和循環(huán)次數(shù)。由于晶振頻率和循環(huán)次數(shù)。由于晶振采用晶振采用12MHz,一個機器周期是,一個機器周期是1s,用單循環(huán)可以實現(xiàn),用單循環(huán)可以實現(xiàn)1ms延時,外循環(huán)延時,外循環(huán)10次即可達次即可達10ms延時。延時。 內(nèi)循環(huán)如何實現(xiàn)內(nèi)循環(huán)如何實現(xiàn)1ms延時呢,程序中可先以未知數(shù)延時呢,程序中可先以未知數(shù)MT代代替,從附錄替,從附錄A查每條指令機器周期計算程序的執(zhí)行時間。查每條指令機器周期計算程序的執(zhí)行時間。 第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 ORG 0020H MOV
32、R0,#0AH ;外循環(huán);外循環(huán)10次次 DL2: MOV R1,#MT ;內(nèi)循環(huán);內(nèi)循環(huán)MT次次 DL1: NOP NOP ;空操作指令;空操作指令 DJNZ R1,DL1 DJNZ R0,DL2 RET內(nèi)循環(huán)內(nèi)循環(huán)DL1到指令到指令DJNZ R1,DL1的計算:的計算: (1+1+2)1SMT=1000S =TN MT=250=0FAH(TN+1+2) 101S =10030S=10.03mS若需要延時更長時間,可以采用多重循環(huán)。若需要延時更長時間,可以采用多重循環(huán)。內(nèi)內(nèi)外外第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 MCS-51單片機有著優(yōu)異的位邏輯功能單片機有
33、著優(yōu)異的位邏輯功能,可以方便的實現(xiàn)可以方便的實現(xiàn)各種復雜的邏輯運算各種復雜的邏輯運算.這種用軟件替代硬件的方法這種用軟件替代硬件的方法,可以大可以大大簡化甚至完全不用硬件大簡化甚至完全不用硬件,但比硬件要多花運算時間。但比硬件要多花運算時間。例例4-17 編寫一程序編寫一程序,以實現(xiàn)圖以實現(xiàn)圖4-4中的邏輯運算電路中的邏輯運算電路.4.6 位操作程序設計位操作程序設計第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 P1.311&1P1.1P2.2TF0IE125H(位)26H(位) 其中其中P1.1和和P2.2分別是端口線上的信息分別是端口線上的信息,TF0和和I
34、E1分別是分別是定時器定時溢出標志和外部中請求標志定時器定時溢出標志和外部中請求標志, 25H和和26H分別是兩個分別是兩個位地址位地址, 運算結果由端口線運算結果由端口線P1.3輸出。輸出。 圖圖3-4 硬件邏輯運算電路硬件邏輯運算電路第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 程序如下:程序如下:START:MOV C,P2.2 ORL C,TF0 ANL C,P1.1 MOV F0,C MOV C,IE1 ORL C,/25H ANL C,F0 ANL C,/26H MOV P1.3,C SJMP $第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程
35、序設計 子程序是構成單片機應用程序必不可少的部分,通過子程序是構成單片機應用程序必不可少的部分,通過ACALL和和LCALL兩條子程序調(diào)用指令兩條子程序調(diào)用指令,可以十分方便地,可以十分方便地用來調(diào)用任何地址處的子程序。用來調(diào)用任何地址處的子程序。 子程序節(jié)省占用的存儲單元,使程序簡短、清晰,善子程序節(jié)省占用的存儲單元,使程序簡短、清晰,善于靈活的使用子程序,是程序設計的重要技巧之一。于靈活的使用子程序,是程序設計的重要技巧之一。 子程序必須子程序必須以以RET指令結尾指令結尾. 在調(diào)用子程序時,有以下幾點應在調(diào)用子程序時,有以下幾點應注意注意:4.7 子程序子程序 當一段程序需多次應用當一段
36、程序需多次應用,或為多人應用時或為多人應用時,這段程序編為這段程序編為子子程序程序.第第4章章 MCS-51單片機匯編語言程序設計單片機匯編語言程序設計 1)保護現(xiàn)場保護現(xiàn)場。 如果在調(diào)用前主程序已經(jīng)使用了某些存儲單元或寄存器,在調(diào)用時,如果在調(diào)用前主程序已經(jīng)使用了某些存儲單元或寄存器,在調(diào)用時,這些寄存器和存儲單元又有其他用途,就應先把這些單元或寄存器這些寄存器和存儲單元又有其他用途,就應先把這些單元或寄存器中的內(nèi)容壓入堆棧保護,調(diào)用完后再從堆棧中彈出以便加以恢復。中的內(nèi)容壓入堆棧保護,調(diào)用完后再從堆棧中彈出以便加以恢復。如果有較多的寄存器要保護,應使主、子程序使用不同的寄存器組。如果有較多的寄存器要保護,應使主、子程序使用不同的寄存器組。 2)設置入口參數(shù)和出口參數(shù)。設置入口參數(shù)和出口參數(shù)。 用之前主程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計有效的團隊協(xié)作方式計劃
- 如何評估工作計劃的實施效果
- 關注員工心理健康的工作計劃
- 生態(tài)教育在小學中的實施計劃
- 兒童教育行業(yè)發(fā)展趨勢與機遇
- 第2課 輕松上路-規(guī)劃網(wǎng)站及創(chuàng)建站點 教學設計 -2023--2024學年清華大學版(2012)初中信息技術八年級下冊001
- 企業(yè)資源配置中大數(shù)據(jù)的重要性分析
- 第06講 氧氣的制法-新九年級化學暑假課(滬教版)(解析版)
- 4 古詩三首 教學設計-2024-2025學年語文三年級上冊統(tǒng)編版
- 以客戶為中心的實驗室管理優(yōu)化
- 京東集團員工手冊-京東
- 正確識記現(xiàn)代漢語常用字字形課件
- 化工機械安裝維修
- 讀后續(xù)寫微技巧情感描寫
- 2023年《中華人民共和國婦女權益保障法》知識競賽試題及答案
- 夏天、煙火和我的尸體
- AI工業(yè)信息化高價值、高普及、高認可之路
- 2023英語新課標義務教育英語課程標準
- 高考作文模擬寫作:“雷鋒精神的時代價值”導寫及范文
- 魯科版高中化學必修2全冊教案
- GB/T 9239.1-2006機械振動恒態(tài)(剛性)轉子平衡品質要求第1部分:規(guī)范與平衡允差的檢驗
評論
0/150
提交評論