單片機原理及其接口技術-第4_第1頁
單片機原理及其接口技術-第4_第2頁
單片機原理及其接口技術-第4_第3頁
單片機原理及其接口技術-第4_第4頁
單片機原理及其接口技術-第4_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 80C51第4章 80C51(1)機器語二進制、十六進制供機器直接執(zhí)行,不易為人們識別和讀寫(2)匯編語助記符指令和機器指令一一對應,代碼率高,執(zhí)行速度快,占用序器少能直接管理和控制硬件編程難。匯編語言是面向計算機的,編程員必須掌握硬缺乏通用(3)高級語缺點:需經過解釋(BASIC)或編譯目標程序1執(zhí)行速度慢匯編語言格:操作碼操作匯編語言格:操作碼;注釋(1)標號語句地址的標志符號,用來指明指令的地址。其它指令可該符號,作為地址或數據標號規(guī)定由18個ASCII字符組成,開頭必須是字一個標號是唯一的,即不能重復定符,可以有標號,也可以沒操作碼指令助記符。是匯編指令中唯一不能省略的部操作數

2、指令對應的操作對象,可能是數據,地址,主要注釋開頭用“;”,對指令進行注釋,便于程序閱讀2(5)分界符例子LJUMPMAIN;上電,轉向主程;T0中斷地; 轉向中斷服務程SP,;設堆棧指;設循環(huán)次MOV#01H ;設置T0工作于模式例子LJUMPMAIN;上電,轉向主程;T0中斷地; 轉向中斷服務程SP,;設堆棧指;設循環(huán)次MOV#01H ;設置T0工作于模式MOVMOVTH0,#3CH SETB TR0SETBSETB;裝入計數值低8;裝入計數值高8;啟動定時器;允許T0中;允許CPU中;等待中$3指令性語句:匯編指令性語句:匯編語句語【特點】:編譯后產生機器指示型語句:偽指格式(起始匯編)

3、偽指16位地功能:是規(guī)定該偽指令后面程序的匯編地址,即匯編后生成目標序存放的起始地址A,可以出現在程序的任何地方,當它出現時下一條指令4地址就可以由此從新定(2)END(結束匯編)偽指格式:標號(2)END(結束匯編)偽指格式:標號功能:指示源程序到此全部結注:一定放在程序末尾!匯編程序對END后語句不予理(3)EQU(賦值)偽指字符名稱格式數值或匯編功能:EQU右邊的“數據或匯編符”賦給左邊的“字符名稱例:MOVMOV注:“字符名稱”必須先賦值后使用,故該語句通常放在源程序的頭(4)DATA(數據地址賦值)偽指格式字符名表達功能:與EQU類注:可先使用后定義,放于程序開頭、結尾均可5(5)D

4、B(Define Byte,定義字(5)DB(Define Byte,定義字節(jié))偽指格式項或項功能:它通知匯編程序從當前ROM地址開始,保留一字節(jié)或字中的I舉例單經匯編后,則有6(6)DW(Define Word,定義字)(6)DW(Define Word,定義字)偽指格式16位數據項或項W11義一個地址舉例匯編后,則有注ABC;不合法,因超過2個字(2)常以DB定義數據,用DW定義地址7(7)DS(Define Storage,定空間)偽指標號(7)DS(Define Storage,定空間)偽指標號格式表達功能:從指定地址開始,保留由表達式指定的若干字節(jié)空間作為用空間例;從100AH開始存

5、放71H、11H、11H(8)BIT(位地址賦值)偽指格式:字符名位地功能: 把位地址賦于規(guī)定的字符名稱例84.2.1 4.2.1 94.2.2 目標程序的產生過程如下圖4.2.2 目標程序的產生過程如下圖人工匯人工匯人工直接把匯編語言源程序翻譯成機器碼,也叫人工“代真”無分支程序一次可完有分支程序需兩次才可完第一次匯編:查指令表,寫下指令碼和起始地第二次匯第二次匯編:確定第一次匯編過程中未確定的標號或地址偏移量值地址偏移量=目標地址-轉移指令起始地址-轉移指令字節(jié)機器匯用機器代替機器匯用機器代替人腦,自動把匯編語言源程序(助記符形式)翻譯成標代碼效率高,出錯率低“匯編程序”是一種系,也稱工。

6、4.3,4.4,4.3,4.4,匯編語言程序的基本結構形簡單程序(順序程序)設分支程序設循環(huán)程序設查表程序設子程序設運算程序設4.3.1 簡單程序:又稱直線程4.3.1 簡單程序:又稱直線程序、順序程序、無分支程序【特點】:程序執(zhí)行時一條接一條地按順序執(zhí)行指令,中間無任何例子:三字節(jié)無符號數相加,其中被加數(高、中、低字RAM的50H,51H和52H單元中,加數在RAM在53H,54H和55H單元中,要求把相加之和存放在50H,51H52H單元中,進位存放在位尋址區(qū)的00H位中注:多字節(jié)數加法,考慮是用ADD指令還是用ADDC指令R0#52H第一個加數.R1#55H第二個加數.A,A,R1 R

7、0,R0#52H第一個加數.R1#55H第二個加數.A,A,R1 R0,DEC 第一個加數地址減1,進入;第二個加數地址減1,進入A,AR1中間字節(jié).R0A ; 中間字節(jié)相加結果A,AR1高字節(jié),R0, A; 00HC進位送00H4.3.2 4.3.2 分支程序主要指令 判斷累加器A是否為零:JZ 比較條件轉移指令 減1條件轉移指令 判斷進位標志是否為1:JC, 位狀態(tài)條件轉移舉例分支結34。(1)舉例分支結34。(1)算當累加器A的為1時此數據為負數,否則此數為正(2)流程(3)程ACC.7,;如果為負數,轉B,35H;將35H中的數據存;轉B,34H ;將34H中的數據存舉例:多路分支結構

8、(散轉程序散轉舉例:多路分支結構(散轉程序散轉指K=n-例(AJM已知3HR128轉向n分轉向n-1分轉向1分轉向0分說明:此程序要求128個轉移目的地址(ROUT00 ROUT127說明:此程序要求128個轉移目的地址(ROUT00 ROUT127)例2(用多條CJNE指令):某溫度控制系統的溫例2(用多條CJNE指令):某溫度控制系統的溫度(Ta)在累加器A中,此外在54H單元存放控制溫度下限值(T54),在55H單元中存放控制溫度上限值(T55)55,程序轉向JW降溫處理若若54程序轉向SW,升溫處理如溫度在范圍T54 55,程序轉向FH返回主程序程序流程圖程:CJNE A, 55H,

9、;;55,轉向55返;CY=0,;轉降溫處理程序CJNE A, 54H, ;54,轉向54返; CY=1,表;程:CJNE A, 55H, ;;55,轉向55返;CY=0,;轉降溫處理程序CJNE A, 54H, ;54,轉向54返; CY=1,表;轉升溫處理程序; T54 ;程55,返回4.4.1 循4.4.1 循環(huán)程序設計是為了重復執(zhí)行一個程序段兩種編制方法例4.9:已RAM的BLOCK單元開始有一個無符號例4.9:已RAM的BLOCK單元開始有一個無符號數據塊,長在LEN單元。請編寫求數據塊中各數累加和并存入SUM單元程序法1:先判斷后處理跳轉LENA共累加LEN法2:先處理后判斷跳法2

10、:先處理后判斷跳轉LEN-次A共累加LEN4.4.2 4.4.2 查表程序設計(例3.6已講過查表,在此略4.5.1 子程序設子程序:4.5.1 子程序設子程序:指完成確定任務并能為其它程序反復調用的程序段采用的指令好處:使整個程序結構簡單,減少空間的占子程序是允許嵌套的,嵌套深度和堆棧區(qū)的大小有關編寫子程序時應注意以下問題(地址主程序調用子程序是通過安排在主程序中的調用指令實的,子程序返回主程序必須執(zhí)行安排在子程序末尾的一條RET回指令器和內存單元的內容,如果需要保護和恢復,必須在子程序27開(4)為了使所編子程序可以(4)為了使所編子程序可以放在64K內存的任意子域,并能被主序所調用,子程

11、代碼(5)子程序參數分必須使用相對轉移指令,以匯編生成浮和出口參數:可約定通過R0-R7,特殊能寄存器SFR,內存單元和堆棧等傳送和接:常見方法利用寄存器或片內RAM傳遞子程序參利用寄存器傳遞子程序參數的地利用堆棧傳遞子程序參利用位地址傳遞子程序參(6)提供足夠的調用信息,說明文檔要做好,如:子程序名、子程序功能參數和出口參數、子程序占用的硬件資源序中調用的其他子程序名例4.16(用累加器A傳遞參數):設MDA和MDB內有兩數a和b,寫求ca2+b2,并把c送入MDC的程序。設a,b皆為小于10的整數分析例4.16(用累加器A傳遞參數):設MDA和MDB內有兩數a和b,寫求ca2+b2,并把c

12、送入MDC的程序。設a,b皆為小于10的整數分析主程序通過累加器A傳送子程序參數a或b,子程序也通過加器A傳送出口參數a2或b2給主程序,子程序為求平方的通用子程DATA MOV;確立堆棧MOV;求參數a程DATA MOV;確立堆棧MOV;求參數a送MOVMOV;a2送;求參數b送ADD MOVMDCa2+b2送;存入;結;地址調;查平方;返$A,MOVCA,A+PC DB DB25,36,49,64,81 例4.17(用堆棧傳遞參數):在HEX單元中存有兩個十六進制數試通過例4.17(用堆棧傳遞參數):在HEX單元中存有兩個十六進制數試通過編程分別把它們轉換成ASCII碼存入ASC和ASC+1單元分析I主 執(zhí)行ACALL指令時堆棧變子程序將要執(zhí)RET指令時的堆主 執(zhí)行ACALL指令時堆棧變子程序將要執(zhí)RET指令時的堆子程序返回后堆棧出口參棧出口參棧參子程子程運算程序設MCS-51只運算程序設MCS-51只有單字節(jié)運算指令,實際常用多字節(jié)的運算,可寫成子序的形式供調用包括有符號、無符號的多字節(jié)加、減、乘、除運算的程序分析:兩個8位有符號數的和可能超過8位數的表示范圍,可先將展最進位丟失不R2、R3R2、R3分別存放兩個加數的擴展例4.21(無符號多字節(jié)乘法):

溫馨提示

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

評論

0/150

提交評論