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,然后利用上面的方法得出结果,就可以操作单片机的寄存器了。

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

    关注

    6032

    文章

    44513

    浏览量

    632875
  • 寄存器
    +关注

    关注

    31

    文章

    5310

    浏览量

    119992

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

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

收藏 人收藏

    评论

    相关推荐

    Modbus协议的读取保持寄存器

    功能码用于读取从设备保持寄存器的内容,不支持广播模式。消息顿中指定了需要读取的保持寄存器的起始地址和数目。而保持寄存器中各地址的具体内容和意义则由设备开发者自行规定。
    的头像 发表于 10-30 10:54 455次阅读

    单片机按键中断配置教程

    一些小伙伴觉得单片机入门太难了,又要懂原理图、又要懂寄存器、还要学编程语言。
    的头像 发表于 10-23 16:30 487次阅读
    <b class='flag-5'>单片机</b>按键中断配置教程

    详解寄存器模型镜像

    DUT的配置寄存器是实际,reg_model有镜像、期望的概念。
    的头像 发表于 10-23 09:43 185次阅读
    详解<b class='flag-5'>寄存器</b>模型镜像<b class='flag-5'>值</b>

    单片机io口怎么配置成输出口

    单片机IO口配置成输出口的过程通常涉及对单片机内部寄存器的操作。不同型号的单片机寄存器配置和编程方式上可能有所不同,但基本原理是相似的。以下是一个通用的步骤,用于将
    的头像 发表于 09-14 14:33 624次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1115次阅读

    寄存器单片机的关系与区别

    在计算机系统中,寄存器单片机是两个至关重要的概念。寄存器作为中央处理(CPU)内部的重要组成部分,用于暂时存储数据和指令,确保CPU能够高效地进行数据处理和运算。而
    的头像 发表于 05-30 17:17 714次阅读

    51单片机串口通信详细介绍-小白必看

    51单片机串口通信是单片机与外部设备通信的重要方式,它基于串行通信的原理,以字节为单位进行数据传输。在51单片机中,串口通信主要依赖于两个关键寄存器:SBUF
    的头像 发表于 04-17 09:33 1850次阅读
    51<b class='flag-5'>单片机</b>串口通信详细介绍-小白必看

    loop指令执行时,隐含的寄存器

    当执行loop指令时,隐含的寄存器是CX寄存器。CX寄存器是循环计数寄存器,它存储了循环的迭代次数。 在汇编语言中,loop指令用于实现循
    的头像 发表于 02-14 16:15 854次阅读

    CPU的6个主要寄存器

    CPU寄存器是中央处理内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制
    的头像 发表于 02-03 15:15 3883次阅读

    个人对STM32 SysTick的总结(寄存器操作)

    一、概述:SysTick是一个简单的递减24位计数。如果你不需要再应用程序中嵌入操作系统,SysTick可以作为简单的延时和产生周期性的中断。状态控制寄存器的第0位可以使能计数,当前
    的头像 发表于 01-06 08:00 1720次阅读
    个人对STM32 SysTick的总结(<b class='flag-5'>寄存器</b>操作)

    ADXL345是否有状态寄存器

    ADXL345是否有状态寄存器,让单片机可以通过读取该寄存器以判断已有有如数据,从而以查询方式读取加速度测量值?
    发表于 01-01 06:35

    sbit在单片机中的作用和用法

    sbit在单片机中的作用和用法。 一、sbit的作用和意义 在单片机中,每个IO引脚都有特定的寄存器与之对应,可以通过读写这些寄存器控制I
    的头像 发表于 12-20 09:35 1.7w次阅读

    AD5676R采用5V供电,单片机才有3.3V供电,给AD5676R寄存器为什么保持不住?

    AD5676R采用5V供电,单片机才有3.3V供电,给AD5676R寄存器为什么保持不住,一会DA就没有输出了
    发表于 12-04 08:23

    寄存器查看的功能和使用

    对于搞嵌入式底层开发的软件或者硬件工程师来说,经常会涉及到查看芯片手册,比如某个芯片的串口控制寄存器,需要知道这个对应寄存器的哪些位
    的头像 发表于 11-28 12:26 1849次阅读
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用

    UVM寄存器模型的常规方法有哪些呢?

    在应用寄存器模型时, 除了利用它的寄存器信息, 还可以利用它跟踪寄存器
    的头像 发表于 11-25 09:27 1738次阅读
    UVM<b class='flag-5'>寄存器</b>模型的常规方法有哪些呢?