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