电子技术论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
下载方法|用单线程|避免多扣帖子规范|求助必读|发帖建议积分策略|勋章介绍|新人必读获取金币|推广论坛|出售帖子基本礼节|致会员信|版规总则
禁涉政治|反对低俗|举报专帖征集相片|留下足迹|推荐精华上传附件|制作分卷|使用网盘禁发qq群|恶意灌水|纯表情帖加入团队|监督机制|安全上网
楼主: cyc20180228

PICmicro微控制器指令集

[复制链接]
 楼主| 发表于 2018-12-17 21:51:43 | 显示全部楼层
     14)左移位或向上移动一位( rlf )指令格式
     rlf Reg ,d
     周期:1
     标识位:
      Z =Reg.7
      D = Reg<<1+C
     15)右移位或向下移动一位( rrf )指令格式
     rrf Reg ,d
     要想移动一个寄存器的内容而不丢失一位位值还有一个小技巧,即执行下面的指令:
     rrf Reg ,w
     rrf Reg ,f
 楼主| 发表于 2018-12-17 22:30:50 | 显示全部楼层
本帖最后由 cyc20180228 于 2018-12-17 22:59 编辑

    3、执行改变运算符
    由goto、call、return和有条件跳跃指令和跳跃下一个指令skip next等组成的功能指令组。
 楼主| 发表于 2018-12-17 23:32:57 | 显示全部楼层
本帖最后由 cyc20180228 于 2018-12-17 23:34 编辑

      1)goto 指令格式:
      goto Address
      周期:
           2
      标识位改变:
           None
      2)call 指令格式:
      call Address
      周期:
           2
      标识位改变:
           None
      3)return 指令格式:
      return
      周期:
           2
      标识位改变:
           None
      4)incfsz 指令格式:
      incfsz Reg ,d
      周期:
           1
      标识位:
           None
       d=Reg - 1
       PC++lf d=0
 楼主| 发表于 2018-12-17 23:58:36 | 显示全部楼层
      5)addwf PCL,f 指令通过PCL把w寄存器的内容加到程序计数器,当执行到addwf PCL,f 指令时程序计数器的值已经递增到下一个地址。
        addwf PCL,f 指令格式:
        addwf PCL,f
        周期:
           2
       标识位改变:
        Z= PCL + w
        C= PCL + w
       DC=PCL & 0x0F + w & 0x0F
 楼主| 发表于 2018-12-18 00:22:30 | 显示全部楼层
本帖最后由 cyc20180228 于 2018-12-18 00:23 编辑

     4、处理器控制指令:直接用于控制PICmicro微控制器处理器的指令只有3个,即复位监视计数器clrwdt 指令 、PIC保持sleep 指令和空操作nop 指令。
     1)clrwdt 指令格式:
     clrwdt
     周期:
           1
     标识位:
         None
     2)sleep 指令格式:
     sleep
     周期:
      Undefined
     标识位:
       _TO = 1
       _PD = 0
     3)nop 指令格式:
     nop
     周期:
           1
     标识位:
         None
   
 楼主| 发表于 2018-12-18 14:17:44 | 显示全部楼层
本帖最后由 cyc20180228 于 2018-12-18 14:30 编辑

    二、低档器件指令集
    中档PICmicro微控制器的指令集是建立在低档PICmicro微控制器的基础之上的,上述中档指令集(除了addlw 、sublw 、retfiereturn 外)都可以用在低档器件上,并且应用开发的技术也相同,这里只讲一些指令的不同及遇到的问题。
    低档器件没有包含直接的加减法指令
    1)加法运算需要通过执行以下代码:
    movwf TempReg        ;保存w寄存器的内容
    movlw Constant
    addwf TempReg ,w     ;用要加到常数上的w寄存器的初始值加载累加器
   
    2)减法运算需要通过执行以下代码:
    movwf TempReg        ;保存w寄存器的内容
    movlw Constant
    xorwf TempReg , f    ;
                         ;w = Constant,TempReg=worig^Constant
    xorwf TempReg , w    ;w = Constant^(worig^Constant)
                         ;TempReg = worig^Constant
                         ;w = worig,TempReg = worig^Constant
    xorwf TempReg , f    ;w = worig
                         ;TempReg = worig^Constant^( worig )
                         ;w = worig,TempReg = Constant
    subwf TempReg , w    ;用减去常数的w寄存器的初始值加载累加器
    这些操作包含不少指令(因此需要一个文件寄存器),但它们可以模拟addlwsublw 指令,可以放在一个宏中供你使用。
 楼主| 发表于 2018-12-18 18:47:13 | 显示全部楼层
       低档PICmicro微控制器中没有采用中断技术,所以缺少retfie 指令并不奇怪,但缺少return 指令就觉得奇怪。
 楼主| 发表于 2018-12-19 09:29:38 | 显示全部楼层
     三、PIC17Cxx型器件指令集
     1、数据传送指令:
     PIC17Cxx与其他器件的最大不同在于数据传送指令:不是以w寄存器或WREG为中心,而是着重于在主寄存器和整个(或文件)寄存器地址空间之间的数据传送。
 楼主| 发表于 2018-12-19 10:32:55 | 显示全部楼层
     PIC17Cxx器件没有movf 指令,替代它的是movfpmovpf 指令:它们分别把数据从整个寄存器集(地址0x000到0xFF)传送到(地址0x000到0x01F)或相反。
     1)movfp 指令格式:
      movfp f,p
      指令位模式:
      011ppppp|ffffffff
      指令操作:目标指令(主寄存器=文件寄存器)
      标识位改变:None
      指令周期:1
     2)movpf 指令格式:
      movpf p,f
      指令位模式:
      010ppppp|ffffffff
      指令操作:目标指令(主寄存器=文件寄存器)
      标识位改变:None
      指令周期:1
     注:“movf Reg,f”可被仿真为:
      movfp Reg,WREG         ;把寄存器内容加载到WREG
      iorlw 0                ;标识位适当置0
 楼主| 发表于 2018-12-19 10:58:08 | 显示全部楼层
本帖最后由 cyc20180228 于 2018-12-19 11:45 编辑

      PIC17Cxx器件还有movlbmovlr 指令:用于把直接值分别传送到BSR寄存器低位4位和高位4位上去。
      3)movlb 指令格式:
      movlb Constant
      指令位模式:
      10111000|xxxxkkkk
      指令操作:BSR:3-0 = Constant
      标识位改变:None
      指令周期:1
     4)movlr 指令格式:
      movlr Constant
      指令位模式:
      1011101x|kkkkxxxx
      指令操作:BSR:7-4 = Constant
      标识位改变:None
      指令周期:1
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|家电维修技术论坛 ( 鄂ICP备09003585号-2 )

GMT+8, 2025-2-22 23:32 , Processed in 0.056924 second(s), 3 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

CopyRight © 电子技术论坛
电子邮箱:8794149@qq.com | 联系 QQ:3081868839 | 官方网址:www.dzdu.com

Qiji. All Rights Reserved


服务条款 | 站长声明

Wuhan Qiji Technology Co., Ltd.武汉奇迹科技有限公司版权所有


鄂ICP备09003585号-2鄂公网安备42010602000420号

快速回复 返回顶部 返回列表