📄 pic16cxxx-7.htm
字号:
<br>
代码: <img src="image/a337.gif" width="162" height="52"><br>
<br>
指令周期: 1<br>
操作: f+1→d<br>
影响状态位: Z<br>
说明: f寄存器内容加1后送W(d=0)或f本身(d=1)。<br>
───────────────────────────</p>
<p>18. 寄存器加1,结果为0则跳<br>
格式: INCFSZ f,d<br>
<br>
代码: <img src="image/a338.gif" width="163" height="55"><br>
<br>
指令周期: 1或2(跳转为2)<br>
操作: f+1→d,结果为0则跳(PC+1→PC)<br>
影响状态位: 无<br>
说明: f寄存器内容加1,结果存入W(d=0)或f(d=1),如果结果为0,则PC+1→PC,跳<br>
过下一条指令。<br>
<img src="image/a339.gif" width="313" height="69"> <br>
───────────────────────────</p>
<p>19. 常数"或"指令<br>
格式: IORLW K<br>
<br>
代码: <img src="image/a340.gif" width="187" height="57"><br>
<br>
指令周期: 1<br>
操作: W∨K→W<br>
影响状态位: Z<br>
说明: W寄存器内容和8位立即数K做逻辑或,结果放入W。<br>
例: IORLW 55H ; W∨55H→W<br>
───────────────────────────<br>
20. 寄存器"或"指令<br>
格式: IORWF f,d<br>
<br>
代码: <img src="image/a341.gif" width="154" height="57"><br>
<br>
指令周期: 1<br>
操作: W∨f→d<br>
影响状态位: Z<br>
说明: W寄存器内容和f寄存器内容做逻辑或运算,结果放入W(d=0)或f(d=1)。<br>
例: IORWF 10,0 ; W∨F10→W<br>
IORWF 10,1 ; W∨F10→F10<br>
───────────────────────────<br>
21. 常数传送指令<br>
格式: MOVLW K<br>
<br>
代码: <img src="image/a342.gif" width="189" height="52"><br>
<br>
指令周期: 1<br>
操作: K→W<br>
影响状态位: 无<br>
说明: 8位立即数送入W寄存器。<br>
───────────────────────────</p>
<p>22. f寄存器传送指令<br>
格式: MOVF f,d<br>
<br>
代码: <img src="image/a346.gif" width="162" height="58"><br>
<br>
指令周期: 1<br>
操作: f→d<br>
影响状态位: Z<br>
说明: 将f寄存器内容传至W(d=0)或f本身(d=1)。这条指令会影响状态位Z,所以经常<br>
用来判断寄存器是否为0。见下例。<br>
<img src="image/a347.gif" width="367" height="87"> <br>
───────────────────────────</p>
<p>23. W寄存器传送指令<br>
格式: MOVWF f<br>
<br>
代码:<img src="image/a348.gif" width="160" height="53"><br>
<br>
指令周期: 1<br>
操作: W→f<br>
影响状态位: 无<br>
说明: W寄存器内容传送至f,W保持不变。<br>
例: MOVLW 55H ; 55H→W<br>
MOVWF F10 ; W(55H)→F10<br>
───────────────────────────<br>
24. 空操作指令<br>
格式: NOP<br>
<br>
代码: <img src="image/a349.gif" width="163" height="58"><br>
<br>
指令周期: 1<br>
操作: 空操作<br>
影响状态位: 无<br>
说明: 不做任何操作,只使PC加1常用来起延时作用。<br>
───────────────────────────</p>
<p>25. OPTION寄存器赋值指令<br>
格式: OPTION<br>
<br>
代码:<img src="image/a350.gif" width="147" height="58"><br>
<br>
指令周期: 1<br>
操作: W→OPTION寄存器<br>
影响状态位: 无<br>
说明: 将W寄存器内容载入OPTION寄存器。详见OPTION寄存器详介。由于在PIC16CXX<br>
中OPTION寄存器是直接可读/写的,这点和PIC16C5X不同。所以在PIC16CXX中,<br>
用户不必使用OPTION指令。而可以直接读/写OPTION寄存器(81H)。保留它只是<br>
为了和PIC16C5X指令兼容,使得为PIC16C5X写的代码容易移植到PIC16CXX中。<br>
在PIC16CXX中,可以这样置OPTION寄存器。<br>
例: BSF STATUS,RP0<br>
MOVLW OP_DATA<br>
MOVWF OPTION<br>
BCF STATUS,RP0<br>
───────────────────────────</p>
<p>26. 中断返回指令<br>
格式: RETFIE<br>
<br>
代码: <img src="image/a351.gif" width="152" height="62"><br>
<br>
指令周期: 2<br>
操作: 栈顶→PC,1→GIE位<br>
影响状态位: 无<br>
说明: 中断服务子程序返回指令。栈顶为返回地址,压入PC。同时全体中断允许位GIE(在<br>
INTCON中)置为"1"。<br>
───────────────────────────<br>
27. 子程序带参数返回指令<br>
格式: RETLW K<br>
<br>
代码: <img src="image/a352.gif" width="197" height="50"><br>
<br>
指令周期: 2<br>
操作: 栈顶→PC,K→W<br>
影响状态位: 无<br>
说明: 子程序返回,栈顶内容→PC同时8位常数K→W,返回到子程序调用处。<br>
───────────────────────────</p>
<p>28. 子程序不带参数返回<br>
格式: RETURN<br>
<br>
代码: <img src="image/a353.gif" width="155" height="51"><br>
<br>
指令周期: 2<br>
操作: 栈顶→PC<br>
影响状态位: 无<br>
说明: 子程序返回,栈顶内容→PC,返回到子程序调用处。注意返回不带参数,见上条指令。<br>
───────────────────────────<br>
29. 寄存器带C循环左移指令<br>
格式: RLF f,d<br>
<br>
代码: <img src="image/a354.gif" width="158" height="54"><br>
<br>
指令周期: 1<br>
操作: f(n)→d(n+1),f(7)→C,C→d(0)<br>
影响状态位: C<br>
说明: 将f寄存器带C循环左移,结果存入W(d=0)或f(d=1),如下图所示。<br>
<img src="image/a355.gif" width="470" height="78"><br>
───────────────────────────</p>
<p>30. 寄存器带C循环右移指令<br>
格式: RRF f,d<br>
<br>
代码:<img src="image/a356.gif" width="153" height="52"><br>
<br>
指令周期: 1<br>
操作: f(n)→d(n-1),f(0)→C,C→d(7)<br>
影响状态位: C<br>
说明: f寄存器带C循环右移,结果存入W(d=0)或f(d=1),如下图所示。<br>
<br>
<img src="image/a357.gif" width="409" height="77"><br>
───────────────────────────</p>
<p>31. 进入低功耗睡眠指令<br>
格式: SLEEP<br>
<br>
代码: <img src="image/a358.gif" width="153" height="59"><br>
<br>
指令周期: 1<br>
操作: 0→PD,1→TO 00→WDT,0→WDT预分频器<br>
影响状态位: TO,PD<br>
说明: 执行本指令后芯片进入低功耗睡眠模式,芯片OSC1振荡停止。<br>
───────────────────────────<br>
32. 常数减法指令<br>
格式: SUBLW K<br>
<br>
代码:<img src="image/a359.gif" width="183" height="53"> <br>
<br>
指令周期: 1<br>
操作: K→W<br>
影响状态位: C,DC,Z<br>
说明: 8位常数K减W寄存器内容,结果放入W。PIC的减法运算通过做补码加法来实现。<br>
<img src="image/a360.gif" width="363" height="130"> <br>
───────────────────────────</p>
<p>33. 寄存器减法指令<br>
格式: SUBWF f,d<br>
<br>
代码:<img src="image/a361.gif" width="157" height="58"> <br>
<br>
指令周期: 1<br>
操作: f-W→d<br>
影响状态位: C,DC,Z<br>
说明: f寄存器减W寄存器结果放入W(d=0)或f(d=1)。<br>
<img src="image/a362.gif" width="333" height="190"> <br>
───────────────────────────<br>
34. 寄存器半字节交换指令<br>
格式: SWAPF f,d<br>
<br>
代码:<img src="image/a363.gif" width="167" height="58"><br>
<br>
指令周期: 1<br>
操作: f(0,3)→d(4,7),f(4,7)→d(0,3)<br>
影响状态位: 无<br>
说明: f寄存器高4位和低4位交换位置后结果存入W(d=0)或f(d=1),见下图:<br>
<img src="image/a364.gif" width="319" height="127"> </p>
<p><img src="image/a365.gif" width="227" height="54" hspace="80"></p>
<p>例: MOVLW 56H<br>
MOVWF 8 ; 56H→F8<br>
SWAPF 8,1 ; F8=65H<br>
<br>
───────────────────────────<br>
35. 设置I/O方向控制寄存器指令<br>
格式: TRIS f<br>
<br>
代码: <img src="image/a366.gif" width="152" height="55"><br>
<br>
指令周期: 1<br>
操作: W→I/O控制寄存器TRISf(f=5,6)<br>
影响状态位: 无<br>
说明:由于在PIC16CXX中,TRIS(85H,86H)寄存器是直接可读/写的,所以用户不必使<br>
用这条指令来设置I/O控制寄存器,保留它只是为了和PIC16C5X向上兼容,使为<br>
PIC16C5X写的代码易移植到PIC16CXX中。参考OPTION指令。在PIC16CXX中可<br>
以这样设TRIS寄存器。<br>
例: BSF STATUS,RP0<br>
MOVLW TRISA_DA<br>
MOVWF TRISA<br>
BCF STATUS,RP0<br>
───────────────────────────</p>
<p>36. 立即数"异或"指令<br>
格式: XORLW K<br>
<br>
代码: <img src="image/a368.gif" width="179" height="53"><br>
<br>
指令周期: 1<br>
操作: W○K→W<br>
影响状态位: Z<br>
说明: W寄存器和8位常数K做"异或"运算后存入W。<br>
───────────────────────────<br>
37. 寄存器"异或"指令<br>
格式: XORWF f,d<br>
<br>
代码: <img src="image/a369.gif" width="154" height="55"><br>
<br>
指令周期: 1<br>
操作: W○f→d<br>
影响状态位: Z<br>
说明: W寄存器内容和f寄存器内容做"异或"运算,结果存入W(d=0)或f(d=1)。<br>
例: MOVLW 55H<br>
MOVWF 10 ; F10=55H<br>
MOVLW AAH ; W=AAH<br>
XORWF f,1 ; F10=FFH</p>
<div align="right">
<p><a href="PIC16Cxxx-7-1.htm">下一页</a> </p>
</div>
<p><a href="PIC16Cxxx-1.htm">第一章</a> <a href="PIC16Cxxx-2.htm">第二章</a>
<a href="PIC16Cxxx-3.htm">第三章</a> <a href="PIC16Cxxx-4.htm">第四章</a>
<a href="PIC16Cxxx-5.htm">第五章</a> <a href="PIC16Cxxx-6.htm">第六章</a>
<a href="PIC16Cxxx-7.htm">第七章</a> <a href="PIC16Cxxx-8.htm">第八章</a>
<a href="PIC16Cxxx-9.htm">第九章</a> <a href="PIC16Cxxx-10.htm">第十章</a></p></td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"> </td>
<td> </td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#990000">
<td height="1" width="634"></td>
</tr>
<tr align="right">
<td height="6"></td>
</tr>
<tr align="right">
<td><font color="#990000" size="2">[ <a href="index.htm">返回</a> ]</font>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -