单片机在电学里面,属于很简单的一种器件,外表看,就是一个芯片,长着很多的脚。内部,就是一堆寄存器。不同的单片机,外部表现就是形状和引脚数量和引脚名称可能不一样,内部,就是寄存器名称不一样。
我们要做的,就是写程序控制单片机里面的寄存器,然后通过引脚表现出来完成各种电子产品。
所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制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,然后利用上面的方法得出结果,就可以操作单片机的寄存器了。
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

往期好文合集

>>

//end
若觉得文章不错,转发分享,也是我们继续更新的动力。
5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等

在公众号内回复「更多资源」,即可免费获取,期待你的关注~

长按识别图中二维码关注

如何写单片机的寄存器,这篇文章带你入门。相关推荐

  1. 不懂java,这篇文章带你入门起飞

    文章目录 Java入门 什么是Java Java能做什么 为什么学Java 怎么学Java Java开发环境安装 JDK下载 Jdk安装 win版安装 Linux版本安装 Mac版本安装 开发工具选择 ...

  2. 深度学习到底有多难?这篇文章带你入门!

    随着2020年的到来,人类进入了一个崭新的十年.回顾过去10年,深度学习领域取得了巨大进步,解决了许多以前难以解决的问题. 从自动驾驶到Deepfake,深度学习正在改变世界.随着深度学习在各个领域井 ...

  3. 设计模式一网打尽,40余篇文章带你领略设计模式之美

    文章末尾附带GitHub开源下载地址. 该文章的最新版本已迁移至个人博客[比特飞],单击链接 设计模式一网打尽,40余篇文章带你领略设计模式之美 | .Net中文网 访问. 设计模式概述 20世纪80 ...

  4. 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding

    文章目录 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding Jetpack 官方推荐架构 ViewModel 添加依赖 创建ViewModel 初始化ViewMode ...

  5. 什么产品适合抖音广告?本篇文章带你来了解

    到底什么产品适合抖音广告?抖音广告类型的多样化使不计其数的广告主选择在抖音这个热门app上投放产品广告.不断有很多广告主提出疑问,自己的产品到底适不适合在抖音做营销.下面为您介绍适合在抖音做广告的产品 ...

  6. 每个成功的男人背后都有个厉害的女人,这篇文章带你看看互联网大佬们背后的女人。...

    每个成功的男人背后都有个厉害的女人,这篇文章带你看看互联网大佬们背后的女人. 别看这些互联网大佬现在一幅高大上的样子,可是别忘了人家也有屌丝的时候,也有青春少年的时候啊!今天咱们就八卦一下,翻翻这些大 ...

  7. synchronized()_这篇文章带你彻底理解synchronized关键字

    Synchronized关键字一直是工作和面试中的重点.这篇文章准备彻彻底底的从基础使用到原理缺陷等各个方面来一个分析,这篇文章由于篇幅比较长,但是如果你有时间和耐心,相信会有一个比较大的收获,所以, ...

  8. 这篇文章带你彻底理解红黑树

    写在前面 当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! -- 学红黑树有感. 终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家.红黑树是 ...

  9. 什么是Apache Spark?这篇文章带你从零基础学起

    导读:Apache Spark是一个强大的开源处理引擎,最初由Matei Zaharia开发,是他在加州大学伯克利分校的博士论文的一部分.Spark的第一个版本于2012年发布. Apache Spa ...

最新文章

  1. setAttibute和getParameter的区别
  2. DOS批处理延时技术
  3. pwdencrypt,pwdcompare
  4. 异步社区本周半价电子书(6月11-17日)
  5. 【深度优先搜索】计蒜客:等边三角形
  6. sql server的数据同步
  7. linux内核之数据机构
  8. java集合升序降序
  9. 在线Cron表达式生成器,定时任务表达式生成器
  10. SQL Server数据库应用与开发教程各章习题参考答案
  11. Apple Pay编程指南
  12. IntelliJ Idea 常用快捷键
  13. Linux input子系统上报键值失败问题
  14. 高刷新率笔记本电脑将低刷新率显示器作为扩展屏
  15. 大批程序员可能面临被劝退!
  16. 进程与程序的区别和联系
  17. requests+bs4批量爬取反爬虫图片网站
  18. iOS——MVC设计模式
  19. pythonista是干什么_说一说,我到底是做什么的?
  20. 独立和不相关 区别及形象理解

热门文章

  1. OPA initialization
  2. sales organization mapping logic debug
  3. 如何在AWS上架设文件服务器
  4. Database specific hint in One order search
  5. price initialization when clicking new button in WebUI
  6. SAP WebIDE里UI5应用的隐藏文件project.json
  7. SAP Fiori Launchpad Contact Support的按钮启用逻辑
  8. SAP CRM里是如何检测一个BP是否存在的 - FM BP_CENTRALPERSON_GET
  9. 安装指定版本的minikube
  10. discuz forums.inc.php,【Discuz】积分机制实现解析