PIC中档单片机汇编指令详解(5)

位操作指令详述

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,执行此处指令

原文地址:https://www.cnblogs.com/wangluojisuan/p/3028092.html