寄存器地址
特殊寄存器地址
地址
說明
注釋
9000
配方資料索引位址
RWI和RBI利用這個索引位址來訪問配方資料(讀/寫)
9002~9003
數值輸入最大值
當啟動數值輸入時輸入的數值的最大值.當沒啟動數值輸入時置爲0. (讀)
9004~9005
數值輸入最小值
當啟動數值輸入時輸入的數值的最小值.當沒啟動數值輸入時置爲0. (讀)
9016
本地時間星期
BCD碼,有效值範圍0-6(讀/寫)
9020
Object queue item
number
如果object queue item number超過1000,那麽這是一個比較複雜的HMI程式,觸摸屏將自動控制PLC通信頻寬.但是如果這是由本地資料引起的,那麽您的程式就需要重新設計了.
60040
通信口類型
0:232
1:485
60041
串列傳輸速率
0:9600
1:19200
2:38400
3:57600
4:115200
60042
資料位元
0:7
1:8
60043
校驗位
0:無
1:偶校驗
2:奇校驗
60044
停止位
0:1 Bit
1:2 Bit
60045
人機站號
60046
PLC站號
60047
多台人機互連
9044
Recipe Word儲存至系
統參數
置ON執行此功能,系統會自動置OFF.
只有特定的Recipe Word會儲存至系統參數,詳細請參照系統保留Recipe Word說明.(寫)
9045
寄存器的地址
寄存器的地址
读芯⽚的寄存器定义⽂档的时候,每个寄存器都定义了各⾃的地址。
这个地址看起来和内存的地址是⼀样⼀样的。
那中间有什么关联呢?其实没啥⼤的关联,只不过寄存器的地址和内存的地址都是在CPU的寻址空间中。
简单的说寄存器的地址指向的就是寄存器,跟其他什么什么的没有关系。
访问寄存器的⽅式和访问内存的⽅式⼀样⼀样的。
不过要注意⼀下,这种⽅式只适应⼤多数的嵌⼊式芯⽚。
对于X86芯⽚来说,访问寄存器是有特别的指令的。
设备驱动程序要直接访问外设或其接⼝卡上的物理电路,这部分通常都是以寄存器的形式出现。
外设寄存器也称为I/O端⼝,通常包括:控制寄存器、状态寄存器和数据寄存器三⼤类。
根据访问外设寄存器的不同⽅式,可以把CPU分成两⼤类。
⼀类CPU(如M68K,Power PC 等)把这些寄存器看作内存的⼀部分,寄存器参与内存统⼀编址,访问寄存器就通过访问⼀般的内存指令进⾏,所以,这种CPU没有专门⽤于设备I/O的指令。
这就是所谓的“I/O内存”⽅式。
另⼀类CPU(典型地如X86)将外设的寄存器看成⼀个独⽴的地址空间,所以访问内存的指令不能⽤来访问这些寄存器,⽽要为对外设寄存器的读/写设置专⽤指令,如IN和OUT指令。
这就是所谓的” I/O端⼝”⽅式。
但是,⽤于I/O 指令的“地址空间”相对来说是很⼩的。
事实上,现在x86的I/O地址空间已经⾮常拥挤。
《汇编语言》寄存器物理地址(第二章第二节)
DS ES SS CS 地 址 加 法 IP 器 地 址 总 线 AB
本课件由汇编网()制作提供
物理地址PA = 段地址 + 偏移地址 = ( 段寄存器 ) × 10H + 偏移地址 或段寄存器的内容左移4位,加上偏移地址
例:某内存单元的段地址由DS、偏移地址由BX给出。
2.5 16位结构的CPU
概括的讲,16位结构描述了一个CPU具有 以下几个方面特征:
1、运算器一次最多可以处理16位的数据。 2、寄存器的最大宽度为16位。 3、寄存器和运算器之间的通路是16位的。
2.6 8086CPU给出物理地址的方法
8086有20位地址总线,可传送20 位地址,寻址能力为1M。 8086内部为16位结构,它只能传送 16位的地址,表现出的寻址能力却 只有64K。
2.7 “段地址×16+偏移地址=物理地址” 的本质含义
两个比喻说明:
说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻 说明“段地址×16+偏移地址=物理地址” 的思想:第二个比喻 8086CPU就是这样一个只能提供两张3位 数据纸条的CPU。
2.8 段的概念
错误认识:
内存被划分成了一个一个的段,每一个 段有一个段地址。
通用寄存器
数据寄存器(AX,BX,CX,DX) 地址指针寄存器(SP,BP) 变址寄存器(SI,DI)
5
2.1 通用寄存器
8086CPU所有的寄存器都是16位的, 可以存放两个字节。 AX、BX、CX、DX 通常用来存放一般 性数据被称为通用寄存器。 下面以AX为例,我们看一下寄存器的 逻辑结构。
寄存器寻址指令
字节3 HIGH DATA
字节1
字节2
字节3 字节4 字节5 字节6
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 LOW HIGH DISP DISP LOW HIGH
操作码 D W MOD REG R/M 或 DATA 或 DATA DATA DATA
P67
MOV SP,BX
1000101 1 1 1
(3) POP 出栈操作指令
指令格式:POP 目标
指令功能:目标 ((SP)+1,SP)) SP (SP)+2
SS
栈顶
POP BX 56H 78H
POP AX 12H 34H
78H 56H
34H
12H
SP
栈底
堆栈(Stack)
POP指令
汇编语句
例子
说明
POP reg16 POP CX
16位寄存器
绝大多数双操作数指令,除非特别说明,目的操作数与源操作 数必须类型一致,否则为非法指令
MOV AL,050AH MOV AL,BX 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数 类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指 明;byte ptr指示字节类型,word ptr指示字类型
栈底
汇编语句
例子
说明
PUSH reg16 PUSH BX
16位寄存器
PUSH mem16 PUSH WORD PTR[BX] 16位寻址方式
PUSH seg
PUSH DS
任何段寄存器
例:现场保护恢复
push ax push bx push ds ... pop ds pop bx pop ax
寄存器与7种寻址方式
一、寄存器总共有14个16位寄存器,8个8位寄存器通用寄存器:数据寄存器:AH(8位) AL(8位) AX(16位) (AX和AL又称累加器)BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器)CH(8位) CL(8位) CX(16位) (CX用于字符串操作,控制循环的次数,CL 用于移位)DH(8位) DL(8位) DX(16位) (DX一般用来做32位的乘除法时存放被除数或者保留余数)指针寄存器:SP 堆栈指针(存放栈顶地址)BP 基址指针(存放堆栈基址偏移)变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器(短)指针使用。
作为通用寄存器,它们可以保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是需要的存储单元地址的偏移.SI 源地址(源变址寄存器)DI 目的地址(目的变址寄存器)控制寄存器:IP 指令指针FLAG 标志寄存器①进位标志CF,记录运算时最高有效位产生的进位值。
②符号标志SF,记录运算结果的符号。
结果为负时置1,否则置0。
③零标志ZF,运算结果为0时ZF位置1,否则置0。
④溢出标志OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。
溢出时OF位置1,否则置0。
⑤辅助进位标志AF,记录运算时第3位(半个字节)产生的进位值。
⑥奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。
当结果操作数中1的个数为偶数时置1,否则置0。
段寄存器CS 代码段IPDS 数据段SS 堆栈段SP BPES 附加段二、七种寻址方式:1、立即寻址方式:操作数就包含在指令中。
作为指令的一部分,跟在操作码后存放在代码段。
这种操作数成为立即数。
立即数可以是8位的,也可以是16位的。
例如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址方式:操作数在CPU内部的寄存器中,指令指定寄存器号。
寄存器的物理地址的概述
3.2.1 寄存器概述ARM微处理器有37个32位长的寄存器,其中包括30个通用寄存器,6个状态寄存器和一个程序计数器寄存器(PC)。
如图3.2所示,ARM微处理器中将这37个寄存器分成不同的组,在ARM微处理器的每种工作模式下只能使用其中一组寄存器。
我们知道,ARM微处理器共有7种模式,其中用户模式和系统模式拥有物理空间上完全相同的寄存器,而其它5种异常模式都有一些自己独立的寄存器。
从图上可以看出,在用户和系统模式下可以使用R0-R15和CPSR共17个寄存器;在FIQ模式下可以使用R0-R15,CPSR,CPSR共18个寄存器,其中R8-R14以及SPSR寄存器是FIQ模式专有寄存器,其它寄存器和用户模式共用相同的物理寄存器;在IRQ、SVC、Undef、Abort模式下可以使用的寄存器都是18个(R0-R15,CPSR,SPSR),其中R13,R14,CPSR是各个模式专有的,其它和用户模式共用相同的物理寄存器。
可见,ARM内核中一共有37个物理上独立的寄存器,在每一种处理器模式中只能访问一组相应的寄存器。
在每组寄存器中:R13通常用作栈指针寄存器(SP),每一种模式有自己的R13,所以允许每一种异常都有自己的栈指针。
R14用作连接或返回地址寄存器(LR),每一种模式有自己的R14。
R15用作程序计数器(PC),用来保存读取指令的地址。
CPSR (Current Program Status Register) 存储ARM微处理器当前的状态和模式标志。
SPSR (Saved Program Status Register)异常模式下的CPSR的备份寄存器,当一个异常发生时保存当前的CPSR值。
结合连接寄存器可使处理器返回先前的状态。
ARM微处理器这样组织寄存器的好处在于当各种异常发生的时候,每种异常模式都可以保存一些重要的数据,使异常处理程序完成之后返回异常前的程序时不会破坏原有的寄存器或状态。
各种寄存器位地址
/* - IO51.H -Special header for the 8051/52/31/32 processors.Version 4.00 [IANR]*/#pragma language=extended/*===============================*//* Predefined SFR Byte Addresses *//*===============================*/sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;sfr T2CON = 0xC8;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;/*For W77E58*/sfr ROMMAP = 0XC2;sfr CKCON = 0X8E;sfr PMR = 0XC4;sfr TA = 0XC7;sfr P4 = 0XA5;/*==============================*//* Predefined SFR Bit Addresses *//*==============================*//*========PSW========*/ bit CY = 0xD7;bit AC = 0xD6;bit F0 = 0xD5;bit RS1 = 0xD4;bit RS0 = 0xD3;bit OV = 0xD2;bit P = 0xD0;/*========TCON=======*/ bit TF1 = 0x8F;bit TR1 = 0x8E;bit TF0 = 0x8D;bit TR0 = 0x8C;bit IE1= 0x8B;bit IT1= 0x8A;bit IE0= 0x89;bit IT0= 0x88;/*========IE=========*/ bit EA = 0xAF;bit ET2 = 0xAD;bit ES = 0xAC;bit ET1 = 0xAB;bit EX1 = 0xAA;bit ET0 = 0xA9;bit EX0 = 0xA8;/*========IP=========*/ bit PT2 = 0xBD;bit PS = 0xBC;bit PT1 = 0xBB;bit PX1 = 0xBA;bit PT0 = 0xB9;bit PX0 = 0xB8;/*========P3=========*/ bit RD = 0xB7;bit WR = 0xB6;bit T1 = 0xB5;bit T0 = 0xB4;bit INT1= 0xB3;bit INT0= 0xB2;bit TXD = 0xB1;bit RXD = 0xB0;/*========SCON========*/ bit SM0 = 0x9F;bit SM1 = 0x9E;bit SM2 = 0x9D;bit REN = 0x9C;bit TB8 = 0x9B;bit RB8 = 0x9A;bit TI = 0x99;bit RI = 0x98;/*========T2CON=======*/bit TF2 = 0xCF;bit EXF2= 0xCE;bit RCLK= 0xCD;bit TCLK= 0xCC;bit EXEN2 = 0xCB;bit TR2 = 0xCA;bit C_T2 = 0xC9;bit CP_RL2= 0xC8;/*========PORT1========*/bit P10 = 0x90;bit P11 = 0x91;bit P12 = 0x92;bit P13 = 0x93;bit P14 = 0x94;bit P15 = 0x95;bit P16 = 0x96;bit P17 = 0x97;/*========PORT3========*/bit P30 = 0xB0;bit P31 = 0xB1;bit P32 = 0xB2;bit P33 = 0xB3;bit P34 = 0xB4;bit P35 = 0xB5;bit P36 = 0xB6;bit P37 = 0xB7;/*==============================*//******* Interrupt Vector Definitions *****//*==============================*/interrupt [0x03] void EX0_int (void); /* External Interrupt 0 */ interrupt [0x0B] void T0_int (void); /* Timer 0 Overflow */interrupt [0x13] void EX1_int (void); /* External Interrupt 1 */ interrupt [0x1B] void T1_int (void); /* Timer 1 Overflow */interrupt [0x23] void SCON_int (void); /* Serial Port */interrupt [0x2B] void T2_int (void); /* Timer 2 Overflow */interrupt [0x2B] void T2EX_int (void); /* Negative Transition on T2EX */。
间接寻址和地址寄存器指令
地址寄存器指令的缺点
缺乏灵活性
地址寄存器指令直接使用寄存器中的地址作为操作数的地址,这使 得程序在处理不同情况时缺乏灵活性。
可扩展性差
由于地址寄存器指令直接使用寄存器中的地址,当数据结构发生变 化时,可能需要修改整个程序以适应新的数据结构。
增加编程难度
由于地址寄存器指令直接使用寄存器中的地址,因此需要程序员手 动管理寄存器的值,这增加了编程的难度和出错的风险。
要点二
中断处理
在处理硬件中断时,地址寄存器指令 用于指定中断处理程序的入口地址。 当发生中断时,系统会自动跳转到该 地址执行中断处理程序。
要点三
直接内存访问( DMA)
在直接内存访问操作中,地址寄存器 指令用于指定要传输数据的起始地址 。通过设置地址寄存器的值,DMA 控制器可以直接在内存和设备之间传 输数据,而不需要CPU的干预。
随着云计算技术的普及,间接寻址和 地址寄存器指令将逐渐云端化,通过 将指令执行的结果存储在云端,实现 数据共享和远程控制,提高应用的灵 活性和可扩展性。
应用领域拓展
物联网
随着物联网技术的不断发展,间 接寻址和地址寄存器指令将在物 联网领域得到广泛应用,如智能 家居、智能农业等,通过指令控 制各种设备的运行,提高智能化 水平和生活质量。
指令格式
指令格式通常包括操作码、 寄存器号和可能的修饰符。
寄存器号指定了要使用的地 址寄存器,如AX、BX、CX 等。
操作码指定了要执行的操作 ,如加法、减法、乘法等。
修饰符可能包括间接寻址、 变址寻址等,用于指定如何 访问内存单元。
03
CATALOGUE
间接寻址与地址寄存器指令的比较
相似之处
选择依据
编程语言和指令集
寄存器PLC地址与寄存器modbus协议地址
寄存器PLC地址与寄存器modbus协议地址寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是⽂本显⽰器。
PLC地址⼀般采⽤10进制描述,共有5位,其中第⼀位代码寄存器类型。
第⼀位数字和寄存器类型的对应关系如表1所⽰。
PLC地址例如40001、30002等。
寄存器modbus协议地址指通信时使⽤的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作⽤,所以只需说明后4位数,⽽且需转换为4位⼗六进制地址。
例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址⼀般使⽤16进制描述。
再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002。
在实际编程中,由于前缀的区分作⽤,所以只需说明后4位数,⽽且需转换为4位⼗六进制地址。
⽀持 Modbus 协议的设备或软件,使⽤时⽤户直接设置或看到的应 当是 Modbus 数据地址。
Modbus 地址所访问的数据,是通过各种 “功能”读写⽽来。
功能码是 Modbus 地址的底层。
如果 Modbus 通 信的⼀⽅提供的所谓 Modbus 协议只有功能码,则需要注意了解此 功能号与 Modbus 地址间的对应关系。
使⽤ modbus 地址时应注意下述问题:1)40001~4xxxx 是美国 modicon 公司和 ge 公司 plc 使⽤的 modbus 地址,它是基于1的地址,即同类元件的⾸地址为1。
西门⼦plc 的 modbus 地址是基于0的地址。
2)美国的 modbus 地址左起第2位⽤来表⽰元件的类型,例如 i0.0的 modbus 地址为010001。
因为数据类型已经包含在功能码中了,西门⼦的 i0.0的 modbus 地址实际上为000000, i2.0的 modbus 地址为 000016(或⼗六进制数16#0010) ,⽽不是010017。
modbus地址对应表
Modbus协议定义的寄存器地址是5位十进制地址,即:
线圈(DO)地址:00000~09999
触点(DI)地址:10000~19999
输入寄存器(AI)地址:30000~39999
输出寄存器(AO)地址:40000~49999
由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址。
在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus比其他通信协议使用的更广泛的主要原因有:
对供应商来说,修改移动本地的比特或字节没有很多限制
Modbus允许多个(大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。
在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。
寄存器与七种寻址方式
寄存器与七种寻址⽅式⼀、寄存器总共同拥有14个16位寄存器,8个8位寄存器通⽤寄存器:数据寄存器:AH(8位) AL(8位) AX(16位) (AX和AL⼜称累加器)BH(8位) BL(8位) BX(16位) (BX⼜称基址寄存器,唯⼀作为存储器指针使⽤寄存器)CH(8位) CL(8位) CX(16位) (CX⽤于字符串操作,控制循环的次数,CL⽤于移位)DH(8位) DL(8位) DX(16位) (DX⼀般⽤来做32位的乘除法时存放被除数或者保留余数)指针寄存器:SP 堆栈指针 (存放栈顶地址)BP 基址指针 (存放堆栈基址偏移)变址寄存器:主要⽤于存放某个存储单元地址的偏移,或某组存储单元開始地址的偏移,即作为存储器(短)指针使⽤。
作为通⽤寄存器,它们能够保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是须要的存储单元地址的偏移.SI 源地址 (源变址寄存器)DI ⽬的地址 (⽬的变址寄存器)控制寄存器:IP 指令指针FLAG 标志寄存器 ①进位标志 CF,记录运算时最⾼有效位产⽣的进位值。
②符号标志 SF,记录运算结果的符号。
结果为负时置1,否则置0。
③零标志 ZF,运算结果为0时ZF位置1,否则置0。
④溢出标志 OF,在运算过程中,如操作数超出了机器可表⽰数的范围称为溢出。
溢出时OF位置1,否则置0。
⑤辅助进位标志 AF,记录运算时第3位(半个字节)产⽣的进位值。
⑥奇偶标志 PF,⽤来为机器中传送信息时可能产⽣的代码出错情况提供检验条件。
当结果操作数中1的个数为偶数时置1,否则置0。
段寄存器CS 代码段 IPDS 数据段SS 堆栈段 SP BPES 附加段⼆、七种寻址⽅式:1、马上寻址⽅式:操作数就包括在指令中。
作为指令的⼀部分,跟在操作码后存放在代码段。
这样的操作数成为马上数。
马上数能够是8位的,也能够是16位的。
⽐如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址⽅式:操作数在CPU内部的寄存器中,指令指定寄存器号。
寄存器地址与数据配置
寄存器地址与数据配置寄存器地址说明存储寄存器地址的⼤⼩为4位,也就是地址偏移相差0x4 ,每位存储1字节数据,共4字节(32位)0x400 == 1K0x10 0000 == 1M0X4000 0000 == 1G0X8000 0000 == 2G赋值⽅式 格式:寄存器地址 |= value(置1)、寄存器地址 &= value(置0) 例⼦:GPIOB_CRL &= ~(1111<<4*N); //左移4*N位,先复位GPIOB_CRL |= (1101<<4*N); //左移4*N位,再置位 含义:1101:寄存器配置的模式4*N:假设以每4位为⼀组,第N组1101<<4*2 = 1101 0000 0000或者HWREG(BASE + OFFSET) &=DATAHWREG(BASE + OFFSET) |=DATA //置位BASE:基地址,OFFSET:偏移地址,DATA:模式或者数据#define HWREG(x) *((volatile unsigned int *)(x)))把x转化为volatile unsigned int *(地址/指针)类型,并*取值(内容)对寄存器⾥⾯的内容进⾏操作volatilevolatile是⼀个特征修饰符(type specifier).volatile的作⽤是作为指令关键字,确保本条指令不会因编译器的优化⽽省略,且要求每次直接读值。
volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,编译器在⽤到这个变量时必须每次都⼩⼼地重新读取这个变量的值,⽽不是使⽤保存在寄存器⾥的备份。
#define __IO volatile寄存器置1置0#define setbit(x,y) x |= (1<<y) //将x的第y位置1#define clrbit(x,y) x &= ~(1<<y) //将x的第y位清0。
【汇编】各种寄存器介绍
【汇编】各种寄存器介绍计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)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),每个寄存器都有⾃⼰的名称,可独⽴存取。
程序员可利⽤数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器EAX通常称为累加器(Accumulator),⽤累加器进⾏的操作可能需要更少时间。
可⽤于乘、除、输⼊/输出等操作,使⽤频率很⾼;寄存器EBX称为基地址寄存器(Base Register)。
它可作为存储器指针来使⽤;寄存器ECX称为计数寄存器(Count Register)。
在循环和字符串操作时,要⽤它来控制循环次数;在位操作中,当移多位时,要⽤CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。
在进⾏乘、除运算时,它可作为默认的操作数参与运算,也可⽤于存放I/O的端⼝地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,⽽且也可作为指针寄存器,所以,这些32位寄存器更具有通⽤性。
2、变址寄存器32位CPU有2个32位通⽤寄存器ESI和EDI。
模块参数寄存器表定义
001AH
电网临时恢复状态(低字节为电网1状态、高字节为电网2状态)AA:临时恢复、00:未使用
13
001BH
设备干扰故障码
14
001CH
接线故障码
15
001DH~002FH
保留
设备干扰故障码(位状态表示:0表示正常,1表示故障):
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
波特率:03~08表示1200~38400BPS默认值6
3
0002H
版本号
4
0003H
采集周期
5
0004H
处理时间(采集次数与处理次数的倍数关系)
6
0005H
通信时间(通信次数与处理次数的倍数关系)
7
0006H
保留
8
0007H
保留
9
0008H~000FH
保留
2、采集数据寄存器地址表:
序号
寄存器地址
说明
7
0016H
电网1相差(低字节:正相差、高字节:负相差)
8
0017H
电网2相差(低字节:正相差、高字节:负相差)
10
0018H
电网总体状态(低字节为电网1状态、高字节为电网2状态)
AA:正常、5A:故障无断线、A5:正常断线、55:故障断线
11
0019H
现场恢复允许状态(允许:0x00AA、禁止:0x0055)
1
0010H
参考电网频率(低字节:正频率、高字节:负频率)
2
0011H
电网1频率(低字节:正频率、高字节:负频率)
3
0012H
电网2频率(低字节:正பைடு நூலகம்率、高字节:负频率)
DSP程序中寄存器如何分配地址
DSP程序中寄存器如何分配地址DSP中某个寄存器怎么分配地址?在数据⼿册中,我们常常看到说某个寄存器地址是多少,以TMS320F28335的时钟系统寄存器为例,在ti公司给出的⼿册我们看到如下信息我们看到HISPCP中的地址为0x701A;翻看ti公司给的⼀系列库我们发现其寄存器定义在结构体SYS_CTRL_REGS中,经过⼀系列查找,我们发现SYS_CTRL_REGS映射的是 DSP281x_Headers_nonBIOS.cmd⽂件中,其对应的地址映射是System:0我们发现其⾸地址是0x7010;⽽resvd1不代表任何含义,仅仅⽅便位置偏移设数,⽽结构体中HISPCP前⾯有10个16进制变量,HISPCP是第11个,在C语⾔中,下标是从0开始,所有HISPCP是第10个,也就是A,那么HISPCP地址是0x701A,查看芯⽚数据发现吻合,相关内容,可参考下⾯⼀⽚博客⽤过F2812的朋友⼀定会对cmd⽂件很熟悉,因为这个⽂件中为每个程序和数据分配了相应的地址。
我们常⽤的cmd⽂件包括连个:(1) DSP281x_Headers_nonBIOS.cmd(2) F2812_EzDSP_RAM_lnk.cmdDSP281x_Headers_nonBIOS.cmd上⾯第⼀个⽂件⽤于对DSP外设分配地址,⽽第⼆个⽂件是为系统的程序和数据分配地址。
当然,如果DSP的外设地址我们⽤C 语⾔已经⾃⼰定义,那第⼀个⽂件我们就可以不⽤了,笔者就是⾃⼰定义的,所以没有⽤到第⼀个⽂件。
对于为什么要⾃⼰定义外设寄存器以及中断地址,有这⼏个原因:(1) ⾃⼰定义外设寄存器地址可以很清楚的了解DSP的⼯作原理,虽然这样很耗费时间,但是会了解到DSP的中断等等是怎么⼯作的。
(2) 因为DSP外设寄存器地址的分配时采⽤寄存器形式分配到的。
举个例⼦,以sci串⼝通信为例,其他的外设以及中断都⼀样。
⽐如我们设置波特率,肯定是设置某个寄存器的相应位来实现。
LD_3320芯片中各个寄存器的地址及其功能
LD_3320芯片中各个寄存器的地址及其功能地址功能01 FIFO_DATA数据口,主数据处理FIFO缓存器,ASR或者MP3的主数据区02 FIFO中断允许第0位:允许FIFO_DATA中断;第2位:允许FIFO_EXT中断;05 FIFO_EXT数据口,语音识别添加关键词用FIFO缓存器06 (只读)FIFO状态第3位:1表示FIFO_DATA已满,不能写。
第5位:1表示FIFO_EXT已满,不能写。
其余位Bit: Reserved。
08 清除FIFO内容(清除指定FIFO后再写入一次00H)第0位:写入1→清除FIFO_DATA 第2位:写入1→清除FIFO_EXT11 时钟频率设置117 写35H对LD3320进行软复位(Soft Reset)写48H可以激活DSP;写4CH可以使DSP休眠,比较省电。
19 时钟频率设置21B 时钟频率设置31C ADC开关控制写00H ADC不可用写09H Reserve保留命令字,具体使用按照给出的参考程序代码使用。
写0BH 麦克风输入ADC通道可用(芯片管脚MIC_P,MIC_N,MBS,管脚9,10,12 )写07H 立体声Line-in输入ADC通道可用(芯片管脚LIN_L,LIN_R,管脚13,14)写23H Mono Line-in输入ADC通道可用(芯片管脚MONO,管脚11)1D 时钟频率设置41E ADC专用控制,应初始化为00H20 FIFO_DATA上限低8位(UpperBoundary L)21 FIFO_DATA上限高8位(UpperBoundary H)22 FIFO_DATA下限低8位(LowerBoundary L)23 FIFO_DATA下限高8位(LowerBoundary H)24 FIFO_DATA MCU水线低8位(MCU water mark L)25 FIFO_DATA MCU水线高8位(MCU water mark H)26 FIFO_DATA DSP水线低8位(DSP water mark L)27 FIFO_DATA DSP水线高8位(DSP water mark H)29 中断允许(可读写)第2位:FIFO 中断允许,1表示允许;0表示不允许。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cisco 路由器寄存器配置
配置目的:寄存器配置用于更改路由器启动过程。
启动位由4位16进制寄存器组成
格式:0xABCD
赋值范围从0x0到0xFFFF
0x2102 :工业默认值
0x2142 :从FLASH中启动,但不使用NVRAM中的配置文件(用于口令恢复)
0x2101 :从Boot RAM中启动,应用于更新系统文件
0x2141 :从Boot RAM中启动,但不使用NVRAM中的配置文件
其中C位的第三位为1时表示关闭Break键,反之表示打开Break键。
0x141:表示关闭Break键,不使用NVRAM中的配置文件,并且从系统默认的ROM中的系统中启动。
0x0040:表示允许路由气读取NVRAM中的配置文件。
监视命令功能
o:以位的形式显示实际配置的当前起作用的寄存器,
o Displays the virtual configuration register, currently in effect, wi
th a de script ion of the bits
o/r:重置实际配置的寄存器为以下值:
?9600 (端口速率)
?Break是否有效
?是否忽略NVRAM中的配置
?是否从ROM 中启动
如:o/r 0x2102
表B-1 寄存器配置定义表
位顺序十六进制意义
00 to 03 0x0000 to 0x000F 启动字段
06 0x0040 使得系统软件忽略NVRAM中的内容
07 0x0080 OEM位开启
08 0x0100 Break键关闭
10 0x0400 IP广播到所有域
11 to 12 0x0800 to 0x1000 Console口速率
13 0x2000 如果网络启动失败,默认从ROM中启动
14 0x4000 IP broadcasts do not have net numbers
15 0x8000 启动诊断信息同时忽略NVRAM内容
(1)工业默认寄存器位 0x2102。
这个只有以下几个部分组成
bit 13 = 0x2000, bit 8 = 0x0100, and bits 00 到 03 (参照 TableB-2) = 0
x0002.
表 B-2 启动为注视 (配置寄存器位 00 到 03)
启动位的意义
0x0:启动后停留在bootstrap状态
0x1:从 ROM 中启动
0x2到0xF:指定默认的启动文件启动系统,
表B-3 Console口速率设定表速率 12位 11位
9600 0 0
4800 0 1
1200 1 0
2400 1 1。