电子技术论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

PICmicro微控制器处理器体系结构

[复制链接]
发表于 2018-3-21 20:29:12 | 显示全部楼层 |阅读模式

注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
PICmicro微控制器处理器体系结构:
1)中央处理器;
2)PICmicro微控制器的算术逻辑单元:
3)状态寄存器;
4)数据传送;
5)寄存器堆寻址;
6)程序计数器和堆栈;
7)复位;
8)中断;
9)不同型号的体系结构差别;
10)低档PICmicro微控制器件;
11)PIC17Cxx型体系结构;
12)PIC18Cxx型体系结构。
 楼主| 发表于 2018-3-21 23:32:36 | 显示全部楼层
一、中央处理器:
PICmicro微控制器处理器可以认为是一个算术/逻辑单元(Arithmetic/Logic Unit,ALU)它从不同的寄存器中接收、处理和保存数据到不同的寄存器中。大量的具有特定用途的寄存器(称硬件寄存器hardware register)、I/O寄存器、变量寄存器以及RAM寄存器(称文件寄存器file register)控制着处理器的运行,其中适用于变量存储器的应用程序软件可以使用RAM寄存器。
PICmicro微控制器处理器的三种访问数据的方法:
直接寻址意味着指令包含了在寄存器堆中的寄存器地址;如果指定了一个常量,那么它在指令中指定“立即”,最后一种寻址方法是使用变址寄存器。
 楼主| 发表于 2018-3-22 22:03:42 | 显示全部楼层
二、PICmicro微控制器的算术逻辑单元
PICmicro微控制器的算术逻辑单元(ALU)进行一次8位(1比特)或一次16位(2比特)的算术运算、逐位运算和移位运算,把ALU看着是大量的与一个多路复用器(Multiplexer,Mux)并行执行的处理器操作,多路复用是用来选择那些应用程序将使用的结果,状态(STATUS)寄存器保存了运算结果,ALU是状态寄存器位值的主要调节器,这些位值用来记录运算的结果,并为数据移位指令提供输入。
 楼主| 发表于 2018-3-22 22:50:12 | 显示全部楼层
三、状态寄存器
状态寄存器是用于控制应用代码和监视算术及逐位运算状态的主要的CPU执行控制寄存器,每个PICmicro微控制器处理器体系结构都有3位标识(“Flags”)位,它们可以根据算术及逐位运算的结果而按位设置或复位。它们分别是进位(“carry”)、数字进位(“digit carry”)和0位(“zero”);在中低档器件中,它们分别是状态寄存器的0位、1位和2位。这些位通常称为执行状态标记位(Z、DC和C)。
 楼主| 发表于 2018-3-22 23:49:31 | 显示全部楼层
四、数据传送
     PICmicro微控制器处理器的三种访问数据(读和写)的方法与其他传统计算机处理器使用的方法相同,当在指令中指定一个7位寄存器地址时,它就是直接寻址,并且可以访问一个有128个地址堆中的任何一个寄存器,访问一个寄存器的算术运算和逐位运算可以把结果存在w寄存器或返存源寄存器。
    为了提供立即寻址方式,在ALU前安装了多路复合器,以从寄存器指令的8个最后有效位中选择数据源。
    在一些应用场合直接寻址或明确地指定一个值还不够用,人们希望给予地址以算术结构,通过把想要访问的地址加载到FSR中实现了变址寻址方法,这个8位寄存器包含了数据传送的寄存器堆(Bank)。
 楼主| 发表于 2018-3-23 21:16:22 | 显示全部楼层
五、寄存器堆寻址
对于PIC初学者来说,最难于理解的概念之一是在中低档PIC器件中使用的寄存器堆(Bank)的概念, 在PICmicro微控制器中直接寻址可用的寄存器的数量受限于所用指令的位数,在低档 PICmicro微控制器中指令仅有5位,即每堆总的可寻址32个寄存器,中档 PICmicro微控制器中指令有7位,即每堆总的可寻址128个寄存器。为了提供更多的寄存器地址,引入了寄存器堆的概念,每一个堆是一个地址的位数所允许的最大的地址空间,当一个应用程序执行时,数据传送是在一个具体的堆中进行的,堆中的128个寄存器可直接访问。PICmicro微控制器都有大量供所有堆使用的通用硬件寄存器,这些寄存器(中档 PICmicro微控制器)是INDF和FSR、STATUS、INTCON、PCL以及PCLTH,这些寄存器的访问与所选的堆无关。
 楼主| 发表于 2018-3-23 23:19:52 | 显示全部楼层
六、程序计数器和堆栈
    为了说明直接写入PICmicro微控制器程序计数器是怎么工作的,可以考虑在一个中档PICmicro微控制器的程序存储器中,利用直接写入程序计数器的方式跳到地址0x01234,首先,数0x012被写入PCLATH寄存器,接着数0x034被写入PCL寄存器,当写入PCL寄存器操作完成后,程序计数器的高位比特从PCLATH寄存器加载:
   PCLATH  = 0x012;     //设置PCLATH寄存器的值
   PCL  = Ox034;        //改变程序计数器的值
                         //程序计数器的值 =( PCLATH<<8 ) + PCL
                         //               =( 0x012<<8 )+ Ox034
                         //               = 0x01200+ Ox034
                         //               = 0x01234
    如果PCLATH寄存器被加载0x012,并且在执行中遇到了指令goto 0x0567,那么程序计数器的11个最低有效位加载0x0567,而忽略PCLATH寄存器的3个最低有效位位值0b0010:
   PCLATH  = 0x012;     //设定页值
   goto  Ox0567;        //PC = ((PCLATH & 0x018 )<<8 ) + Address
                         //   =(( 0x012 & 0x018 )<<8 ) + Ox0567
                         //   = 0x01000+ Ox0567
                         //   = 0x01567
    在这个例子中,当执行goto指令时,程序计数器将加载0x01567;
前面例子的结果0x01234是正确的,因为直接更新了PCL。如果执行的是goto 0x034指令,那么跳转到的地址将是0x01034,因为跳到的地址的最高3位等于0,所以一个goto或call指令一般地从它们本身和PCLATH寄存器得到地址,但在计算新地址时只使用了它的两个位值(4和3)。
    子程序调用指令call的执行十分类似于goto指令和写到程序计数器的指令,只是在更新程序计数器之前,要进入的地址“推”到了堆栈中,所推入堆栈的值并不是call指令的地址,而是call指令后面的指令的地址,是调用的子程序的返回地址,指令从程序存储器中取出,程序计数器就获得一个递增,而当执行call指令时,将这个增加后的值(而不是最初的值)存放在了堆栈中。
 楼主| 发表于 2018-3-23 23:51:32 | 显示全部楼层
七、复位
6个不同的情形将导致PICmicro微控制器复位(即硬件重新初始化和处理器停止运行):
                  复位事件与状态位位值
    事件                   _TO    _PD    _POR     _BOR
1)上电复位                 1      1       0        1
2)运行中的 _MCLR复位       U      U       1        1
3)掉电复位                 1      1       1        1
4)监视计时器复位           0      1       1        1
5)休眠期间 _MCLR复位       1      0       1        1
6)休眠期间 _WDT复位        0      0       1        1
 楼主| 发表于 2018-3-24 12:29:34 | 显示全部楼层
     中高档PICmicro微控制器的复位向量的地址是0(0x0000),低档PICmicro微控制器的复位向量地址是程序存储器的最大地址(如存储器容量512条指令的器件)511(0x0FFF),大多数人并不编程低档PICmicro微控制器复位向量(0x0FFF,对应指令xorlw 0x0FFF ),从而使程序计数器转到0并开始执行存放在那儿的应用程序,看起来好像复位向量地址是0(与中档器件一样)。
八、中断
    在任何时刻都可能有中断请求事件来到处理器,这些请求可以是TMR0在正常运行中出现溢出,PORTB的输入管脚改变了状态等的结果,为了使中断事件请求传到处理器,必须设置对应中断事件请求启用位(称之为E bits)和INTCON寄存器的GIE位,对于PICmicro微控制器的3个基本中断:TMR0溢出、RBO/INT管脚状态改变和PORTB管脚改变,E标识位和F标识位在INTCON寄存器中,其他中断事件E标识位和F标识位可能在PIR和PIE寄存器中,也有可能在外设控制寄存器中。
 楼主| 发表于 2018-12-20 23:42:59 | 显示全部楼层
截图20181220234158.jpg
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

GMT+8, 2024-5-15 18:59 , Processed in 0.072820 second(s), 7 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号

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