如何计算给单片机寄存器赋值

发布者:Changfeng520最新更新时间:2020-06-04 来源: elecfans关键字:单片机  寄存器  赋值 手机看文章 扫描二维码
随时随地手机看文章

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


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


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

关键字:单片机  寄存器  赋值 引用地址:如何计算给单片机寄存器赋值

上一篇:探析单片机最小系统振荡电路图原理
下一篇:单片机里面的中断优先级相关寄存器详解

推荐阅读最新更新时间:2024-11-09 10:40

MCS-51单片机指令系统(4)
某些指令说明 -“读引脚”和“读锁存器”指令的区别 关于并行I/O口的“读引脚”和“读锁存器”指令的区别 例如,当P1口的P1.0引脚外接一个发光二极管LED的阳极,LED的阴极接地。 若想查看一下单片机刚才向P1.x脚输出的信息是“0”还是“1”,如果直接读引脚,结果显然错误。 -“读引脚”和“读锁存器”指令的区别 正确做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给P1.0的真实值。就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。 当P1口外接输入设备时,要想P1口引脚上反映真实的输入信号,必须要 设法先让该引脚内部的场效应管截止才行,否则当场
[单片机]
MCS-51<font color='red'>单片机</font>指令系统(4)
如何使用8051单片机制作一个简单的0-5V电压表
在本文中,使用8051单片机制作一个简单的0-5V电压表。该数字电压表的灵敏度为200mV,这有点低,但该项目旨在演示如何将ADC和七段显示器连接到8051单片机以获得输入电压的数字读数。 在这个案例中,ADC0804是ADC,使用的单片机是AT89S51。在尝试这个案例之前,请先了解怎么将ADC连接到8051单片机和将七段显示器连接到8051单片机,这将使您对基础知识有一个很好的了解。 一、数字电压表电路图 在电路中,ADC的Vref/2(pin9)保持开路,这意味着输入电压跨度可以是o到5V,步长将为5/255=19.6mV。ADC0804数字输出的公式为Dout=Vin/步长。在该电路中,对于1V的输入电压,数字输出
[单片机]
如何使用8051<font color='red'>单片机</font>制作一个简单的0-5V电压表
PIC单片机配置字Configuration Bits使用经验
1.PIC16F1518单片机在其存储器0x8007和0x8008地址有2个配置寄存器,用来配置整个芯片的功能。 配置寄存器跟特殊寄存器(配置外设)的区别在于,配置寄存器在程序烧录的时候一次性完成,程序中无法再修改其内容。 配置的方式主要有: (1)程序中通过特殊指令配置:在C语言程序里加入 __CONGFIG(bits);(其中bit是配置信息,config前的下划线还是两条,如:__CONFIG(WRT_OFF & VCAPEN_OFF & STVREN_ON & BORV_LO & LPBOR_OFF & LVP_OFF);注意有个分号“;” 其中WRT_OFF ,VCAPEN_OFF是在pic16F1518头
[单片机]
PIC<font color='red'>单片机</font>配置字Configuration Bits使用经验
兆讯216兆M3内核MCU,MH2103ACCT6完美替代STM32F103C8T6/CBT6
兆讯恒达软硬件完美替代F103/105系列,F103系列等 MH2103CCCT6/MH2103ACCT6 MH2103ARPT6 MH2103AVET6 MH2103AVGT6 MH2103AZET6 主频216兆 内置的存储器包括:最大1024K Flash,96K S 该系列内置了多达2个高级、10个通用定时器、2个基本定时器、3个12位的、2个12位的, 还包含标准和先进的通信接口包括:3个S接口、2个I2S接口、2个接口、5个U(S)ART接口、1个2.0 全速串行通信接口、1个总线控制器、1个O接口 MH2103A(C)xxxx
[机器人]
学习单片机ESP32与STM32,该如何选择?
最近看到一个问题,原话如下: 如果为后面找工作的做铺垫的话,闭眼冲STM32,更通用。 ESP32适合工作用到了WiFi和蓝牙功能需求时,再针对性学习。 从行业应用来说,STM32更加广泛,不管是工业控制,汽车电子,还是消费电子。 如果项目需要用到WiFi+蓝牙功能,那用ESP32会很合适。 如果对于找工作来说,其实掌握哪种单片机都无所谓,最主要的是你做过哪些具体的行业应用(项目),这才是核心竞争力。 如果学STM32的话,我建议直接通过项目学,效率高一点。 就像开车一样,不一定非要把车所有功能都摸透,才能把车开走,知道挂挡、踩油门、踩刹车、控方向都够了。 随着不同的路段,不同的需求,再针对性去学习别的功能,慢慢就系统了,有些
[单片机]
学习<font color='red'>单片机</font>ESP32与STM32,该如何选择?
C51 单片机看门狗程序优化设计分析
随着经济的发展,促进了科学技术的不 断延伸,C51 系统的单片机也在不断的发 展,这大大满足了实际工作的需要,也不 可避免的带来了一些弊端。比如单片及 芯片的抗干扰现象,这种现象不利于智 能型仪表单片机系统的稳定运行。本文 就看门狗硬件电路及其设计方案展开分析,通过采取相应的措施,解决问题。 在实际工作中,看门狗的电路系统 的应用范围是比较广泛的,它实现了单 片机系统的内部相关环节的稳定运行, 确保了无人监控下的程序的正常运作。 看门狗电路系统的正常运行,离不开看 门狗芯片与单片机的 I/O 引脚环节的正 常运作。这就需要我们针对这一环节进 行具体分析,I/O 引脚环节的稳定性决定 了看门狗系统的正常运行,该环节如果 受到内外
[单片机]
基于AT89C4051数字时钟的设计
这是一个用AT89C405l单片机做的一个实时数字时钟。由于使用AT89C405l,所以这个数字时钟成本很低、体积很小,可以做成一个小模块,使用非常方便。 一、硬件设计 下图是数字时钟的电路原理图。 AT89C4051单片机的P1口用来连接LCD的数据线(从LCD的7脚到14脚)。使用20×4的LCD字符显示屏。 二、LCD自定义字符方法 右图上可以看到数字比正常的字体尺寸大很多,为此使用了带有CGRAM(CGRAM为字型、字符产生器的RAM,全称CharacterGeneratorRAM,简称CGRAM。)的LCD,用户可以灵活自定义字符。定义一个字符,首先要得到该字符的数值然后写入CGRAM区。该CGRAM区域从O×4
[单片机]
基于AT89C4051数字时钟的设计
8051单片机实战分析(以STC89C52RC为例) | 04 - 蜂鸣器驱动
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。三极管的作用为驱动,通过三极管放大驱动电流,从而可以让蜂鸣器发出声音。 有源蜂鸣器和无源蜂鸣器的区别: 这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。 而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。 有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。 有源蜂鸣器示意图: 无源蜂鸣器示意图: 无源蜂鸣器的优点是:
[单片机]
8051<font color='red'>单片机</font>实战分析(以STC89C52RC为例) | 04 - 蜂鸣器驱动
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved