微博
主页   电子元器件  单片机

九月 1 2021

单片机的寄存器类型及操作教程


目录

1.什么是寄存器
2.什么是单片机寄存器
3.单片机寄存器的类型
4.单片机寄存器的使用教程
5.关于单片机寄存器的常见问题
结语

  大家都认为计算机可以做任何事,对我们的生活有巨大的作用,尤其是在学习单片机的过程中。学习计算机可以教会我们分析和解决问题,而学习单片机可以帮助我们更好地理解计算机如何根据我们的想法解决问题。本文带你了解寄存器,它将伴随学习单片机的全过程。寄存器是连接硬件和软件的重要纽带。计算机的任何功能都离不开寄存器。中央处理器也有寄存器。总线通信、通过注册、内存分页等一切都基于寄存器。电子洞和多彩的计算机世界之间有更多的寄存器,如链接。它们看起来很复杂,但它们很清楚。即便所有的计算机一夜之间突然消失,人类也可以从电子管和打孔纸带开始,一层一层地构建计算机世界。我们所知道的只是这个庞大系统中的沧海一粟。

  1.什么是寄存器

  寄存器是CPU内部的一种存储器,分为通用寄存器和特殊功能寄存器(8086也细分为特殊功能寄存器)。通用寄存器,顾名思义是通用的。它们可以存储操作数、运算结果、内存地址等数据,在用C语言编程时,编译器一般负责安排通用寄存器的使用,无需直接联系它们。特殊功能寄存器具有特定功能,其中一些作用于CPU,比如PC存放下一条指令的地址,SP记录栈顶在内存中的位置,其中一些与IO模块相连,单片机程序通过这些寄存器控制各种外设。

寄存器

图1 寄存器

  我们通常使用的单片机是atmega324pa,它的封装种类很多,管脚数量不同,但通用输入输出(GPIO)管脚有32个。由于AVR架构是8位字长,因此CPU一次处理1位数据和8位数据所需的时间相同。32个引脚被组织成4个端口,即PA、Pb、PC和PD。在微型和微型微控制器的AVR架构中,每个端口都有三个寄存器来控制数字信号IO,分别是portx、ddrx和PINX。这里的X是a、B、C或D。由于四个端口在数字IO方面是相同的,我们将它们组合起来。因此,对于每个引脚Pxn,有3个位,portxn、ddxn(不带R)和pinxn,来控制其数字io。

  ddxn控制引脚方向:ddxn为1时,输出Pxn;当ddxn为0时,输入Pxn。

  当输入Pxn时,如果portxn为1,则该引脚通过上拉电阻连接到VCC;否则,引脚悬空。

  输出Pxn时,若portxn为1,引脚输出高电平;否则,引脚输出低电平。

  pinxn的值是Pxn引脚的电平。如果将1写入pinxn,则portxn的值会翻转。

  寄存器还有很多细节,比如MCUCR寄存器中PUD位的作用、复位后寄存器的值、输入/输出切换的方法、读取引脚电平的延迟、未连接引脚的处理方法等。

  2.什么是单片机寄存器

  寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个“8位元寄存器”或“32位元寄存器”。寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。更适当的是称他们为“架构寄存器”。例如,x86指令集定义八个32位元寄存器的集合,但一个实作x86指令集的CPU可以包含比八个更多的寄存器。寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

单片机寄存器

图2 单片机寄存器

  3.单片机寄存器的类型

  3.1累加器A

  累加器A是微处理器中使用最频繁的寄存器。在算术和逻辑运算时它有双功能:运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。

  3.2数据寄存器DR

  数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。

  3.3指令寄存器IR和指令译码器ID

  指令包括操作码和操作数。指令寄存器是用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。其中,指令寄存器中操作码字段的输出就是指令译码器的输入。

  3.4程序计数器PC

  PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。

  3.5地址寄存器AR

  用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止址寄存器(Address Register,AR)用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。数据寄存器DR用来暂存微处理器与存储器或输人/输出接口电路之间待传送的数据。地址寄存器AR和数据寄存器DR在微处理器的内部总线和外部总线之间,还起着隔离和缓冲的作用。

  4.单片机寄存器的使用教程

  要使用寄存器,需要写#include,然后就可以使用PORTA、DDRB、PINC等寄存器。它们是宏定义。不必探索它们是如何扩展的。只需要知道这些宏是可以读、赋值和位操作的,就像uint8_t类型变量一样。但是像PORTA0SumDDB7宏定义这样的东西并不代表寄存器上的位。它们实际上是字面常量,比如PORTAx寄存器表示寄存器PORTA的第x位(0为最低位,7为最高位),其值为X。因此,直接复制这些宏是不正确的(不仅意思不对,编译也不会通过)。

  在开发板的库函数中提供包含多个位操作的宏函数。可以拿出存储器的手册来,看看后面是怎么实现的。

  让我们举个例子,点亮一个LED,首先打开红色LED。原理图第2页左上角红色LED通过电阻与网络LED0相连,第1页LED0与单片机PC4引脚相连,所以我们需要让PC4脚输出高电平。回到三个寄存器的功能。输出高电平要求ddxn和portxn同时为1。我们把X和N分别用C和4取进去,也就是我们希望ddc4和portc4为1。

  如果寄存器的一个位置为1,则set_bit实现。它需要两个参数,要操作的整数变量和表示第一个数字的整数。将ddc4设置为1应该写入set_bit(DDRC,4);4可以用DDC4替换,就是这样定义的。同理,portc4可以设置为1。点亮红色LED的整个过程如下:

插图3

  接下来是存储器的数字输入。使用第一个按键相关的例子,保持LED状态与按键一致,即按下点亮。

  要读取寄存器中的一位,可以使用read_bit。如果引脚上的电平为高电平,则read_bit的运算结果不为0(但不一定是布尔值1)。注意按键时引脚电平是低的,所以读取引脚电平的结果是你是否按下该键。

  原理图中,key的一端接btn0网络,再接单片机的PA4引脚。所以按键是否按下应该写成:!read_bit(PINA,4)。

  引脚应在读取前配置为输入。虽然是reset后默认输入的,在这个例子中没有必要给dda4写0,但是写清楚是一个好习惯,让看这段代码的人(可能是别人也可能是自己)明白PA4是输入。对于porta4,由于该引脚外接了上拉电阻,因此无需使能内部上拉电阻。

插图4

  结合按键动作的知识,应该知道如何直接通过寄存器操作来判断按键动作。值得注意的是,这些程序都不需要在项目属性中将libee1库添加到链接器。虽然代码使用,但它们都是宏定义,独立于链接器。

  5.关于单片机寄存器的常见问题

  5.1什么是单片机寄存器?

  简单地说,寄存器是一种内存。通常寄存器位于 CPU 或 MCU(微控制器)内,非常靠近算术单元或直接连接到各种 I/O 端口。由于这个位置或特殊设计,与其他类型的存储器相比,寄存器在读/写速度方面要快得多。

  5.2单片机寄存器有什么作用?

  寄存器的单片机(计算机)的存储单元,是存取数据较为方便、快速地方寄存器常用于存放使用比较频繁的数据,再参与运算,都很容易。

  5.3哪些计算机使用单芯片处理器?

  单芯片云计算机(SCC) 是英特尔实验室开发的一种实验性微处理器,SCC 微处理器包括集成在单个硅芯片上的 48 个内核,SCC 具有双核 SCC 磁贴、内存控制器和 24 路由器网状网络。

  5.4什么是单芯片CPU?

  大部分微机的ALU和控制单元都是在一块硅片上组合制造的。大多数现代 CPU 都是微处理器,这意味着它们包含在单个集成电路 (IC) 芯片中。

  以上就是单片机的寄存器类型及操作教程的介绍了,单片机一种集成电路芯片,广泛用于各大行业中。单片机寄存器其实就相当于一个变量,只不过这个变量在固定的地址,有一个特殊的名称(当然也不强制)。初学者对寄存器的操作比较困难的原因不是汇编语言或C语言使用的不熟,而是对寄存器的陌生。单片机中存储器的资源是非常宝贵和有限的,任何产品都有使用说明书,要想最好的使用一款产品也是去阅读说明书。单片机或者芯片的说明书就是数据手册。数据手册中往往都是对寄存器如何操作的描述,只不过要耐下心来一点一点的去理解去消化手册所介绍的功能,这样才能用好。

订购与质量

图片 产品型号 品牌 描述 数量 价格
(USD)
LM311 LM311 Company:Texas Instruments Remark:LM311电压比较器设计运行在更宽的电源电压:从标准的±15V运算放大器到单5V电源用于逻辑集成电路。其输出兼容RTL,DTL和TTL以MOS电路。此外,他们可以驱动继电器,开关电压高达50V,电流高达50mA。 In Stock:1000
Buy
Price:call Buy
LM339 LM339 Company:Texas Instruments Remark:LM339(四路差动比较器)是在电压比较器芯片内部装有四个独立的电压比较器,是一种常见的集成电路,主要应用于高压数字逻辑门电路。利用lm339可以方便的组成各种电压比较器电路和振荡器电路。 In Stock:2000
Buy
Price:call Buy
LM324 LM324 Company:Texas Instruments Remark:LM324系列器件带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。 In Stock:300
Buy
Price:call Buy
LM358 LM358 Company:Texas Instruments Remark:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与 电源电压无关。 In Stock:3000
Buy
Price:call Buy
LM567 LM567 Company:Texas Instruments Remark:LM567是一种常见的低价解码集成电路,其内部包含了两个鉴相器、放大器、电压控制振荡器VCO等部件。 In Stock:500
Buy
Price:call Buy

相关文章

  • 基于LM358的单片机掉电保护电路设计 ...
    在单片机系统中为了防止突然掉电而造成数据丢失,一般需要把重要的数据存储在EEPROM中。由于EEPROM擦写寿命有限,故不宜程序每执行一遍,对其擦除一次。本设计提出了一种以LM35...
  • 基于AD620与单片机PIC10F206的指针检流计设计 ...
    目前指针检流计容易出现漂移的问题,因此本文讨论了基于仪表放大器AD620和6引脚PIC单片机的指针式检流计的设计方案。其方案:采用了2节5号电池供电并利用单片机进行功耗管理,有效地...
  • 基于AD7705与单片机的在线激光功率检测系统设计 ...
    利用Cx51的软单片机控制技术和AD7705模/数转换器结合,设计了一种在线激光功率检测系统。由于采用AD7705简化了硬件,该系统具有原理简单,造价低廉,智能操作,方便实用,误差...
  • 单片机是什么? ...
    从20世纪90年代开始,单片机技术就已经发展起来,随之时期的发展与高新科技的发展趋势,现阶段该技术性的实践活动运用日趋成熟期,单片机设计被运用于各行各业。目前,大家愈来愈高度重视单...
  • 单片机的原理与应用 ...
    现在单片机已渗透到我们日常生活中的各个领域,小到家用电器、仪器仪表,大到医疗器械、航空航天,无不存在着单片机的身影。一旦在某种产品上添加了单片机,便使得原产品向互联网靠拢,获得了“...
  • 单片机的分类有几种? ...
    目前,单片机正朝着高性能和多品种方向发展,将会进一步实现低功耗、小体积、大容量、高性能、低价格和外围电路内装化等要求。由于单片机的体积、结构和功能特点,在实际应用中可以完全融入应用...

0 条评论

留言

您的邮箱地址不会被公布

 
 
   
评分: