国产精品无码一区二区三区A片_无码狠狠躁久久久久久久91_国产精品久久久久久久_国产99九九久久无码熟妇_国产人妻精品久久久久野外_久久夜色精品国产欧美乱极品_91精品国产色综合久久不卡98口_精品人妻系列无码人妻免费视频

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

美國(guó)微芯PIC12C5XX單片機(jī) 指令集及程序設(shè)計(jì)技巧

更新時(shí)間: 2019-03-21
閱讀量:2923

推出兼容PIC單片機(jī)的深圳英銳恩,為您介紹美國(guó)微芯PIC12C5XX單片機(jī) 指令集及程序設(shè)計(jì)技巧。

§2.1  PIC12C5XX 指令概述
PIC12C5XX單片機(jī)每條指令長(zhǎng)12位,指令由操作碼和操作數(shù)組成。PIC12C5XX單片機(jī)共有33條指令,按操作分成三大類:

   1、面向字節(jié)操作類

   2、面向位操作類

   3、常數(shù)操作和控制操作類。

全部指令如表2.1所示。

面向字節(jié)操作類指令 (11-6) (5) (4-0)   OPCODE d f(FILE#)           二進(jìn)制代碼      HEX  名稱     助記符,操作數(shù)   操作     狀態(tài)影響 注 0000 0000 0000 000 空操作 NOP       無(wú)   0000 001f ffff 02f W送到f MOVWF f W→f     無(wú) 1,4 0000 0100 0000 040 W清零 CLRW - 0→W     Z   0000 011f ffff 06f f清零 CLRF f 0→f     Z 4 0000 10df ffff 08f f減去W SUBWF f,d f-W→d     C,DC,Z 1,2,4 0000 11df ffff 0Cf f遞減 DECF f,d f-1→d     Z 2,4 0001 00df ffff 10f W和f做或運(yùn)算 IORWF f,d W∨f→d     Z 2,4 0001 01df ffff 14f W和f做與運(yùn)算 ANDWF f,d W∧f→d     Z 2,4 0001 10df ffff 18f W和f做異或運(yùn)算 XORWF f,d W〇f→d     Z 2,4 0001 11df ffff 1Cf W加f ADDWF f,d W+f→d     C,DC,Z 1,2,4 0010 00df ffff 20f 傳送f到d MOVF f,d f→d     Z 2,4 0010 01df ffff 24f f取補(bǔ) COMF f,d f→d     Z 2,4 0010 10df ffff 28f f遞增 INCF f,d f+1→d     Z 2,4 0010 11df ffff 2Cf f遞減,為0則跳 DECFSZ f,d f-1→d,skip if zero Z 2,4 0011 00df ffff 30f f循環(huán)右移 RRF f,d f(n)→d(n-1),f(0)→C,C→d(7) C 2,4 0011 01df ffff 34f f循環(huán)左移 RLF f,d f(n)→d(n+1),f(7)→C,C→d(0) C 2,4 0011 10df ffff 38f f半字節(jié)交換 SWAPF f,d f(0.3)←→f(4-7)→d  Z 2,4 0011 11df ffff 3Cf f遞增,為0則跳 INCFSZ f,d f+1→d,skip if zero  Z 2,4           面向位操作類指令 (11-8) (7-5) (4-0)   OPCODE b(BIT#) f(FILE#)           二進(jìn)制代碼      HEX  名稱     助記符,操作數(shù)   操作     狀態(tài)影響 注 0100 bbbf ffff 4bf 清除f的位b BCF   f,b 0→f(b) Z 2,4 0101 bbbf ffff 5bf 設(shè)置f的位b BSF   f,b 1→f(b) Z 2,4 0110 bbbf ffff 6bf 測(cè)試f的位b,為0則跳 BTFSC f,b Test bit(b) in file(f):Skip if clear Z   0111 bbbf ffff 7bf 測(cè)試f的位b,為0則跳 BTFSS f,b Test bit(b) in file(f):Skip if clear Z           常數(shù)操作和控制操作類指令 (11-8) (7-0)   OPCODE   k(LITERAL)           二進(jìn)制代碼      HEX  名稱     助記符,操作數(shù)   操作     狀態(tài)影響 注 0000 0000 0010 002 寫OPTION寄存器 OPTION - W→OPTION register 無(wú)   0000 0000 0011 003 進(jìn)入睡眠狀態(tài) SLEEP - 0→WDT,stop oscillator  TO,PD   0000 0000 0100 004 清除WDT計(jì)時(shí)器 CLRWDT - 0→WDT(and prescaler,if assigned) TO,PD   0000 0000 0fff 00f 設(shè)置I/O狀態(tài) TRIS   f W→I/O control register f  無(wú) 3 1000 kkkk kkkk 8kk 子程序帶參數(shù)返回 RETLW  k k→W,Stack→PC  無(wú)   1001 kkkk kkkk 9kk 調(diào)用子程序 CALL   k PC+1→Stack,K→PC 無(wú) 1 101k kkkk kkkk Akk 跳轉(zhuǎn)(K為9位) GOTO   k k→PC(9 bits)  無(wú)   1100 kkkk kkkk Ckk 常數(shù)置入W MOVLW  k k→W Z   1101 kkkk kkkk Dkk 常數(shù)和W做或運(yùn)算 IORLW  k k∨W→W Z   1110 kkkk kkkk Ekk 常數(shù)和W做與運(yùn)算 ANDLW  k k∧W→W Z   1111 kkkk kkkk Fkk 常數(shù)和W做異或運(yùn)算 XORLW  k k○W→W Z                                   表2.1   PIC12C5XX 指令集   注:1、除GOTO指令外,任何有關(guān)寫PC(F2)的指令(例如 CALL、MOVWF  2)都將會(huì)把PC寄存器的第9位清零。

     2、若對(duì)I/O口寄存器進(jìn)行操作,如“SUBWF   6,1”,則使用的F6的值是當(dāng)前GP口上的狀態(tài)值,而非GP口輸出鎖存器里的值。

       3、指令“TRIS      6”將W寄存器中的內(nèi)容寫入GP的I/O口控制寄存器中:“1”關(guān)斷對(duì)應(yīng)端口的輸出緩沖器,使其為輸入(高阻)狀態(tài),“0”則使其為輸出態(tài)。

     4、當(dāng)預(yù)分頻器(Prescaler)分配給TIMER0后,任何對(duì)TMR0寄存器(F1)寫操作的指令都將使預(yù)分頻器清零。

§2.2  PIC12C5XX 指令尋址方式

PIC12C5XX單片機(jī)尋址方式根據(jù)操作數(shù)的來(lái)源,可分為寄存器間接尋址、立即數(shù)尋址、直接尋址和位尋址四種。

一、寄存器間接尋址

這種尋址方式通過(guò)寄存器F0(INDF)、F4(FSR)來(lái)實(shí)現(xiàn)。實(shí)際的寄存器地址放在FSR中,通過(guò)INDF來(lái)進(jìn)行間接尋址。

    例:


        FSR             EQU             4

        INDF           EQU             0

        MOVLW      05H                           ; W=5

        MOVWF      FSR                                 ; W(=5)→F4

        MOVLW       55H                              ; W=55H

        MOVWF      INDF                             ; W(=55H)→F5

上面這段程序把55H送入F5寄存器。間址尋址方式主要用于編寫查表、寫表程序,非常方便。請(qǐng)參考§2.7程序設(shè)計(jì)技巧。

二、立即數(shù)尋址

這種方式就是操作數(shù)為立即數(shù),可直接從指令中獲取。

     例:         MOVLW      16H               ; 16H →W

三、直接尋址

這種方式是對(duì)任何一寄存器直接尋址訪問(wèn)。對(duì)PIC12C508,寄存器地址(5位)直接包括在指令中,對(duì)PIC12C509,寄存器地址中最高1位由FSR(F4)寄存器中的bit5決定,即體選位。

     例:     MOVWF       8                 ; W→F8寄存器

             MOVF        8,W                   ; F8→W

四、位尋址

這種尋址方式是對(duì)寄存器中的任一位(bit)進(jìn)行操作。

     例:     BSF           11,0              ; 把F11的第0位置為“1”。  

§2.3  面向字節(jié)操作類指令  

這類指令共有18條,包括有數(shù)據(jù)傳送、算術(shù)和邏輯運(yùn)算、數(shù)據(jù)移位和交換等操作。它們的操作都是在W數(shù)據(jù)寄存器f之間進(jìn)行,其指令碼結(jié)構(gòu)為:

(11—6) (5) (4—0) OPCODE d f(File#)

高6位是指令操作碼。第6位d是方向位。d=1,則操作結(jié)果存入f(數(shù)據(jù)寄存器),d=0,則操作結(jié)果存入W。低5位是數(shù)據(jù)寄存器地址,可選中32個(gè)寄存器。對(duì)于PIC12C509,則還要參考寄存器體選擇器FSR的bit5選擇存入哪一個(gè)寄存器體(bank0或bank1)。

       1、寄存器加法指令

         格式:       ADDWF     f,d

指令碼: 000111 d fffff      指令周期:   1

        操作:       W+f→d

        影響狀態(tài)位: C,DC,Z

        說(shuō)明:       將f寄存器和w相加,結(jié)果存入f(d=1)或W(d=0)。

        例:         ADDWF          8,0          ; F8+W→W

         ─────────────────────────────────

         2、寄存器與指令

         格式:       ANDWF     f,d

指令碼: 000101 d fffff     &nbs