您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

Linux内核之特殊寄存器

时间:2022-11-29 17:21:53  来源:今日头条  作者:内核中文社区

内部高128个字节是SFR区

21个SFR(特殊功能寄存器)离散分布(只能使用直接寻址的方式)。

至于什么叫不可寻址,则是指不能单独进行每一位的操作,如TMOD定时器工作模式及工作方式寄存器,在进行操作时,只能写TMOD=0xXX 。

关于能否进行位操作,可以通过查相关资料知道,当然还有个技巧就是其字节地址换成10 进制后能否被“8 ”整除,能被“8 ”整除的就能进行位操作,不能被“8 ”整除就不能,如P1 地址为90H ,10 进制为144 , 144/8=18 ,能被整除,所以可以位操作。再如TMOD 地址为89H , 10 进制为137 ,137/8=17.125 ,不能被整除,所以不可以位操作。

特殊寄存器

 


 

(1)ACC——累加器

通常用A表示。该标志常用于程序分支转移的判断条件。

(2)B——一个寄存器

在做乘、除法时放乘数或除数。

(3)PSW——程序状态字

存放CPU工作时的状态。

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

 

P

用途 :

  • CY :进位标志。
  • AC :辅助进、借位(高半字节与低半字节间的进、借位)。
  • F0 :用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。
  • RS1 、RS0 :工作寄存器组选择位。
  • OV :溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。
  • P :奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。

(4)DPTR(DPH、DPL) ——数据指针

可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。

(5)P0、P1、P2、P3——四个并行输入/输出口的寄存器。

(6)IE——中断充许寄存器

按位寻址,地址:A8H。

B7

B6

B5

B4

B3

B2

B1

B0

EA

-

ET2

ES

ET1

EX1

ET0

EX0

  •  
  • EA (IE.7): EA=0时,所有中断禁止(即不产生中断)
    EA=1时,各中断的产生由个别的允许位决定
  • -(IE.6) :保留
  • ET2(IE.5):定时2溢出中断充许(8052用)
  • ES (IE.4):串行口中断充许(ES=1充许,ES=0禁止)
  • ET1(IE.3):定时1中断充许
  • EX1(IE.2):外中断INT1中断充许
  • ET0(IE.1):定时器0中断充许
  • EX0(IE.0):外部中断INT0的中断允许

中断的自然优先级 :

中断函数编号

中断名称

中断标志位

中断使能位

中断向量地址

默认优先级

0

外部中断0

IE0

EX0

03H

1(最高)

1

定时器T0中断

TF0

ET0

0BH

2

2

外部中断1

IE1

EX1

13H

3

3

定时器T1中断

TF1

ET1

1BH

4

4

UART中断(串口)

T1/R1

ES

23H

5

(7)TCON——定时器/计数器控制寄存器

字节地址为88H,可以位寻址。

位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

位地址

8FH

8EH

8DH

8CH

8BH

8AH

89H

88H

TF1: 定时器1溢出标志位,当定时器1计满溢出时,由硬件将TF1置1,并申请中断;进入中断服务程序后,由硬件自动清零。

TR1: 定时器1运行控制位: TR=1表示启动定时器,需要配合GATE和INT1。

  • 当GATE=1,且INT1为高电平时,TR1置1启动定时器。
  • 当GATE=0时,TR1置1启动定时器1。

TF0: 定时器0溢出标志位,功能和用法同TF1.

TR0: 定时器0运行控制位,功能和用法同TR1.

IE1: 外部中断1请求标志位.

  • IT1=0时,为电平触发方式,每个机器周期的S5P2采样INT1引脚,若INT1脚为高电平,则置1;否则IE1清0.
  • IT1=0时,为跳变沿触发方式,当第一个机器周期采样到INT1为低电平时,将IE1置1,表示外部中断1正在向CPU请求中断.当CPU响应,转向中断服务程序时,IE1由硬件清零.

IT1: 外部中断1触发方式选择位.

  • IT1=0时,为电平触发方式,引脚INT1上的低电平有效.
  • IT1=1时,为跳变沿触发方式,引脚INT1上的电平从高到低的负跳变有效.

IE0: 外部中断0请求标志位,功能和用法同IE1.

IT0: 外部中断0触发方式选择位,功能和用法同IT1.

(8) TMOD寄存器:定时器/计数器工作方式寄存器

TMOD寄存器: 定时器/计数器工作方式寄存器.字节地址为89H,不能位寻址.

位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

GATE

C/T

M1

M0

GATE

C/T

M1

M0

控制的定时器

定时器1

定时器0

 

 

 

 

 

 

GATE: 门控制位

  • GATE=0时,定时器/计数器启动与停止仅受TCON寄存器中的TRX(X=0/1)来控制.
    GATE=1时,定时器/计数器启动与停止由TCON寄存器中的TRX(X=0/1)和外部中断引脚(INT0或INT1)上的电平状态共同控制.

C/T ‾ overline{T}T: 定时器模式和计数器模式选择位

  • C/T ‾ overline{T}T=1时为计数器模式
    C/T ‾ overline{T}T=0时为定时器模式

M1,M0: 工作方式选择位

定时器T0有4种工作方式:方式0,方式1,方式2,=方式3= 。

设置定时器T1为方式3会让它进入关闭状态。通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。

定时器T1有3种工作方式:方式0,方式1,方式2。

(9) SUBF寄存器: 串行数据缓冲器(一个接收一个发送)

当发送使用时,就采用SBUF=XXX; (XXX为需要传送的数据)

当接收使用时,采用XXX=SBUF;

(10) SCON寄存器: 串行口控制寄存器

它用于控制串行通信的方式选择、接收和发送,指示串口的状态。SCON既可以字节寻址,也可以位寻址。

D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

9FH

9EH

9DH

9CH

9BH

9AH

99H

98H

SM0, SM1:串行口工作方式控制位。

SM0

SM1

工作方式

功能

波特率

0

0

方式0

8位同步移位寄存器

晶振频率/12

0

1

方式1

10位UART

可变

1

0

方式2

11位UART

晶振频率/64或晶振频率/32

1

1

方式3

11位UART

可变

工作方式0:串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。

工作方式1:方式1是10位数据的异步通信口。TXD为数据的发送引脚,RXD是数据的接受引脚。传送一帧数据的格式为1位起始位,8位数据位,1位停止位。

方式2或方式3:方式2或方式3时,为11位数据的异步通信口,TXD为数据发送引脚,RXD为数据接收引脚。起始位1位、数据位9位(含附加的第九位,发送时为SCON中的TB8,接收时为SCON中的RB8)、停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/32或1/64。方式3的波特率由定时器T1的溢出率决定。

SM2:多机通信控制位。

多机通信是工作于方式2和方式3,即SM2主要用于方式2和方式3。当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。

REN:允许接受位。

REN=1:允许接收
REN=0:禁止接收

TB8:发送数据位8.

在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。

RB8:接收数据位8(一般配置为0)。

在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。

TI:发送中断标志位。

可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。

RI:接收中断标志位。

可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。在配置串口初始化程序的时候,我们一般只用配置高四位,如果我们选择工作方式1,那么就是SCON=0X50;(SM0=0,SM1=1,SM2=0,REN=1)

原文作者:
https://kernel.0voice.com/

原文地址:
https://kernel.0voice.com/forum.php?mod=viewthread&tid=1997&extra=page%3D1(版权归原文作者所有,侵权联系删除)



Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Linux获取Redis 性能指标方法
一、监控指标Ø 性能指标:PerformanceØ 内存指标: MemoryØ 基本活动指标:Basic activityØ 持久性指标: PersistenceØ 错误指标:Error二、监...【详细内容】
2024-04-11  Search: Linux  点击:(5)  评论:(0)  加入收藏
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: Linux  点击:(6)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  Search: Linux  点击:(16)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  Search: Linux  点击:(10)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25  Search: Linux  点击:(12)  评论:(0)  加入收藏
Linux发行版 Ubuntu 迎更新 界面设计灵感来自 Windows 11
近日,一位第三方开发者推出了一款名为“Wubuntu”的特殊Linux发行版。这款系统源自主流的Ubuntu版本,但在界面设计上却借鉴了微软最新的Windows 11风格,甚至在其中融入了微软标...【详细内容】
2024-02-27  Search: Linux  点击:(43)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27  Search: Linux  点击:(50)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  Search: Linux  点击:(53)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01  Search: Linux  点击:(77)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  Search: Linux  点击:(69)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(6)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(16)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(10)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(12)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(54)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(50)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(53)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(77)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(69)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(85)  评论:(0)  加入收藏
站内最新
站内热门
站内头条