版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第3 指令系統(tǒng)與匯編語(yǔ)言程序設(shè)計(jì)指令系統(tǒng)與匯編語(yǔ)言程序設(shè)計(jì)兼容以前的兼容以前的S12 CPU 0 7 15 0 0 16 位 累 加 器 D 變 址 寄 存 器 X 變 址 寄 存 器 Y 堆 棧 指 針 SP 程 序 計(jì) 數(shù) 器 PC 條 件 碼 寄 存 器 CCR 進(jìn) 位 /借 位 標(biāo) 志 C 溢 出 標(biāo) 志 V 零 標(biāo) 志 Z 負(fù) 標(biāo) 志 N 中 斷 屏 蔽 位 I 半 進(jìn) 位 標(biāo) 志 H 非 屏 蔽 中 斷 允 許 位 X 停 止 (STOP)模 式 禁 止 位 S C V N Z I H X S 8 位 累 加 器 A 8 位 累 加 器 B 8 位 累 加 器 A、 B 15 0
2、 15 0 0 15 0 15 7 7 15 15 15 3.1 CPU內(nèi)部寄存器內(nèi)部寄存器 區(qū)別于區(qū)別于I/O寄存器寄存器;6個(gè)個(gè)16bit:D(A+B),X,Y,SP,PC,CCR 3.2 尋址方式尋址方式 概念概念-CPU執(zhí)行指令時(shí)確定操作數(shù)所在單元地址的方式。執(zhí)行指令時(shí)確定操作數(shù)所在單元地址的方式。 操作數(shù)來自:寄存器、指令代碼、存儲(chǔ)單元(都有地址)操作數(shù)來自:寄存器、指令代碼、存儲(chǔ)單元(都有地址) S12(X)有有9大種尋址方式:大種尋址方式:(1)隱含尋址)隱含尋址(INH) 如如 ROLA (循環(huán)左移,操作數(shù)(循環(huán)左移,操作數(shù)A隱含在指令中)隱含在指令中) (2)立即數(shù)尋址)立即
3、數(shù)尋址(IMM) 如如 LDAA #$FF (將十六進(jìn)制數(shù)(將十六進(jìn)制數(shù)FF調(diào)入調(diào)入A中,中,#表示)表示) (3)直接尋址)直接尋址(DIR) 如如 LDAA $55 (8位地址)位地址)(4)擴(kuò)展尋址)擴(kuò)展尋址(EXT) 如如 LDAA $200A (16位地址)位地址)(5)相對(duì)尋址)相對(duì)尋址(REL) SHIFT: LDAA #$55 BRA SHIFT (相對(duì)地址跳轉(zhuǎn))(相對(duì)地址跳轉(zhuǎn)) 3.3 指令概覽指令概覽 分類分類(表表3-1):數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令算數(shù)運(yùn)算指令算數(shù)運(yùn)算指令邏輯指令邏輯指令程序控制指令程序控制指令中斷指令中斷指令CPU控制指令控制指令其它指令其它指令注:注:
4、1、瀏覽書中指令內(nèi)容、瀏覽書中指令內(nèi)容2、以后編程時(shí)再查閱、體會(huì)、以后編程時(shí)再查閱、體會(huì)助記方法:英語(yǔ)含義,如:助記方法:英語(yǔ)含義,如:CLR = CleaRLDAA = LoaD Accumulator ASTAB = STore Accumulator BTAB = Transfer A to B MOVB =Move Byte BEQ =Branch EQual zero 3.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令1、寄存器加載指令、寄存器加載指令: LoaD (注:影響標(biāo)志位)(注:影響標(biāo)志位) LDAA #$1F LDAB $40B0 LDD 2,X LDY 2,SP+助記符功能操作L
5、DAA將數(shù)據(jù)載入寄存器A(M)ALDAB將數(shù)據(jù)載入寄存器B(M)BLDD將數(shù)據(jù)載入寄存器D(M:M1)(A:B)LDS將數(shù)據(jù)載入寄存器SP(M:M1)SPH:SPLLDX將數(shù)據(jù)載入變址寄存器X(M:M1)XH:XLLDY將數(shù)據(jù)載入變址寄存器Y(M:M1)YH:YLSTAA $3FSTD -$2000,PCSTY 2,+SP助記符功能操作STAA將寄存器A中內(nèi)容送入內(nèi)存單元(A)MSTAB將寄存器B中內(nèi)容送人內(nèi)存單元(B)MSTD將寄存器D中內(nèi)容送入內(nèi)存單元(A)M, (B)M1STS將堆棧SP中內(nèi)容送入內(nèi)存單元(SPH:SPL)M:M1STX將變址寄存器x中內(nèi)容送人內(nèi)存單元(XH:XL)M:M
6、1STY將變址寄存器Y中內(nèi)容送入內(nèi)存單元(YH:YL)M:M1注意:注意:TAB、TBA影響標(biāo)志位,影響標(biāo)志位,TFR不不影響標(biāo)志位;影響標(biāo)志位;實(shí)際只有上述實(shí)際只有上述3條指令,其余寫法是為條指令,其余寫法是為了兼容老版本了兼容老版本MCU8位到位到16位:通過符號(hào)位擴(kuò)展后傳送位:通過符號(hào)位擴(kuò)展后傳送16位到位到8位:舍棄高位:舍棄高8位,只傳送低位,只傳送低8位位例:TAB TFR A, Y TAP ( 相當(dāng)于 TFR A, CCR)助記符功能操作TAB將寄存器A中內(nèi)容送入寄存器B(A)BTBA將寄存器B中內(nèi)容送人寄存器A(B)ATFR寄存器之間的數(shù)據(jù)傳送(A、B、CCR、D、X、Y、SP
7、)A、B、CCR、D、X、Y、SPTSX將寄存器SP中內(nèi)容送入寄存器X(SP)XTSY將寄存器SP中內(nèi)容送入寄存器Y(SP)YTXS 將寄存器X中內(nèi)容送入寄存器SP(X)SPTYS將寄存器Y中內(nèi)容送入寄存器SP(Y)SPTPA將寄存器CCR中內(nèi)容送人寄存器A(CCR)ATAP將寄存器A中內(nèi)容送人寄存器CCR(A)CCR建議:平常使用時(shí),不應(yīng)使用位數(shù)不匹配的方式進(jìn)行數(shù)據(jù)交換。建議:平常使用時(shí),不應(yīng)使用位數(shù)不匹配的方式進(jìn)行數(shù)據(jù)交換。特點(diǎn):特點(diǎn):1、不影響標(biāo)志位、不影響標(biāo)志位2、允許地址與地址間傳送、允許地址與地址間傳送3、傳送方向是、傳送方向是 (例(例 MOVB $1000, $2000 )4、
8、16位數(shù)據(jù)結(jié)構(gòu)是高位在前,低位在后位數(shù)據(jù)結(jié)構(gòu)是高位在前,低位在后 ( 例:例: MOVW #$100A, $1100 ) MOVB 1,X,2,Y特點(diǎn):特點(diǎn):1、各寄存器都可以入棧、出棧、各寄存器都可以入棧、出棧2、可以做、可以做8位、位、16位操作位操作3、入棧時(shí)、入棧時(shí)SP-1(2),出棧時(shí),出棧時(shí)SP+1(2) LEAX $100A, Y注:不影響標(biāo)志位注:不影響標(biāo)志位1、加、減法指令:、加、減法指令:ADD、SUBtract說明:說明:ABA Add B to A ( A + B ) SBA Subtract B from A ( A B ) 特點(diǎn):特點(diǎn): 1、CMP 作減法,結(jié)果不回
9、傳,只影響標(biāo)志位作減法,結(jié)果不回傳,只影響標(biāo)志位 2、TST 固定減固定減0,結(jié)果不回傳,只影響標(biāo)志位,結(jié)果不回傳,只影響標(biāo)志位 特點(diǎn):特點(diǎn): 1、用、用0去減該值去減該值 2、不對(duì)符號(hào)位進(jìn)行判斷、不對(duì)符號(hào)位進(jìn)行判斷特點(diǎn):特點(diǎn): 1、是在加法操作之后進(jìn)行、是在加法操作之后進(jìn)行 2、是對(duì)、是對(duì)A進(jìn)行壓縮進(jìn)行壓縮BCD碼碼加法調(diào)整加法調(diào)整 3、只有這一條調(diào)整指令、只有這一條調(diào)整指令 例:例: LDD #$3275 ADDB #$69 EXG A,B DAA EXG A,B ADCA #$26 DAA 結(jié)果:結(jié)果:D = ? $5944說明:說明:1、根據(jù)最高位的值將、根據(jù)最高位的值將8位擴(kuò)展為位擴(kuò)
10、展為16位位 2、源:、源:A,B,CCR 目的:目的:D,X,Y,SP例:例:SEX A, X 1、基本邏輯運(yùn)算指令、基本邏輯運(yùn)算指令 BCLR相當(dāng)與相當(dāng)與0的位與操作的位與操作 ( BCLR $20, #$0F ) BSET相當(dāng)與相當(dāng)與1的位或操作的位或操作 ( BSET $20, #$0F ) 注意該類指令與注意該類指令與TST、AND的區(qū)別的區(qū)別- 指定的指定的1位或幾位,非整體;位或幾位,非整體;BIT影響標(biāo)志位,但不修改操作數(shù)影響標(biāo)志位,但不修改操作數(shù) LSL Logic Shift Left ASR Arithmetic Shift Right ROR ROtate Right
11、特點(diǎn):特點(diǎn):1、ASR補(bǔ)最高位,其余補(bǔ)補(bǔ)最高位,其余補(bǔ)0 2、移出去的進(jìn)、移出去的進(jìn)C標(biāo)志標(biāo)志1、無條件轉(zhuǎn)移指令、無條件轉(zhuǎn)移指令 JMP (Jump),可以在,可以在64K范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)2、短分支跳轉(zhuǎn)指令、短分支跳轉(zhuǎn)指令 是在當(dāng)前是在當(dāng)前PC的值加上一個(gè)的值加上一個(gè)8位帶符號(hào)數(shù)的偏移量,即位帶符號(hào)數(shù)的偏移量,即跳轉(zhuǎn)范圍:跳轉(zhuǎn)范圍:128 127127BRA BRanch AlwaysBRN BRanch NeverBCC Branch if Carry ClearBCS Branch if Carry SetBEQ Branch if EQual BMI Branch if MinusB
12、PL Branch if PlusBHI Branch if HigherBHS Branch if Higher or SameBLO Branch if LowerBGT Branch if Greater Than 注意:注意:1、只作檢測(cè),滿足條件轉(zhuǎn)移,不影響標(biāo)志位、只作檢測(cè),滿足條件轉(zhuǎn)移,不影響標(biāo)志位2、結(jié)果不回傳、結(jié)果不回傳例:例:BRCLR $20, #$81, LP1 BRSET $20, #$80, LP2特點(diǎn):特點(diǎn):1、是在、是在當(dāng)前當(dāng)前PCPC的值加上一個(gè)的值加上一個(gè)1616位帶符號(hào)數(shù)的偏移量,即跳轉(zhuǎn)范圍:位帶符號(hào)數(shù)的偏移量,即跳轉(zhuǎn)范圍:32768 32767 2 2、與
13、、與JMPJMP指令實(shí)現(xiàn)的方法稍有不同,只能跳轉(zhuǎn)指令實(shí)現(xiàn)的方法稍有不同,只能跳轉(zhuǎn)32K32K距離。距離。 3 3、與短跳轉(zhuǎn)指令完全類似、與短跳轉(zhuǎn)指令完全類似特點(diǎn):特點(diǎn):1、不影響、不依賴標(biāo)志位、不影響、不依賴標(biāo)志位 2、轉(zhuǎn)移范圍是、轉(zhuǎn)移范圍是 256 255ADD: LDX #$0B00 LEAY 4, X LDAB #4 CLCLOOP: LDAA X ADCA 1,Y+ STAA 1,X+ DBNE B, LOOP特點(diǎn):特點(diǎn): 1、BSR 調(diào)用范圍為調(diào)用范圍為128127,子程序以,子程序以RTS指令返回指令返回 2、JSR調(diào)用范圍為調(diào)用范圍為3276832767,支持多種尋址方式,直接尋
14、址方式,支持多種尋址方式,直接尋址方式必須在必須在$0000$00FF內(nèi)內(nèi) (例例: JSR $50 ),子程序以,子程序以RTS指令返回指令返回 3、CALL 用于調(diào)用用于調(diào)用64K以外的子程序,子程序以以外的子程序,子程序以RTC指令返回指令返回特點(diǎn):特點(diǎn):1、進(jìn)入中斷時(shí),硬件自動(dòng)保護(hù)現(xiàn)場(chǎng),、進(jìn)入中斷時(shí),硬件自動(dòng)保護(hù)現(xiàn)場(chǎng),RTI指指令將恢復(fù)現(xiàn)場(chǎng)及斷點(diǎn)令將恢復(fù)現(xiàn)場(chǎng)及斷點(diǎn)2、SWI指令不受指令不受I、X的限制,且執(zhí)行時(shí)會(huì)的限制,且執(zhí)行時(shí)會(huì)自動(dòng)將自動(dòng)將I置置1(即自動(dòng)關(guān)閉可屏蔽中斷),(即自動(dòng)關(guān)閉可屏蔽中斷),中斷向量表入口地址中斷向量表入口地址$FFF6-$FFF73、各硬件中斷有固定的入口地
15、址表,中斷、各硬件中斷有固定的入口地址表,中斷服務(wù)程序需用服務(wù)程序需用RTI指令返回指令返回 特點(diǎn):特點(diǎn):1、STOP進(jìn)入偽停機(jī)模式,時(shí)鐘被關(guān)閉,功耗最低;當(dāng)有中進(jìn)入偽停機(jī)模式,時(shí)鐘被關(guān)閉,功耗最低;當(dāng)有中斷或復(fù)位時(shí)被喚醒斷或復(fù)位時(shí)被喚醒2、WAI 進(jìn)入等待模式,時(shí)鐘仍在工作,當(dāng)有中斷或復(fù)位時(shí)進(jìn)入等待模式,時(shí)鐘仍在工作,當(dāng)有中斷或復(fù)位時(shí)被喚醒,喚醒速度快被喚醒,喚醒速度快3.3.7 其它指令其它指令 S12X還提供了高級(jí)函數(shù)指令和模糊運(yùn)算指令,主要有:小值、還提供了高級(jí)函數(shù)指令和模糊運(yùn)算指令,主要有:小值、大值、插值、乘積累加等大值、插值、乘積累加等重要的其它指令重要的其它指令-程序狀態(tài)寄存器
16、程序狀態(tài)寄存器指令指令 特殊的數(shù)據(jù)訪問指令,通常被用來改變程序狀態(tài)寄存器特殊的數(shù)據(jù)訪問指令,通常被用來改變程序狀態(tài)寄存器CCR 指令指令操作操作尋址方式尋址方式ANDCCCLCCLICLVORCCPSHCPULCSECSEISEV(CCR)(M)= CCRC=0I=0V=0(CCR)(M) CCR(SP)1=SP; (CCR) M(SP)M(SP) =CCR; (SP)+1SPC=1I=1V=1IMMIMMIMMIMMIMMINHINHIMMIMMIMM3.4 使用匯編語(yǔ)言的程序設(shè)計(jì)使用匯編語(yǔ)言的程序設(shè)計(jì)程序:完成特定任務(wù)的指令的集合程序:完成特定任務(wù)的指令的集合程序設(shè)計(jì)語(yǔ)言:機(jī)器語(yǔ)言(二進(jìn)制
17、指令代碼,可直接執(zhí)行)程序設(shè)計(jì)語(yǔ)言:機(jī)器語(yǔ)言(二進(jìn)制指令代碼,可直接執(zhí)行) 匯編語(yǔ)言(特定助記符指令語(yǔ)句,須編譯)匯編語(yǔ)言(特定助記符指令語(yǔ)句,須編譯) 高級(jí)語(yǔ)言(通用高級(jí)語(yǔ)句,須編譯)高級(jí)語(yǔ)言(通用高級(jí)語(yǔ)句,須編譯)單片機(jī)應(yīng)用系統(tǒng)的程序,多用匯編語(yǔ)言編制(單片機(jī)應(yīng)用系統(tǒng)的程序,多用匯編語(yǔ)言編制(*.asm文件)或文件)或C 一個(gè)匯編程序語(yǔ)句一個(gè)匯編程序語(yǔ)句一條單片機(jī)指令一條單片機(jī)指令 多個(gè)匯編語(yǔ)言語(yǔ)句多個(gè)匯編語(yǔ)言語(yǔ)句匯編語(yǔ)言程序(源代碼)匯編語(yǔ)言程序(源代碼)注:程序需要特定的編譯程序進(jìn)行編譯,生成二進(jìn)制機(jī)器碼注:程序需要特定的編譯程序進(jìn)行編譯,生成二進(jìn)制機(jī)器碼 匯編語(yǔ)言:匯編語(yǔ)言: 面向面
18、向MCU硬件,不易移植,但高效、代碼量小,是學(xué)習(xí)基礎(chǔ)硬件,不易移植,但高效、代碼量小,是學(xué)習(xí)基礎(chǔ) l 匯編語(yǔ)言指令格式匯編語(yǔ)言指令格式 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù)1 ,操作數(shù)操作數(shù)2 ;注釋注釋標(biāo)號(hào)標(biāo)號(hào)-該指令的符號(hào)地址,標(biāo)定程序入口或轉(zhuǎn)移位置該指令的符號(hào)地址,標(biāo)定程序入口或轉(zhuǎn)移位置 注:標(biāo)號(hào)必須以字母開始,分大小寫注:標(biāo)號(hào)必須以字母開始,分大小寫操作碼操作碼-助記符,指令所實(shí)現(xiàn)的操作功能助記符,指令所實(shí)現(xiàn)的操作功能 注:不分大小寫;前面無標(biāo)號(hào)時(shí),至少應(yīng)保留一個(gè)空格;必注:不分大小寫;前面無標(biāo)號(hào)時(shí),至少應(yīng)保留一個(gè)空格;必有有操作數(shù)操作數(shù)-參加操作的數(shù)據(jù)對(duì)象,地址、常數(shù)或表達(dá)式參加操
19、作的數(shù)據(jù)對(duì)象,地址、常數(shù)或表達(dá)式 注:寄存器尋址已歸納到隱含尋址中,當(dāng)操作數(shù)部分出現(xiàn)寄注:寄存器尋址已歸納到隱含尋址中,當(dāng)操作數(shù)部分出現(xiàn)寄存器時(shí),通常是寄存器變址尋址;分大小寫存器時(shí),通常是寄存器變址尋址;分大小寫注釋注釋-為方便閱讀、修改而加的注釋;可有可無為方便閱讀、修改而加的注釋;可有可無 注:以注:以“;”開始,本行其后的內(nèi)容不再編譯開始,本行其后的內(nèi)容不再編譯注意:必須在英文輸入法或中文半角字符模式下書寫指令,全角字符注意:必須在英文輸入法或中文半角字符模式下書寫指令,全角字符 錯(cuò)錯(cuò)注意:指令必須在半角字符模式下書寫,全角字符不能被匯編語(yǔ)言程序識(shí)別。還要注意程序書寫的規(guī)范和風(fēng)格,如各
20、部分最好按列對(duì)齊、統(tǒng)一用大寫字母等,以便閱讀和維護(hù)。下面為一個(gè)飛思卡爾匯編語(yǔ)言程序?qū)嵗篖1: LDAA #$FF ;賦初值 STAA DDRB ;設(shè)置B口方向?yàn)檩敵?LDAA #$FE ;賦初值SHIFT:STAA PORTB ;B口循環(huán)輸出;前面須有標(biāo)號(hào),表示循環(huán)入口地址 BSR DELAY ;調(diào)用延時(shí)子程序 ROLA ;隱含尋址,不需要操作數(shù) BRA SHIFT ;循環(huán);- ;該行僅有注釋,可以是下面子程序的說明DELAY: ;DELAY子程序l 常數(shù)數(shù)據(jù)的表示方法常數(shù)數(shù)據(jù)的表示方法 Freescale規(guī)定,加前綴規(guī)定,加前綴$ 十六進(jìn)制十六進(jìn)制% 二進(jìn)制二進(jìn)制 八進(jìn)制八進(jìn)制 ASCII
21、無無 十進(jìn)制十進(jìn)制# 立即數(shù)的標(biāo)記立即數(shù)的標(biāo)記如:如:LDAA #$32 ;立即數(shù)立即數(shù) LDAA $32 ;地址地址l 匯編程序偽指令匯編程序偽指令 匯編程序使用的輔助性語(yǔ)句,并不生成機(jī)器碼匯編程序使用的輔助性語(yǔ)句,并不生成機(jī)器碼起始地址偽指令起始地址偽指令 ORG賦值偽指令賦值偽指令 EQU字節(jié)常量偽指令字節(jié)常量偽指令 FCB (DC.B)雙字節(jié)常量偽指令雙字節(jié)常量偽指令 FDB (DC.W)字符量偽指令字符量偽指令 FCC 例:例:注:定界符可以是注:定界符可以是 、/、”,建議用,建議用 ORG $0008HSTART: LDAA #$FF PORTB EQU $0001BIT0 EQ
22、U %0000001 BSET PORTB,BIT0 ;等價(jià)于等價(jià)于 BSET $0001,%00000001 ORG $0200 TABLE: FCB $13,18,N1+6,21 ORG $1000 LIST: FDB $0519,$2000 ORG $2000 STAR: FCC ABCD3.4.2 匯編語(yǔ)言編程實(shí)例匯編語(yǔ)言編程實(shí)例1. 基本數(shù)據(jù)傳遞與算術(shù)運(yùn)算程序基本數(shù)據(jù)傳遞與算術(shù)運(yùn)算程序【例例3-1】BCD加法,見書加法,見書【例例3-2】大小排序,見書大小排序,見書2.循環(huán)控制程序循環(huán)控制程序【例例3-3】2個(gè)個(gè)8字節(jié)數(shù)求和字節(jié)數(shù)求和;*ADD8: LDX #$0B01 LEAY 8
23、,X LDAB #8 CLC LOOP: LDAA X ADCA 1,Y+ STAA 1,X+ DBNE B,LOOP $0B01.$0B09被加數(shù)被加數(shù)0字節(jié)字節(jié)被加數(shù)被加數(shù)1字節(jié)字節(jié) 加數(shù)加數(shù)0字節(jié)字節(jié)加數(shù)加數(shù)1字節(jié)字節(jié)RAM區(qū)區(qū)3. 延時(shí)子程序延時(shí)子程序硬件延時(shí)硬件延時(shí)-內(nèi)部定時(shí)器實(shí)現(xiàn),精確,不占內(nèi)部定時(shí)器實(shí)現(xiàn),精確,不占CPU軟件延時(shí)軟件延時(shí)-循環(huán)執(zhí)行指令,粗略,占用循環(huán)執(zhí)行指令,粗略,占用CPU【例例3-4】2ms延時(shí)。延時(shí)。 CPU執(zhí)行時(shí)間:執(zhí)行時(shí)間: T = N x TB T-總執(zhí)行時(shí)間,此總執(zhí)行時(shí)間,此2ms N-總時(shí)鐘周期數(shù)總時(shí)鐘周期數(shù)TB-總線時(shí)鐘周期總線時(shí)鐘周期(如如1/
24、8M=125ns) 則需則需N=T/TB=2ms/125ns=16000程序運(yùn)行:程序運(yùn)行:N=4+2+3+(1+3)(TCOUNT-1)+(1+1)+3+5 故:故:TCOUNT=3996.253996 注:其它時(shí)間可套用此,如注:其它時(shí)間可套用此,如20ms改改TCOUNT為為39996(或(或40000) ;* JSR DELAY1 ;4;* TCOUNT EQU 3996 ;無無 DELAY1: PSHX ;2 LDX #TCOUNT;3DLOOP: DEX ;1 BNE DLOOP ;3/1 PULX ;3 RTS ;5 又又【例例3-5】雙重循環(huán)的雙重循環(huán)的100ms延時(shí)。延時(shí)。忽
25、略配合指令的執(zhí)行時(shí)間,粗忽略配合指令的執(zhí)行時(shí)間,粗略估算:略估算:內(nèi)循環(huán)內(nèi)循環(huán)=200 x (1+1+3)T =1000T總時(shí)間總時(shí)間=100 x1000T =100000T2MHz晶振時(shí),總線頻率晶振時(shí),總線頻率=1MHz T=1us 子程序延時(shí)時(shí)間即子程序延時(shí)時(shí)間即100ms;/;子程序子程序DELAY:利用寄存器利用寄存器X、Y,; 執(zhí)行兩重循環(huán)實(shí)現(xiàn)延時(shí)。執(zhí)行兩重循環(huán)實(shí)現(xiàn)延時(shí)。;/DELAY: PSHX PSHY LDX #100DELAY1: LDY #200DELAY2: NOP ;1T NOP ;1T DBNE Y,DELAY2 ;3T DBNE X,DELAY1 PULY PUL
26、X RTS ;*;子程序子程序TRANS:十六進(jìn)制數(shù)轉(zhuǎn)換為:十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼碼;入口參數(shù):入口參數(shù):(A)=十六進(jìn)制數(shù),高十六進(jìn)制數(shù),高4位為位為0;出口參數(shù):出口參數(shù):(B)=ASCII碼碼;*TRANS: PSHX ;X壓棧壓棧 LDX #TABLE ;置表地址置表地址 LDAB A,X ;查表查表,(X+A)B PULX ;X出棧出棧 RTS ; 返回返回TABLE: FCC 0123456789ABCDEF;主程序段主程序段* ORG $8000HEXA: TFR A,X ANDA #$0F JSR TRANS STAB $2080 TFR X,A LSRA LSRA LS
27、RA LSRA JSR TRANS STAB $2081 5. 多分支結(jié)構(gòu)程序(類似查表)多分支結(jié)構(gòu)程序(類似查表); 根據(jù)根據(jù)4x4鍵盤的鍵號(hào)執(zhí)行相應(yīng)子程序。鍵盤的鍵號(hào)執(zhí)行相應(yīng)子程序。 Freescale MCU匯編編程幾個(gè)提示匯編編程幾個(gè)提示-1、程序是被編譯成二進(jìn)制碼放在程序存儲(chǔ)器、程序是被編譯成二進(jìn)制碼放在程序存儲(chǔ)器(FLASH)的,通過的,通過PC遞加,自動(dòng)遞加,自動(dòng)逐條執(zhí)行;逐條執(zhí)行;PC值指向的下一條將要執(zhí)行的指令。值指向的下一條將要執(zhí)行的指令。2、程序處理主要是通過訪問寄存器、數(shù)據(jù)存儲(chǔ)器、程序處理主要是通過訪問寄存器、數(shù)據(jù)存儲(chǔ)器(RAM)的各單元實(shí)現(xiàn)所需功能的各單元實(shí)現(xiàn)所需功能要求的,而要求的,而CPU寄存器寄存器(A,B,X,Y,CCR)是經(jīng)常要用到的工作寄存器。是經(jīng)常要用到的工作寄存器。3、理解、理解MCU的存儲(chǔ)器空間分配圖,寄存器、的存儲(chǔ)器空間分配圖,寄存器、RAM、FLASH是統(tǒng)一編址在是統(tǒng)一編址在64K地址空間的,每單元地址空間的,每單元8位位(1 Byte);訪問寄存器使用其功能符號(hào)形式,訪問;訪問寄存器使用其功能符號(hào)形式,訪問RAM區(qū)可用區(qū)可用16位地址
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 責(zé)任保險(xiǎn)課程設(shè)計(jì)
- 繪畫家長(zhǎng)互動(dòng)課程設(shè)計(jì)
- 長(zhǎng)安大學(xué)鋼橋課程設(shè)計(jì)
- 小學(xué)昆蟲飼養(yǎng)課程設(shè)計(jì)
- 采購(gòu)課程設(shè)計(jì)關(guān)于招標(biāo)
- 通信原理的課程設(shè)計(jì)
- 手工荷花課程設(shè)計(jì)
- 飼料配方課程設(shè)計(jì)
- 襯套注塑模具課程設(shè)計(jì)
- 智能電子相冊(cè)課程設(shè)計(jì)
- 高處作業(yè)安全培訓(xùn)課件-
- 職中英語(yǔ)期末考試質(zhì)量分析
- 中國(guó)的世界遺產(chǎn)智慧樹知到答案章節(jié)測(cè)試2023年遼寧科技大學(xué)
- 急性腹瀉與慢性腹瀉修改版
- 先天性肌性斜頸的康復(fù)
- 《國(guó)際市場(chǎng)營(yíng)銷》案例
- GB/T 37518-2019代理報(bào)關(guān)服務(wù)規(guī)范
- GB/T 156-2017標(biāo)準(zhǔn)電壓
- PPT溝通的藝術(shù)課件
- 內(nèi)科學(xué):巨幼細(xì)胞性貧血課件
- 暑假家校聯(lián)系情況記錄表
評(píng)論
0/150
提交評(píng)論