位操作指令详述
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,执行此处指令