特殊寄存器地址

合集下载

特殊功能寄存器

特殊功能寄存器

特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。

很多功能也通过特殊功能寄存器来定义和控制程序的执行。

MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。

表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。

表2 特殊功能寄存器标识符号地址寄存器名称ACC 0E0H 累加器B 0F0H B寄存器PSW 0D0H 程序状态字SP 81H 堆栈指针DPTR 82H、83H 数据指针(16位)含DPL和DPHIE 0A8H 中断允许控制寄存器IP 0B8H 中断优先控制寄存器P0 80H I/O口0寄存器P1 90H I/O口1寄存器P2 0A0H I/O口2寄存器P3 0B0H I/O口3寄存器PCON 87H 电源控制及波特率选择寄存器SCON 98H 串行口控制寄存器SBUF 99H 串行数据缓冲寄存器TCON 88H 定时控制寄存器TMOD 89H 定时器方式选择寄存器TL0 8AH 定时器0低8位TH0 8CH 定时器0高8位TL1 8BH 定时器1低8位TH1 8DH 定时器1高8位程序计数器PC(program Counter)程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。

PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。

PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。

累加器ACC(Accumulator)累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。

加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。

单片机89C51特殊功能寄存器

单片机89C51特殊功能寄存器

单片机89C51特殊功能寄存器高手从菜鸟忽略作起之(三)单片机共有21个特殊功能寄存器,下面从其功能,位结构,地址,读写方法对其作详细介绍。

一,特殊功能寄存器总述。

二,特殊功能寄存器分类:1.CPU控制类(6个):Acc,B,PSW,DPL,DPH,SP.2.中断控制类(2个):IE,IP.3.计数/定时类(6个):TMOD,TCON,TL0,TL1,TH0,TH1.4.并口端口类(4个):P0,P1,P2,P3.5.串口端口类(2个):SCON,SBUF.6.电源管理类(1个):PCON.三,特殊功能寄存器详述:1.CPU控制类(6个):Acc,B,PSW,DPL,DPH,SP1.1 Acc:累加器,可按位,字节访问。

1.2 B:辅助寄存器,用于进行乘除运算。

P:奇偶校验位:P=0:1的个数为奇数;P=1,1的个数为偶数。

---:保留位,没使用。

OV:Over flow,溢出标志,OV=0:没溢出;OV=1:溢出。

Rs0:Regedit select 0,寄存器选取0.RS1:Regedit select 1,寄存器选取1。

F0:User Flag bit:用户自定义位。

Ac: Auxiliary Carry,辅助进位标志,由低4位运算时,是否有向高4位进位。

Cy:Carry,进位标志。

字节运算时,是否有进位。

1.4 DPTL:Data Pointer Register Low,数据指针寄存器低8位。

1.5 DPTH:Data Pointer Register High,数据指针寄存器高8位。

1.6 SP: Stock Pointer:栈指针寄存器。

2.中断控制类寄存器(2个):IE,IPEX0: Enable Extra 0 ,INT0 中断允许位。

ET0: Enable Timer 0,C/T0 中断允许位。

EX1: Enable Extra 1 ,INT1 中断允许位。

ET1: Enable Timer 1,C/T1 中断允许位。

单片机寄存器_MCS-51单片机特殊功能寄存器详解

单片机寄存器_MCS-51单片机特殊功能寄存器详解

1、定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。

A.主要完成三个功能:*确定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B.TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端);TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C.控制字的格式和含义a、GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作;b、C/T(TMOD.6)分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器;d、M1(TMOD.5), M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数2、定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。

A 控制字的格式和含义a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位当计数器计数溢出时,该位置“1”。

使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。

使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。

80C51特殊功能寄存器表

80C51特殊功能寄存器表

定时器模式
M1 M0 GATE C/T 方式选择 门控开/关 计数/定时 定时/计数器T0 的低8 位 定时/计数器T1 的低8 位 定时/计数器T0 的高8 位 定时/计数器T1 的高8 位
辅助寄存器 P1端口
95H 94H 93H 92H 91H 90H 90H P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 9DH 9CH 9BH 9AH 99H 98H 98H 串行口控制 SCON SM2 REN TB8 RB8 TI RI 多机控制 串行接收允/ 发的第九位 收的第九位 送中断有/ 发 接收中断有/无 串行口数据 SBUF 99H A7H A6H A5H A4H A3H A2H A1H A0H P2端口 P2 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 辅助寄存器1 AUXR1 A2H 看门狗复位 WDTRST A6H AFH AEH ADH ACH ABH AAH A9H A8H 中断允许 IE A8H EA - - ES ET1 EX1 ET0 EX0 中断总控 T2 串行口 INT1 T0 INT0 允/禁 允/禁 允/禁 允/禁 允/禁 允/禁 1/0 B7H B6H B5H B4H B3H B2H B1H B0H P3端口 P3 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 RD WR T1 T0 INT1 INT0 TXD RXD BFH BEH BDH BCH BBH BAH B9H B8H 中断优先权 IP B8H - - PT2 PS PT1 PX1 PT0 PX0 T2 中行口 T1 INT1 T0 INT0 CFH CEH CDH CCH CBH CAH C9H C8H 定时器2控制 T2CON C8H TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 DP/RL2 溢出标志 外部标志 接收时钟使能 发送时钟使能 外部使能 启动标志 定时/计数 捕获/重装 T2OE DCEN 定时器2模式 T2MOD C9H 输出允/禁 计数方式选择 RCAP2L 捕捉寄存器低字节 CAH 捕捉寄存器高字节 RCAP2H CBH T2低字节 TL2 CCH T2高字节 TH2 CDH D7H D6H D5H D4H D3H D2H D1H D0H 程序状态字 D0H PSW CY AC F0 RS1 RS0 OV - P E7H E6H E5H E4H E3H E2H E1H E0H A累加器 ACC E0H ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0 F7H F6H F5H F4H F3H F2H F1H F0H B寄存器 B F0H B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0

C51单片机21个特殊功能寄存器

C51单片机21个特殊功能寄存器

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。

它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。

,如果做加法的话,两数位运算器只能表示到0-255中的运算器是一种8位的运算器,我们知道,88051,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。

这样就没事了。

有相加可能会超过2550CY==1;无进、借位,进、借位,CY )78H+97H(01111000+10010111例:。

S7-200 PLC特殊寄存器

S7-200 PLC特殊寄存器

S7-200 PLC SM特殊功能寄存器赋值与功能SMB0至SMB29(S7-200只读特殊内存)。

每次扫描循环后,S7-200 CPU操作系统将新改动写入特殊内存中存储的系统数据中。

如果从程序读取SMB0至SMB29,此为只读地址。

如果程序尝试对只读SM地址写入,Micro/WIN会编译程序,不会出错。

但是,CPU程序编译程序会拒绝程序,并显示“操作数范围错误,下载失败。

”程序可以读取存储在特殊内存地址中数据、评估当前系统状态、并使用有条件逻辑决定如何应答。

在运行模式中,对程序的连续扫描提供对所选系统数据的连续监管。

SMB0 系统状态位SMB1 指令执行状态位SMB2 自由端口接收字符SMB3 自由端口奇偶校验错误SMB4 中断队列溢出、运行时间程序错误、中断启用、自由端口传输器被强制SMB5 I/O错误状态位SMB6 CPU代码寄存器SMB8-SMB21 I/O模块代码和错误寄存器SMW22-SMW26 扫描时间SMB28-SMB29 模拟调整SMB30至SMB549(S7-200读取/写入特殊内存)根据要求,S7-200 CPU操作系统从特殊内存读取配置/控制数据,并将新改动写入存储在特殊内存中的系统数据。

程序可以读取和写入所有SM地址30或更大的地址,但是SM数据的普通用法根据每个地址的功能不同而异。

程序可以读取通常写入数据的SM地址。

程序可以在SM地址中读取和写入数据。

SM地址提供一种解释系统状态数据、配置系统选项和控制系统功能的方法。

在运行模式中,对程序的连续扫描提供对特殊系统功能的连续存取能力。

SMB30和SMB130 自由端口控制寄存器SMB31-SMW32 永久性内存(EEPROM)写入控制SMB34-SMB35 用于定时中断的时间间隔寄存器SMB36-SMB65 HSC0、HSC1和HSC2高速计数器寄存器SMB66-SMB85 PTO / PWM高速输出寄存器SMB86-SMB94和SMB186-SMB194 接收讯息控制SMW98 I/O扩充总线—通讯错误SMB136-SMB165 HSC3、HSC4和HSC5高速计数器寄存器SMB166-SMB194 用于PLC(脉冲)指令的PTO包络表SMB200-SMB549 为智能扩充模块提供的状态信息保留,例如EM 277 PROFIBUS-DP模块。

80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表SFR MSB 位地址/位定义LSB 字节地址B F7 F6 F5 F4 F3 F2 F1 F0 F0HACC E7 E6 E5 E4 E3 E2 E1 E0 E0HPSW D7 D6 D5 D4 D3 D2 D1 D0 D0H CY AC F0 RS1 RS0 OV F1 PIP BF BE BD BC BB BA B9 B8 B8H ———PS PT1 PX1 PT0 PX0P3 B7 B6 B5 B4 B3 B2 B1 B0 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0IE AF AE AD AC AB AA A9 A8 A8H EA ——ES ET1 EX1 ET0 EX0P2A7 A6 A5 A4 A3 A2 A1 A0 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0SBUF (99H)SCON9F 9E 9D 9C 9B 9A 99 98 98H SM0 SM1 SM2 REN TB8 RB8 TI RIP197 96 95 94 93 92 91 90 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0TH1 (8DH) TH0 (8CH) TX1 (8BH) TX0 (8AH)TMOD GATE C/T M1 M0 GATEC/T M1 M0 (89H)TCON8F 8E 8D 8C 8B 8A 89 88 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0PCON SMOD ———GF1 GF0 PD IDL (87H)DPH (83H)DPL (82H)SP (81H)P0 87 86 85 84 83 82 81 80 80HP0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0/*--------- 8051内核特殊功能寄存器-------------*/sfr ACC = 0xE0; //累加器sfr B = 0xF0; //B 寄存器sfr PSW = 0xD0; //程序状态字寄存器sbit CY = PSW^7; //进位标志位sbit AC = PSW^6; //辅助进位标志位sbit F0 = PSW^5; //用户标志位0sbit RS1 = PSW^4; //工作寄存器组选择控制位sbit RS0 = PSW^3; //工作寄存器组选择控制位sbit OV = PSW^2; //溢出标志位sbit F1 = PSW^1; //用户标志位1sbit P = PSW^0; //奇偶标志位sfr SP = 0x81; //堆栈指针寄存器sfr DPL = 0x82; //数据指针0低字节sfr DPH = 0x83; //数据指针0高字节/*------------ 系统管理特殊功能寄存器-------------*/sfr PCON = 0x87; //电源控制寄存器sfr AUXR = 0x8E; //辅助寄存器sfr AUXR1 = 0xA2; //辅助寄存器1sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器sfr CLK_DIV = 0x97; //时钟分频控制寄存器sfr BUS_SPEED = 0xA1; //总线速度控制寄存器/*----------- 中断控制特殊功能寄存器--------------*/sfr IE = 0xA8; //中断允许寄存器sbit EA = IE^7; //总中断允许位sbit ELVD = IE^6; //低电压检测中断控制位sbit EADC = IE^5; //ADC中断允许控制位sbit ES = IE^4; //串口1中断允许位sbit ET1 = IE^3; //定时器1溢出中断允许位sbit EX1 = IE^2; //外部中断1允许位sbit ET0 = IE^1; //定时器0溢出中断允许位sbit EX0 = IE^0; //外部中断0允许位sfr IE2 = 0xAF; //中断允许寄存器2sfr IP = 0xB8; //中断优先级寄存器sbit PPCA = IP^7; // PCA中断优先级控制位sbit PLVD = IP^6; //低电压检测中断优先级控制位sbit PADC = IP^5; //ADC中断优先级控制位sbit PS = IP^4; //串口1中断优先级控制位sbit PT1 = IP^3; //定时器1中断优先级控制位sbit PX1 = IP^2; //外部中断1优先级控制位sbit PT0 = IP^1; //定时器0中断优先级控制位sbit PX0 = IP^0; //外部中断0优先级控制位sfr IPH = 0xB7; //中断优先级高位寄存器sfr IP2 = 0xB5; //第二中断优先级寄存器低字节sfr IPH2 = 0xB6; //第二中断优先级寄存器高字节/*--------------- I/O 口特殊功能寄存器-------------------*/sfr P0 = 0x80; //P0口寄存器sfr P0M1 = 0x93; //P0口工作模式寄存器1sfr P0M0 = 0x94; //P0口工作模式寄存器0sfr P1 = 0x90; //P1口寄存器sfr P1M1 = 0x91; //P1口工作模式寄存器1sfr P1M0 = 0x92; //P1口工作模式寄存器0sfr P1ASF = 0x9D; //P1口模拟量功能设置寄存器sfr P2 = 0xA0; //P2口寄存器sfr P2M1 = 0x95; //P2口工作模式寄存器1sfr P2M0 = 0x96; //P2口工作模式寄存器0sfr P3 = 0xB0; //P3口寄存器sbit T1 = P3^5; //定时器1外部输入sbit T0 = P3^4; //定时器0外部输入sbit INT1 = P3^3; //外部中断1sbit INT0 = P3^2; //外部中断0sbit TXD = P3^1; //串行输入通道sbit RXD = P3^0; //串行输出通道sfr P3M1 = 0xB1; //P3口工作模式寄存器1sfr P3M0 = 0xB2; //P3口工作模式寄存器0sfr P4 = 0xC0; //P4口寄存器sfr P4M1 = 0xB3; //P4口工作模式寄存器1sfr P4M0 = 0xB4; //P4口工作模式寄存器0sfr P4SW = 0xBB; //P4口功能切换寄存器sfr P5 = 0xC8; //P5口(只有P5.3 P5.2 P5.1 P5.0)sfr P5M1 = 0xC9; //P5口工作模式寄存器1sfr P5M0 = 0xCA; //P5口工作模式寄存器0./*----------------- 定时器特殊功能寄存器-----------------*/sfr TCON = 0x88; //定时/计数控制寄存器sbit TF1 = TCON^7; //定时器1溢出中断标志sbit TR1 = TCON^6; //定时器1运行控制位sbit TF0 = TCON^5; //定时器0溢出中断标志sbit TR0 = TCON^4; //定时器0运行控制位sbit IE1 = TCON^3; //外部中断1请求标志sbit IT1 = TCON^2; //选择外部中断请求1为边沿触发方式的控制位sbit IE0 = TCON^1; //外部中断0请求标志sbit IT0 = TCON^0; //选择外部中断请求0为边沿触发方式的控制位sfr TMOD = 0x89; //定时/计数模式控制寄存器sfr TL0 = 0x8A; //定时/计数器0低字节sfr TH0 = 0x8C; //定时/计数器0高字节sfr TL1 = 0x8B; //定时/计数器1低字节sfr TH1 = 0x8D; //定时/计数器1高字节/*-------------- 串行口特殊功能寄存器------------------*/sfr SCON = 0x98; //串行口控制寄存器sbit SM0 = SCON^7; //串行口工作方式设定控制位0(与FE功能复用)sbit FE = SCON^7;sbit SM1 = SCON^6; //串行口工作方式设定控制位1sbit SM2 = SCON^5; //UART的SM2设定sbit REN = SCON^4; //接收允许位sbit TB8 = SCON^3; //发送数据的第九位sbit RB8 = SCON^2; //接收数据的第九位sbit TI = SCON^1; //发送中断标志sbit RI = SCON^0; //接收中断标志sfr SBUF = 0x99; //串口数据缓冲器sfr SADEN = 0xB9; //从机地址掩码寄存器sfr SADDR = 0xA9; //从机地址寄存器sfr S2CON = 0x9A; //串行口2控制寄存器sfr S2BUF = 0x9B; //串行口2数据缓冲器sfr BRT = 0x9C; //独立波特率定时器/*---------------- 看门狗定时器寄存器------------------*/sfr WDT_CONTR = 0xC1; //看门狗定时器控制寄存器/*---------------- PCA 寄存器-----------------*/sfr CCON = 0xD8; //PCA控制寄存器sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFFH变为0000H)标志sbit CR = CCON^6; //PCA计数器计数允许控制位sbit CCF1 = CCON^1; //PCA模块1中断标志sbit CCF0 = CCON^0; //PCA模块0中断标志sfr CMOD = 0xD9; //PCA工作模式寄存器sfr CL = 0xE9; //PCA计数器低8位sfr CH = 0xF9; //PCA计数器高8位sfr CCAPM0 = 0xDA; //PAC模块0的工作模式寄存器sfr CCAPM1 = 0xDB; //PAC模块1的工作模式寄存器sfr CCAP0L = 0xEA; //PAC模块0捕捉/比较寄存器低8位sfr CCAP0H = 0xFA; //PAC模块0捕捉/比较寄存器高8位sfr CCAP1L = 0xEB; //PAC模块1捕捉/比较寄存器低8位sfr CCAP1H = 0xFB; //PAC模块1捕捉/比较寄存器高8位sfr PCA_PWM0 = 0xF2; //PCA模块0 PWM寄存器sfr PCA_PWM1 = 0xF3; //PCA模块1 PWM寄存器/*----------------- ADC 寄存器-----------------*/sfr ADC_CONTR = 0xBC; //ADC控制寄存器, 本寄存器不支持位操作sfr ADC_RES = 0xBD; //ADC转换结果高8位寄存器sfr ADC_RESL = 0xBE; //ADC转换结果低2位寄存器/*---------------- SPI 寄存器--------------------*/sfr SPSTA T = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器------------------*/sfr IAP_DA TA = 0xC2; //ISP/IAP Flash数据寄存器sfr IAP_ADDRH = 0xC3; //ISP/IAP Flash地址高字节sfr IAP_ADDRL = 0xC4; //ISP/IAP Flash地址低字节sfr IAP_CMD = 0xC5; //ISP/IAP Flash命令寄存器sfr IAP_TRIG = 0xC6; //ISP/IAP Flash命令触发器sfr IAP_CONTR = 0xC7; //ISP/IAP控制寄存器Love is not a maybe thing. You know when you love someone.。

MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在一个51单片机的内部包含了这么多的东西。

对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。

1、ACC---是累加器,通常用A表示。

这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器。

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。

DPTR = DPH + DPL。

可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。

分成DPL(低8位)和DPH(高8位)两个寄存器。

用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。

C51特殊功能寄存器地址表

C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表/*--------- 8051内核特殊功能寄存器 -------------*/sfr ACC = 0xE0; 8F0M0M1M1M2M2M3M3M4M4M5M5M/*----------------- 定时器特殊功能寄存器-----------------*/sfr TCON = 0x88; //定时/计数控制寄存器sbit TF1 = TCON^7; //定时器1溢出中断标志sbit TR1 = TCON^6; //定时器1运行控制位sbit TF0 = TCON^5; //定时器0溢出中断标志sbit TR0 = TCON^4; //定时器0运行控制位sbit IE1 = TCON^3; //外部中断1请求标志sbit IT1 = TCON^2; //选择外部中断请求1为边沿触发方式的控制位sbit IE0 = TCON^1; //外部中断0请求标志sbit IT0 = TCON^0; //选择外部中断请求0为边沿触发方式的控制位sfr TMOD = 0x89; //定时/计数模式控制寄存器sfr TL0 = 0x8A; //定时/计数器0低字节sfr TH0 = 0x8C; //定时/计数器0高字节sfr TL1 = 0x8B; //定时/计数器1低字节sfr TH1 = 0x8D; //定时/计数器1高字节/*-------------- 串行口特殊功能寄存器 ------------------*/sfr SCON = 0x98; //串行口控制寄存器sbit SM0 = SCON^7; //串行口工作方式设定控制位0(与FE功能复用)sbit FE = SCON^7;sbit SM1 = SCON^6; //串行口工作方式设定控制位1sbit SM2 = SCON^5; //UART的SM2设定sbit REN = SCON^4; //接收允许位sbit TB8 = SCON^3; //发送数据的第九位sbit RB8 = SCON^2; //接收数据的第九位sbit TI = SCON^1; //发送中断标志sbit RI = SCON^0; //接收中断标志sfr SBUF = 0x99; //串口数据缓冲器sfr SADEN = 0xB9; //从机地址掩码寄存器sfr SADDR = 0xA9; //从机地址寄存器sfr S2CON = 0x9A; //串行口2控制寄存器sfr S2BUF = 0x9B; //串行口2数据缓冲器sfr BRT = 0x9C; //独立波特率定时器/*---------------- 看门狗定时器寄存器 ------------------*/sfr WDT_CONTR = 0xC1; //看门狗定时器控制寄存器/*---------------- PCA 寄存器 -----------------*/sfr CCON = 0xD8; //PCA控制寄存器sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFFH变为0000H)标志sbit CR = CCON^6; //PCA计数器计数允许控制位sbit CCF1 = CCON^1; //PCA模块1中断标志sbit CCF0 = CCON^0; //PCA模块0中断标志sfr CMOD = 0xD9; //PCA工作模式寄存器sfr CL = 0xE9; //PCA计数器低8位sfr CH = 0xF9; //PCA计数器高8位sfr CCAPM0 = 0xDA; //PAC模块0的工作模式寄存器sfr CCAPM1 = 0xDB; //PAC模块1的工作模式寄存器sfr CCAP0L = 0xEA; //PAC模块0捕捉/比较寄存器低8位sfr CCAP0H = 0xFA; //PAC模块0捕捉/比较寄存器高8位sfr CCAP1L = 0xEB; //PAC模块1捕捉/比较寄存器低8位sfr CCAP1H = 0xFB; //PAC模块1捕捉/比较寄存器高8位sfr PCA_PWM0 = 0xF2; //PCA模块0 PWM寄存器sfr PCA_PWM1 = 0xF3; //PCA模块1 PWM寄存器/*----------------- ADC 寄存器 -----------------*/sfr ADC_CONTR = 0xBC; //ADC控制寄存器, 本寄存器不支持位操作sfr ADC_RES = 0xBD; //ADC转换结果高8位寄存器sfr ADC_RESL = 0xBE; //ADC转换结果低2位寄存器/*---------------- SPI 寄存器 --------------------*/sfr SPSTAT = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器 ------------------*/sfr IAP_DATA = 0xC2; //ISP/IAP Flash数据寄存器sfr IAP_ADDRH = 0xC3; //ISP/IAP Flash地址高字节sfr IAP_ADDRL = 0xC4; //ISP/IAP Flash地址低字节sfr IAP_CMD = 0xC5; //ISP/IAP Flash命令寄存器sfr IAP_TRIG = 0xC6; //ISP/IAP Flash命令触发器sfr IAP_CONTR = 0xC7; //ISP/IAP控制寄存器。

8051特殊功能寄存器详细说明

8051特殊功能寄存器详细说明

PSW(P rogram State Word)程序状态字控制寄存器程序状态寄存器PSW是计算机系统的核心部件—控制器的一部分,可位寻址,字节地址为D0H,单元地址是D0H~D7H。

PSW寄存器结构各Bit D7D6D5D4D3D2D1D0 PSW CY AC F0RS1RS0OV USR P 位地址D7H D6H D5H D4H D3H D2H D1H D0H各控制位功能介绍如下:1)CY:进位标志位,作用有两种:(1)算术运算中进位或借位时,CY=1。

(2)作为布尔代数位处理的累加器。

2)AC:辅助进位标志位,算术运算时低半字节有进位或借位时,AC=1。

3)F0:通用标志位4)RS1:寄存器组选择位高位,RS1与RS0选择四组工作寄存器,每组分别为8个寄存器(R0~R7),如RS1=0、RS0=0,则R0~R7对地址为00H~07H,如RS1=0、RS0=1,则R0~R7对地址为08H~0FH,四组寄存器地址从00H~1FH。

5)RS0:寄存器组选择位低位。

6)OV:溢出标志位,当进行正负号数值的加减运算时,如结果超出7位或2的补码(+27至-128)时,OV=17)USR:用户定义标志位,保留。

8)P:奇偶标志位,当累加器中有奇数个1,则P=1;偶数个1,则P=0.在串行传输时可用来检测传送是否有错。

PCON(Power Control Register)寄存器PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。

系统复位默认为SMOD=0。

单元地址是87H,其结构格式如下:PCON电源管理寄存器结构各Bit D7D6D5D4D3D2D1D0 PCON SMOD------------------GF1GF0PD IDL各控制位功能介绍如下:1)SMOD:该位与串口通信有关。

8051单片机21个特殊功能寄存器和指令汇总

8051单片机21个特殊功能寄存器和指令汇总

MCS-51单片机21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SF R存储空间中,地址空间为80H-FFH,在这片SF R空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有R OM,用来存放程序,有R AM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SF R)。

这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。

它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。

8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。

这样就没事了。

80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表

SFR B ACC PSW IP P3 IE P2SBUF SCON P1TH1 TH0 TX1 TX0 TMODTCONPCON DPH DPL SPP080C51 特别功能存放器地点表MSB位地点 /位定义LSBF7F6F5F4F3F2F1F0E7E6E5E4E3E2E1E0D7D6D5D4D3D2D1D0CY AC F0RS1RS0OV F1PBF BE BD BC BB BA B9B8———PS PT1PX1PT0PX0B7B6B5B4B3B2B1B0P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0AF AE AD AC AB AA A9A8EA——ES ET1EX1ET0EX0A7A6A5A4A3A2A1A0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.09F9E9D9C9B9A9998SM0SM1SM2REN TB8RB8TI RI9796959493929190P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0GAT C/T M1M0GAT C/T M1M0E8E8D8CE8A8988 8F8BTF1TR1TF0TR0IE1IT1IE0IT0 SMOD———GF1GF0PD IDL8786858483828180P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0字节地点F0HE0HD0HB8HB0HA8HA0H(99H)98H90H(8DH)(8CH)(8BH)(8AH)(89H)88H(87H)(83H)(82H)(81H)80H/*--------- 8051内核特别功能存放器 -------------*/sfr ACC = 0xE0;//累加器sfr B = 0xF0;//B 存放器sfr PSW= 0xD0;//程序状态字存放器sbit CY= PSW^7;// 进位标记位sbit AC= PSW^6;// 协助进位标记位sbit F0= PSW^5;// 用户标记位 0sbit RS1= PSW^4;// 工作存放器组选择控制位sbit RS0= PSW^3;// 工作存放器组选择控制位sbit OV= PSW^2;// 溢出标记位sbit F1= PSW^1;// 用户标记位 1sbit P= PSW^0;// 奇偶标记位sfr SP= 0x81;//货仓指针存放器sfr DPL= 0x82;//数据指针0 低字节sfr DPH= 0x83;//数据指针0 高字节/*------------系统管理特别功能存放器-------------*/sfr PCON= 0x87;//电源控制存放器sfr AUXR = 0x8E;// 协助存放器sfr AUXR1 = 0xA2;// 协助存放器 1sfr WAKE_CLKO = 0x8F;// 时钟输出和唤醒控制存放器sfr CLK_DIV= 0x97;// 时钟分频控制存放器sfr BUS_SPEED = 0xA1;//总线速度控制存放器/*-----------中止控制特别功能存放器--------------*/sfr IE= 0xA8;//中止同意存放器sbit EA= IE^7;//总中止同意位sbit ELVD= IE^6;// 低电压检测中止控制位sbit EADC= IE^5;//ADC 中止同意控制位sbit ES= IE^4;// 串口 1 中止同意位sbit ET1= IE^3;// 准时器 1溢出中止同意位sbit EX1= IE^2;// 外面中止 1 同意位sbit ET0= IE^1;// 准时器 0溢出中止同意位sbit EX0= IE^0;// 外面中止0 同意位sfr IE2= 0xAF;//中止同意存放器 2sfr IP= 0xB8;//中止优先级存放器sbit PPCA= IP^7;// PCA 中止优先级控制位sbit PLVD= IP^6;// 低电压检测中止优先级控制位sbit PADC= IP^5;//ADC 中止优先级控制位sbit PS= IP^4;// 串口 1 中止优先级控制位sbit PT1= IP^3;// 准时器 1中止优先级控制位sbit PX1= IP^2;// 外面中止 1 优先级控制位sbit PT0= IP^1;// 准时器 0中止优先级控制位sbit PX0= IP^0;// 外面中止0 优先级控制位sfr IPH= 0xB7;//中止优先级高位存放器sfr IP2= 0xB5;//第二中止优先级存放器低字节sfr IPH2 = 0xB6;//第二中止优先级存放器高字节/*--------------- I/O口特别功能存放器-------------------*/sfr P0= 0x80;//P0 口存放器sfr P0M1= 0x93;//P0 口工作模式存放器 1sfr P0M0= 0x94;//P0口工作模式存放器0sfr P1= 0x90;//P1口存放器sfr P1M1= 0x91;//P1口工作模式存放器1sfr P1M0= 0x92;//P1口工作模式存放器0sfr P1ASF = 0x9D;//P1 口模拟量功能设置存放器sfr P2= 0xA0;//P2 口存放器sfr P2M1= 0x95;//P2 口工作模式存放器1sfr P2M0= 0x96;//P2 口工作模式存放器0sfr P3= 0xB0;//P3 口存放器sbit T1= P3^5;//准时器 1 外面输入sbit T0= P3^4;// 准时器 0 外面输入sbit INT1= P3^3;// 外面中止 1sbit INT0= P3^2;// 外面中止 0sbit TXD= P3^1;// 串行输入通道sbit RXD= P3^0;// 串行输出通道sfr P3M1= 0xB1;//P3 口工作模式存放器1sfr P3M0= 0xB2;//P3 口工作模式存放器0sfr P4= 0xC0;//P4 口存放器sfr P4M1= 0xB3;//P4 口工作模式存放器1sfr P4M0= 0xB4;//P4 口工作模式存放器0sfr P4SW = 0xBB;//P4 口功能切换存放器sfr P5= 0xC8;//P5 口(只有 P5.3 P5.2P5.1 P5.0)sfr P5M1 = 0xC9;//P5 口工作模式存放器 1sfr P5M0 = 0xCA;//P5 口工作模式存放器 0./*-----------------准时器特别功能存放器 -----------------*/sfr TCON= 0x88;//准时 /计数控制存放器sbit TF1= TCON^7;// 准时器 1溢出中止标记sbit TR1= TCON^6;// 准时器 1运转控制位sbit TF0= TCON^5;// 准时器 0溢出中止标记sbit TR0= TCON^4;// 准时器 0运转控制位sbit IE1= TCON^3;// 外面中止 1 恳求标记sbit IT1= TCON^2;// 选择外面中止恳求 1 为边缘触发方式的控制位sbit IE0= TCON^1;// 外面中止0 恳求标记sbit IT0= TCON^0;// 选择外面中止恳求 0 为边缘触发方式的控制位sfr TMOD= 0x89;//准时 / 计数模式控制存放器sfr TL0= 0x8A;//准时 /计数器 0低字节sfr TH0= 0x8C;//准时 / 计数器 0 高字节sfr TL1= 0x8B;//准时 /计数器 1低字节sfr TH1= 0x8D;//准时 / 计数器 1 高字节/*--------------串行口特别功能存放器 ------------------*/sfr SCON = 0x98;//串行口控制存放器sbit SM0= SCON^7;// 串行口工作方式设定控制位0(与 FE 功能复用)sbit FE= SCON^7;sbit SM1= SCON^6;// 串行口工作方式设定控制位1sbit SM2= SCON^5;//UART 的 SM2 设定sbit REN= SCON^4;// 接收同意位sbit TB8= SCON^3;// 发送数据的第九位sbit RB8= SCON^2;// 接收数据的第九位sbit TI= SCON^1;// 发送中止标记sbit RI= SCON^0;// 接收中止标记sfr SBUF= 0x99;//串口数据缓冲器sfr SADEN = 0xB9;//从机地点掩码存放器sfr SADDR = 0xA9;//从机地点存放器sfr S2CON = 0x9A;//串行口 2 控制存放器sfr S2BUF = 0x9B;//串行口 2 数据缓冲器sfr BRT = 0x9C;//独立波特率准时器/*----------------看门狗准时器存放器 ------------------*/sfr WDT_CONTR = 0xC1;// 看门狗准时器控制存放器/*----------------PCA存放器 -----------------*/sfr CCON= 0xD8;//PCA 控制存放器sbit CF= CCON^7;//PCA 计数器溢出 (CH,CL 由 FFFFH 变成 0000H) 标记sbit CR= CCON^6;//PCA 计数器计数同意控制位sbit CCF1= CCON^1;//PCA 模块 1中止标记sbit CCF0= CCON^0;//PCA 模块 0中止标记sfr CMOD= 0xD9;//PCA 工作模式存放器sfr CL= 0xE9;//PCA 计数器低8 位sfr CH= 0xF9;//PCA 计数器高8 位sfr CCAPM0 = 0xDA;//PAC 模块 0 的工作模式存放器sfr CCAPM1 = 0xDB;//PAC 模块 1 的工作模式存放器sfr CCAP0L = 0xEA;//PAC 模块 0 捕获 / 比较存放器低8 位sfr CCAP0H = 0xFA;//PAC 模块 0 捕获 / 比较存放器高8 位sfr CCAP1L = 0xEB;//PAC 模块 1 捕获 / 比较存放器低8 位sfr CCAP1H = 0xFB;//PAC 模块 1 捕获 / 比较存放器高8 位sfr PCA_PWM0 = 0xF2;//PCA 模块 0 PWM 存放器sfr PCA_PWM1 = 0xF3;//PCA 模块 1 PWM 存放器/*-----------------ADC存放器 -----------------*/sfr ADC_CONTR= 0xBC;//ADC 控制存放器 , 本存放器不支持位操作sfr ADC_RES= 0xBD;//ADC 变换结果高8 位存放器sfr ADC_RESL= 0xBE;//ADC 变换结果低 2 位存放器/*----------------SPI存放器 --------------------*/sfr SPSTAT= 0xCD;//SPI 状态存放器 ,本存放器不支持位操作sfr SPCTL= 0xCE;//SPI 控制存放器sfr SPDAT= 0xCF;//SPI 数据存放器/*-----------------ISP_IAP_EEPROM存放器------------------*/sfr IAP_DA TA= 0xC2;//ISP/IAP Flash 数据存放器sfr IAP_ADDRH = 0xC3;//ISP/IAP Flash 地点高字节sfr IAP_ADDRL = 0xC4;//ISP/IAP Flash 地点低字节sfr IAP_CMD= 0xC5;//ISP/IAP Flash 命令存放器sfr IAP_TRIG= 0xC6;//ISP/IAP Flash 命令触发器sfr IAP_CONTR = 0xC7;//ISP/IAP控制存放器。

21个特殊功能寄存器

21个特殊功能寄存器

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。

它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。

8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。

这样就没事了。

有进、借位,CY=1;无进、借位,CY=0 例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。

C51单片机21个特殊功能寄存器

C51单片机21个特殊功能寄存器

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A ≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。

它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。

8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。

这样就没事了。

有进、借位,CY=1;无进、借位,CY=0例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。

i2c 里的reg address

i2c 里的reg address

i2c 里的reg addressI2C通信协议是一种广泛应用于数字电子设备之间的串行通信协议。

在I2C 协议中,寄存器地址(reg address)是一项重要的概念。

寄存器地址用于在I2C设备内部的寄存器中标识特定的功能或数据。

本文将逐步介绍I2C中的寄存器地址及其作用,以及在使用I2C通信时如何正确使用寄存器地址。

第一部分:什么是寄存器地址I2C设备内部是由一系列寄存器组成的,寄存器是一块用于存储数据的特殊内存单元。

寄存器可用于存储设备状态、控制设备功能或保存传感器数据等。

在I2C通信中,寄存器地址用于识别要读取或写入的特定寄存器。

第二部分:寄存器地址的格式在I2C协议中,寄存器地址一般由8位二进制数组成。

根据设备厂商的实现和需求,寄存器地址的长度可以有所不同。

通常情况下,I2C设备的数据手册会明确说明每个寄存器的地址值。

第三部分:如何使用寄存器地址在I2C通信中,要使用寄存器地址进行读取或写入操作,需要经过以下几个步骤:1. 建立I2C通信:首先,需要创建主从设备之间的I2C通信。

在I2C总线上,有一个主设备和一个或多个从设备。

主设备负责控制通信流程,而从设备则响应主设备的命令。

2. 发送设备地址和写命令:在I2C通信开始时,主设备会将从设备的地址发送到总线上。

地址通常是一个7位二进制值,由3个部分组成:设备地址、读/写位和ACK位。

设备地址用于选择要通信的从设备,读/写位用于指示本次通信是读取还是写入操作,ACK位用于从设备发送确认信号。

3. 发送寄存器地址:接下来,主设备会将要读取或写入的寄存器地址发送到从设备上。

这个寄存器地址是通过I2C总线上的数据线逐位发送的,通常是先发送高位,然后是低位。

4. 读取或写入数据:如果是读取操作,主设备会发送一个读命令到从设备,然后从设备将请求的寄存器中的数据发送回主设备。

如果是写入操作,主设备会发送一个写命令和要写入寄存器的数据到从设备。

5. 结束通信:一次I2C通信完成后,主设备会发送一个停止条件到总线上,用于结束本次通信。

特殊功能寄存器

特殊功能寄存器

89C52 256字节 89C51 128字节
80H 7FH
80H
普通RAM区
30H 2FH 20H 1FH 00H
只能直接寻址
位寻址区 工作寄存器区
既可间接寻址,又可直接寻址
14
程序存储器
FFFFH 外部 ROM
1000H 0FFFH 内部 ROM 0000H (EA=1) 0FFFH 外部 ROM (EA=0) 0000H
寄存器名称 I/O口3寄存器 电源控制及波特率选择寄存器 串行口控制寄存器 串行数据缓冲寄存器 定时控制寄存器 定时器方式选择寄存器 定时器0低8位 定时器0高8位 定时器1低8位 定时器1高8位
27
与端口相关的(7个) P0、P1、P2、P3:
四个并行输入/输出口的寄存器。它里面的内容对应着管 脚的输出。
使用时,通常在这些入口地址处存放一条绝对跳转 指令,使程序跳转到用户安排的中断程序起始地址,或 者从0000H起始地址跳转到用户设计的初始程序上。
16
org
0000h
jmp
main
(跳过中断入口地址区)
org
main: mov
0100h
p1,#55h
mov
Loop: djnz cpl mov jmp end
21
堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排 在工作寄存器区和可按位寻址的RAM区,通常放 在RAM区的靠后的位置。
从堆栈取出数据时:取出的数据是 最近放进去的一个数据,也就是当 前栈顶的数据。然后SP再自动减1, 仍指着栈顶……
52子系列才有 的RAM区 80H 7FH 数据 出栈
SCON (Serial Control Register) SBUF (Serial Date Buffer) PCON (Power Control Register)

特殊功能寄存器

特殊功能寄存器

特殊功能寄存器1、寄存器B(F0H)。

乘法指令的两个操作数分别取自A和B,结果存于BA中;除法指令中,被除数除数取自A,除数取自B,商存放于A,余数存放于B。

2、累加器ACC(E0H)。

3、程序状态字寄存器PSW(D0H~D7H)1)CY进位标志位。

加、减法运算指令时,运算结果最高位向前有进位(或借位)时,CY由硬件置“1”,无进位(或借位)时,CY由硬件清“0”。

2)AC 为半进位标志位。

加、减法运算指令时,低半字节向高半字节有半进位(借位)时,AC 由硬件置“1”,否则被除数自动清“0”。

3)F0 用户标志位。

4)RS0和5)0V 补码溢出标志位。

运算结果超出-128~+127的范围时溢出0V = 1,无溢出0V = 0。

6)P奇偶校验标志位。

奇数个“1”置P = 1,否则P = 0。

4、中断优先级寄存器IP。

(B8H)1)PS 决定串行通道中断优先级。

PS = 1,则编程为高优先级。

2)PT1 决定定时器1中断优先级。

PT1 = 1,则编程为高优先级。

3)PX1 决定外中断1中断优先级。

PX1 = 1,则编程为高优先级。

4)PT0 决定定时器0中断优先级。

PT1 = 1,则编程为高优先级。

5)PX0 决定外中断0中断优先级。

PX0 = 1,则编程为高优先级。

5、中断允许寄存器IE。

(A8H)1)EA开放或禁止所有中断。

EA = 1开放中断,EA = 0禁止中断。

2)ES 开放或禁止串行通道中断。

ES = 1开放中断,ES = 0禁止中断。

3)ET1 开放或禁止定时器1中断。

ET1 = 1开放中断,ET1 = 0禁止中断。

4)EX1 开放或禁止外部中断源1中断EX1 = 1开放中断EX1 = 0禁止中断。

5)ET0 开放或禁止定时器0中断。

ET0 = 1开放中断ET0 = 0禁止中断。

6)EX0 开放或禁止外部中断源0中断EX0 = 1开放中断,EX0 = 0禁止中断。

6、串行数据缓冲寄存器SBUF。

特殊功能寄存器(SFR)

特殊功能寄存器(SFR)

特殊功能寄存器(SFR)
Special Functional Register
51单⽚机提供128字节的特殊功能寄存器(SFR)寻址区,地址为80H~FFH。

51单⽚机中,除了程序计数器PC和4组通⽤寄存器组之外,其他所有的寄存器均为SFR,并位于⽚内特殊寄存器区。

这个区域
可位寻址、字节寻址或字寻址,⽤以控制定时器、计数器、串⼝、IO及其他部件。

特殊功能寄存器可由以下⼏种关键字说明。

1.SFR 声明可字节寻址的特殊功能寄存器,⽐如sfr PO=0x80;表⽰PO⼝地址为80h。

注意:“ sfr”后⾯必须跟⼀个特殊寄存器名;“=”后⾯的地址必须是常数,不允许带有运算符的表达式,这个常数值的范围必须在特殊功能寄存器地址范围内,位于
Ox8OH到0xFFH之间。

2.sfr16 许多新的51派⽣系列单⽚机⽤两个连续地址的SFR来指定16位值,例如8052⽤地址Oxcc和OxCD表⽰定时器/计数器2的低和⾼字节,如sfr16 T2=0XCC;表⽰T2地址的低地址T2L=0xCC,⾼地址T2H=0xCD,sfr16声明和sfr声明须遵循相同的原则、任何符号名都可⽤在sfr的声明中。

声明中名字后⾯不是赋值语句.⽽是⼀个SFR地址,其⾼字节必须位于低字节之后.这种声明适⽤于所有新的SFR,但不能⽤于定时/计数器O和计数器1。

3. sbit 声明可位寻址的特殊功能寄存器和别的可位寻址的⽬标。

“=”号后将绝对地址赋给变量名,3种变量声明形式如下:
sbit CY=PSW^7
sbit CY=0xD0^7
sbit CY=0XD7。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Local Word(LW)
地址
說明
注釋
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
重起觸摸屏
置ON執行此功能.(寫)
9046
低安全等級
低安全等級迸入高安全等級時此位元將被置爲ON.(讀)
9050
9012
配方下載/上傳指示
用戶可以使用這些位地址來指示配方下載/上傳的過程. (讀)
9013
觸控指示燈
當觸控”觸控指示燈”時置爲ON(讀)
9014
CPU指示燈
當觸控“CPU指示燈”時置爲ON(讀)
9015
報警指示燈
當觸控“報警指示燈”時置爲ON(讀)
9016
印表機出錯指示
列印出錯時置爲ON,正常時爲OFF(讀)
Local Bit(LB)
地址
說明
注釋
9000~9009
初始化設置爲ON
這些位元可以用來在系統開始時初始化某些元件爲ON.(讀/寫)
9010
配方下載指示
用戶可以使用這個位地址來指示配方下載的過程.處於下載狀態時置爲ON,下載完畢置OFF(讀)
9011
配方上傳指示
用戶可以使用這個位地址來指示配方上傳的過程.處於上傳狀態時置爲ON,上傳完畢置OFF(讀)
0:關閉
1:主機
2:副機
60048
人機互連通信速度
9061
鍵盤控制位元
由視窗左邊的元件控制鍵盤的彈出(讀)
9062
鍵盤控制位元
由視窗左上的元件控制鍵盤的彈出(讀)
9063
鍵Байду номын сангаас控制位元
由視窗左下的元件控制鍵盤的彈出(讀)
9064
鍵盤控制位元
由視窗右邊的元件控制鍵盤的彈出(讀)
9065
鍵盤控制位元
由視窗右邊的元件控制鍵盤的彈出(讀)
9066
鍵盤控制位元
60005
RTC年
BCD碼,有效值範圍0~9999(讀/寫)
60006
RTC星期
BCD碼,有效值範圍0~6(讀/寫)
關於RTC的說明:用戶可以使用相應的"元件"來顯示系統時間,它的值是可寫的.但是用戶應當注意它的有效值範圍問題
舉個例子:秒不能寫爲78(BCD)的,如果寫爲78,RTC會繼續78 79 80 ...,將會發生不可預期的錯誤.
置ON可以隱藏快選視窗,置OFF則顯示快選視窗(讀/寫)
9041
隱藏/顯示任務欄
置ON可以隱藏任務欄,置OFF可以顯示任務欄(讀/寫)
9042
隱藏/顯示工作按鈕
置ON可以隱藏工作按鈕,置OFF可以顯示工作按鈕(讀/寫)
9043
隱藏/顯示全部(快選窗
口,任務欄,工作按鈕)
置ON可以隱藏快選視窗,任務欄和工作按鈕,置OFF則可以全部顯示這些內容(讀/寫)
工程名稱
使用文本顯示可以顯示工程名稱,共占12字.(讀)
9087
工程大小,單位:bytes
使用數值顯示可以顯示該內容(十進位)(讀)
9088~9089
工程大小,單位:Kbytes
使用數值顯示可以顯示該內容(十進位)(讀)
9090~9091
編譯器版本號
使用數值顯示可以顯示該內容(十進位)(讀)
9092
Toshiba T/C寫控制位元
該位置ON時,根據T1/T1S用戶手冊部分寫T/C爲ON或OFF
說明:計時器/計數器寄存器在寫狀態時,該T/C的資料(每一個爲2個字)將根據T/C寄存器而變化.如果要設T/C爲ON,這個寫控制位元應爲‘1’.否則應爲’0’.(讀/寫)
9051
當背光燈在關閉狀態時控制觸控操作能否執行
9051
基本窗口編號
保留由於PLC控制元件有返回值功能因此保留.(讀/寫)
9054
報表輸出
0:文本&錶針&趨勢圖
1:文本&錶針&趨勢圖&向量圖但不包括模板
2:文本&錶針&趨勢圖&點陣圖
3:文本&錶針&趨勢圖&點陣圖&向量圖但不包括模板
4:全部內容(讀/寫)
9055
PLC控制字偏移量
一般工程都是以視窗10爲啓始視窗的,但是有的用戶習慣從窗口1開始.在[系統參數]/[編輯器]中可以設置.當選擇從視窗1開始時,實際上程式會自動給視窗編號加上偏移量9,所以程式內部仍然是以從視窗10開始的方式來運行的,而這個偏移量9就是LW9055的數值.PLC控制元件有2種情況要使用到這個字的內容:切換視窗和報表輸出.每個從PLC(或本地觸摸屏)接收到的關於視窗編號的字位址資料將會加上LW9055中的數值.在寫回PLC之前,MT500將會減去LW9055的數值.比如:用D10設計一個PLC控制/切換視窗元件.如果(LW9055)=9,D10=1,那麽MT500將切換到基本窗口10 ,並把1寫給D10.(讀/寫)
9044
觸控過程模式
這個模式設置基本上解決了在以前版本中的本軟體的一個局限.當按下一個複歸型開關時,相關的位置爲ON.如果這時在開關被釋放前彈出任何視窗隱藏住了這個開關,即使你釋放這個開關這個位也將保持ON的狀態.修正以後這套軟體有3種操作模式來處理複歸型開關,而這是由LW9044控制的.因此您可以使用一個[多狀態設定]的[初始化設置]來設置您需要的模式.
由視窗右上的元件控制鍵盤的彈出(讀)
9067
鍵盤控制位元
由視窗右下的元件控制鍵盤的彈出(讀)
9068
鍵盤控制位元
由視窗上任意位置的元件控制鍵盤的彈出(讀)
9069
鍵盤控制位元
由視窗上任意位置的元件控制鍵盤的彈出(讀)
9080
鍵盤控制位元
由視窗上半部的元件控制鍵盤的彈出(讀)
9081
鍵盤控制位元,
由視窗下半部的元件控制鍵盤的彈出(讀)
EasyBuilder500使用手冊
特殊寄存器地址
系統保留的部分寄存器地址作特殊用途,用戶必須按照相關說明使用.
Local Bit(LB) :預留範圍LB9000~9999
Local Word(LW) :預留範圍LW9000~9999
Recipe Word(RW) :預留範圍RW60000~65535
9057
事件登錄資訊資料庫每一專案的大小
配方記憶體用以儲存事件登錄資訊資料庫每一專案的大小(讀)
9058~9059
事件登錄資訊資料庫大小
事件登錄資訊資料庫大小配方記憶體用以儲存事件登錄資訊的空間大小,包含管理訊息的資料(讀)
9060~9075
數值輸入&文本輸入
LW9075包含了最近輸入的資料(讀)
9080~9085
當背光燈在關閉狀態時,該位元位址置ON可以關閉觸控螢幕的觸控動作.(讀/寫)
9052
關閉[PLC控制]/[切換基本視窗]的返回值功能
要關閉PLC的返回值功能時置此位爲ON,僅適用於[PLC制]/[切換基本視窗]的返回值控制.當LB9052的值爲OFF時,返回值功能沒有關閉,這時如果使用[PLC控制]/[切換基本口](讀取位址爲D20)來從基本窗口10跳到基本窗口12,那麽D20值應該爲12才能控制這種切換,當切換到視窗12以後,PLC會自動把12這個數值返回到字地址D21.如果關閉了返回值功能,那麽就不會把12返回到D21.(讀/寫)
9034~9035
系統時間(單位爲0.1秒)
雙字.顯示的是以0.1秒爲單位計算的時間.(讀)
9040~9041
安全等級密碼
雙字.請參照第10章的[安全等級]相關內容(寫)
9042
安全等級
顯示當前基本視窗的安全等級.請參照第10章的[安全等級](讀).
9043
強迫切換安全等級
強迫從高等級(如2級)切換到低安全等級(如0級).
由視窗左邊的元件控制鍵盤的彈出(讀)
當用戶啟動數值輸入或文本輸入時,MT500置這個位爲ON,包含鍵盤的直接視窗就會彈出.當輸入成功或按下[ ESC]時則置爲OFF.用戶可以使用這個位來控制鍵盤的彈出.當輸入成功或取消輸入時鍵盤視窗將會自動關閉.
鍵盤控制位元LB9060~LB9069,LB9080,LB9081的說明請參照表後
相关文档
最新文档