文档库 最新最全的文档下载
当前位置:文档库 › 寄存器

寄存器

寄存器
寄存器

3.1寄存器映射图

F2810包含三个不同的外设寄存器空间,它们的划分如下:

Peripheral Frame 0: 该外设寄存器直接映射到CPU存储总线(如表6)。

Peripheral Frame 1: 该外设寄存器映射到32位的外部总线(如表7)。

Peripheral Frame 2: 该外设寄存器映射到16位的外部总线(如表8)。

表6. Peripheral Frame 0寄存器

1.在Frame 0中的寄存器允许16位和32位的数据访问。

2.如果寄存器处于EALLOW保护,数据将不能写入,除非用户执行EALLOW指令。

而执行EDIS指令将禁止写操作。这样就可以阻止偏移代码损坏寄存器内容。

3.flash程序存储器受代码安全模块保护(CSM)。

1.eCAN控制寄存器只允许32位的读写操作。

表8. Peripheral Frame 2寄存器

1. Peripheral Frame 2仅允许16位数据的访问。所有32位的数据访问都被忽略(无效的数据可能会返回或写入)。

3.2仿真控制寄存器

这些寄存器主要用于控制C28×CPU的保护模式,和监测某些重要设备的信号。寄存器定义如表9。

表9. 仿真控制寄存器

表10. DEVICECNF寄存器各位的定义

在PROSTART和PROTRANGE寄存器设定的保护模块的存储器地址范围中,CPU的读操作是跟在写操作的后面(操作是按指令次序执行,而不是按指令的流水线执行)。这对于某些外围操作的保护是必须的。

例:下面的代码段执行对寄存器1(REG1)的写操作,然后对寄存器2(REG2)的读操作。

在处理器的存储总线上,当模块保护被禁止,读操作将在写操作之前被执行,如下所示:MOV @REG1, AL --------+

TBIT @REG2, #BIT_X --------|------>Read

+----->Write

如果模块保护被使能,读操作将在写操作之后执行,如下所示:

MOV @REG1,AL --------+

TBIT @REG2,#BIT_X ----+ |

| +------->Write

+----------->Read

注:C28×CPU对同一个储存地址自动在读操作之前进行写操作。而上面描述的保护机制主要针对不是同一个地址,但是在一个给定的存储区域(它是由PROTSTART和PROTRANGE 寄存器定义的)。

表12. PROTSTART 和PROTRANGE寄存器

注:这些寄存器在复位后的预设值用来覆盖存储器中的外围帧1,2和XINTF1的区域

表13.PROTSTART 有效值

注:最快估计寄存器值的算法是将有效模块的首地址除以64(十进制)。

例如:如果一个模块的大小设为4K,那么首地址只能在4K的边界处。

3.3 系统配置器设置

本节主要介绍系统的各种配置寄存器的地址和功能,并对配置寄存器内的各位值进行了详细的说明。图9显示各种不同时钟和复位信号

注: CLKIN是输入到CPU时钟信号,SYSCLKOUT是CPU的输出时钟,两者频率相同。

图9。时钟和复位图

锁相环,时钟,看门狗和低功率模块受表33中寄存器控制

2. 锁相环控制寄存器(PLLCR)仅通过XRS信号复位一个已知状态。

PCLKCR寄存器主要是针对F2810和F2812控制器的各种外围模块,使能/禁止其时钟信号。表34对PCLKCR各位进行了说明。

表34.PCLKCR寄存器各位定义

注:如果外围模块没有被使用,那么该模块的时钟被关掉,节约能量。

系统控制和状态寄存器包含看门狗溢出位和看门狗中断使能/禁止位。表35描述了SCSR寄存器各位的功能。

表35.SCSR寄存器各位定义

HISPCP和LOSPCP寄存器用来配置各自的高/低速外围时钟。见表36和表37,前者是对HISPCP 各位的定义,后者是对LOSPCP各位的定义。

表36.HISPCP寄存器各位定义

表37.LOSPCP寄存器各位定义

3.4 中断和中断源

3.4.1中断的概念

“中断”是处理器与外部设备交换信息的一种方式。处理器在执行正常程序的过程中,当现某些异常事件或某些外部请求时,处理器就暂时中断正在执行的正常程序,而转去执行对异常事件或某种外设请求的处理操作。当处理完毕后,CPU再回到被暂时中断的程序,接着往下继续执行。这个过程称为中断。

中断是用以提高计算机工作效率的一种手段,能较好地发挥处理器的能力。通常,DSP的运算速度相当高,一条指令的平均时间以纳秒为单位,因此,快速的CPU与慢速的外设设备在传送数据的速率上存在着矛盾。这样采用中断技术后,仅当外设设备完成一个输入输出操作后,才向CPU请求中断。这样CPU在大部分时间内与外设设备并行工作,工作效率大大提高。

3.4.2 TM320F2812的中断源

中断源按中断源的来源可分为:外部中断和内部中断。

外部中断是由外部硬件中断源引起的中断。有XINT1,XINT2 ,XNMI_XINT13三条外部中断请求线。

内部中断是由指令执行所引起的中断。有看门狗,定时器中断等。

F2812提供一个不可屏蔽的中断NMI和14个按中断优先级获得服务的可屏蔽中断INT1到INT14。而INT1到INT12,每一个都可被8个外设中断请求共享,共96个外设扩展中断,其中有45个正在使用。

对于这45个外设中断是这样分配的:其中外设模块(SPI,SCI,McBSP,CAN,EV,ADC)共有41个中断,看门狗1个中断,XINT1,XINT2共2个中断,和1个定时器0的中断。

其具体分配见图5。

中断源图

图5.F2812各种中断源的分配

注:外设中断扩展模块(PIE)共有96个外设中断,其中只有45个正在使用。

寄存器实验报告

寄存器实验报告

一、实验目的 1. 了解寄存器的分类方法,掌握各种寄存器的工作原理; 2. 学习使用V erilog HDL 语言设计两种类型的寄存器。 二、实验设备 PC 微机一台,TD-EDA 实验箱一台,SOPC 开发板一块。 三、实验内容 寄存器中二进制数的位可以用两种方式移入或移出寄存器。第一种方法是以串行的方式将数据每次移动一位,这种方法称之为串行移位(Serial Shifting),线路较少,但耗费时间较多。第二种方法是以并行的方式将数据同时移动,这种方法称之为并行移位(Parallel Shifting),线路较为复杂,但是数据传送的速度较快。因此,按照数据进出移位寄存器的方式,可以将移位寄存器分为四种类型:串行输入串行输出移位寄存器(Serial In- Serial Out)、串行输入并行输出移位寄存器(Serial In- Parallel Out)、并行输入串行输出移位寄存器(Parallel In- Serial Out)、并行输入并行输出移位寄存器(Parallel In-Parallel Out)。 本实验使用V erilog HDL 语言设计一个八位并行输入串行输出右移移位寄存器(Parallel In- Serial Out)和一个八位串行输入并行输出寄存器(Serial In- Parallel Out),分别进行仿真、引脚分配并下载到电路板进行功能验证。 四、实验步骤 1.并行输入串行输出移位寄存器实验步骤 1). 运行Quartus II 软件,选择File New Project Wizard 菜单,工程名称及顶层文件名称为SHIFT8R,器件设置对话框中选择Cyclone 系列EP1C6Q240C8 芯片,建立新工程。 2.) 选择File New 菜单,创建V erilog HDL 描述语言设计文件,打开文本编辑器界面。 3.) 在文本编辑器界面中编写V erilog HDL 程序,源程序如下: module SHFIT8R(din,r_st,clk,load,dout); input [7:0]din; input clk,r_st,load; output dout; reg dout; reg [7:0]tmp; always @(posedge clk) if(!r_st) begin dout<=0; end else begin if(load) begin tmp=din; end else

STM32库函数操作和寄存器操作

STM32库函数操作和寄存器操作 首先,两个都是C语言。从51过渡过来的话,就先说寄存器操作。每个MCU都有自己的寄存器,51是功能比较简单的一种,相应的寄存器也比较少,我们常用的就那么几个,像P0 P1 SMOD TMOD之类的,这些存在于标准头文件reg.h里面,因为少,所以大家就直接这么去操作了,每一位对应的意义随便翻一下手册就看得到,甚至做几个小项目就记的很清楚了。所以做51开发的时候大多数都是直接操作寄存器。 到了STM32,原理一样,也是有自己的寄存器,但是作为一款ARM 内核的芯片,功能多了非常多,寄存器自然也就多了很多,STM32的手册有一千多页,这时候想去像51那样记住每个寄存器已经不现实了,所以ST的工程师就给大家提供了库函数这么一个东西。这是个神器。库函数里面把STM32的所有寄存器用结构体一一对应并且封装起来,而且提供了基本的配置函数。我们要去操作配置某个外设的时候不需要再去翻眼花缭乱的数据手册,直接找到库函数描述拿来就可以用,这样就能把精力放在逻辑代码的开发上,而不是去费力的研究一个芯片的外设要怎么配置寄存器才能驱动起来。简单讲就是这些了,库函数是为了让开发者从大量繁琐的寄存器操作中脱离出来的一个文件包,在使用一个外设的时候让开发者直接去调用相应的驱动函数而不是自己去翻手册一个一个配置寄存器。有人说用库函数掌握不到芯片的精髓,见仁见智了。熟悉一款芯片是在不断的开发使用中逐渐了解并掌握的,调试的过程中会遇到很多问题,会要求我们去跟踪相关寄存器的状态,在整个框架都已经建立起来的基础上再去对照手册做具体到寄存器每一位的分析,代码对照现象,很快就能积累起来经验,祝成功。

汇编寄存器功能详解

数据寄存器(AX、BX、CX、DX) 1.寄存器AX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、 除、输入/输出等操作,它们的使用频率很高; 2.寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 3.寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位 操作中,当移多位时,要用CL来指明移位的位数; 4.寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算, 也可用于存放I/O的端口地址; 变址寄存器(SI、DI) 寄存器SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便 指针寄存器(BP、SP) 寄存器BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们主要用于访问堆栈内的存储单元,并且规定: BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据; SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶 段寄存器(CS、DS、ES、SS、FS、GS) 段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址 CS 代码段寄存器(Code Segment Register),其值为代码段的段值 DS 数据段寄存器(Data Segment Register),其值为数据段的段值; ES 附加段寄存器(Extra Segment Register),其值为附加数据段的段值 SS 堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值; FS 附加段寄存器(Extra Segment Register),其值为附加数据段的段值 GS 附加段寄存器(Extra Segment Register),其值为附加数据段的段值 在16位CPU系统中,它只有4个段寄存器,所以,在此环境下开发的程序最多可同时访问4个段; 在32位CPU系统中,它共有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段. 指令指针寄存器 指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。 16位标志寄存器 9个标志位,它们主要用来反映CPU的状态和运算结果的特征。 1.进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的 最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 2.奇偶标志PF(Parity Flag)奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为 偶数,则PF的值为1,否则其值为0 3.辅助进位标志AF(Auxiliary Carry Flag) 在发生下列情况时,辅助进位标志AF的值被置为1,否 则其值为0:

关于标志寄存器的各个标志

运算结果标志位 1、进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。 2、奇偶标志PF(Parity Flag) 奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。 利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。 3、辅助进位标志AF(Auxiliary Carry Flag) 在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0: (1)、在字操作时,发生低字节向高字节进位或借位时; (2)、在字节操作时,发生低4位向高4位进位或借位时。 对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。 4、零标志ZF(Zero Flag) 零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。 5、符号标志SF(Sign Flag) 符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。 6、溢出标志OF(Overflow Flag) 溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。 “溢出”和“进位”是两个不同含义的概念,不要混淆。如果不太清楚的话,请查阅《计算机组成原理》课程中的有关章节。 二、状态控制标志位

AD9833详细原理解析汇报(附内部寄存器说明书)

基于AD9833的高精度可编程波形发生器系统设计 来源:国外电子元器件 1 引言 频率合成器在通信、雷达和导航等设备中既是发射机的激励信号源,又是接收机的本地振荡器;在电子对抗设备中可作为干扰信号发生器;在测试设备中则作为标准信号源。因此频率合成器被称为许多电子系统的“心脏”。而设计高精度,易于操作的频率合成器则是核心,因此,这里提出了一种基于DDS AD9833的高精度波形发生器系统解决方案。用户可直接编辑设置所需的波形频率和峰峰值等信息,利用串口将配置信息发送到电路板,实时控制波形。该系统设计已成功应用于某型雷达测速仪测试设备。 2 AD9833简介 AD9833是ADI公司的一款低功耗、DDS器件,能够输出正弦波、三角波、方波。AD9833无需外接元件,输出频率和相位可通过软件编程设置,易于调节。其频率寄存器为28位,主频时钟为25 MHz时,其精度为0.1 Hz;主频时钟为l MHz时.精度可达0.004 Hzt2。 AD9833内部有5个可编程寄存器:1个16位控制寄存器,用于设置器件_T作模式;2个28位频率寄存器和2个12位相位寄存器,分别用于设置器件输出正弦波的频率和相位。AD9833有3根串行接口线,可与SPI,QSPI,MICRO-WIRE 和DSP接口标准相兼容。在串口时钟SCLK的作用下,数据是以16位方式加载至设备。 AD9833的内部电路主要有数控振荡器(NCO)、频率和相位调节器、SineROM、D/A转换器、电压调整器。AD9833的核心是28位的相位累加器,它由加法器和相位寄存器组成,而相位寄存器是按每个时钟增加步长,相位寄存器的输出与相位控制字相加后输入到正弦查询表地址中。正弦查询表包含1个周期正弦波的数字幅值信息,每个地址对应正弦波中O。~360°内的1个相位点。查询表把输入的地址相位信息映射成正弦波幅值的数字量信号,驱动D/A转换器输出模拟量。 输出正弦波频率为: 式中:FREQREG为频率控制字,由频率寄存器FREQOREG或FREQlREG的值给定,其范围为0≤M<228一1。fMCLK为参考时钟频率。 输出正弦波的相位为2π/4 096xPHASEREG,其中PHASEREG是所选相位寄存器的值。输出正弦波的峰峰值固定.约600 mV,且正弦波不是标准正弦波,即波谷是0 V,而不是负电压。因此,输出正弦波为: 式中:K约600 mV,与器件内部参考电压有关。

寄存器(register)

寄存器 Scope of register: 寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 1、寄存器- 特点及原理 寄存器又分为内部寄存器与外部寄存器,所谓内部寄存器,其实也是一些小的存储单元,也能存储数据。但同存储器相比,寄存器又有自己独有的特点: ①寄存器位于CPU内部,数量很少,仅十四个; ②寄存器所能存储的数据不一定是8bit,有一些寄存器可以存储16bit数据,对于386/486处理器中的一些寄存器则能存储32bit数据; ③每个内部寄存器都有一个名字,而没有类似存储器的地址编号。 寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。有些时候我们常把外部寄存器就称为“端口”,这种说法不太严格,但经常这样说。 外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的0、1状态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为CPU同外部设备交换数据的通路。所以说,端口是CPU和外设间的联系桥梁。CPU对端口(Ports)的访问也是依据端口的“编号”(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了1024个端口

寄存器和存储器的区别

https://www.wendangku.net/doc/5410129580.html,/p-20032411.html

寄存器和存储器的区别

如果仅是讨论CPU的范畴 寄存器在cpu的内部,容量小,速度快 存储器一般都在cpu外部,容量大,速度慢 回答者:athlongyj - 高级经理六级6-1 08:52 从根本上讲,寄存器与RAM的物理结构不一样。 一般寄存器是指由基本的RS触发器结构衍生出来的D触发, 就是一些与非门构成的结构,这个在数电里面大家都看过; 而RAM则有自己的工艺,一般1Bit由六MOS管构成。所以, 这两者的物理结构不一样也导致了两者的性能不同。寄存器 访问速度快,但是所占面积大。而RAM相反,所占面积小, 功率低,可以做成大容量存储器,但访问速度相对慢一点。 1、 寄存器存在于CPU中,速度很快,数目有限; 存储器就是内存,速度稍慢,但数量很大; 计算机做运算时,必须将数据读入寄存器才能运算。 2、 存储器包括寄存器, 存储器有ROM和RAM 寄存器只是用来暂时存储,是临时分配出来的,断电,后,里面的内容就没了`````

寄存器跟存储器有什么区别? 一般数据在内存里面,要处理(或运算)的时候, 独到寄存器里面。 然后CPU到寄存器里面拿值,拿到运算核内部, 算好了在送到寄存器里面 再到内存 寄存器跟存储器有什么区别? 寄存器跟存储器有什么区别? 寄存器上:“一个操作码+一个操作数”等于一条微指令吗?一条微指令是完成一条机器指令的一个步骤对吗?cpu是直接跟寄存器打交道的对吗?也就是说寄存器是运算器、控制器的组成部分对不? 设计一条指令就是说把几条微指令组合起来对吗? 刚开始学硬件相关知识,学的晕头转向的!! 存储器与寄存器区别 2009-06-09 12:27 寄存器是CPU内部存储单元,数量有限,一般在128bit内,但是速度快,CPU访问几乎没有任何延迟。分为通用寄存器和特殊功能寄存器。 通常说的存储器是独立于cpu之外的,比如内存,硬盘,光盘等。 所有数据必须从存储器传入寄存器后,cpu才能使用。

ATPCS中寄存器使用

ATPCS中各寄存器的使用规则及其名称 参数传递规则 1. 参数不超过4个时,可以使用寄存器R0~R3来传递参数,当参数超过4个时,还可 以使用数据栈来传递参数。 2. 结果为一个32位整数时,可以通过寄存器R0返回 3. 结果为一个64位整数时,可以通过寄存器R0和R1返回,依次类推。 汇编程序、C程序及C++程序相互调用 C 程序调用汇编程序: ?汇编程序的设置要遵循ATPCS 规则,保证程序调用时参数的正确传递。 ?在汇编程序中使用EXPORT 伪指令声明本子程序,使其它程序可以调用此子程序。 ?在C 语言程序中使用extern 关键字声明外部函数(声明要调用的汇编子程序),即可调用此汇编子程序。 ?调用汇编的C 函数: ?示例 #include extern void strcopy(char *d,const char *s) //声明外部函数,即要调用的汇编 //子程序 int main(void) { const cha r *srcstr=“First string-source”;//定义字符串常量 char dstsrt[] =“Second string-destination”;//定义字符串变量 printf(“Before copying:\n”); printf(“?%s?\n …%s\n,”srcstr,dststr); //显示源字符串和目标字符串的内容strcopy(dststr,srcstr); //调用汇编子程序,R0=dststr,R1=srcstr printf(“Aft er copying:\n”) printf(“?%s?\n …%s\n,”srcstr,dststr); //显示strcopy 复制字符串结果 return(0);

DSP GPIO相关寄存器的设置最详细的一份资料了

每个通用I/O 端口都受多路复用(MUX),方向(DIR),数据(DAT),置位(SET),清除(CLEAR),以及切换(TOGGLE)寄存器的控制。 下面介绍这些寄存器的功能。 GPxMUX 寄存器(x=A,B,D,E,F,G) 每个I/O 端口都有一个MUX(多路复用)寄存器。这个寄存器用来在每个引脚(PIN)的外设操作及I/O 操作之间进行选择。复位时所有通用I/O 引脚都配置成数字I/O 功能。任何一个引脚都可通过16 位的多路复用寄存器 GPxMUX 进行外设或GPIO 功能的设置: 当GPxMUX.bit = 0,相应的一个引脚配置成I/O 功能; 当GPxMUX.bit = 1,相应的一个引脚配置成外设功能。 GPxDIR 寄存器(x=A,B,D,E,F,G)

每个I/O 端口都有一个方向控制寄存器。不论是将相应的I/O 引脚配置成输入还是输出,都由方向寄存器控制。复位时,所有通用I/O 引脚均配置成输入。 当GPxDIR.bit = 0,引脚配置成输入; 当GPxDIR.bit = 1,引脚配置成输出。 在采用GPxDIR 寄存器位将输入端口改变成输出端口之前,引脚的当前电平反映到GPxDAT 寄存器中。当端口的方向从输入改变成输出时,GPxDAT 寄存器的值用来确定引脚的电平。 例如,如果引脚已经从内部上拉,则复位后上拉将致使GPxDAT 寄存器对应位为1用于反映引脚的当前高电平。当端口的方向从输入改变成输出时,GPxDAT 寄存器已经为1 的位强迫该引脚为同一高电平。这样,在电平不变的情况下,引脚能够从输入转换为输出。 GPxDAT 寄存器(x=A,B,D,E,F,G)

西门子s7-200常用寄存器使用基础知识

西门子s7-200常用寄存器使用基础知识 1、S7-200将1个字长(16位)数字值按比例转换为电流或电压。可以用区域标识符(AQ)、数据长度(W)及字节的起始地址来改变这些值。因为模拟量为1个字长,且从偶数字节(如0、 2、4)开始,所以必须用偶数字节地址(如AQW0、AQW2、AQW4)来改变这些值。模拟量输出值为只写数据。模拟量转换的实际精度是12位。格式:AQW[起始字节地址]。例如:AQW4 2、在S7-200 CPU中,计数器用于累计从输入端或内部元件送来的脉冲数。它有增计数器、减计数器及增/减计数器3种类型。由于计数器频率扫描周期的限制,当需要对高频信号计数时可以用高频计数器(HSC)。 计数器有以下两种寻址形式。 当前值寻址:16位有符号整数,存储累计脉冲数。 计数器位寻址:根据当前值和预置值的比较结果置位或者复位。同定时器一样,两种寻址方式使用同样的格式,即C+计数器编号。例如:C0 (1)每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节(表6-7),令其第五位和第六位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。当前值和预置值占用的特殊内部标志位存储区如表1所示。 表1 HSC0-HSC5当前值和预置值占用的特殊内部标志位存储区 除控制字节以及新预设值和当前值保持字节外,还可以使用数据类型HC(高速计数器当前值)加计数器号码(0、1、2、3、4或5)读取每台高速计数器的当前值。因此,读取操作可直接读取当前值,但只有用上述HSC指令才能执行写入操作。 (2)执行HDEF指令之前,必须将高速计数器控制字节的位设置成需要的状态,否则将采用默认设置。默认设置为:复位和起动输入高电平有效,正交计数速率选择4×模式。执行HDEF指令后,就不能再改变计数器的设置,除非CPU进入停止模式。

寄存器和库函数.doc

操纵寄存器&调用库函数 编程步骤: 1、原理图一一硬件的连接方式 2、芯片手册一一怎样使用芯片 3、编写程序 d 外设功能初始化配置 e 外设使能 f 外设中断使能和中断优先级配置 g 其他功能函数 LED 初始化 一、寄存器 总时钟初始化 端口时钟初始化 //b 为10端口 (PB/PA/PE 等)在APB2的位置 j 青除端 口 默认值 GPI0A->CRL &二 OxFOOFFFFF; 〃由GPIOA->CRL/H 给PAx 配置位x 清零 设置端 口 工作模式 GPIOA->CRL | = 0x03300000; 〃根据表17、18配置 LED 设置为 OFF GPIOA->ODR I = 1?5 I 1?6; 〃由数据输出寄存器控制,0—ONJ —OFF a 总时钟初始化 b 外设时钟初始化 c 外设10配置 Stm32_ClockJnit(9); RCC->APB2ENR |= l?b;

二、库函数 GPIO」nitTypeDef GPIO」nitLed; 〃定义结构体变量端口时钟初始化 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOB, ENABLE); 设置端口工作模式(推挽输出) GPIO InitLed.GPIO Mode = GPIO Mode Out PP; GPIO InitLed.GPIO Pin = GPIO Pin 5; GPIO」nitLed?GPIO_Speed = GPIO_Speed_50MHz; 〃由GPIOJnitStruct^指定的参数初始化外设GPIOx寄存器GPIO _lnit(GPIOB,&GPIO JnitLed); GPIO Jn it(GPIOA,&GPIO JnitLed); LED设置为OFF GPIO_SetBits(GPIOA,GPIO_Pi n_5); GPIO_SetBits(GPIOA,GPIO_Pin_5); //GPIO_SetBits 设置,GPIO_ResetBits 清除〃或EEP初始化(和LED类似) GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET); KEY初始化 一、寄存器 端口时钟初始化RCC->APB2ENR |= 1?2|1?6; j青除端口默认值GPIOA->CRL &二 OxFFFFFFFO; 设置端口工作模式GPIOA->CRL | = 0x00000008;

stm32 BKP寄存器操作操作寄存器+库函数

stm32 BKP 寄存器操作操作寄存器+库函数 BKP 是BACKUP 的缩写,stm32f103RCTE 的内部配备了10 个16 位宽度 的BKP 寄存器。在主电源切断或系统产生复位时间时,BKP 寄存器仍然可以 在备用电源的支持下保持其内容。BKP 在实际应用中可以存入重要数据,防止 被恶意查看,或用于断电等。本例实现对BKP 寄存器的读写操作,和入侵检 测和处理。主程序中写入寄存器后,依次打印出10 个BKP 寄存器数据,然后 触发GPIOC13 的入侵中断(输入低电平),在中断中打印出入侵事件发生后的 寄存器内容(复位为0 )。直接操作寄存器用到的寄存器描述如下:备份数据 寄存器x(BKP_DRx) (x = 1 10):低16 位[15:0]有效,用来写入或读出备份数据。备份控制寄存器(BKP_CR):低两位有效。TPAL[1]:侵入检测TAMPER 引脚有效电平(TAMPER pin active level)0:侵入检测TAMPER 引脚上的高电平会清除所有数据备份寄存器(如果TPE 位为1) 1:侵入检测TAMPER 引脚 上的低电平会清除所有数据备份寄存器(如果TPE 位为1)TPE[0]:启动侵入检 测TAMPER 引脚(TAMPER pin enable)0:侵入检测TAMPER 引脚作为通用IO 口使用1:开启侵入检测引脚作为侵入检测使用备份控制/状态寄存器 (BKP_CSR): TIF[9]:侵入中断标志(Tamper interrupt flag) 0:无侵入中断1:产生侵入中断当检测到有侵入事件且TPIE 位为1 时,此位由硬件置1。通过向CTI 位 写1 来清除此标志位(同时也清除了中断)。如果TPIE 位被清除,则此位也会被 清除。TEF[8]:侵入事件标志(Tamper event flag) 0:无侵入事件1:检测到侵入事件当检测到侵入事件时此位由硬件置1。通过向CTE 位写1 可清除此标 志位TPIE[2]:允许侵入TAMPER 引脚中断(TAMPER pin interrupt enable)0:禁止侵入检测中断1:允许侵入检测中断(BKP_CR 寄存器的TPE 位也必须被置1)注

三菱PLC的指令代码和内部特殊寄存器

三菱PLC的指令代码 一顺控指令 1 触点指令 00 LD 逻辑操作开始 01 LDI 逻辑非操作开始 02 AND 逻辑乘 03 ANI 逻辑乘非 04 OR 逻辑加 05 ORI 逻辑加非 2 连接指令 06 ANB AND逻辑块与 07 ORB OR逻辑块或 08 MPS 存储操作结果 09 MRD 从MPS读取操作结果 10 MPP 从MPS读取操作结果 并清除结果 3 输出指令 11 OUT 软元件输出 12 SET 软元件置位 13 RST 软元件复位 14 PLS 在输入信号的上升沿 15 PLF 在输入信号的下降沿 16 CHK 软元件输出翻转 4 移位指令 17 SFT 元件移1位 18 SFTP 元件移1位 5 主控指令 19 MC 主控开始 20 MCR 主控复位 6 结束指令 21 FEND 结束主程序 22 END 总的程序末尾, 返回第0步 7 其它指令 23 STOP 停止 24 NOP 空操作 二基本指令 1 比较指令 16位数据比较 25 LD= 当S1=S2, 接通, 当S1≠S2, 断开 26 AND= 27 OR= 28 LD<> 当S1≠S2, 接通, 当S1=S2, 断开 29 AND<>

31 LD> 当S1>S2, 接通, 当S1≤S2, 断开 32 AND> 33 OR> 34 LD<= 当S1≤S2, 接通, 当S1>S2, 断开 35 AND<= 36 OR<= 37 LD< 当S1= 当S1≥S2, 接通, 当S1= 42 OR>= 32位数据比较 43 LDD= 当(S1+1,S1)=(S2+1,S2), 接通 44 ANDD= 45 ORD= 46 LDD<> 当(S1+1,S1)≠(S2+1,S2),接通 47 ANDD<> 48 ORD<> 49 LDD> 当(S1+1,S1)>(S2+1,S2), 接通 50 ANDD> 51 ORD> 52 LDD<= 当(S1+1,S1)≤(S2+1,S2),接通 53 ANDD<= 54 ORD<= 55 LDD< 当(S1+1,S1)<(S2+1,S2), 接通 56 ANDD< 57 ORD< 58 LDD>= 当(S1+1,S1)≥(S2+1,S2),接通 59 ANDD>= 60 ORD>= 2 算术运算指令 二进制16位加/减 61 + (D)+(S)→(D) 62 +P 63 + (S1)+(S2)→(D) 64 +P 65 - (D)-(S)→(D) 66 -P 67 - (S1)-(S2)→(D) 68 -P 二进制32位加/减 69 D+ (D+1,D)+(S+1,S)→(D+1,D)

PLC的文件寄存器的使用

PLC文件寄存器与HMI的配方的功能对比 摘要:在我们编程的过程中,有时会遇到PLC数据处理和数据运算所需的数据寄存器不足的情况,这时候,我们如果有HMI作为上位监控的情况下,我们会使用HMI的配方功能来处理一些数据运算,以此分担PLC的运算负担,但是,如果数据量较大,将HMI的配方传输到PLC中会花费比较长的时间。藉此我们可以使用文件寄存器来实现数据的快速响应。 关键词:PLC,HMI,文件寄存器,配方 一、介绍 在有些情况下,我们会因为处理的数据量比较大而用到HMI的配方,比如自动弹钢琴系统,但是,这时会产生一个问题就是将HMI中的配方下载到PLC中时会比较慢。在运行系统的时候会有一段等待的时间,这样就造成了客户在参观时的尴尬状态。 鉴于以上的问题,我们就可以使用PLC中的文件寄存器来代替配方。 文件寄存器(file register):当PLC处理数据和数值运算所需的数据寄存器不足时,可以利用文件寄存器来存储数据和各类参数。每个文件寄存器内为16位,即存有一个字,处理双字用相邻编号的两个文件寄存器。文件寄存器SA/SX/SC 系列机种一共有1600个,EH/EH2/SV系列机种一共有10000个。文件寄存器并没有实际的装置编号,所以需透过指令API 148 MEMR、API 149 MEMW或是透过周边装置HPP02及WPLSoft来执行晚间寄存器的读写功能。 注:装置表示:K0~K9999,无装置符号,顺序以十进制编号。 MEMR m D n文件寄存器数据读出 m: 欲读取文件寄存器的编号 D: 存放读取数据的位置,指定的D开始编号(D寄存器的起始编号为D2000)n : 一次读取的数据笔数 MEMW S m n 文件寄存器数据写入 S: 欲写入数据的位置,指定的D开始编号(D寄存器的起始编号为D2000)m: 欲写入文件寄存器的编号 n : 一次写入数据笔数 二、软件操作: 1、开启WPLSoft,选到通讯选项卡,如图(一) 图(一)

寄存器及指令英文全称

通用寄存器:AX累加器(Accumulator),BX 基地址寄存器(Base Register),CX 计数寄存器(Count Register) ,DX数据寄存器(Data Register) 段寄存器:代码段寄存器CS--code segment , 数据段寄存器DS--data segment , 堆栈段寄存器SS--stack segment ,附加段寄存器ES--extra segment 。 特殊功能寄存器:指令指针寄存器IP--instruction pointer ,堆栈指针SP--stack pointer ,基址指针BP--base pointer ,源变址寄存器SI--source index ,目标变址寄存器DI--destination index ,标志寄存器FR--flag register(或者叫程序状态字PSW--program status word)。 PSW常用的标志有: 标志值为1时的标记值为0时的标记 OF(overflow flag) OV(overflow) NV(not overflow) ZF(zero flag) ZR(zero) NZ(not zero) PF(parity flag) PE(parity even) PO(parity odd) CF(carry flag) CY(carried) NC(not carried) DF(direction flag) DN(down) UP(up) SF(sign flag) NG(negative) PL(plus) TF(trap flag) IF(interrupt flag) AF(auxiliary flag) 一、运算结果标志位 1、进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。 2、奇偶标志PF(Parity Flag) 奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。 利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

CPU各寄存器的作用

CPU各寄存器的作用- [Asm] 寄存器作用: ebp和esp是32位的SP,BP esp是堆栈指针 ebp是基址指针 ESP与SP的关系就象AX与AL,AH的关系. 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

通用寄存器的作用

通用寄存器的作用 数据寄存器不讲,简单的说,段寄存器(ES,CS,SS,DS,FS,GS)和变址寄存器(SI,DI)是配合使用访问段数据的,指针寄存器(BP,SP)是用来操作堆栈的,BP指向栈的基址,SP则永远指向栈顶。 另外指令指针EIP存放的是要执行的下一条指令在代码段里的偏移量,在实方式下,每个段的最大范围都是64K,所以EIP的高16位都是0。 寄存器的分类寄存器主要用途 通用寄存器 数据 寄存器 AX 乘、除运算,字的输入输出,中间结果的缓存 AL 字节的乘、除运算,字节的输入输出,十进制算术运算 AH 字节的乘、除运算,存放中断的功能号 BX 存储器指针 CX 串操作、循环控制的计数器 CL 移位操作的计数器 DX 字的乘、除运算,间接的输入输出 变址 寄存器 SI 存储器指针、串指令中的源操作数指针 DI 存储器指针、串指令中的目的操作数指针 变址 寄存器 BP 存储器指针、存取堆栈的指针 SP 堆栈的栈顶指针 指令指针IP/EIP 标志位寄存器Flag/EFlag 32位CPU的段寄存器16位CPU的 段寄存器 ES 附加段寄存器 CS 代码段寄存器 SS 堆栈段寄存器 DS 数据段寄存器新增加的 段寄存器 FS 附加段寄存器 GS 附加段寄存器

--------------------------------- 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。 累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次 数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数 参与运算,也可用于存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。详细内容请见第3.8节——32位地址的寻址方式。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI 和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。具体描述请见第5.2.11节。 3、指针寄存器 32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP 和SP,对低16位数据的存取,不影响高16位的数据。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。

TMS320LF2407A等待状态寄存器和看门狗

3.6 等待状态发生器 如果采用慢速的RAM、外设芯片,须考虑与C240X芯片的速度匹配问题,需使用READY信号、片外延迟电路或内部等待状态产生器来添加等待状态。 3.6.1 用READY信号产生等待状态 外设通过使READY信号变为高电平,表示已准备好。若外设未准备好,则需保持READY为低。READY为低,LF240X等待一个CLKOUT周期。再次检查READY,若READY信号没有被使用,LF240X将在外部访问时把READY 拉高。READY脚可用来产生任意数目的等待状态。 3.6.2 用等待状态发生器产生等待状态 为控制等待状态发生器,必须写映射IO空间的FFFFh等待状态控制寄存器。 格式如下: 位15~11:保留 位10~9: BVIS,总线可见模式,提供了跟踪内部总线活动的方式。00-总线可见模式关(降低功耗和噪声) 01-总线可见模式开; 10-数据到地址总线输出到外部地址总线;数据到数据总线输出到外部数据总线; 11-程序到地址总线输出到外部地址总线;数据到数据总线输出到外部数据总线。 位8~6:决定了等待状态(0~7)的数目。用于读片外I/O空间。复位

为111,为片外I/O空间的读写设定7个等待状态。 位5~3:决定了等待状态(0~7)的数目。用于读片外数据空间。复位为111,为片外数据空间的读写设定7个等待状态。 位2~0:决定程序空间等待状态(0~7)的数目。复位为111,设定程序空间7个等待状态。 第4章时钟和低功耗模式 片内集成有PLL(锁相环)电路。外接的基准晶体+PLL(锁相环)电路共同组成系统时钟电路。 有关引脚: XTAL1/CLKIN:外接的基准晶体到片内振荡器输入引脚;如使用外部振荡器,外部振荡器的输出必须接该脚。 XTAL2:片内PLL振荡器输出引脚; CLKOUT/IOPE0:该脚可作为时钟输出或通用IO脚;可用来输出CPU时钟或看门狗定时器时钟;由系统控制状态寄存器(SCSR1)中的位14决定。当不作时钟输出时,就可作通用I/O。复位时,本脚配置为CLKOUT。 4.1 锁相环(PLL) PLL支持从0.5~4倍输入时钟频率的乘法因子。PLL还可控制低功耗操作。PLL的倍率由系统控制状态寄存器(SCSR1)的位11~9来决定。如下表所示。 复位时,倍率默认为0.5 。

PIC18F4550单片机三个操作寄存器的使用方法

PIC18F4550单片机三个操作寄存器的使用方法 试验芯片:Microchip PIC 18F4550 集成开发环境:MPLAB IDE v8.53 编译器:Microchip C18 PIC18系列单片机是美国微芯公司(Microchip)8位单片机系列中的高档系列,其任一I/O 引脚允许的最大灌电流或最大拉电流达25mA,可以直接驱动LED和继电器。PORTA、PORTB和PORTE的最大灌电流或最大拉电流总和为200mA,PORTC和PORTD的最大灌电流或最大拉电流总和为200mA,PORTF和PORTG的最大灌电流或最大拉电流总和为100mA(注:PIC18F4550没有这两个端口)。 单片机和外设的交互都是通过I/O端口进行,每个I/O端口均有三个操作寄存器: 1、TRISx———数据方向寄存器 用来控制I/O引脚的方向,即用来控制PORTx是输入还是输出。 2、PORTx———端口寄存器 用来锁存输出数据。当读PORTx时,器件直接读I/O引脚电平(而不是锁存值)。 3、LATx———输出数据锁存器 写端口就是写该锁存器(LATx)。数据锁存器也可以直接读写。如果外设没有使用该引脚,并且TRISx位配置该引脚为输出,则将锁存器内的数据输出到引脚。 在复位状态下,TRISx的复位值为0xff,即TRISx寄存器的8个位(D0 ~ D7)的值均为1。此时相应的PORTx引脚被定义为输入,相应的输出驱动器呈现高阻状态。设置为0时表示相应的引脚定义为输出。 这里应注意的是写PORT就是写LAT,但读PORT和读LAT不同。读PORT读的是引脚的状态,无论该引脚设置为输入引脚还是输出引脚。而读LAT得到的是输出数据锁存器的存储值,读LAT得到的值可能和读PORT得到的值存在不同。

相关文档
相关文档 最新文档