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

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

3天内不再提示

单片机寄存器赋的值是怎么来的?

5RJg_mcuworld 来源:互联网 作者:佚名 2017-10-23 15:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

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

所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制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,然后利用上面的方法得出结果,就可以操作单片机的寄存器了。

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

    关注

    6078

    文章

    45580

    浏览量

    673674
  • 寄存器
    +关注

    关注

    31

    文章

    5619

    浏览量

    130419

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

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨8位单片机740族:指令系统与使用要点解析

    瑞萨8位单片机740族:指令系统与使用要点解析 在单片机领域,瑞萨8位单片机740族以其高效的指令群和丰富的寻址方式,在众多应用场景中展现出强大的性能。作为电子工程师,深入了解这款单片机
    的头像 发表于 04-13 15:10 146次阅读

    LAT1170+如何理解 RAMECC FAR 寄存器

    电子发烧友网站提供《LAT1170+如何理解 RAMECC FAR 寄存器.pdf》资料免费下载
    发表于 01-09 16:12 0次下载

    单片机堆栈解析

    自动将当前PC压栈保存,返回时自动将PC弹栈。 保护现场/恢复现场 数据传输 单片机堆栈原理: 堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安
    发表于 12-09 06:52

    【NCS随笔】nRF54L15使用UICR寄存器保存数据

    (NVM)寄存器,用于配置用户特定的设置 注意所有 UICR 寄存器都具有 RW1 保护,只能写入一次,需要再写的话必须要擦除Erase All 默认复位为 0xFFFFFFFF 这个是是
    的头像 发表于 11-27 17:09 1735次阅读

    使用位操作精准配置单片机寄存器

    int state = READ_BIT(GPIOA_ODR, PIN_5); // 读取状态​3、使用结构体映射寄存器 单片机寄存器通常是地址连续的,可以使用结构体映射寄存器,提高
    发表于 11-24 07:22

    单片机启动&库函数的构成

    更加简单。但是到计算机这一层,他依然是使用的数字电路工作的,至少,开发者需要操作的东西就算不是数字电路,也是个寄存器。 计算机发展中,寄存器被人们用“地址”这个东西来标号,翻开编程手册(
    发表于 11-18 08:15

    单片机的误区

    1.去背寄存器 寄存器不用死记硬背,,当我们去使用单片机外设的时候就要去配置,千万别去记寄存器,华维单片机编程的导师做开发这么多年了,一个
    发表于 11-14 07:46

    大彩讲堂:VisualHMI-LUA教程-连续写多个寄存器函数的应用

    ,value2,…,value120)vtype:数据类型addr:变量起始地址,最大可以写120个连续寄存器value1:寄存器1的value2:寄存器2的
    的头像 发表于 10-17 00:00 1613次阅读
    大彩讲堂:VisualHMI-LUA教程-连续写多个<b class='flag-5'>寄存器</b>函数的应用

    NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2

    寄存器最大为 64’hFFFFFFFFFFFFFFFF,到达最大后一个时钟周期后翻转回 0, 在随机时刻使用 force 将寄存器赋值临近最大
    的头像 发表于 10-14 17:06 885次阅读
    NVMe高速传输之摆脱XDMA设计32:<b class='flag-5'>寄存器</b>功能验证与分析2

    TPIC6595 8位功率移位寄存器技术文档摘要

    该TPIC6595是一款单片、高压、大电流功率的8位移位寄存器,设计用于需要相对较高负载功率的系统。该器件在输出端包含一个内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他中电流
    的头像 发表于 09-09 11:10 1044次阅读
    TPIC6595 8位功率移位<b class='flag-5'>寄存器</b>技术文档摘要

    ‌TPIC6B595 8位功率移位寄存器技术文档总结

    TPIC6B595器件是一款单片、高压、中电流功率8位移位寄存器,设计用于需要相对高负载功率的系统。该器件在输出端包含一个内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他中电流
    的头像 发表于 09-09 10:16 1167次阅读
    ‌TPIC6B595 8位功率移位<b class='flag-5'>寄存器</b>技术文档总结

    TLC6C598 8位移位寄存器LED驱动技术手册

    TLC6C598器件是单片、中压、低电流功率 8 位移位 寄存器设计用于需要相对中等负载功率的系统,例如 LED。 该器件包含一个 8 位串行输入并行输出移位寄存器,可为 8 位馈电 D型存储
    的头像 发表于 08-26 14:31 1277次阅读
    TLC6C598 8位移位<b class='flag-5'>寄存器</b>LED驱动<b class='flag-5'>器</b>技术手册

    怎样学会单片机

    想学会单片机其实没那么复杂,先把心态放平稳,别被那些五花八门的名词吓住。一开始就得把 C 语言基础打扎实,位操作、指针、函数这些概念必须吃透,尤其是指针,单片机里操作寄存器、外设经常要用到,搞不懂
    的头像 发表于 07-23 10:23 793次阅读
    怎样学会<b class='flag-5'>单片机</b>?

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 1466次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    第四章 什么是寄存器

    本篇文章我们讲解了寄存器的概念、地址映射和寄存器操作等内容,内容比较干,大家有个概念即可,不要求全部熟记掌握,有需要时可重复查阅观看。下一篇我们将开始进行实操内容,通过控制单片机的GPIO来点亮一颗LED,敬请期待!
    的头像 发表于 05-21 14:23 1673次阅读
    第四章 什么是<b class='flag-5'>寄存器</b>