05章s12匯編程序設計與實例_第1頁
05章s12匯編程序設計與實例_第2頁
05章s12匯編程序設計與實例_第3頁
05章s12匯編程序設計與實例_第4頁
05章s12匯編程序設計與實例_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、重慶大學通信工程學院 任勇第5章 S12匯編程序設計與實例5.1 匯編語言程序基礎程序:完成特定任務的指令的集合,程序設計語言:機器語言(二進制指令代碼,可直接執行) 匯編語言(特定助記符指令語句,須匯編) 高級語言(通用高級語句,須編譯)單片機應用系統的程序,多用匯編語言編制(*.asm文件)或C 一個匯編程序語句一條單片機指令 多個匯編語言語句匯編語言程序(源代碼)注:程序需要特定的編譯程序進行編譯,生成二進制機器碼 重慶大學通信工程學院 任勇匯編語言指令格式 標號: 操作碼 操作數1, 操作數2 ;注釋標號-該指令的符號地址,標定程序入口或轉移位置 注:標號必須以字母開始,分大小寫操作碼

2、-助記符,指令所實現的操作功能 注:不分大小寫;前面無標號時,至少應保留一個空格操作數-參加操作的數據對象,常數、符號或表達式 注:寄存器尋址已歸納到隱含尋址中,當操作數部分出現寄存器時,一定是寄存器間址;分大小寫注釋-為方便閱讀、修改而加的注釋,可有可無 注:以“;”開始,本行之后的內容不再編譯重慶大學通信工程學院 任勇數據的表示方法 Freescale規定,加前綴$ 十六進制% 二進制 八進制 ASCII無 十進制# 立即數的標記如:LDAA #$32 ;立即數 LDAA $32 ;地址重慶大學通信工程學院 任勇4.2 匯編程序偽指令 匯編程序使用的輔助性語句,不生成機器碼1、起始地址偽指

3、令 ORG ORG $0008HSTART: LDAA #$FF2、賦值偽指令 EQUPORTB EQU $0001BIT0 EQU %00000001 BSET PORTB, BIT0 ;等價于 BSET $0001, %00000001重慶大學通信工程學院 任勇3、常量存儲 (1)字節常量偽指令 FCB ( DC.B ) ORG $0200 TABLE: FCB $13,18,N1+6,21 (2)雙字節常量偽指令 FDB ( DC.W ) ORG $1000 LIST: FDB $0519, $2000 (3)字符量偽指令 FCC ORG $2000START: FCC ABCD注:定界

4、符可以是 、/、”,建議使用 重慶大學通信工程學院 任勇5.3 匯編語言程序設計實例5.3.1 常用程序的設計1. 循環控制程序【例】2個8字節數求和,結果保存在被加數所在地址中。 ;*ADD8: LDX #$0B01 LEAY 8,X LDAB #8 CLC LOOP: LDAA X ADCA 1,Y+ STAA 1,X+ DBNE B,LOOP $0B01.$0B09被加數0字節被加數1字節 加數0字節加數1字節RAM區重慶大學通信工程學院 任勇2. 延時子程序硬件延時-內部定時器實現,精確,不占CPU軟件延時-循環執行指令,簡單方便,定時精度低,占用CPU;* JSR DELAY1 ;4

5、;* TCOUNT EQU 3996 ;無 DELAY1: PSHX ;2 LDX #TCOUNT;3DLOOP: DEX ;1 BNE DLOOP ;3/1 PULX ;3 RTS ;5 CPU執行時間: T = N x TB T-總執行時間 , N-總時鐘周期數, TB-總線時鐘周期(例如:晶振頻率為16MHz,則總線時鐘頻率為8MHz,TB = 1/8M=125ns )【例】2ms延時。(晶振頻率為16MHz) 則需N=T / TB = 2ms / 125ns = 16000程序運行:N=4+2+3+(1+3)(TCOUNT-1)+(1+1)+3+5 故:TCOUNT=3996.2539

6、96重慶大學通信工程學院 任勇【又例】雙重循環的100ms延時。忽略配合指令的執行時間,粗略估算:內循環=200 x (1+1+3)T =1000T總時間=100 x1000T =100000T2MHz晶振時,總線頻率=1MHz T=1us 子程序延時時間即100ms;/;子程序DELAY:利用寄存器X、Y,; 執行兩重循環實現延時。;/DELAY: PSHX PSHY LDX #100DELAY1: LDY #200DELAY2: NOP ;1T NOP ;1T DBNE Y,DELAY2 ;3T DBNE X,DELAY1 PULY PULX RTS 重慶大學通信工程學院 任勇3. 數據查

7、表程序【例】數碼管顯示按鍵數值。;*COUNT1 EQU $2000 DELAY: CLC LDAA #$00 STAA COUNTER1 LDY #TABLE2LP3: LDAB Y INY LDAA PORTA SBA BEQ DISPLAY1 INC COUNTER1 BRA LP3DISPLAY1: LDAA #$00 STAA PTT LDAB COUNTER1COUNTER1: LDY #TABLE3 LDAA B,Y STAA PTP RTS TABLE2: FCB $ee,$de,$be,$7e,$ed,$dd,$bd,$7d,$eb,$db,$bb,$7b,$e7,$d7,$

8、b7,$77 ;4x4行列鍵值,預定義的,16個可能的讀回值TABLE3: FCB $f9,$a4,$b0,$99,$92,$82,$f8,$80,$90,$c0,$88,$83,$c6,$a1,$86,$8e;共陽字符編碼: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B, C, D, E, F 重慶大學通信工程學院 任勇【例】將A中的兩個4位十六進制數轉換為ASCII碼,分別存入$1080、$1081中。(09的ASCII碼:$30$39,AF:$41$46);*;子程序TRANS:十六進制數轉換為ASCII碼;入口參數:(A)=十六進制數,高4位為0;出口參數:(B

9、)=ASCII碼;*TRANS: PSHX ;壓棧 LDX #TABLE ;置表地址 LDAB A,X ;查表,(X+A)B PULX ; 出棧 RTS ; 返回TABLE: FCC ABCDEF;主程序段* ORG $8000HEXA: TFR A,X ANDA #$0F JSR TRANS STAB $1080 TFR X,A LSRA LSRA LSRA LSRA JSR TRANS STAB $1081 重慶大學通信工程學院 任勇4. 分支跳轉程序例54 鍵盤掃描程序LP:JSRDELAYLDAAPORTASUBA#$0FBNELOOPBRALPLOOP: LDX#TABLE1LP1:

10、 LDABXINC XSTABPORTALDAAPORTASBABNE KEYVALUEJSRLP1TABLE1:DC.B$7F,$BF,$DF,$EF本段程序的錯誤和不足: 1、高4位未作處理 2、應以RTS方式返回 3、不應有新的出口 4、JSR應為BRA 5、無容錯能力重慶大學通信工程學院 任勇【例】比較RAM區內兩相鄰單元中無符號數的大小,按小數在前、大數在后重新存放(首址在$2000)。若等則Y寄存器加1。;* LDX #$2000 ;首地址 CLC ;C清零 LDY #0 ;Y清零BEGIN: LDAA 0,X ;(0+X)A LDAB 1,X ;(1+X)B CBA ;(A)-(

11、B) BCS DONE ;減有借位(前小后大),無需調整,跳轉 BEQ FLAG ;相等,跳轉 STAA 1,X ;A(1+X) STAB 0,X ;B(0+X) BRA DONE ;調整完畢,跳轉FLAG: INY ;Y+1Y DONE: BRA * ;結束 5.3.2 S12教學實驗系統實例 與接口相關的實例,在以后章節學習重慶大學通信工程學院 任勇Freescale MCU編程幾個提示-1、程序是被編譯成二進制碼放在程序存儲器(FLASH)的,通過PC遞加,自動逐條執行;PC值指向的下一條將要執行的指令。2、程序處理主要是通過訪問寄存器、數據存儲器(RAM)的各單元實現所需功能要求的,而CPU寄存器(A,B,X,Y,CCR)是經常要用到的工作寄存器。3、理解MCU的存儲器空間分配圖,寄存器、RAM、FLASH是統一編址在64K地址空間的,每單元8位;訪問寄存器使用其功能符號形式,訪問RAM區可用16位地址形式($xxxx)。重慶大學通信工程學院 任勇4、主程序通常是:初始化以后,循環等待或原地等待。 子程序用標號定義開始,用RTS結束;主程序用BSR或JSR調用之; 中斷服務子程序也用標號定義開始,結束則用RTI;需要聲明中斷向量對應的程序入口,其執行是當中斷發生時自動被執行的。5、適當偽指令:輔助編程,便于修改、理解

溫馨提示

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

評論

0/150

提交評論