分享
分销 收藏 举报 申诉 / 26
播放页_导航下方通栏广告

类型PIC指令详解.doc

  • 上传人:丰****
  • 文档编号:3560629
  • 上传时间:2024-07-09
  • 格式:DOC
  • 页数:26
  • 大小:254.50KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    PIC 指令 详解
    资源描述:
    中档PIC单片机汇编指令详解 -----老罗整理 NOP 空操作指令 语法形式:NOP 操作数:无 执行时间:一个指令周期 执行过程:除了消耗一个指令周期之外,无任何其他影响,所以通常被用来作为延时使用 状态标志影响:无 说明:指令操作没有任何操作数参与,也不影响任何寄存器的内容和状态,所以通常都是被作为延时使用的。 指令范例:BSF PORTB,0 ;PORTB的第0位输出高电平(1) NOP ;延时,使电平稳定 MOVWF 将W寄存器的内容传送到数据寄存器 语法形式:MOVWF f 操作数:f为数据寄存器的低7位地址(0x00~0x7F) 执行时间:一个指令周期 执行过程:把W寄存器的内容传送到f数据寄存器,W寄存器的内容保持不变,类似于Copy 状态标志影响:无 说明:该指令是对数据寄存器赋值的主要方式 指令范例: MOVLW 0x55 ;W寄存器赋值 MOVWF Data ;W寄存器值传送给Data ;此时Data=0x55 CLRW W寄存器内容清0 语法形式:CLRW 操作数:无 执行时间:一个指令周期 执行过程:0x00→W 1→Z 状态标志影响:Z 说明:该指令对W寄存器内容清零,并置位0标志Z 另外使用MOVLW 0x00也可以使W寄存器内容为0,但是这条指令不影响0标志Z 指令范例:CLRW ;W=0,Z=1 CLRF 数据寄存器内容清零 语法形式:CLRF f 操作数:f为数据寄存器的低7位地址(0x00~0x7F) 执行时间:一个指令周期 执行过程:0x00→f 1→Z 状态标志影响:Z 说明:指令对数据寄存器清零,并置位0标志Z 指令范例:CLRF TRISB ;端口B所有I/O引脚设为输出 SUBWF 将数据寄存器的内容减去W寄存器内容 语法形式:SUBWF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器内容不变 当d=W时,结果放在W寄存器中,数据寄存器f内容不变 执行时间:一个指令周期 执行过程:【f】-【W】→d 状态标志影响:Z DC C 说明:要特别注意W寄存器在这条指令中是减数 当【f】=【W】时,相减的结果为0,则Z=1 当【f】>【W】时,没有借位发生,则C=1 当【f】<【W】时,有借位发生,则C=0 实际上在PIC单片机中这条指令是通过先对W寄存器的内容求补码,然后与被减数相加,所以在判断是否有借位时和其他单片机不同,请注意 指令范例: MOVLW 0x23 ;W=0x23 MOVWF tmp ;tmp=0x23 MOVLW 0x32 ;W=0x32 SUBWF tmp,W ;tmp-W将结果存入W中,W=0xF1,tmp=0x23 ;过程:tmp=0x23,W求补码为0xCD,所以0x23+0xCD=0xF1,又因tmp<W,所以C=0 DECF 数据寄存器的内容递减1 语法形式:DECF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,f数据寄存器自减1 当d=W时,结果放在W寄存器中,W寄存器内容自减1 执行时间:一个指令周期 执行过程:【f】-1→d 状态标志影响:Z 说明:该指令对数据寄存器的内容做减1运算。如果减1后的结果为0,则置位0标志寄存器Z 指令范例: CLRF Count ;Count=0x00 DECF Count,f ;Count=0x00,f=0xFF DECF f,W ;f=0xFF,W=0xFE INCF 数据寄存器的内容递增1 语法形式:INCF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,f数据寄存器自增1 当d=W时,结果放在W寄存器中,W寄存器内容自增1 执行时间:一个指令周期 执行过程:【f】+1→d 状态标志影响:Z 说明:该指令对数据寄存器的内容增加1。如果增加后的结果为0,则置位0标志寄存器Z 指令范例: CLRF Count ;Count=0x00 INCF Count,f ;Count=0x00,f=0x01 INCF f,W ;f=0x01,W=0x02 IORWF 数据寄存器f和W寄存器做逻辑或操作 语法形式:IORWF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程:【f】|【W】→d 状态标志影响:Z 说明:数据寄存器内容和W寄存器的内容逻辑或,结果按照d的指定位置存放,按照逻辑或有1出1的规则,使用该命令可以将任意位设置为1 指令范例: MOVLW b’00001111’ ;将W寄存器的低4位设置为1 IORWF PORTB,f ;将PORTB的低4位设置为1,不影响高4位 ANDWF 数据寄存器f和W寄存器做逻辑与操作 语法形式:ANDWF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程:【f】&【W】→d 状态标志影响:Z 说明:数据寄存器内容和W寄存器的内容逻辑与,结果按照d的指定位置存放。按照逻辑与有0出0的规则,使用该命令可以将任意位设置为0。利用其影响标志Z的特性,可以判断寄存器任意位的组合是否为全0。 指令范例: 例1:寄存器任意位清零 MOVLW b’00001111’ ;W寄存器高4位清0(取决于0的组合) ANDWF PORTB,f ;PORTB的高4位清0,低4位保持不变 例2:判断寄存器任意位组合是否全0 MOVLW b’00001111’ ;W寄存器的低4位置1(取决于1的组合) ANDWF PORTC,W ;只要PORTC的低4位全0,则Z标志寄存器就置1 ;此指令的操作结果放在W寄存器中,不会影响原寄存器的值 XORWF 数据寄存器内容和W寄存器内容做逻辑异或操作 语法形式:XORWF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程:【f】^【W】→d 状态标志影响:Z 说明:数据寄存器内容和W寄存器的内容逻辑异或,结果按照d的指定位置存放。按照逻辑异或的规则,任何数(0或1)和1异或,结果为反码;任何数和其本身异或,结果为0。所以此指令可以把寄存器的任意位数据反转(0变1,1变0),或者判断寄存器的内容是否为一特定值。 指令范例: 例1:寄存器任意位数据反转 MOVLW b’00000011’ ;W寄存器低2位置1 XORWF PORTB,f ;PORTB的高6位不变,低2位数据反转 例2:判断寄存器的内容是不是特定值 MOVLW 0xAA ;W=0xAA(可以是任意值) XORWF PORTC,W ;如果PORTC=0xAA,则Z标志就为1 ;此指令的操作结果放在W寄存器中,不会影响原寄存器的值 ADDWF W寄存器内容和f数据寄存器内容相加 语法形式:ADDWF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程:【f】+【W】→d 状态标志影响:Z DC C 说明:数据寄存器内容和W寄存器内容相加,结果放入d指定的地方 指令范例: MOVLW 0x55 ;W=0x55,假定Sum=0xAA ADDWF Sum,f ;W不变,Sum=0xFF MOVF 传送f数据寄存器的内容到目的寄存器 语法形式:MOVF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,把数据寄存器的内容放回自己本身,目的用于判断数据寄存器的内容是否为0。 当d=W时,结果放在W寄存器中,将数据寄存器f的内容传送至W寄存器 执行时间:一个指令周期 执行过程:【f】→d 状态标志影响:Z 说明:将数据寄存器的内容传送至它处,或者对f数据寄存器的内容做判0操作,如果传送的数据是0,则置位Z标志。 指令范例: 例1:数据传送 MOVF Var1,W ;Var1内容传送至W寄存器 MOVWF Var2 ;W寄存器内容传送至Var2,此时Var1=Var2 例2:数据判0 MOVF Var3,f ;Var3寄存器内容被送往自身,其他寄存器内容不变,但是影 响Z标志 BTFSC STATUS,Z ;如果Var3不等于0,则跳过下一条指令 GOTO Var3Zero ;如果Var3等于0,则转向其他操作 COMF f数据寄存器内容取反 语法形式:COMF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程:!【f】→d 状态标志影响:Z 说明:求数据寄存器内容的反码,求一个数的补码可以使用这个指令完成(按位求反再加一) 指令范例: COMF num,f ;对num变量取反码 INCF num,f ;反码加1就是其补码 DECFSZ 数据寄存器内容递减1,并作判0标志 语法形式:DECFSZ f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期或两个指令周期 执行过程:【f】-1→d 状态标志影响:Z 说 明:该指令将首先将f数据寄存器的内容做减1运算,结果放到d指定的目的地址内,同时它还会对Z标志进行判0操作(进行分支跳转控制);如果f数据寄存器 减1后结果非0,那么Z=0,程序将顺序执行下一条指令,本次指令操作耗费一个指令周期;如果结果为0,那么Z=1,此时程序将会跳过紧跟其后的第一条指 令,去执行紧跟其后的第二条指令,本次指令操作耗费两个指令周期。该指令常用于计数次数或者循环次数的控制。 指令范例: MOVLW 0x10 ;准备给循环计数器赋初值 MOVWF Count ;此时循环计数器Count=0x10 Loop:DECFSZ Count,f ;Count递减1,结果放入Count中,并进行Z标志判 GOTO Loop ;断,如果递减后结果不为0,继续执行Loop操作, ;总共循环0x10(16进制)次。 NOP ;如果递减后结果为0,就跳到这条指令 INCFSZ f数据寄存器内容递增1,并作判0标志 语法形式:INCFSZ f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期或两个指令周期 执行过程:【f】+1→d 状态标志影响:Z 说 明:该指令首先对数据寄存器的内容做加1操作,结果按照d的指示保存到相应的地方,然后对Z进行判0操作(分支跳转控制):如果加1之后的结果非0,也就 是Z=0,程序将会按照顺序执行下一条指令,使用1个指令周期;如果加1之后结果为0,也就是Z=1,那么程序将会跳过INCFSZ指令之后的第一条指 令,开始执行第二条指令,使用2个指令周期。该指令常用于计数次数和循环次数的控制。 指令范例: MOVLW 0xC0 ;循环计数数据赋初值 MOVWF Count ;此时循环计数器初值Count=0xC0 Loop:INCFSZ Count,f ;Count内容加1,放回Count中,并进行Z标志判断 GOTO Loop ;如果加1之后的结果不为0,则循环执行Loop的内 容,总共循环次数为0x00-0xC0=0x40次 NOP ;结果为0,则跳到这条指令 RRF 数据寄存器内容带进位的循环右移 语法形式:RRF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程: 状态标志影响:C 说明:该指令把C进位寄存器(借位寄存器)和数据寄存器的8位数据结合在一起做9位的循环右移1位的操作。操作的结果是把C移到数据寄存器的最高位,原数据寄存器的最低位放到C中。 指令范例: 例1:实现数据寄存器自身8位的循环右移 RRF Data,W ;数据寄存器Data的内容右移1位,结果放入W寄存器,Data本身 的内容不变,但是最低位已经移到C中 RRF Data,f ;再次进行右移,结果写入Data自身。这时上一条指令移入C中的最低位现在已经变成Data的最高位,实现了最低位变最高位,最高位变成第二高位的目的 例2:实现数据寄存器算数右移(除2操作) BCF STATUS,C ;确保C=0 RRF Data,f ;数据寄存器右移1位,最高位现在为0,结果放入自身 RLF 数据寄存器内容进行带进位的循环左移操作 语法形式:RLF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程: 状态标志影响:C 说明:该指令将C和8位数据寄存器的数据结合起来进行9位的循环左移操作,结果放入d指定的位置。操作结果是把C移到数据寄存器的最低位,将原数据寄存器的最高位移入C中。 指令范例: 例1:实现数据寄存器的8位内容循环左移 RLF Data,W ;Data的内容左移1位放入W寄存器中,Data的内容不变,Data的 最高位放入C中 RLF Data,f ;Data的内容经操作后放回自身,C的内容(经上步操作后变成了原Data的最高位)放入Data的最低位。 例2:实现数据寄存器的算数左移(结果乘以2) BCF STATUS,C ;确保C=0 RLF Data,f ;数据寄存器Data左移1位,最低位补充为0,实现乘以2 SWAPF 数据寄存器高低半字节内容进行交换 语法形式:SWAPF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,W寄存器的内容不变 当d=W时,结果放在W寄存器中,f数据寄存器的内容不变 执行时间:一个指令周期 执行过程:【f<3:0>】←→【f<7:4>】 状态标志影响:无 说明:该指令实现把数据寄存器的高低半字节的内容进行交换,结果放入d指定的地址。该指令在中断服务程序退出前恢复W寄存器的内容的过程中起着不可或缺的作用。不影响状态寄存器。 指令范例: SWAPF w_temp,f ;w_temp的高低半字节内容交换,结果放回w_temp本身 SWAPF w_temp,W ;w_temp的高低半字节内容再次交换,但是结果放入W寄存器中,在不影响状态寄存器的前提下,实现了把w_temp的原内容复制到W寄存器中。 位操作指令详述 BCF 数据寄存器指定位清0 语法形式:BCF f,b 操作数:f为数据寄存器的低7位地址(0x00~0x7F) B为数据位编号(0~7) 执行时间:一个指令周期 执行过程:使数据寄存器f的的b位清0 状态标志影响:无 说明:该指令可对任何数据寄存器的任意一个位置清0,常用于标志位的设定和清除,或者把某一管脚置成低电平。 指令范例:BCF STATUS,C ;进位(借位)标志C清0 BCF PORTD,7 ;PORTD的第7位输出低电平 BSF 数据寄存器的指定位b置1 语法形式:BSF f,b 操作数:f为数据寄存器的低7位地址(0x00~0x7F) b为数据位编号(0~7) 执行时间:一个指令周期 执行过程:使数据寄存器f的的b位置1 状态标志影响:无 说明:该指令可对任何数据寄存器的任意一个位置置1,常用于标志位的设定和清除,或者把某一管脚置成高电平。 指令范例: BSF INTCON,GIE ;INTCON寄存器的GIE位置1,打开全局中断 BSF PORTD,6 ;PORTD第6位输出高电平 BTFSC 判断数据寄存器中的指定位,为0则跳过下一条指令 语法形式:BTFSC f,b 操作数:f为数据寄存器的低7位地址(0x00~0x7F) b为数据位编号(0~7) 执行时间:一个指令周期或两个指令周期 执行过程:如果数据寄存器f的b位为0,则跳过下一条指令 状态标志影响:无 说 明:该指令可以对数据寄存器的任意一位做0/1的判断,如果数据位为1,程序将按顺序执行其下一条指令,此时一个指令周期;如果数据位为0,那么将跳过紧 跟该指令之后的第一条指令,从第二条指令开始执行,此时使用两个指令周期。该指令最常用于按标志位实现程序的分支跳转的控制。 指令范例: BTFSC STATUS,Z ;测试状态寄存器的Z标志 GOTO Zero ;如果Z=1,执行此处指令 GOTO NotZero ;如果Z=0,执行此处指令 BTFSS 判断数据寄存器的指定位,为1则跳过下条指令 语法形式:BTFSS f,b 操作数:f为数据寄存器的低7位地址(0x00~0x7F) b为数据位编号(0~7) 执行时间:一个指令周期或两个指令周期 执行过程:如果数据寄存器f的b位为1,则跳过下一条指令 状态标志影响:无 说 明:该指令可以对数据寄存器的任意一位做0/1的判断,如果数据位为0,程序将按顺序执行其下一条指令,此时一个指令周期;如果数据位为1,那么将跳过紧 跟该指令之后的第一条指令,从第二条指令开始执行,此时使用两个指令周期。该指令最常用于按标志位实现程序的分支跳转的控制。 指令范例: BTFSS PORTB,7 ;测试PORTB端口,位7 GOTO RB7_Low ;如果RB7=0,执行此处指令 GOTO RB7_High ;如果RB7=1,执行此处指令 立即数与控制操作指令 SLEEP 单片机进入低功耗休眠模式 语法形式:SLEEP 操作数:无 执行时间:一个指令周期 执行过程: 看门狗计数器清0 看门狗计数器的预分频器清0 STATUS寄存器的“TO”标志位置1 STATUS寄存器的“PD”标志位清0 状态标志影响:TO PD 说明:SLEEP指令可以让单片机停止所有的工作进入低功耗休眠模式,在休眠模式下芯片的功耗降至最低。在休眠状态下,单片机的主时钟振荡器将停止,所有内部寄存器的内容保持不变,直到出现某一条件将单片机从休眠状态下唤醒。 指令范例: CALL PrepSleep ;关闭所有不需要的负载,准备进入休眠模式 SLEEP ;现在进入休眠模式 NOP ;唤醒后开始执行指令 CLRWDT 清除看门狗计数器 语法形式:CLRWDT 操作数:无 执行时间:一个指令周期 执行过程: 看门狗计数器清0 看门狗计数器的预分频器清0 STATUS寄存器的“TO”标志位置1 STATUS寄存器的“PD”标志位置1 状态标志影响:TO PD 说 明:如果芯片在编程烧写时启用了独立的片上看门狗电路,则在程序运行的过程中必须隔一段时间就执行这条清除看门狗的命令。如果过了足够长的时间而没有执行 这条指令,到了看门狗计数器计数溢出时就会让单片机产生复位,程序将会从复位地址处重新运行。PIC单片机的看门狗一旦被打开就不能通过软件的方式关闭, 在芯片休眠的时候照样工作,故可以作为让单片机退出休眠的一个条件。通过启用看门狗可以避免软件死循环的故障。需要强调的是在一个好的程序设计中 CLRWDT这条指令只在程序的主循环中出现一次,尽量避免到处放置清看门狗指令,绝对不能把这条指令放到中断服务程序中。 指令范例: MainLoop:~~~ ;程序主循环 CLRWDT ;清看门狗 CALL KeyCheck ;检查按键 CALL Display ;显示刷新 GOTO MainLoop ;重复主循环体 RETLW 子程序结束返回并在W寄存器内赋一8位立即数 语法形式:RETLW k 操作数:k为8位立即数 执行时间:2个指令周期 执行过程:弹出栈顶内容到PC k→W 状态标志影响:无 说明:除了在子程序返回时从W寄存器带出一个8位立即数外,其他的执行情况和指令“RETURN”完全相同。该指令经常被用于查表功能中。 指令范例: MOVF Index,W ;W中设定查表索引值(0~3) CALL Lookup ;调用查表子程序 …… ;其他指令 Lookup:ADDWF PCL,f ;对PC值作修改 RETLW ‘0’ ;返回0对应的ASCII码 RETLW ‘1’ ;返回1对应的ASCII码 RETLW ‘2’ ;返回2对应的ASCII码 RETLW ‘3’ ;返回3对应的ASCII码 RETFIE 中断服务程序结束并返回 语法形式:RETFIE 操作数:无 执行时间:2个指令周期 执行过程:弹出栈顶内容到PC INTCON寄存器的第7位GIE自动置1 状态标志影响:无 说明:该指令把硬件堆栈栈顶的内容(中断发生时的返回地址)弹送到程序计数器PC内,对堆栈的影响如下图所示 和指令“RETURN”的情形基本相同,关键区别是该指令会把INTCON寄存器的第7位全局中断使能位(GIE)置1(在响应中断时该位自动清0)。然后返回到中断发生时的下一条指令处继续运行。 指令范例: MOVF status_temp,w ;准备恢复STATUS寄存器的内容 MOVWF STATUS ;STATUS寄存器被恢复 SWAPF w_temp,f ;准备恢复W寄存器内容 SWAPF w_temp,w ;W寄存器被恢复 RETFIE ;中断返回并允许新的中断响应 RETURN 子程序结束返回 语法形式:RETURN 操作数:无 执行时间:2个指令周期 执行过程:弹出栈顶内容到PC 状态标志影响:无 说明:该指令将栈顶的内容(子程序调用时的返回地址)弹送到程序计数器PC内。注意特殊寄存器PCLATH的内容不会因此改变。程序将会回到在子程序调用时的下一条指令处开始执行。 影响见该图 指令范例: CALL Dly4Tcy ;延时4个指令周期 …… ;其他指令 Dly4Tcy:RETURN ;CALL和RETURN总共消耗4个指令周期 GOTO 程序无条件跳转到指定的地址 语法形式:GOTO m 操作数:m为11位立即数指定的目标地址 执行时间:2个指令周期 执行过程: m→PC【10:0】 PCLATH【4:3】→PC【12:11】 状态标志影响:无 说明:程序无条件立即强行跳转到目的地址处继续执行。目的地址由本指令内含的11位地址码和特殊寄存器PCLATH中的【4:3】一起构成完整的13位地址。 指令范例: ORG 0x000 ;伪指令指定程序的起始地址 GOTO Main ;程序跳转到标号指定的位置处继续执行 MOVLW W寄存器赋立即数 语法形式:MOVLW k 操作数:k为8位立即数 执行时间:一个指令周期 执行过程:k→W 状态标志影响:无 说明:该指令对W寄存器赋一个初值。任何其他数据寄存器如果要赋一个立即数值,必须通过W寄存器传送。 指令范例: MOVLW 0x55 ;【W】=0x55 MOVWF Tmp ;【Tmp】=【W】=0x55 ADDLW W寄存器和8位立即数相加 语法形式:ADDLW k 操作数:k为8位立即数 执行时间:一个指令周期 执行过程:【W】+k→W 状态标志影响:Z DC C 说明:W寄存器的值和8位立即数相加,结果放入W寄存器内 指令范例: MOVLW 0xAA ;W=0xAA ADDLW 0x11 ;W=0xAA+0x11=0xBB SUBLW 立即数减去W寄存器 语法形式:SUBLW k 操作数:k为8位立即数 执行时间:一个指令周期 执行过程:k-【W】→W 状态标志影响:Z DC C 说明:必须注意W寄存器在这条指令中是减数 如果k=W,相减结果为0,则Z=1 如果k>W,没有借位发生,则C=1 如果k<W,有借位发生,则C=0 在PIC单片机内部这条减法指令的执行是先对W寄存器求补码,然后和被减数k相加,所以在判断是否有借位标志时要千万小心 指令范例: MOVLW 0x23 ;W=0x23 SUBLW 0x32 ;W=0x32-0x23=0x0f,k>W所以C=1 IORLW W寄存器和立即数做逻辑或操作 语法形式:IORLW k 操作数:k为8位立即数 执行时间:一个指令周期 执行过程:【W】|k→W 状态标志影响:Z 说明:W寄存器和8位立即数相或,结果放入W寄存器内。按照逻辑或有1出1的法则,此指令可以把W寄存器的任意位设置成数据1 指令范例: IORLW b‘00001111’ ;W寄存器低4位置1 ANDLW W寄存器和立即数做逻辑与操作 语法形式:ANDLW k 操作数:k为8位立即数 执行时间:一个指令周期 执行过程:【W】&k→W 状态标志影响:Z 说明:W寄存器和8位立即数相与,结果放入W寄存器内。按照逻辑与有0出0的法则,可以把W寄存器的任意位置清0 指令范例: ANDLW b‘00001111’ ;W寄存器高4位清0 XORLW W寄存器和立即数做逻辑异或操作 语法形式:XORLW k 操作数:k为8位立即数 执行时间:一个指令周期 执行过程:【W】^k→W 状态标志影响:Z 说明:W寄存器和8位立即数异或,结果放入W寄存器内。按照逻辑异或的法则,任何数和1异或,结果为其反码;任何数和其自身异或,结果为0。所以该指令可以把W寄存器的任意位数反转,或者判断W寄存器的内容是否为特定值 指令范例: 例1:任意数据按位取反 XORLW b‘11111111’ ;取W寄存器8位反码 例2:判断W寄存器内容是否为特定值 XORLW 0x34 ;判断W=0x34? BTFSC STATUS,Z ;W不等于0x34,则跳过下条指令 GOTO W34 ;W等于0x34,转去执行相关操作
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:PIC指令详解.doc
    链接地址:https://www.zixin.com.cn/doc/3560629.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork