历史上的今天
返回首页

历史上的今天

今天是:2025年06月04日(星期三)

正在发生

2020年06月04日 | 如何计算给单片机寄存器赋值

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

推荐阅读

史海拾趣

安美通(APPCON)公司的发展小趣事

随着市场的不断变化和客户需求的升级,安美通意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进高端人才,并与多所高校和研究机构建立了紧密的合作关系。通过持续的技术创新,安美通成功推出了一系列具有自主知识产权的新产品,进一步巩固了其在行业内的领先地位。

FUJIKURA公司的发展小趣事

安美通非常重视企业文化建设和团队建设。公司倡导创新、务实、合作的企业文化,为员工提供了一个宽松、自由、充满激情的工作环境。同时,公司还积极开展各类培训活动,提升员工的专业素养和综合能力。这些措施使得安美通的团队更加团结、高效,为公司的持续发展提供了有力的保障。

这五个故事虽然只是安美通发展过程中的一部分,但它们充分展示了安美通在电子行业中不断努力、创新、拓展的精神和成果。未来,安美通将继续秉承这种精神,不断推动公司的发展和进步。

Datakey Electronics公司的发展小趣事

在电子产品行业,产品质量是企业生存和发展的基石。Datakey Electronics始终坚守品质至上的原则,从原材料采购到生产流程控制,再到产品检验和售后服务,每一个环节都严格把关。正是这种对品质的执着追求,使Datakey Electronics的产品在市场上树立了良好的口碑,赢得了客户的信赖。

CANDD公司的发展小趣事

随着全球环保意识的提高,CANDD公司积极响应号召,开始践行绿色环保理念。公司投入大量资金研发环保型电子产品,并采用了更加环保的生产工艺和材料。同时,公司还加强了废弃电子产品的回收和处理工作,努力减少对环境的污染。这些举措不仅提升了公司的社会形象,还为公司赢得了更多消费者的支持。

常州星海电子(Starsea)公司的发展小趣事

在拓展国内市场的同时,常州星海电子也积极开拓国际市场。公司的产品主要销往欧洲地区、美国和亚洲各国,是MOTOROLA、YAMAHA、Samsung、VTECH、LG、NOKIA等跨国公司的二极管供应厂家。国外销售量占公司总销售量的60%以上,这一成绩不仅体现了公司在国际市场上的竞争力,也为公司未来的发展奠定了坚实的基础。

CAROLCABLE公司的发展小趣事

CAROLCABLE公司的创立,标志着电子线缆行业迎来了一位新的竞争者。在电子科技飞速发展的时代背景下,创始人凭借对线缆技术的深刻理解和市场需求的敏锐洞察,决定创立CAROLCABLE公司。公司初期,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。然而,创始人凭借着坚定的信念和不懈的努力,带领团队克服了一个又一个困难。他们积极研发新产品,优化生产工艺,提高产品质量,逐渐在市场上站稳了脚跟。

随着公司业务的不断拓展,CAROLCABLE开始与一些知名的电子企业建立合作关系,为其提供高质量的线缆产品。这些合作不仅为公司带来了稳定的订单和收入,也进一步提升了CAROLCABLE在行业内的知名度和影响力。

问答坊 | AI 解惑

51的定时器问题

我想用51来做一个定时         设置5个键     1  设置   2  换位   3  数字加   4  数字减   5 RESET 用数码管显示 ...…

查看全部问答>

职场上“突破”的杰出

许多人参加工作以后,总是感到怀才不遇,不被人重视,觉得有劲无处使,憋闷得慌。其实,关键还在自身,在于自己怎么做,做得怎样。因为你的努力决定了你的价值。   I994年初进微软的唐骏,他本想去市场部,结果却成了微软软件开发部的程序员。那 ...…

查看全部问答>

液晶只显示一半???

我写了不用操作系统的程序。把图像信息考到缓冲区后,只能显示一般的图像不知道为什么? 我的屏幕是320*240的 U8 ScreenBitmap[] = { 0X00,0X10,0X40,0X01,0XF0,0X00,0X01,0X1B,…………………………}; #define IMAGE_FRAMEBUFFER_DMA_BASE&nbs ...…

查看全部问答>

MSP430单片机中, 当只用AD4一个端口的时候, 为什么跳不到中断中去? 每次中断标志都是显示

#include static unsigned int ADCResult; //功能函数 void Coulometry() {        P6SEL |= BIT4 ;    // Only Enable A/D channel A4     ADC12CTL0 &= ~ENC ;       & ...…

查看全部问答>

多普达的 原始红外 开发

由于公司购买的部分红外设备仅支持原始红外,所以请问  多普大公司的PPC手机现在是否还支持 原始红外 这种通讯方式  多普大客服回复说 仅支持标准红外(就是IrComm) 怕他们说得不对,所以向大家征询一下 是否多普大的PPC手机还 ...…

查看全部问答>

向大家请教 有关判断串口接收数据 以及使用AT COMMAND 控制手机收发短信的问题。

几个问题。 1:我从另外一端利用串口收到2个感应器的开关信息,分别是DOOROPEN & DOORCLOSE, DOORFREE & DOORBLOCK,问题是这些信息都是储存在一个data(从另一端接收到的)里面的,如果我让这个data显示在textbox,就会出现overwrite得问题。所以我 ...…

查看全部问答>

新手请教:VC到EVC移植的数据类型及函数问题

各位大侠好:   我是一个刚参加工作的学生,得到的任务是将一个VC6.0写好的库移植到EVC上面。我使用的方法是将VC的代码粘贴到EVC中,再Bulid找错误,不知道是不是对。   在找错误期间,首先遇到了 error C2664: \'localtime ...…

查看全部问答>

蒸汽熨斗自动保护电路图

电路如图所示,市电经C5、R7、R8降压、VD7~VDl0整流和VD11稳压后为,电路提供工作电压。当电熨斗水平放置时,水银开关S向下倾斜15o 左右,处于断开状态。这时,IC1-a输出低电平,C1通过R2充电,ICl-c输出低电平,ICl-d也输出低电平,VD3、VD4、IC1 ...…

查看全部问答>

求热流传感器HFS50

求HFS50热流传感器工作原理…

查看全部问答>

stm32f100c8相关资料

请教大神,谁有这方面的资料,小弟感激不尽。…

查看全部问答>