第4章 MCS-51單片機的程序設計_第1頁
第4章 MCS-51單片機的程序設計_第2頁
第4章 MCS-51單片機的程序設計_第3頁
第4章 MCS-51單片機的程序設計_第4頁
第4章 MCS-51單片機的程序設計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章MCS-51單片機的程序設計

4.1程序設計的語言

4.2程序設計的步驟和方法

4.3偽指令

4.4程序設計基礎與舉例

4.1程序設計的語言

1.機器語言2.匯編語言3.高級語言4.3偽指令

1.ORG匯編起始偽指令格式:ORGaddr16功能:規(guī)定該指令后面的源程序編譯后所產生的目標程序存放的起始地址。例如:

ORG0003HINT0:LJMPCL_INT0這條偽指令規(guī)定它下面的第一條指令從地址0003H單元開始存放。標號INT0的值為0003H。2.END匯編結束偽指令格式:END功能:通知匯編程序結束編譯過程。編譯時遇到END指令,則結束所有編譯工作,其后的所有指令將不再進行編譯。3.DB定義字節(jié)偽指令格式:[標號:]DB8位字節(jié)數(shù)據表功能:把表中的數(shù)據存入程序存儲器從標號開始的連續(xù)地址單元中。例如:

ORG1000HTAB1:DB10H,7FHTAB2:DB“ABC” ;將字符串中的字符以ASCII碼的形式存放在TAB2地址開始的連續(xù)的ROM單元中。編譯后:(2000H)=10H

(2001H)=7FH

(2002H)=41H

(2003H)=42H

(2004H)=43H4.DW定義字偽指令格式:[標號:]DW16位字數(shù)據表功能:從標號指定的地址單元開始,在程序存儲器中定義字數(shù)據。例如:ORG1000HTAB: DW1234H,0CH編譯后:(1000H)=12H

(1001H)=34H

(1002H)=00H

(1003H)=0CH5.EQU賦值偽指令格式:字符名稱EQU表達式功能:將EQU右邊的表達式的值或特定的某個匯編符號賦給或定義為一個指定的符號名。例如: COUNT EQU34HADDE EQU18HMOVA,#COUNT ;34H→AADDA,ADDE ;(A)+(18H)→A6.BIT位地址符號賦值偽指令格式:字符名BIT位地址功能:將位地址賦予字符名。

例如:M1BIT01HM2BITP1.04.4程序設計基礎與舉例

4.4.1順序程序

【例4-1】將外部數(shù)據存儲器1000H和1001H單元的內容相交換。

地址1000H→DPTR(1000H)→A(A)→R7地址1001H→DPTR(1001H)→A(A)←→(R7)(A)→1001H地址1000H→DPTR(A)→1000H(R7)→A開始結束圖4-1例4-1流程圖ORG0100HMOVDPTR,#1000HMOVXA,@DPTRMOVR7,AINCDPTRMOVXAXCHA,R7MOVX@DPTR,ADECDPLMOVA,R7MOVX@DPTR,ASJMP$END【例4-2】設變量x放在片內RAM的30H單元中,求其平方值放入31H單元中,x范圍為0~5。ORG0100HMOVDPTR,#TABMOVA,30HMOVCAMOV31H,ASJMP$TAB:DB00H,01H,04HDB09H,16H,25HEND【例4-3】設寄存器R7中存放著一個8位無符號二進制數(shù),試編程將其轉化為壓縮BCD碼,將百位存放到R5中,十位和個位存放到R6中。ORG0100HMOVA,R7MOVB,#100DIVABMOVR5,AMOVA,BMOVB,#10DIVABSWAPAORLA,B ;合并十位和個位MOVR6,ASJMP$END【例4-4】將R6、R7構成的雙字節(jié)無符號數(shù)乘以2放回,假設結果仍然為雙字節(jié)數(shù)。ORG0100HCLRCMOVA,R7RLCAMOVR7,AMOVA,R6RLCAMOVR6,ASJMP$END4.4.2分支程序

【例4-5】設在內部RAM30H單元存放著一個有符號數(shù),試編程求其補碼,并存放回原單元。ORG0100HMOVA,30HJNBACC.7,L1CPLA ;負數(shù),取反加1ADDA,#1ORLA,#80H;符號位置1MOV30H,AL1:SJMP$END

【例4-6】x、y均為無符號數(shù),設x存放在內部RAM30H單元,y存放在內部RAM31H單元,試編程求解: ORG0100H MOVA,30H CJNEA,#5,L1 SJMPL3 ;x=5L1: JNCL2 ADDA,#1 ;x<5 SJMPL3L2: SUBBA,#1 ;x>5L3: MOV31H,A SJMP$ END【例4-7】根據R7的內容轉向相應的處理程序。設R7的內容為處理程序的序號。ORG0100HMOVA,R7ADDA,R7ADDA,R7 ;(A)×3→AMOVDPTR,#TABJMP@A+DPTR ;散轉TAB:LJMPL1;根據(R7),轉向不同的程序段LJMPL2LJMPL3┆4.4.3循環(huán)程序

【例4-8】設計一個1ms的延時程序,已知單片機晶振頻率為6MHz。ORG0100HMOVR7,#250;循環(huán)次數(shù)DJNZR7,$;循環(huán)體及循環(huán)條件判斷SJMP$END【例4-9】試編程,將外部RAM1000H單元開始的20個字節(jié)數(shù)據傳送到片內RAM30H開始的單元。ORG0100HMOVR7,#20MOVDPTR,#1000HMOVR0,#30HL1:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,L1SJMP$END【例4-10】把片內RAM中地址30H~39H中的10個無符號數(shù),按從小到大的順序排列。ORG0100HL3:CLR7FH ;清交換標志MOVR0,#30HMOVR1,#31HMOVR7,#9L1:MOVA,@R0CLRC ;兩數(shù)比較SUBBA,@R1J

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論