PIC16F 8位單片機(jī)匯編指令集
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é)果存至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é)果影響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的最高位。與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標(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。BTFSCf, 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)志位。
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寄存器,子程序返回,該條指令很特別哈,也比較有意思的餓,查表必用。
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)志位。
評(píng)論