版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1,PIC單片機技術(shù),電子信息與電氣工程系 通信教研室,2,PIC單片機指令系統(tǒng)和其它單片機一樣,是較為低級的語言系統(tǒng),是一套控制和指揮CPU工作的編碼,即機器語言。 單片機只能識別和執(zhí)行由二進制數(shù)組成的機器語言,然而,這樣一種二進制代碼的機器語言是很難為人們直接理解和分析。 為了能較好表達人們的設(shè)計思路,便于記憶和使用,人們在低級語言之上設(shè)計出一種新的符號語言,即匯編語言。,第5章 匯編語言程序設(shè)計,3,PIC單片機指令系統(tǒng)和其它單片機一樣,是較為低級的語言系統(tǒng),是一套控制和指揮CPU工作的編碼,即機器語言。 為了能較好表達人們的設(shè)計思路,便于記憶和使用,人們在低級語言之上設(shè)計出一種新的符號
2、語言,即匯編語言。,5.1 匯編語言指令格式,4,根據(jù)指令的功能和作用,只有操作碼是必須存在的,它主要決定了指令的操作性質(zhì),而其它部分是指令語句的重要補充和說明,有時可以缺省。,5,標(biāo)號位于指令助記符前面,它一般是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、轉(zhuǎn)移語句的入口地址等。,1.標(biāo)號,6,標(biāo)號并不是指令的必須部分,只有那些欲被其他語句引用的指令之前,才必須附加標(biāo)號。標(biāo)號不一定和語句同行,可以單獨在語句上方作為一行使用。 標(biāo)號最多可以由32個字母、數(shù)字和其它一些字符組成,但第一個字符必須是字母或下劃線。標(biāo)號不能用系統(tǒng)保留字,即系統(tǒng)禁用指令助記符、寄存器名、標(biāo)志符等作為標(biāo)號,如
3、:ADD、PCLATH等。 一個標(biāo)號只能表示一個地址,不允許多個地址用一個標(biāo)號重復(fù)定義。 標(biāo)號的定義和引用必須一致,其中的大小寫可以混寫但必須相同。 標(biāo)號必須頂格書寫,結(jié)束不用冒號。,使用標(biāo)號的要點是:,7,操作碼決定著指令的操作類型和操作性質(zhì),是匯編語言語句中的核心要素,每一條匯編指令都不可缺少,而其它三部分有些指令可以缺省。,2. 操作碼,8,操作碼所對應(yīng)的指令助記符,其中的符號大小寫可以混寫,而不會影響操作碼的含意,這一點和標(biāo)號、操作數(shù)符號變量的表達方式是有本質(zhì)區(qū)別。 指令助記符不能頂格書寫,當(dāng)前面沒有標(biāo)號時,必須至少保留一個空格。 操作碼核心助記符部分比較簡單,初學(xué)者必須熟悉復(fù)合助記符
4、部分的功能。,有關(guān)操作碼(指令助記符)的要點是:,9,在PIC匯編語言語句中,操作數(shù)的形式和內(nèi)容最為豐富,它是指令助記符操作的對象,一般以數(shù)據(jù)或地址的形式出現(xiàn),也可以用符號變量所表示的數(shù)據(jù)或地址。,3.操作數(shù),10,使用操作數(shù)的要點是:,若操作數(shù)有二項,中間應(yīng)該用逗號(半角)分開。 以A、B、C、D、E、F開頭的數(shù),前面應(yīng)加0作為引導(dǎo)。 MPASM編輯環(huán)境默認進制為十六進制,也可按用戶需要進行重新設(shè)置。 操作數(shù)部分的符號變量必須區(qū)分大小寫。 重視d參數(shù)的應(yīng)用,目標(biāo)地址為: F(d=1);W(d=0)。,11,各種進制168的表示形式,12,注釋內(nèi)容用分號引出,是匯編語言語句功能的一種補充說明,
5、主要是便于人們閱讀、分析、修改和程序的調(diào)試。,4. 注釋,13,用(半角)分號引出注釋內(nèi)容,可以緊跟指令之后,也可以獨立一行或多行書寫,但每一行均需由分號引出。 注釋內(nèi)容可以英文書寫,也能用中文書寫(來源于文本編輯內(nèi)容)。,使用注釋的要點是:,14,各種單片機的匯編程序除了指令系統(tǒng)語句以外,一般都還定義許多非正式指令的語句,即偽指令。大多數(shù)偽指令匯編時并不產(chǎn)生機器碼,僅為源程序提供匯編控制信息。,5.2 系統(tǒng)偽指令,15,格式:ORG nnnn 說明:地址定義偽指令 即經(jīng)匯編后生成的機器碼目標(biāo)程序或數(shù)據(jù)塊在單片機程序存儲器中的起始存放地址。,1.定位偽指令:ORG(Origin),ORG 01
6、00H MOVLW 0A2H; MOVWF 20H;,16,格式:符號名 EQU nn 說明:使EQU兩端的值相等。 符號名一旦被EQU賦值,其值便不能被再重新定義。這里的符號名,既可以是PIC中的特殊功能寄存器、一個常數(shù),或者是表示一個通用數(shù)據(jù)存儲器地址。,2.賦值偽指令:EQU(Equate),17,實際上對于偽指令:ABC EQU20H,其中ABC既可以認為是符號變量,因為ABC代表20H地址;又可以認為是符號常量,因為ABC可以代表符號常量20H。 所以對于一個定義的符號量,應(yīng)結(jié)合引用的指令進行分析才能真正確定符號量的類型。,分析 ABC EQU 20H,18,【例題5-2】正確區(qū)別符
7、號變量和符號常量之間的關(guān)系 ABCEQU 20H;定義符號量ABC ORG 0000H NOP MOVLW 77H MOVWF 20H MOVLW 88H MOVF ABC,0;ABC為數(shù)據(jù)存儲器地址20H MOVLW ABC ;ABC為常量20H NOP END,19,在符號名定義和引用過程中,必須保證大小寫屬性的一致性。 Abc、aBC或ABc與ABC是不一樣的。,20,格式:END 說明:END偽指令表示匯編語言源程序(*.ASM)的結(jié)束,MPASM匯編器匯編時遇到END就認為程序已結(jié)束,對其后的程序段不再進行匯編。,3.程序結(jié)束偽指令:END,每個程序必須有一條END指令,在整個程序末
8、尾。,21,格式:LIST 可選項,可選項, 說明:LIST偽指令用于設(shè)置各種匯編參數(shù),以便控制整個匯編過程或?qū)Υ蛴≥敵龅牧斜砦募M行格式化。 1)P 例如:P16F877 2)R 例如:RDEC(十進制); RHEX(十六進制); RBIN(二進制); 默認為十六進制。,4.列表選項偽指令:LIST,LIST P=18F452 LIST R=DEC/HEX,22,格式:INCLUDE “文件名” 說明:INCLUDE偽指令的主要功能是將外部預(yù)先編寫好的指定文件納入本源程序的匯編內(nèi)容,這樣可以減少重復(fù)勞動,提高編程效率。 如:P16F877.INC為F877單片機的復(fù)位矢量、專用寄存器的地址及
9、其控制位和狀態(tài)位的位地址的原始定義,有些參考書把P16F877.INC稱為F877的頭文件。,5.包含外部文件偽指令:INCLUDE,INCLUDE “P18f452.INC” Include “picreg.EQU” ;該文件對片內(nèi)常用資源進行定義,23,格式:RADIX 說明:RADIX偽指令用于設(shè)置在MPLAB-ICD集成開發(fā)環(huán)境中采用的進制方式,如定義十進制、八進制和十六進制等參數(shù),MPLAB-ICD集成開發(fā)系統(tǒng)缺省為十六進制。 例如:RADIX DEC ;定義為十進制 RADIX HEX ;定義為十六進制 RADIX OCT ;定義為八進制,6.進制定義偽指令:RADIX,24,wi
10、dth SET 9 width SET 8 注:可重新賦值,7. SET符號(變量)賦值,25,RES 10 說明:保留10個空白字節(jié),8. RES保留某段程序存儲區(qū),26,if a=100 movlw 0 x06 movwf pclath else movlw 0 x08 movwf pclath end if,9. IF條件匯編,27,variable i , count=50 i=0 while icount movlw i i+=1 endw,10. WHILE當(dāng)型循環(huán),28,VARIABLE a,b,c 注:可以在定義時賦值,也可在以后賦值。,11. VARIABLE定義變量,29,
11、格式: #define 例如: #define control 0 x19,7 . . bsf control ;注:等價于 bsf 0 x19,7 置0 x19寄存器的位7,12. #DEFINE定義文本替換標(biāo)號,30,在匯編語言編寫的源程序中,往往會有一些程序段在源程序中重復(fù)出現(xiàn),為了在源程序中不重復(fù)書寫這些程序段,就可以使用宏指令功能,把這些程序段分別用不同的宏指令來代替。 宏指令的作用: a、使程序簡潔、易讀 b、宏指令中可以使用參量(直至操作代碼也可以作為參量),13. MACRO宏指令,31,例如 capture macro x , y , z movwf x y z movlw
12、10 goto z endm 宏調(diào)用可以用下面的程序?qū)崿F(xiàn): capture indf , (incf tmr2 ,w) , loop 匯編后這句宏調(diào)用產(chǎn)生的源代碼為: movwf indf incf tmr2 ,w loop movlw 10 goto loop,13. MACRO宏指令,32,補充:宏指令與子程序的區(qū)別 宏指令在匯編時將宏定義中的代碼插入到調(diào)用宏定義的地方,因此所需的程序存儲空間較大,但是執(zhí)行程序時不需要保護、恢復(fù)斷點和現(xiàn)場,所以執(zhí)行速度要快一些。 子程序的調(diào)用是在目標(biāo)程序執(zhí)行時由CPU處理,子程序在目標(biāo)程序代碼中只出現(xiàn)一次,即所需的程序存儲空間較小,但是子程序調(diào)用需要保護斷
13、點、保護現(xiàn)場以及恢復(fù)現(xiàn)場、恢復(fù)斷點,所以需要增加額外開銷時間,必然要降低執(zhí)行速度。,13. MACRO宏指令,33,數(shù)據(jù)存儲器四體的體選方式 程序存儲器四頁的頁選方式 注:在發(fā)生轉(zhuǎn)移或跳轉(zhuǎn)時,須密切注意是否會發(fā)生 體(頁)轉(zhuǎn)換。,5.3 存儲器選擇方式,34,5.3.1 數(shù)據(jù)存儲器體選方式,根據(jù)直接尋址和間接尋址操作碼攜帶址址信息情況,一般把512字節(jié)(包括無效地址)的數(shù)據(jù)存儲器分成4個區(qū)域,在PIC中被稱為“體”(BANK)。 體0(000H07FH) 體1(080H1FFH) 體2(100H17FH) 體3(180H1FFH),數(shù)據(jù)存儲器體域,35,在不知道寄存器在哪個體時,可以采用BAN
14、KSEL 例: ABC EQU 35H ORG 0100H BANKSEL ABC ;選擇ABC所在的數(shù)據(jù)寄存器的體 MOVLW 00H MOVWF ABC;,36,F877單片機的程序存儲器(FLASH)是一個具有空間為8K14位的存儲器,其中14位為單元字節(jié)長度。為了能完全選擇8K的程序存儲器,需要合成13根地址選擇線。,5.3.2 程序存儲器頁選方式,37,復(fù)位地址0000H,直接給出13根地址選擇線; 中斷地址0004H,直接給出13根地址選擇線; 指令寄存器,是在每一個指令的執(zhí)行周期自動加1而形成當(dāng)前程序的執(zhí)行方向; 執(zhí)行以PCL為目標(biāo)地址的算術(shù)邏輯類指令; 調(diào)用子程序方式,即CAL
15、L語句以及相應(yīng)的返回語句(RETRUN、RETFIE、RETLW)。 轉(zhuǎn)移指令方式,即GOTO語句;,程序存儲器指令語句的選擇 主要有以下幾種途徑:,38,ABC EQU 20H ORG 0100H BANKSEL ABC MOVLW 00H ;常數(shù)00送入W MOVWF ABC ;W送入ABC存儲器中 ORG 0100H PAGESEL ABC GOTO ABC ;轉(zhuǎn)移至ABC ORG 1000H ABC MOVLW 00H;常數(shù)00送入W MOVWF 20H;W送入20H中,補充偽指令 PAGESEL、BANKSEL,39,在程序設(shè)計中,除主程序以外還有一部分很重要的內(nèi)容就是關(guān)于子程序的設(shè)
16、計,它是為完成特定的目的而構(gòu)成的復(fù)合程序。,5.4常用子程序的設(shè)計,40,轉(zhuǎn)移和循環(huán)程序,主要是通過跳轉(zhuǎn)、判斷和位測試指令來構(gòu)成的。 1.跳轉(zhuǎn)指令 GOTO 2.判斷指令 INCFSZ、DECFSZ 3.位測試指令 BTFSS、 BTFSC,5.4.1 轉(zhuǎn)移和循環(huán)子程序,41,【判斷指令 例題5-5】執(zhí)行某個顯示功能100次后結(jié)束,顯示子程序為XSH。 ORG 0000H MOVLW D101 ;十進制101 MOVWF 20H ;送入20H單元中 LOOP DECFSZ 20H,F ; GOTO RRT GOTO PPY RRT PAGESEL XSH CALL XSH PAGESEL LO
17、OP GOTO LOOP PPY END,42,【位測試指令 例題5-6】比較兩個數(shù)據(jù)寄存器20H和30H內(nèi)容的大小,將較大的數(shù)送入40H中。 MOVF 30H,W ;30H送入W SUBWF 20H,W ;(20H)與W相減后送入W, (20H)-(30H) BTFSS STATUS,C ;判斷進位(借位)標(biāo)志 GOTO L20H; 無借位,(20H)(30H) MOVF 30H,W ; (20H)(30H) MOVWF 40H ;較大的數(shù)送入40H GOTO POP L20H MOVF 20H,W ; MOVWF 40H; POP END,43,單片機的延時程序,在程序設(shè)計中具有很重要的地
18、位。延時的設(shè)計,一般可以通過兩種方式:硬件延時和軟件延時。 所謂硬件延時,就是由單片機系統(tǒng)的定時器實現(xiàn);而軟件延時,是通過循環(huán)程序?qū)崿F(xiàn)。一般來說,前者適用于精確定量延時,而后者常用于初略定性延時。,5.4.2 軟件延時子程序,44,【例題5-7】簡單循環(huán)的軟件延時子程序。 COUNTTER EQU 20H; ORG 0100H CALL DELAY; ORG 1000H; DELAY MOVLW 0FFH;循環(huán)常數(shù) MOVWF COUNTER ;循環(huán)寄存器 LOOP DECFSZ COUNTER;循環(huán)寄存器遞減 GOTO LOOP ;繼續(xù)循環(huán) RETURN,45,【例題5-8】請編寫10MS軟
19、件延時子程序。 ORG 1000H DEL_10MS MOVLW 0DH ;外循環(huán)常數(shù) MOVWF 20H ;外循環(huán)寄存器 LOOP1 MOVLW 0FFH; 內(nèi)循環(huán)常數(shù) MOVWF 21H; 內(nèi)循環(huán)寄存器 LOOP2 DECFSZ 21H ;內(nèi)循環(huán)寄存器遞減 GOTO LOOP2;繼續(xù)內(nèi)循環(huán) DECFSZ 20H;外循環(huán)寄存器遞減 GOTO LOOP1 ;繼續(xù)外循環(huán) RETURN,46,軟件延時可用MAPLAB 7.1的STOPWATCH可以估算延時時間,47,48,49,數(shù)據(jù)查表子程序在某些特殊場合是非常有用的,如共陰極LED八段顯示器以及其它具有固定顯示模式的場合,需根據(jù)其顯示數(shù)值去查找
20、對應(yīng)參考數(shù)據(jù)庫編碼輸出。,5.4.3 數(shù)據(jù)查表子程序,50,【例題5-11】將RC端口與共陰極LED八段顯示器相連,從0-9循環(huán)顯示,間隔時間為1秒,請編寫相應(yīng)的軟件程序。,八段顯示數(shù)值(0-9)編碼,51,00000000,XXXXXXXX,查表實例,movf DisplayValue,W callDecode movwfPORTC gotoContinue Decode addwfPCL,F retlwB00111111 ;decode 0 retlwB00000110 ;decode 1 retlwB01011011 ;decode 2 retlwB01001111 ;decode 3 retlwB01100110 ;decode 4 retlwB01101101 ;decode 5 retlwB01111101 ;decode 6 retlwB00000111 ;decode 7 retlwB01111111 ;decode 8 retlwB01101111 ;decode 9 Continue,b,e,RC0,RC1,RC2,RC3,RC4,RC5,RC6,b,c,d,e,f,g,W 寄存器,I/O C口,01101101,00000101,01101101,a,52,在PIC指令系統(tǒng)中并沒有類似的語句,但如果借助于PIC單片機指令的特殊功能,同樣可以輕松地構(gòu)成分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年基礎(chǔ)施工中的常見缺陷與處理
- 2026年電氣火災(zāi)應(yīng)急包的準(zhǔn)備與使用
- 2026年風(fēng)力發(fā)電電氣設(shè)備的維護技巧
- 2026年云計算在橋梁耐久性評估中的應(yīng)用前景
- 牛津英語七年級語法學(xué)習(xí)資料
- 課堂作業(yè)-不懂就要問互動練習(xí)匯編
- 全國人力資源管理員職業(yè)資格考核題庫及參考答案
- 阿膠顆粒質(zhì)量標(biāo)準(zhǔn)建立-洞察及研究
- 課件安全手勢舞
- 高效率煤基甲醇催化合成油催化劑研究-洞察及研究
- 遺產(chǎn)分割協(xié)議書
- 京瓷哲學(xué)手冊樣本
- 形神拳動作名稱與圖解
- 博士生入學(xué)復(fù)試面試報告?zhèn)€人簡歷介紹含內(nèi)容模板兩篇
- 食品工廠設(shè)計 課件 第二章 廠址選擇
- 2023年生產(chǎn)車間各類文件匯總
- WORD版A4橫版密封條打印模板(可編輯)
- 2013標(biāo)致508使用說明書
- 中考滿分(合集15篇)
- 《大數(shù)據(jù)營銷》-課程教學(xué)大綱
- GB/T 18993.1-2020冷熱水用氯化聚氯乙烯(PVC-C)管道系統(tǒng)第1部分:總則
評論
0/150
提交評論