下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、pic匯編指令集概述2010-8-4 16:23:39pic單片機(jī)(peripheral interface controller)是一種用來開發(fā)的去控制外圍設(shè)備的集成電路(ic),翻譯為外設(shè)接口控制器。pic 意思確實(shí)有點(diǎn)奇怪,不知道的話第一個(gè)p肯定翻譯為programable(可編程)的。目前我接觸的基本都是8位的cpu,包括avr,pic等系列,之前我寫的程序都是以c語言去寫的,也從未出現(xiàn)過什么問題,雖然很多人說道c語言的bug問題,我一直都不是很在意,就目前為止我從未遇到過這種問題,用avr-gcc寫的時(shí)候也曾經(jīng)出現(xiàn)過問題,也懷疑過c語言和編譯器,最終事實(shí)證明是錯(cuò)的,一直都是我們沒有注
2、意的語法問題的造成的。接觸pic后我開始用起了他的匯編,原因無它,只是大家都在用匯編。這是發(fā)表的第二篇文章,處女篇給了夢(mèng)夢(mèng)哈,首先介紹一下pic的單片機(jī),pic單片機(jī)是基于哈弗結(jié)構(gòu)的精簡(jiǎn)指令集(risc)的單片機(jī),沒啥說的,很多單片機(jī)都是的。特殊的地方就是他的指令和存儲(chǔ)器結(jié)構(gòu),一直有個(gè)問題到底是他的指令結(jié)構(gòu)決定的他的存儲(chǔ)器結(jié)構(gòu),還是存儲(chǔ)器結(jié)構(gòu)決定的指令結(jié)構(gòu)? pic8位機(jī)分為低中高三個(gè)檔子,低檔次的是pic12系列的,指令是以12bit結(jié)構(gòu)編碼的,對(duì)應(yīng)的指令集有33條指令;中檔的cpu是pic16系列,指令集包含35條指令,并且是以14bit的結(jié)構(gòu)編碼的;高檔次的pic18系列包含58條指令,
3、每條指令是以16bit結(jié)構(gòu)編碼的。并且所有指令向下兼容。pic指令的語法和其他系列的一樣,都是有以下幾部分組成的:標(biāo)號(hào) 操作碼助記符 操作數(shù)1 操作數(shù)2 ;注釋1。關(guān)于標(biāo)號(hào),沒啥說的,和其他單片機(jī)一樣,它表示一個(gè)地址,標(biāo)號(hào)也是可選的,不是所有的指令都需要的,只有在被其他語句引用時(shí)才需的,在沒有標(biāo)號(hào)的情況下,操作碼助記符前必須保留一個(gè)或以上的空格再去寫指令助記符,一般使用一個(gè)tab,如果沒有標(biāo)號(hào),而操作碼助記符占用了標(biāo)號(hào)的位置,匯編器會(huì)把指令助記符當(dāng)做標(biāo)號(hào)來處理。標(biāo)號(hào)必須以字母或者半角下劃線開頭,后面可以跟數(shù)字字符,字母等。再有不可以使用助記符當(dāng)做標(biāo)號(hào),標(biāo)號(hào)可以單獨(dú)占用一行。還有就是標(biāo)號(hào)后可以有
4、冒號(hào)(:),也可以沒有,依個(gè)人喜好而定,只是我喜歡加上,看起來舒服,清晰。2。操作碼助記符是必選項(xiàng),該項(xiàng)可以是指令助記符、宏匯編或者偽指令組成。其作用是匯編器在匯編的時(shí)候可以通過“助記符”和“操作碼表”比較,找到其相應(yīng)的機(jī)器碼一一代替。3。操作數(shù)由操作數(shù)的數(shù)值或者以標(biāo)號(hào)表示的數(shù)值或者地址值組成;若操作數(shù)有兩個(gè),他們之間必須用“,”隔開。當(dāng)操作數(shù)是常數(shù)的時(shí)候,可以是二進(jìn)制,8進(jìn)制,10進(jìn)制或者16進(jìn)制的數(shù),還可以是定義過的標(biāo)號(hào),字符串或者ascii碼。當(dāng)以常數(shù)表示的時(shí)候,二進(jìn)制要冠以b開頭,8進(jìn)制以o開頭,10進(jìn)制以d開頭,16進(jìn)制冠以h,“h”也可以放至最后,pic的編譯器默認(rèn)是以16進(jìn)制表示
5、的,16進(jìn)制也可以以0x表示。在此提醒大家一點(diǎn),程序中的一種進(jìn)制當(dāng)有幾種表示方式時(shí),最好從頭到尾以一種格式表示。操作數(shù)項(xiàng)也是可選的,4。注釋是可選的,用來對(duì)程序做出說明,便于閱讀和后期的維護(hù)。注釋用“;”區(qū)分,后面的語句不被編譯。需要說明的是,子函數(shù)前應(yīng)說明入口條件,出口條件和函數(shù)功能等信息。當(dāng)函數(shù)用到特別的算法的時(shí)候也需要說明算法原理等,便于后期修改和閱讀。以pic16系列cpu為例介紹pic的指令集系統(tǒng):pic16系列具有35條指令,所有指令依據(jù)面向的對(duì)象可以分為3大類:面向字節(jié)操作類、面向位操作類、面向常數(shù)和控制操作類。如下圖所示 1。addwf f, d,f寄存器內(nèi)容與w寄存器相加,d
6、=1時(shí)結(jié)果放在f,d=0是結(jié)果在w,影響status的c,dc和z標(biāo)志。該條指令影響的狀態(tài)與mcs51一致,有進(jìn)位時(shí)c=1,有半進(jìn)位時(shí)dc=1;否則相反。結(jié)果為0時(shí)z標(biāo)志置位。2。andwf f, d,f寄存器內(nèi)容與w寄存器相與,d=1時(shí)結(jié)果回存至f,d=0時(shí)結(jié)果存至w,結(jié)果影響status的z標(biāo)志位。3。clrf ( clear file register), 清空頁寄存器,status的z標(biāo)志位置位4。clrw (clear wreg),清空w寄存器,status的z標(biāo)志位置位,可以用movlw 0h等同使用5。comf f, d,f寄存器內(nèi)容取反,d=1時(shí)結(jié)果存至f寄存器,d=0時(shí)結(jié)果存
7、至w寄存器。影響z標(biāo)志位。6。decf f, d,f寄存器內(nèi)容自減1,d=1時(shí)結(jié)果存放于f;d=0時(shí)結(jié)果存放于w,影響status的z標(biāo)志位。7。decfsz f, d f寄存器內(nèi)容自減1,為0則跳行,d=1時(shí)結(jié)果在f寄存器;d=0時(shí)結(jié)果在w寄存器。不影響標(biāo)志位。8。incf f, d,f寄存器內(nèi)容自加1,d=1時(shí)結(jié)果回存至f,d=0時(shí)結(jié)果在w。影響z標(biāo)志位。9。incfsz f, d,f寄存器內(nèi)容自加1,結(jié)果為0則跳行。d=1時(shí)結(jié)果回存至f;d=0時(shí)結(jié)果存至w寄存器。該指令不影響標(biāo)志位。10。iorwf f, d,f寄存器內(nèi)容與w寄存器相或,d=1時(shí)結(jié)果回存至f,d=0時(shí)結(jié)果存至w,結(jié)果影響
8、status的z標(biāo)志位。11。movf f, d,當(dāng)d=1時(shí),f寄存器內(nèi)容不變,d=0時(shí)f寄存器內(nèi)容復(fù)制到w寄存器。當(dāng)d=1時(shí),只改變z標(biāo)志位,可以用與判斷f寄存器內(nèi)容是否為0。12。movwf , f (move wreg to file register),很常用的一條指令,將w寄存器的內(nèi)容保存到ram中去13。nop,沒什么可說的,空操作而已,但是確實(shí)很常用的語句,短延時(shí)必須的。14。rlf f, d,循環(huán)左移指令,f的最高位移到c,原來c的內(nèi)容移到f的最低位。與msc51的循環(huán)左移指令功能一致。結(jié)果影響c標(biāo)志。15。rrf f, d, 循環(huán)右移指令,f的最低位移到c,原來c的內(nèi)容移到f
9、的最高位。與mcs51的循環(huán)右移指令功能一直。結(jié)果影響c標(biāo)志。16。subwf f, d ,f-w結(jié)果存放取決于d,當(dāng)d=1時(shí)結(jié)果存在f里,0時(shí)存在w里,指令影響status的c、dc、z標(biāo)志位,有借位時(shí)c=0,有半借位時(shí)dc=0;無借位和半借位時(shí)真好相反。這點(diǎn)與mcs51系列的單片機(jī)有些不同,用時(shí)需注意。當(dāng)兩數(shù)相等時(shí)z=1。17。swawf f, d, 字節(jié)交換指令,f的高低字節(jié)交換,結(jié)果不影響標(biāo)志位。該條指令在中斷斷點(diǎn)保存和恢復(fù)中很重要,而且只能使用該指令。在下篇將給出介紹。18。xorwf f, d,f寄存器內(nèi)容與w寄存器異或,d=1時(shí)結(jié)果存至f,d=0時(shí)結(jié)果存至w,影響status的z
10、標(biāo)志位,該條指令我常用來比較是否與一個(gè)數(shù)相等,利用同0異1的原理。19。bcf f, b,清零f寄存器的第b位。指令不影響任何標(biāo)志位,四條位操作指令在程序設(shè)計(jì)中有極其重要的作用,被廣泛應(yīng)用。20。bsf f, b,置位f寄存器的第b位。指令不影響任何標(biāo)志位。21。btfsc f, b,測(cè)試f寄存器的第b位,為0則跳行,指令不影響任何標(biāo)志位。22。btfss f, b,測(cè)試f寄存器的第b位,為1則跳行,指令不影響任何標(biāo)志位。23。addlw k,w加立即數(shù)k,結(jié)果在w寄存器內(nèi),有進(jìn)位,半進(jìn)位時(shí)c,dc為1,否則0;結(jié)果為0時(shí)z=1。24。andlw k,w與立即數(shù)k相與,結(jié)果在w寄存器,影響z標(biāo)
11、志位。25。call k,調(diào)用子程序,k為子程序的入口地址,不影響任何標(biāo)志位,但是改指令執(zhí)行需要兩個(gè)指令周期,因?yàn)樵谔D(zhuǎn)之前需要保存當(dāng)前得返回地址。26。clrwdt 看門狗定時(shí)器清0,影響status寄存器的to和pd標(biāo)志位。兩個(gè)標(biāo)志位均置位。27。goto k,跳轉(zhuǎn)到指定地址處,不影響標(biāo)志位。雙周期指令。28。iorlw k,w寄存器與立即數(shù)k相或,結(jié)果在w寄存器,影響z標(biāo)志位。29。movlw k,立即數(shù)k賦給w寄存器,不影響標(biāo)志位。30。retfie,中斷返回指令,沒啥說的。中斷服務(wù)程序最后一句。31。retlw k,立即數(shù)k送w寄存器,子程序返回,該條指令很特別哈,也比較有意思的餓,
12、查表必用。32。return,子程序返回指令。33。sleep,進(jìn)入休眠模式。影響status的to和pd標(biāo)志位,to=1,pd=0。34。sublw, k,立即數(shù)減去w,結(jié)果在w寄存器,標(biāo)志位影響與subwf指令一致,不再贅述。35。xorlw k,立即數(shù)k與w寄存器異或,結(jié)果在w寄存器,影響z標(biāo)志位。以上為pic16中檔系列的指令集,總共35條指令,還有一條tris指令,是為了保持與pic16c5x系列代碼兼容而出的,不推薦使用。下面給出pic匯編的一般格式,或者說套路吧:include;包含必要的頭文件_config xxxxh;配置字,可以不要,在燒錄時(shí)修改,建議使用errorlevel xh;編譯器錯(cuò)誤,警告等級(jí)設(shè)定,以上為宏匯編,關(guān)于宏匯編在下篇介紹;reset handlerorg 0h;程序起始地址,復(fù)位向量nop;無意義,某仿真器必須的語句goto main;跳轉(zhuǎn)到用戶代碼區(qū);interrupt han
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《應(yīng)急人力資源管理》2022-2023學(xué)年第一學(xué)期期末試卷
- 物業(yè)智能化解決方案
- 石河子大學(xué)《數(shù)學(xué)文化賞析》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《口腔頜面外科學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《工程熱力學(xué)與傳熱學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 精神科新冠肺炎演練
- 沈陽理工大學(xué)《數(shù)學(xué)建模》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《液壓與氣動(dòng)技術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《電氣控制與PC技術(shù)》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《場(chǎng)地設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 自然拼讀法-圖文.課件
- 2024中國(guó)長(zhǎng)江電力股份限公司招聘高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- Unit 2 Travelling Around Listening and Speaking 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高中英語人教版(2019)必修第一冊(cè)
- 電商主播考勤管理制度
- 2024-2030年中國(guó)礦泉水行業(yè)發(fā)展趨勢(shì)及發(fā)展前景研究報(bào)告
- 商業(yè)銀行貴金屬業(yè)務(wù)消費(fèi)者權(quán)益保護(hù)實(shí)施辦法
- 2024年新人教版七年級(jí)上冊(cè)道德與法治全冊(cè)教案
- 2024年秋新人教版七年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件 4.1 整式 第1課時(shí) 單項(xiàng)式
- 北師大版三年級(jí)數(shù)學(xué)上冊(cè)原創(chuàng)天天練
- 衢州江山市交投人力資源有限公司招聘筆試題庫2024
- 職業(yè)資格證書遺失補(bǔ)發(fā)申請(qǐng)表
評(píng)論
0/150
提交評(píng)論