0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

寄存器中的每一个位都什么用意?

h1654155971.7688 来源:互联网 作者:佚名 2017-10-25 17:30 次阅读

这篇文章适合刚刚入门的单片机小白看。

单片机在电学里面,属于很简单的一种器件,外表看,就是一个芯片,长着很多的脚。内部,就是一堆寄存器。不同的单片机,外部表现就是形状和引脚数量和引脚名称可能不一样,内部,就是寄存器名称不一样。

我们要做的,就是写程序控制单片机里面的寄存器,然后通过引脚表现出来完成各种电子产品

所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制51单片机引脚高低电平来说明一下。(不要总是存在51单片机已经淘汰的想法,51单片机至今任然是出货量最大的单片机,并且各大公司每年都有新款的51单片机推出,功能越来越强劲,做产品,要选最合适的单片机,而不要总想用牛逼的单片机。)

例如,单片机P1口有8个引脚,分别为P1.0~P1.7,如果想让P1口的8个引脚都输出高电平,是这么写:P1=0XFF;如果想让P1口的8个引脚都输出低电平,是这么写:P1=0X00;如果只让P1.0输出高电平,其他引脚输出低电平,是这么写:P1=0X01......

这些值是怎么来的呢?

计算方法:

一个数,前面以0X开头,标示后面的数是十六进制数。所以首先,我们先要知道十进制和十六进制的转换。

十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F

十进制: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

以上十六进制和十进制是对应关系,例如B对应11。

单片机和计算机一样,是以“位”为最小单片机,例如,P1是一个8位的寄存器。P1寄存器的8个位名称分别是:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

上面的0X开头的数,是以4个“位”为一个单位进行计算,以8421码进行相加计算,听这里很迷糊吧。举个例子就明白了。

你可以做一个这样的表格:

从上表看出,把寄存器的“位”,从高到低排列,然后以4个为一组,对应的8421码如上图所示。

给寄存器写值,实际上就是给它的每个位写0或者1,例如要使得哪个引脚为高电平,就给对应的位写1;要使得哪一个引脚为低电平,就给对应的位写0。然后把对应为1的8421加起来,以4个位为一组。

例如,我们要让每一个引脚都输出高电平,就是每个位的值都为1,那对应寄存器的高四位,8+4+2+1=15,15对应的是十六进制的F,再看寄存器的低四位,8+4+2+1=15,还是对应F,所以最后的值就是0xFF。

再看,如果让每一个引脚都输出低电平,就是每个位的值都是1,前面说过,只有对应位是1,才把它们的8421加起来,现在都是0,所以都不用加,结果就是0x00。

再看,如果只让P1.0引脚是高电平,其他引脚输出低电平,那么,只有P1.0对应的位是1,其它的位是0,所以,只需要取P1.0上面的1码,所以结果就是0x01。

再看,如果让P1.0、P1.1、P1.7、P1.5输出高电平,其它引脚输出低电平,那么对应的值如下图所示:

我们看寄存器的高四位,取对应1上面的码8+2=10,10对应十六进制的A,再看寄存器的低四位,取对应1上面的码2+1=3,3对应的十六进制还是3,所以结果就是0XA3,这是,你写P1=0XA3,就可以使得引脚该高的高,该低的低了。

不管是51的8位寄存器,还是ARM的32位寄存器,寄存器中的每一个位都有一定的用意,这些用意可以查看单片机的用户手册得知,你只需要按照你的要求,给对应的位写1或者0,然后利用上面的方法得出结果,就可以操作单片机的寄存器了。

你学会了吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44543

    浏览量

    634203
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9073

    浏览量

    367230
  • 寄存器
    +关注

    关注

    31

    文章

    5332

    浏览量

    120197

原文标题:给单片机寄存器赋的值是怎么计算来的?

文章出处:【微信号:weixin21ic,微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    解析CPU寄存器

    8寄存器在16寄存器,而16寄存器在32
    发表于 09-19 10:10 4062次阅读

    寄存器赋值问题

    =3,3对应的十六进制还是3,所以结果就是0XA3,这是,你写P1=0不管是51XA3,就可以使得引脚该高的高,该低的低了。的8寄存器,还是ARM的32寄存器
    发表于 11-23 16:08

    C语言操作在寄存器的应用

    C语言操作在寄存器的应用本文参考另篇博客写成附链接,个人感觉内容过多不便于吸收,就写了这篇博客。整体思想:设置
    发表于 01-24 06:04

    寄存器与移位寄存器

    寄存器与移位寄存器 寄存器是用来寄存数码的逻辑部件,所以必须具备接收和寄存数码的功能。任何
    发表于 03-12 15:19 59次下载

    32寄存器,32寄存器是什么意思

    32寄存器,32寄存器是什么意思  从X8086开始学了年,第一个ASM的程序
    发表于 03-08 17:26 1.7w次阅读

    STM32使用BSRR和BRR寄存器快速操作GPIO端口

    STM32的每个GPIO端口都有两特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两寄存器可以直接对对应的GPIOx
    发表于 11-26 11:50 1次下载

    寄存器、锁存和触发三者对比

    我们在微控制(MCU)等电子系统存储数据的方式之是在寄存器
    发表于 04-14 14:55 3443次阅读
    <b class='flag-5'>寄存器</b>、锁存<b class='flag-5'>器</b>和触发<b class='flag-5'>器</b>三者对比

    C语言操作在(单片机)寄存器的应用

    C语言操作在寄存器的应用本文参考另篇博客写成附链接,个人感觉内容过多不便于吸收,就写了这篇博客。整体思想:设置
    发表于 11-29 10:06 8次下载
    C语言<b class='flag-5'>位</b>操作在(单片机)<b class='flag-5'>寄存器</b><b class='flag-5'>中</b>的应用

    IO口配置常用的8寄存器 1.6

    IO,分别用大写字母表示,即 x=A/B/C/D/E/F/G/H/I,端口X配置0~15。OTYPER 寄存器,该寄存器仅用于输出模式,在输入模式(MODER[1:0]=00/11 时)下不起作用。该
    发表于 11-29 13:51 10次下载
    IO口配置常用的8<b class='flag-5'>个</b><b class='flag-5'>寄存器</b> 1.6

    GPIO寄存器

    每组IO口有10寄存器组成,如果芯片有GPIOA~GPIOI,9组那么共有90寄存器如果
    发表于 12-08 17:06 5次下载
    GPIO<b class='flag-5'>寄存器</b>

    如何在VHDL实现简单的寄存器

    存储的位数上有所不同,具体取决于系统的配置。在本教程,我们将学习如何在 VHDL 实现简单的寄存器
    发表于 07-29 16:48 4600次阅读
    如何在VHDL<b class='flag-5'>中</b>实现<b class='flag-5'>一</b><b class='flag-5'>个</b>简单的<b class='flag-5'>寄存器</b>

    如何使用ALU,RAM,寄存器打造CPU 3

    在指令表我们看到ADD指令的后四 **「寄存器 OR RAM地址,列出来的不是之前的RAM地址而是两
    的头像 发表于 01-30 16:01 1147次阅读
    如何使用ALU,RAM,<b class='flag-5'>寄存器</b>打造<b class='flag-5'>一</b><b class='flag-5'>个</b>CPU 3

    16和32寄存器的区别 16寄存器有哪些

    16寄存器可以存储2字节(16)的数据,数据范围为0~65535。在单片机,16
    发表于 03-31 18:14 1.5w次阅读

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是由多个触发级联而成的,每个触发只能存储个位。数据在寄存器中移动时,每个触发
    的头像 发表于 01-18 10:52 7990次阅读

    移位寄存器Dsr有什么用

    )是移位寄存器种类型,主要用于数据的存储和传输。 移位寄存器的基本概念 移位寄存器种具有存储功能的数字电路,它由
    的头像 发表于 07-12 10:15 536次阅读