精华内容
下载资源
问答
  • C51串口的SCON寄存器工作方式

    千次阅读 2020-03-14 13:43:22
    它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表: 其中fosc为晶振频率 SM2:多机通讯控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI...

    串行口控制寄存器SCON

    它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:
    在这里插入图片描述
    其中fosc为晶振频率

    SM2:多机通讯控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。

    REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。

    TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。

    RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。

    TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。

    RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0。

    串行口的工作方式

    8051单片机的全双工串行口可编程为4种工作方式,现分述如下:

    1,方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。
    (1)输出串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。
    (2)输入当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。

    2,方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。
    (1)输出当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。
    (2)输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

    3,方式2
    方式2为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。
    (1)输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。
    (2)输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。

    4,工作方式3
    方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。

    展开全文
  • CPU寄存器操作方式

    2016-01-10 13:01:49
    本人上传资源中有嵌入式编程相关的辅助工具,如果有意的可以下载使用,以及arm启动框架的工程,上传的工具和软件根据自己多年的工作经验自己编写的。
    

    CPU寄存器的读取方式,其实就是读取某个地址中存储的数据,只不过这个地址是芯片厂商规定好用于特定功能的。
    一般IDE都会提供寄存器的头文件,可以参考芯片的编程手册,手册中都有每个模块的寄存器定义,以及地址说明,如果你不想使用头文件定义可以自己手动编写,例如你想访问一个32位的寄存器地址为0xE0000000,可以这样写,这些地址均在cpu编程手册中有,
    volatile unsigned long *reg = (volatile unsigned long *)(0xe0000000);
    unsigned long val;
    val = *reg;//读取0xe0000000地址中的数据
    *reg = 12;//写入一个值到0xe0000000地址中

    如果是想读取通用寄存器R0-R7等可以通过汇编语言进行操作,将读取的数据传到c中即可,本例子是在iar中的汇编格式
    在c语言中可以这样写,即读取r0的内容到val中
    unsigned long val;
    asm("mov %0,r0":"=r"(val));

    通过以上两种方式将数据读取出来就可以通过串口将此值打印出来,
    如果有其他硬件和嵌入式的问题可以咨询。像以上我讲的操作方式,很少有人讲,研究的深入才能讲出来。
    本人上传资源中有嵌入式编程相关的辅助工具,如果有意的可以下载使用,以及arm启动框架的工程,上传的工具和软件根据自己多年的工作经验自己编写的。

    展开全文
  • ARM 芯片 相关概念 --- 工作模式、寄存器种类、寻址方式

    ARM核演变图

    这里写图片描述

    芯片比较

    这里写图片描述

    ARM的工作模式

    详见 ARM Architecture Reference Manual 手册,A2.2节。
    ARM支持7种工作模式。

    这里写图片描述
    相应的缩写也要记住。

    linux内核运行在ARM的svc模式下。
    linux应用程序运行在ARM的usr模式下。

    ARM的寄存器种类

    详见 ARM Architecture Reference Manual 手册,A2.3节。

    这里写图片描述

    ARM微处理器共有37个**32位寄存器,其中**31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个状态寄存器都是可访问的

    这里写图片描述

    这里写图片描述

    R0-R7是不分组寄存器。这意味着在所有处理器模式下,访问的都是同一个物理寄存器。不分组寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未分组寄存器。

    分组寄存器R8-R12:
    可以分为 FIQ模式分组寄存器R8-R12,和 FIQ以外的分组寄存器R8-R12

    分组寄存器R13、R14
    1. 寄存器R13通常用做堆栈指针SP。
    2. 寄存器R14用作子程序链接寄存器(LinkRegister-LR),也称为LR,指向函数的返回地址。

    寄存器R15被用作程序计数器,也称为PC 。其值等于当前正在执行的指令的地址+8。

    程序状态寄存器:

    程序状态寄存器有两个:CPSR、SPSR。
    ARM**所有工作模式**下都可以访问程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。

    CPSR在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存中断之前的CPSR的值,以便异常返回后恢复异常发生时的工作状态。

    只有在 Exception 异常中断模式下,两种程序状态寄存器才会同时都用。

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    ARM寻址方式

    所谓寻址方式就是处理器根据指令中给出的信息来找到指令所需操作数的方式。

    1、立即数寻址:
    立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即数寻址。
    例如以下指令:
    ADD R0,R0,#0x3f ;R0←R0+0x3f
    在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀。立即数要加上井号#作为标志。

    2、寄存器寻址
    寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的寻址方式。
    ADD R0,R1,R2 ;R0←R1+R2
    该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。

    3、寄存器间接寻址
    寄存器间接寻址就是寄存器中的存放的是操作数在内存中的地址。
    例如以下指令:
    LDR R0, [R2] ;R0← [R2]
    在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中。第二条指令将以R1的值为地址的存储器中的数据传送到R0中。

    4、基址变址寻址
    基址变址寻址就是将寄存器里的内容(基地址)与指令中给出的地址偏移量相加,从而得到操作数在内存中的地址。
    例如以下指令:
    LDR R0, [R1, #4] ;R0 ← [R1 + 4]

    5、相对寻址
    与基址变址寻址方式相类似,相对寻址PC指针的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。

    例如,以下程序段完成子程序的调用和返回,采用跳转指令BL采用了相对寻址方式:

    这里写图片描述

    展开全文
  • 寄存器

    千次阅读 2016-09-04 22:24:52
    8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。 通用寄存器 有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及...

    8086寄存器

    编辑
    8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。

    通用寄存器

    有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).
    顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。
    数据寄存器分为:
    AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。
    BH&BL=BX(base):基址寄存器,常用于地址索引
    CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.
    寄存器寄存器
    DH&DL=DX(data):数据寄存器,常用于数据传递。
    他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。
    另一组是指针寄存器变址寄存器,包括:
    SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置
    BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置
    SI(Source Index):变址寄存器,可用来存放相对于DS段之源变址指针
    DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针
    这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址

    指令指针IP

    指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加(取出该字节的长度,如:BIU从内存中取出的是1个字节,IP就会自动加1,如果BIU从内存中取出的字节数长度为3,IP就自动加3),指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)。

    标志寄存器

    8086有一个16位的标志性寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。标志寄存器(Flags Register,FR)又称程序状态字(Program Status Word,PSW)。这是一个存放条件标志、控制标志寄存器,主要用于反映处理器的状态和运算结果的某些特征及控制指令的执行。
    标志寄存器位置图:[4] 
    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
            OF DF IF TF SF ZF   AF   PF   CF
    OF:溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
    DF:方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。
    IF:中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:
    (1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求
    (2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
    TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清除。
    (1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。
    (2)如果TF=0,则处于连续工作模式。
    SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为非负数时,SF的值为0,否则其值为1。当运算结果没有产生溢出时,运算结果等于逻辑结果(即应该得到的正确的结果),此时SF表示的是逻辑结果的正负,当运算结果产生溢出时,运算结果不等于逻辑结果,此时的SF值所表示的正负情况与逻辑结果相反,即:SF=0时,逻辑结果为负,SF=1时,逻辑结果为非负。
    ZF:零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果
    寄存器寄存器
    是否为0时,可使用此标志位。
    AF:( Assistant Carry Flag)下列情况下,辅助进位标志AF的值被置为1,否则其值为0:
    (1)、在字操作时,发生低字节向高字节进位或借位时
    (2)、在字节操作时,发生低4位向高4位进位或借位时。
    PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。
    CF:进位标志CF主要用来反映无符号数运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

    段寄存器

    为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址
    寄存器寄存器
    CS(Code Segment):代码段寄存器
    DS(Data Segment):数据段寄存器
    SS(Stack Segment):堆栈段寄存器
    ES(Extra Segment):附加段寄存器
    当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存作为战场,用寄存器做为军事基地,以加速工作。
    备注:由于所讲的是16位cpu(IP寄存器的位数为16,即:偏移地址为16位)2的16次幂就是64K,所以16位段地址不能超过64K,超过64K会造成64K以上的地址找不到。

    展开全文
  • ARM基础学习-寄存器寻址方式和指令

    千次阅读 2017-04-30 17:13:02
    寻址方式数据都存在存储器中,寻址简单地说就是找到存储数据或指令的地址。存储器有很多存储单元,用于存储数据。arm指令
  • 线性反馈移位寄存器

    千次阅读 2020-03-10 10:47:22
    工作方式:首先计算反馈函数,然后把a1输出,a2移到a1,an移到an-1,接着把反馈函数计算的值移到an,依次循环下去 这些级的内容构成该反馈移位寄存器的状态,每一状态对应GF(2)上的一个n维向量...
  • 串行工作模式之同步移位寄存器的输入输出方式 主要用于扩展并行输入或输出口。数据有RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接受均为8位数据。低位在前,高位在后。 //串行口...
  • 背景: 计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 ...寄存器工作方式: (1)找到相关的位 (2)读取这些的位 内存的工作方式: ...
  • 寄存器(cpu工作原理)

    万次阅读 多人点赞 2016-12-02 21:06:37
    1、一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。 区别: 内部总线实现CPU内部各个器件之间的联系。 外部总线实现CPU和主板上其它器件的联系。 8086CPU有14个寄存器 它们...
  • ARM寄存器的7种工作模式 CPSR[5:0] 10000 user 10001 FIQ 10010 IRQ 10011 SVC 10111 中止 11011 未定义 11111 系统 用这两个指令读写CPRS的值 msr mrs 如: MRS R1,CPSR ; 将CPSR状态寄存器读取...
  • ARM寄存器

    2015-08-05 15:28:05
    一、ARM工作状态下的寄存器组织 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个位状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式...
  • 访问外设寄存器的四种方式

    千次阅读 2018-10-16 11:37:57
    访问外设寄存器是底层驱动编程的基本工作,访问外设寄存器都有哪些方式呢?
  • 一、GPIO工作方式 1.输入浮空模式:CPU可以读取到外部的高低电平,输入的高低是不确定的完全由外部输入决定。例如按键可以使用这个模式。 2.输入上拉模式:就是在无信号状态默认是高电平,当我们输入的低电平是...
  • 汇编语言之寄存器(CPU工作原理)

    千次阅读 2016-10-30 21:17:56
    一个典型的CPU,由运算器、控制器、寄存器等器件组成,对于游戏修改者来说,重点学习寄存器,其它不必管。 不同的CPU,寄存器的个数、结构是不相同的,8086CPU有14个寄存器,每个寄存器有一个名称,我们对它进行分类...
  • C51串口的SCON寄存器工作

    千次阅读 2013-12-02 09:09:30
    原文地址:C51串口的SCON寄存器工作方式作者:batistar 一,串行口控制寄存器SCON   它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表: D7 D6 D5 D4 D3 D2 ...
  • 标志寄存器

    千次阅读 2016-07-15 22:27:15
    第十一章  本章概述: 1. CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能 不同)具有以下3种作用: ...3) 用来控制CPU的相关工作方式 2. 这种特殊的寄存器在8
  • 8.ARM工作模式和寄存器及异常

    千次阅读 2016-03-27 17:58:10
    8.1.ARM编程模式和工作模式 8.2.ARM的37个寄存器详解 8.3.ARM的异常处理方式
  • 8086寄存器

    2017-04-25 13:19:10
    8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。 通用寄存器 有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址...
  • 文章目录一、两种寄存器访问方式1.1.前门访问1.2. 后门访问1.2.1.访问前的地址映射1.2.2.后门访问1.3.前/后门访问的比较二、两种跟踪寄存器值的方法——prediction2.1.自动预测(auto prediction)2.2.显式预测 一、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,786
精华内容 63,914
关键字:

寄存器的工作方式